Skip to content

fix(ux): page gutter, and a review pass over every 3.5.0 screen - #47

Merged
DarrellVS merged 2 commits into
devfrom
fix-page-gutter
Sep 23, 2026
Merged

DarrellVS merged 2 commits into
devfrom
fix-page-gutter

Conversation

@DarrellVS

Copy link
Copy Markdown
Owner

Feedback on dev: the Storage Saver and Publisher padding, then a review pass over every screen and state 3.5.0 added. I captured each in both palettes against a seeded library and a real local publisher, then fixed what read wrong.

Gutter (your screenshots): both pages left the px-12 py-6 every other page root carries off their own root. screens.spec.ts now fails when anything that paints sits outside the page header's inset. Against the unfixed build it fails on Storage Saver (headings at x=232, gutter from 279).

Publisher

  • An unreachable publisher showed "0 published, 0 B", so the "could not reach" state never appeared. Main now reports unreachable / unauthorized / outdated, and each gets its own message and way out.
  • No checkboxes on "Most opened".
  • The row checkbox uses the app's own tokens instead of Chromium's native box. The hint reads "last opened …".

Storage Saver

  • The tile checkbox sits on a scrim, so it stays visible on bright frames.
  • A picked tile gets a 2px ring instead of a hairline changing colour.
  • In a burst, the clips that will go are dimmed.
  • The burst summary counts the clips that go (2), not every clip in the burst (3).
  • The selection bar shows the size of the selection.

Settings

  • The recording-quality sentence now depends on whether OBS is actually running.
  • The publisher "compress" switch moved inside its card, so there is a rule before the Claude section.

Editor

  • GoodBit marks on timeline blocks: a 12px strip on the card colour instead of a 2px line.

Gates: npm run check 849 tests; screens.spec.ts 9 passed.

🤖 Generated with Claude Code

DarrellVS and others added 2 commits September 23, 2026 09:18
Every page puts `px-12 py-6` on its own root and the page header above it
is inset by the same 48 pixels. The two pages added in 3.5.0 left it off,
so the title was inset and every panel, heading, tile and empty state
under it ran flush from the sidebar to the window edge.

Nothing caught it, because nothing on those pages overflowed or changed
size. `screens.spec.ts` now walks every page under the header and fails
when anything that paints (text, or a border you can see) sits outside
the header's own inset on either side. Things a sideways scroller clips,
like Today's carousel, are the scroller's business, and the clip name
field's deliberate outset has a transparent border and is not counted.

Proved: against the unfixed build it fails on Storage Saver with the
section headings at x=232 against a gutter starting at 279. With the fix
it passes.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Every screen and state this release added, captured in both palettes
against a seeded library and a real publisher running on this machine,
then fixed where it read wrong.

Publisher
- **An unreachable publisher said "0 published, 0 B".** The sync action
  answered every failure with zeros, so the page's own "could not reach"
  state could never appear. It now reports why there are no numbers
  (`unreachable`, `unauthorized`, `outdated`), and the page names each
  with its own way out: try again, check the address or token, or the
  guide for updating an old container. `describeStatsFailure` is pure and
  unit-tested.
- "Most opened" no longer has checkboxes. It is there to be read, and
  offering to unpublish the links people actually watch was the wrong idea.
- The row checkbox is drawn in the app's own tokens over a hidden input,
  not Chromium's native box. The hint says "last opened 2 minutes ago"
  rather than "last 2 minutes ago".

Storage Saver
- The tile checkbox sits on a scrim. White on the frame disappeared into
  every bright thumbnail.
- A picked tile has a two pixel ring instead of a hairline turning red,
  which did not read across a grid. A ring is a shadow, so nothing moves.
- In a burst, the clips about to go are dimmed so the keeper stands out.
- The burst summary counted every clip in a burst ("1.2 MB across 3
  clips") when two of the three would go. It counts the ones that go.
- The selection bar says what the selection weighs, not only how many.

Settings
- Recording quality said "cannot happen while OBS is open" when OBS was
  closed and the button beside it would write it at once. The sentence now
  depends on whether OBS is running.
- The "Compress clips when publishing" switch sat outside the publisher
  card, so the Claude heading ran straight on from its description with no
  rule between them. It is inside the card now.

Editor
- A GoodBit on a timeline block was a two pixel line over the thumbnail
  strip, hard to see on any busy frame. The strip is twelve pixels on the
  card colour, and the duration label and muted icon sit above it.

Gates: `npm run check` 849 tests; `screens.spec.ts` 9 passed, including
the new gutter test.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@DarrellVS DarrellVS added this to the 3.5.0 milestone Sep 23, 2026
@DarrellVS DarrellVS added the bug Something isn't working label Sep 23, 2026
@DarrellVS DarrellVS self-assigned this Sep 23, 2026
@DarrellVS
DarrellVS merged commit 465dfac into dev Sep 23, 2026
2 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant