aboutsummaryrefslogtreecommitdiffstats
path: root/docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md
diff options
context:
space:
mode:
authorDanilo M. <danix@danix.xyz>2026-08-15 11:13:28 +0200
committerDanilo M. <danix@danix.xyz>2026-08-15 11:13:28 +0200
commit4757cc5780de1f7a7478cf07948f5659913d31b5 (patch)
tree80a0366d74cb98b5499abeb9209a689d8b834292 /docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md
parente6e18849bd5aa49dbdd299982d39a92e7360d0aa (diff)
parent8ea004e67427693139ddd55384c7963d856650f0 (diff)
downloadqtmaildir-4757cc5780de1f7a7478cf07948f5659913d31b5.tar.gz
qtmaildir-4757cc5780de1f7a7478cf07948f5659913d31b5.zip
Merge branch 'builtin-filters': four built-in query filters
Items 93, 95 and 90. The query row starts with Unread, Inbox, Flagged and Sent, shipped by the application rather than pinned by the user, and they compose with the account dropdown instead of resetting it. Item 90 is absorbed: the button that cleared the account selection is no longer a saved query at all. Item 95 was found by hand testing this and is not caused by it: no entry in the saved query overflow menu had ever been runnable, because Qt emits no triggered for an action that owns a submenu.
Diffstat (limited to 'docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md')
-rw-r--r--docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md41
1 files changed, 2 insertions, 39 deletions
diff --git a/docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md b/docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md
index 884c56b..c02de31 100644
--- a/docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md
+++ b/docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md
@@ -157,7 +157,8 @@ taking that too literally.
| 90 | A saved-query button clears the account selection | workflow | S | **folded into 93** 2026-08-15. Not fixed in place: the button that misbehaves stops being a saved query at all. See `specs/2026-08-15-builtin-filters-design.md` |
| 91 | Double-clicking a thread could open it in its own window | workflow | ? | open, unspecified; the user marked it "(?) UX not sure" |
| 92 | Nothing distinguishes a tag written by a rule from one the user applied | information | ? | open, unspecified; the user asked it as a question, and the answer decides whether it is a display item or a format change across two repos |
-| 93 | The query buttons are whatever the user pinned, not a designed set of filters | workflow | M | open, specified 2026-08-15; see `specs/2026-08-15-builtin-filters-design.md`. Absorbs item 90. Four built-in filters that compose with the account dropdown |
+| 93 | The query buttons are whatever the user pinned, not a designed set of filters | workflow | M | **done** 2026-08-15, unreleased; see `specs/2026-08-15-builtin-filters-design.md`. Absorbs item 90. Four built-in filters composing with the account dropdown; the user's own queries unpinned, never deleted |
+| 95 | A query in the overflow menu cannot be run | defect | XS | **done** 2026-08-15, unreleased. Pre-existing and not caused by 93: the entry's action owned a submenu, and Qt emits no `triggered` for those, so the connection had never fired. Surfaced because 93 moved every query into the menu |
| 94 | `pinned` has nothing left to decide once the buttons are built-in | maintenance | S | open; **blocked on 93**, and deliberately not part of it. A user-visible removal: the row becomes built-ins only and every saved query lives in the menu |
Sizes are rough: XS under an hour, S a sitting, M a session.
@@ -547,44 +548,6 @@ work.
- Do not restore the pre-0.16.0 behaviour by making the delay negative for the
user. `auto_sync_delay_ms` is theirs to set.
-## 93. The query buttons are whatever the user pinned, not a designed set of filters
-
-**Observed (user, 2026-08-15),** reached by explaining item 90 rather than from
-the notes:
-
-> The queries that show as buttons shouldn't be in the same league as the ones I
-> write and store in the "more queries" menu. If I see "Unread" as a button, I
-> read it as "filter all my mails and show me only what is not yet read", but
-> being a button, in my head it should cooperate with other UI elements. So if a
-> dropdown offers to select an account, that same button should work with that
-> selection transparently, not fight it.
-
-**Cause.** Nothing ships as a default. `Config::startupSavedQuery()` falls back
-to `m_savedQueries.first()` and a fresh install has an empty query row, so every
-button the user has is one they wrote into `[queries]` and that the queries.json
-migration pinned (`src/config.cpp:455`). The buttons became "whatever is pinned"
-by migration, never by design. The user's own words: "that's the direction I
-wanted from the start, we drifted to what is today".
-
-**Approach.** Four built-in filters, Unread, Inbox, Flagged and Sent, as
-generated entries in the closed set `kQueryGenerators` that already exists for
-Sent. They compose with the account dropdown; saved queries keep setting the
-account from what they stored. The user's own pinned queries are UNPINNED once
-the buttons are confirmed working, never deleted, so they fold into the menu and
-stay recoverable.
-
-**Absorbs item 90.** The button that clears the account selection stops being a
-saved query at all, so there is nothing left to fix in `runSavedQuery()`.
-
-**Specified in `specs/2026-08-15-builtin-filters-design.md`.** Three constraints
-worth knowing before opening it: a generator must answer PER ACCOUNT rather than
-having its all-accounts query wrapped in a scope, or Sent double-scopes and works
-only by accident of `path:` being hierarchical; Sent stays `flat` and the other
-three do not, so the four match in scope and not in view mode; and changing the
-account deliberately runs nothing, since the button is the verb.
-
-**Size: M.**
-
## 94. `pinned` has nothing left to decide once the buttons are built-in
**Observed (user, 2026-08-15),** thinking past item 93 rather than from the