From f814bb57c03e01c96ec97c2bfb2d314210a95f28 Mon Sep 17 00:00:00 2001 From: "Danilo M." Date: Mon, 24 Aug 2026 10:50:35 +0200 Subject: feat(messageview): give the notice bars a ground and a severity The three out-of-band bars in the message pane were plain labels on the pane's own background, so they read as part of the page they were trying to interrupt. They now carry a severity, as the user asked for: - yellow for a warning that explains a limitation and offers nothing to do about it (the receive-only ribbon) - blue for one offering an action (remote content blocked, stale thread), with the button moved right of a stretch, where the eye ends up after reading the sentence Each severity carries its own light and dark set rather than one tint dimmed, and the theme is read off QPalette::Base, the same surface HtmlBuilder reads, so a bar and the message under it cannot disagree about which way round the theme is. Every ground states its own text colour: the palette's may be near-white, which is unreadable on a pale tint. The blocked row had to become a widget on the way. It was a bare QHBoxLayout, which has nothing to paint a ground on, and once wrapped, the six sites that hid its label and button individually had to hide the wrapper instead or an empty painted strip would have been left behind. The test asserts on the stylesheet string rather than on pixels, per CLAUDE.md on rendering probes: an unshown widget offscreen renders nothing, so a pixel test would pass whatever the code does. It compares the COLOURS the sheets name rather than the sheets themselves, since each names its own widget and would differ by that alone. --- docs/superpowers/plans/2026-08-03-post-0.1.0-usability.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'docs/superpowers') 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 ba0293f..e9d04d4 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 @@ -220,7 +220,7 @@ taking that too literally. | 148 | Ctrl+W does not close the composer | discoverability | XS | open, 2026-08-23, from the notes. Verified: nothing binds `Ctrl+W` anywhere, and the composer has no close action of its own. Belongs with item 21's table rather than bound in isolation | | 149 | A reply's cursor lands on the attribution line, not on blank space | defect | XS | **done** 2026-08-24, unreleased. `quote_position` names where the QUOTE goes, so the cursor follows the reply and not the buffer: `End` under Above, `Start` under Below, where a shared `Start` had put it on the `On ... wrote:` line. The existing `theQuotePositionDecidesWhereTheQuoteLands` passed throughout, because the quote WAS in the right place | | 150 | The receive-only ribbon stays up after the message that raised it is gone | defect | S | **done** 2026-08-24, unreleased. One line in `MessageView::clear()`, beside the blocked-content bar, the stale notice and the attachment bar it already reset by hand. Only `setReceiveOnlyAccount()` hid the ribbon, which every SELECTION change reaches, so a row-to-row move was never the reproducer: it survived the FOUR routes that blank the pane without one (`clear_pane`, `clear_selection`, a new query, a multi-row selection). The first test written for it passed against the defect for exactly that reason | -| 151 | The message-pane bars blend into the UI and carry no severity | presentation | S | open, 2026-08-24, from the notes. The user's design: a yellow ground for warnings (the item 150 ribbon), a blue one for actions (remote content blocked), with the action's button right-aligned. Both are plain `QLabel`s today. Colour alone is not enough per CLAUDE.md's palette rule, and the pane is theme-aware, so the two grounds need light and dark values rather than one literal | +| 151 | The message-pane bars blend into the UI and carry no severity | presentation | S | **done** 2026-08-24, unreleased. Two severities as the user asked: yellow for a warning that only explains (the receive-only ribbon), blue for one offering an action (remote content blocked, stale thread), each with its own light and dark set read off `QPalette::Base` as `HtmlBuilder` does. The blocked row had to become a WIDGET first: it was a bare `QHBoxLayout`, which has nothing to paint a ground on, and its six `hide()` sites then had to move to the wrapper or a painted empty strip would show. Both action bars put the button right of a stretch | | 152 | Signatures are not managed at all | v2 | ? | open, 2026-08-24, from the notes, asked for as a brainstorm rather than a build. Nothing in `[compose]` or `[account.*]` mentions a signature, so this is unspecified: per-account text, where it sits relative to the quote, and whether the HTML part gets its own form are all open. Needs the user to say what they picture before it can be sized | Sizes are rough: XS under an hour, S a sitting, M a session. -- cgit v1.2.3