Skip to content
quarry Check-in [d28f1388fe]
Login

Check-in [d28f1388fe]

Overview
Comment:settings: the save confirms on the button, not in the page

The inline word had to appear and then leave, which is two layout shifts around the control just pressed. On the button there are none: both labels share one grid cell, so it is sized by the wider of them and nothing moves when they swap.

The revert is CSS on the same four-second beat, because without script the label must still find its way back to Save. The announcement stays — sr-only, role=status — since a screen reader cannot read a button relabelling itself as an event. Reduced motion keeps the word and drops the movement.

Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: d28f1388fe6ddbb9984601b1156e774458db068dc8d786b3ccd9d261a1d21b06
User & Date: dmestas on 2026-08-29 01:01:26.686
Other Links: manifest | tags
Context
2026-08-29
01:14
settings: every panel confirms the same way, in the palette's green

The description form got a Save/Saved swap; the other panels still said nothing at all. Worse, three of them redirected to ?saved=1, which had quietly stopped meaning anything when the flash cookie replaced it — a regression I left behind an hour ago. Six exit paths across five handlers were still writing it.

They all set a named flash now. The name matters: a page carries six Save buttons, and a bare boolean would light every one of them for a single save, telling the reader that everything was written when one thing was.

Green comes from --add, the token that already marks a passing run and an open glyph, so 'it worked' is one colour across the forge.

Webhooks is deliberately untouched: it is a LIST with Save, Pause and Delete per row, so lighting 'the' Save would need to know which row. Different shape, not this pattern.

The visibility test pinned ?saved=1; it now asserts the flash, which is the contract rather than the spelling of a mechanism. check-in: 2f0c4fcb50 user: dmestas tags: trunk

01:01
settings: the save confirms on the button, not in the page

The inline word had to appear and then leave, which is two layout shifts around the control just pressed. On the button there are none: both labels share one grid cell, so it is sized by the wider of them and nothing moves when they swap.

The revert is CSS on the same four-second beat, because without script the label must still find its way back to Save. The announcement stays — sr-only, role=status — since a screen reader cannot read a button relabelling itself as an event. Reduced motion keeps the word and drops the movement. check-in: d28f1388fe user: dmestas tags: trunk

00:54
settings: the save's confirmation has a lifetime, and is spent once

Three faults in one paragraph. It never left: a confirmation is an EVENT, and rendering it as page content claims the page CONTAINS the fact of having been saved, which is only true for a moment. A reload replayed it: ?saved=1 stays in the address bar, so a refresh — or a bookmark — congratulated the reader for a save from hours ago. And it shifted the layout under the button just pressed.

A one-shot cookie now carries the word across the redirect and is spent on arrival, so the URL stays clean and the second render is silent. The lifetime is CSS: it holds four seconds, then fades AND collapses, so no empty paragraph is left behind. Not script — this page must behave the same without JavaScript, and an animation costs nothing when the script is absent. role=status announces it on insert, before any of that runs.

Reduced motion keeps the message and drops the animation: someone asking for less movement is not asking to be told less. check-in: 563eb933dd user: dmestas tags: trunk

Changes