You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
-`contrib/mutterkey.service`: example user service
40
43
-`contrib/org.mutterkey.mutterkey.desktop`: hidden desktop entry used for desktop identity/integration
41
44
-`scripts/check-release-hygiene.sh`: repo hygiene checks for publication-facing content
45
+
-`next_feature/`: tracked upcoming feature plans as Markdown; keep only plan `.md` files and the folder-local `.gitignore`
42
46
-`docs/Doxyfile.in`: Doxygen config template for repo-owned API docs
43
47
-`docs/mainpage.md`: Doxygen landing page used instead of the full README
44
48
-`scripts/run-valgrind.sh`: deterministic Valgrind Memcheck runner for release-readiness checks
@@ -118,6 +122,7 @@ Notes:
118
122
- Do not add broad Valgrind suppressions by default; only add narrow suppressions after reproducing stable third-party noise and keep them clearly scoped
119
123
- When adding tests, prefer small `Qt Test` cases that run headlessly under `CTest` and avoid microphone, clipboard, or KDE session dependencies unless the task is specifically integration-focused
120
124
- For tool-driven cleanups, preserve the existing design and behavior; do not perform broad rewrites just to satisfy style-oriented recommendations
125
+
- Keep forward-looking feature plans under `next_feature/` as tracked Markdown files; do not leave scratch notes, binaries, or generated artifacts there
121
126
122
127
## Coding Guidelines
123
128
@@ -128,6 +133,8 @@ Notes:
128
133
- Avoid introducing optional backends, plugin systems, or cross-platform abstractions unless the task requires them
129
134
- Keep the audio path explicit: recorder output may not already match Whisper input requirements, so preserve normalization behavior
130
135
- Prefer narrow shared value types across subsystems; for example, consumers that only need captured audio should include `src/audio/recording.h`, not the full recorder class
136
+
- Keep JSON and other transport details at subsystem boundaries; prefer typed C++ snapshots/results once data crosses into app-owned control, tray, or service code
137
+
- Prefer dependency injection for tray-shell and control-surface code from the first implementation so headless Qt tests stay simple
131
138
- Preserve the current product direction: embedded `whisper.cpp`, KDE-first, CLI/service-first
132
139
133
140
## C++ Core Guidelines Priorities
@@ -193,10 +200,13 @@ Typical model location:
193
200
194
201
- Read `README.md` first, especially `Overview`, `Quick Start`, `Run As Service`, and `Development`, then read the touched source files before editing
195
202
- Prefer targeted changes over speculative cleanup
203
+
- If a change grows daemon, tray, or control-plane behavior, prefer extracting or extending repo-owned libraries under `src/app/`, `src/control/`, or other focused modules instead of piling more orchestration into `src/main.cpp`
196
204
- Update `README.md` and `config.example.json` when behavior or setup changes
197
205
- Update `contrib/mutterkey.service` and `contrib/org.mutterkey.mutterkey.desktop` when service/desktop behavior changes
198
206
- Update `LICENSE`, `THIRD_PARTY_NOTICES.md`, CMake install rules, and `third_party/whisper.cpp.UPSTREAM.md` when packaging, licensing, or vendored dependency behavior changes
199
207
- Keep `README.md`, `AGENTS.md`, and any relevant local skills aligned with the current `scripts/update-whisper.sh` workflow when the vendor-update process changes
208
+
- Store upcoming feature plans in `next_feature/` as Markdown files, and update the existing plan there when refining the same upcoming feature instead of scattering notes across the repo
209
+
- Treat `mutterkey-tray` as a shipped artifact once it is installed or validated in CI; keep install rules, README/setup notes, release checklist items, and workflow checks aligned with that status
200
210
- Verify with a fresh CMake build when the change affects compilation or linkage
201
211
- Run `ctest` when touching covered code in `src/config.*` or `src/audio/recordingnormalizer.*`, and extend the deterministic headless tests when practical
202
212
- Prefer expanding tests around pure parsing, value normalization, and other environment-independent logic before adding KDE-session or device-heavy coverage
0 commit comments