3.1 KiB
3.1 KiB
CLAUDE.md
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
You Must
- Respond in the same language the user is writing in.
- Commit to Git only when instructed.
- If multiple requirements are given in a single instruction, divide the commits into appropriate sizes/granularities.
- When creating a pull request, use the
.claude/skills/create-prskill so the project's.github/pull_request_template.mdis followed.
Project Overview
Windows Forms application (.NET 9.0 / C#) distributed via the Microsoft Store. Runs as a system tray icon whose animation reflects system load.
Top-level layout:
RunCat365.sln— Main solutionRunCat365/— Main application projectWapForStore/— Windows Application Packaging project for the Microsoft Store
Build: Open RunCat365.sln in Visual Studio. Supported platforms: x64, x86, ARM64. Target framework: .NET 9.0 (Windows 10.0.26100.0).
Releasing — version numbers must be updated in two places:
RunCat365/RunCat365.csproj—<Version>X.Y.Z</Version>(3-digit)WapForStore/Package.appxmanifest—Version="X.Y.Z.0"in<Identity>(4-digit)
Architecture (patterns, not file lists)
- Entry point:
Program.cshosts the tray application context that owns the timers, the tray icon, and the context menu. - Repository pattern for system metrics: Each metric has a
*Repositoryclass that produces a matching*Infostruct (CPU / GPU / memory / storage / network / temperature). Add a new metric by adding a paired repository and info struct. - Animation loop: A 1-second fetch timer refreshes the
*Infostructs; a separate animate timer advances frames at a rate derived from theSpeedSourcesetting. Theme-aware icon recoloring lives inBitmapExtension. - Custom runners: User-defined animations are loaded from
profiles.jsonand managed by theCustomRunner*classes; the active profile is stored in theCustomRunnerNamesetting. - EndlessGame: Mini-game living in
EndlessGameFormand its collaborator classes. - Settings & resources: Persisted user preferences in
Properties/UserSettings.settings; embedded images/icons inProperties/Resources.resx.
Localization
- Localized strings live in
Properties/Strings.resx(English default) and siblingProperties/Strings.{locale}.resxfiles. Any new string must be added to every variant. - Per-locale font and culture settings live in
SupportedLanguage.cs. - When adding a brand-new locale (not just new strings), follow the
.claude/skills/add-localeskill.
Coding Rules
General contribution rules — indentation style, var usage, single-change PRs, English-only code, license, and the rest — are documented in CONTRIBUTING.md. Follow those first.
Project-specific additions:
- Do not write comments within the source code. Use names that make intent obvious.
- Write abbreviations such as URL or ID in either all lowercase or all uppercase (do not use Upper Camel Case for them).
- Do not use abbreviations like
imgforimageorcntforcount.