aboutsummaryrefslogtreecommitdiffstats
path: root/CHANGELOG.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-13 19:52:13 +0200
committerDanilo M. <danix@danix.xyz>2026-08-13 19:52:13 +0200
commit97c81f8cad571ce9ce724ddab8269e911df05a7c (patch)
tree980f2c801f9723e74c949897de9f8a8a3241d8a3 /CHANGELOG.md
parent8268bb478dbdf9f23b35c5114c5d13bc98254659 (diff)
downloadqtmaildir-97c81f8cad571ce9ce724ddab8269e911df05a7c.tar.gz
qtmaildir-97c81f8cad571ce9ce724ddab8269e911df05a7c.zip
feat(queries): make Sent a saved query rather than a fixed button
The user asked whether the default queries could be unified with Sent. The answer runs the other way: Sent joins the saved queries rather than the saved queries becoming hardcoded. Inbox, Unread and Important are complete strings that depend on nothing and can never go stale, so generating them would buy nothing and would cost the four things the file just gained: reordering, unpinning, renaming and deleting. Hardcoding them would also make them undeletable, which is a regression for anyone who does not want one of them. Sent is different only in that its query CANNOT be stored: it is composed from every account's `sent` key, so a stored copy goes stale the moment a folder is renamed. That is a property of Sent, not of "default queries". Storing the GENERATOR rather than its output keeps both halves: `"generated": "sent"` still resolves from the accounts at click time, and the entry is an ordinary row that can be reordered, renamed, unpinned or removed. The row now follows one rule instead of carrying one member the user did not own. Two properties had to travel with the entry. The composed query, resolved through Config::resolvedQuery() so what lands in the bar is what actually ran; and FLAT mode, since a sent view lists messages and a threaded one folds every reply back into the conversation the user sent one message into. The sent generator implies flat rather than trusting the file to say so, because a hand-edited row would otherwise produce a threaded sent view. An unknown generator is reported but the row is KEPT: a later build may know it, and dropping it here would delete it from the file on the next save, which is the same data loss the unknown-field handling exists to prevent. A generator whose accounts configure nothing is skipped entirely, exactly as the hardcoded button was hidden rather than offering one that finds nothing. Eight new tests. The four pre-existing Sent tests reach this through migration and were left alone, which is what proves the migrated path still behaves; the new ones cover a STORED file, which is the path every launch after the first takes. Mutations: a generator resolving to nothing fails three, ignoring flat fails two, and not skipping an empty generator fails one. A rename test guards the property the change exists for, since anything keyed on the literal name "Sent" would break it. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Diffstat (limited to 'CHANGELOG.md')
-rw-r--r--CHANGELOG.md12
1 files changed, 11 insertions, 1 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 428e3e5..b384eda 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -22,6 +22,11 @@ point at which they are stable.
**order**, a `pinned` flag and an optional account scope. The order in the
file is the order the buttons appear in, so rearranging them is a matter of
moving lines.
+- **Sent is a saved query now**, carrying `"generated": "sent"` instead of a
+ stored query. It is still composed from your accounts' `sent` keys every time
+ you click it, so correcting a folder name still updates it with no edit, but
+ it can now be reordered, renamed, unpinned or deleted like any other entry
+ rather than being a fixed button you did not own.
### Changed
@@ -30,13 +35,18 @@ point at which they are stable.
query field is no longer squeezed by a long list of buttons.
- Saved-query buttons follow the file's order instead of appearing
alphabetically.
+- The Sent button is no longer hardcoded beside the saved queries, so the whole
+ row now follows one rule instead of having one member that behaved
+ differently from its neighbours.
### Upgrading
Saved queries move out of the `[queries]` section of `qtmaildir.conf` and into
`~/.config/qtmaildir/queries.json`. **The first launch migrates them for you**:
the section is read, the JSON file is written from it, and every entry is
-marked pinned so your buttons stay where they were.
+marked pinned so your buttons stay where they were. Sent is appended as a
+`generated` entry, where its button already sat, provided an account configures
+a sent folder.
Your config file is left byte-for-byte alone. The old `[queries]` section stays
in it, ignored from then on, and can be deleted by hand whenever you like. It is