summaryrefslogtreecommitdiffstats
path: root/src/cidschemehandler.cpp
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-13 19:00:04 +0200
committerDanilo M. <danix@danix.xyz>2026-08-13 19:00:04 +0200
commitf389db3aad498d46c95c2a95b4280ffb541043b2 (patch)
treea4c228184210aab5ba8380b8345dde297aa2b0e2 /src/cidschemehandler.cpp
parenta198c116e14622be6ba76b78fca5d92b4b4f62bd (diff)
downloadqtmaildir-f389db3aad498d46c95c2a95b4280ffb541043b2.tar.gz
qtmaildir-f389db3aad498d46c95c2a95b4280ffb541043b2.zip
docs: spec the saved-query file, and reduce item 23 to a pointer
Item 23 had grown past what a backlog entry should hold: a storage format, a migration, a dialog and a layout change. This document's own rule says a fully specified item moves to specs/ and leaves behind the two or three things that decide whether it can be picked up, the way items 53, 63 and 76 went. The entry now carries the observation, the three deciding constraints and the relation to item 10, and points at the spec for the rest. The spec pins what was still loose. The JSON is an ordered array, since the ordering is the whole reason for moving off [queries], and nothing may sort it on load. A query's account scope stores the account KEY, the INI group suffix, rather than the maildir path, so it does not duplicate config that already lives in one place and go stale when the user edits it; the scope then composes through Account::scopedQuery(), whose parenthesisation is load-bearing for the same reason it is in the rules hook, an unparenthesised disjunction escapes its scope and matches every account. Migrated entries are pinned, so the query row does not silently empty on the first run after upgrade, and migration order is alphabetical because that is genuinely all the INI knows. Sent stays out of the file: it is generated from allSentQuery() rather than stored, and folding it in would mean writing a per-account path query into stored config, which is the duplication the account-key decision just rejected. The testing section is written against the traps already recorded in CLAUDE.md. The migration test asserts the INI file is byte-identical rather than re-reading it through QSettings, which would pass against a rewrite that preserved values while dropping comments; the round-trip test asserts order, which is the property the INI could not provide; and the dialog is left to a hand test, because the offscreen platform cannot assert sizing at all and a Cancel goes through done(int) rather than closeEvent. Every code reference in the spec was checked against the files rather than copied from the entry. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'src/cidschemehandler.cpp')
0 files changed, 0 insertions, 0 deletions