- Never add
Co-Authored-Bylines to git commit messages. - Use
varinstead ofconst/let. No arrow functions. - Server-side: CommonJS (
require). Client-side: ES modules (import). - Never commit, create PRs, merge, or comment on issues automatically. Only do these when explicitly asked.
- All user-facing messages, code comments, and commit messages must be in English only.
- Commit messages must follow Angular Commit Convention (
feat:,fix:,docs:,chore:,refactor:,perf:,test:,style:,ci:,build:). Use!orBREAKING CHANGE:footer for breaking changes. Always use theangular-commitskill when committing. - Never use browser-native
alert(),confirm(), orprompt(). Always use custom JS dialogs/modals instead. - When rebuilding daemon config (e.g.
restartDaemonFromConfig()), always useObject.assign({}, lastConfig, overrides)to preserve all existing settings. Never reconstruct config by manually listing fields. - Before adding new code, read docs/guides/MODULE_MAP.md to find the right file. Never add inline logic to
project.jshandleMessage. Keep modules under 500 lines. - Never use
localStoragefor user settings or preferences. All settings must be stored server-side (via WebSocket messages or REST API) so they persist across devices and browsers. - Client modules (
lib/public/modules/): state goes in store.js (zustand-like), WS via ws-ref.js, functions via direct import. Never usevar _ctx = null/initXxx(ctx). See docs/guides/CLIENT_MODULE_DEPS.md.