diff options
| author | Danilo M. <danix@danix.xyz> | 2026-08-03 20:17:31 +0200 |
|---|---|---|
| committer | Danilo M. <danix@danix.xyz> | 2026-08-04 12:53:57 +0200 |
| commit | 84f5fc8302ef31a272fac534af7587599b98c8f1 (patch) | |
| tree | 4cb4e7bdabad12f79956a8d7d178c4ae01070e37 /CLAUDE.md | |
| parent | ae84b9e45877783e98faa908414eaa9e63b5046f (diff) | |
| download | qtmaildir-84f5fc8302ef31a272fac534af7587599b98c8f1.tar.gz qtmaildir-84f5fc8302ef31a272fac534af7587599b98c8f1.zip | |
docs: spec query bar completion, require translatable strings
Design for backlog item 17. Completion covers query prefixes, tag values,
date values, path values and mimetype values, each carrying a description
so the bar documents the query language while it is typed.
A new QueryCompleter class owns it, with the cursor-context tokenizer as a
pure function so the parsing rules are testable without a widget or a
database. NotmuchWorker gains an all-tags call, which did not exist.
Addresses for from:/to: are out of scope: libnotmuch exposes no all-addresses
call. Both prefixes still appear so the vocabulary reads complete.
Account maildirs belong to path:, not folder:. Account::scopedQuery builds
path:"<maildir>/**", and folder: is a different matcher in notmuch, against
the folder name rather than the directory path.
Also records the translatable-strings rule in CLAUDE.md. Existing code is
not yet audited against it.
Diffstat (limited to 'CLAUDE.md')
| -rw-r--r-- | CLAUDE.md | 6 |
1 files changed, 6 insertions, 0 deletions
@@ -75,6 +75,12 @@ combined `thread:a or thread:b` query rather than one query per thread. The only escape hatch is `general/notmuch_config`, pointing at an alternate notmuch config. Per-account subdirectories *are* configured, since notmuch does not model accounts at all. +**Every user-facing string is translatable.** Wrap UI text in `tr()`, including strings +that are only ever shown in passing: status bar messages, tooltips, dialog prose, +completion descriptions. Query syntax itself is not user-facing text — notmuch keywords +like `tag:` and `date:` are wire format and must never be translated, only the prose +describing them. Pre-existing code has not been audited against this rule. + **Config format gotcha:** QSettings treats `/` in a section name as a group separator, so account sections are `[account.work]`, not `[account/work]`. `childKeys` returns keys sorted alphabetically, never in file order. **`[general]` keys are read WITHOUT the |
