Skip to content

Light theme and export panel polish - #7

Merged
NoomStuff merged 3 commits into
mainfrom
feature/light-theme-polish
Nov 13, 2026
Merged

NoomStuff merged 3 commits into
mainfrom
feature/light-theme-polish

Conversation

@NoomStuff

@NoomStuff NoomStuff commented Nov 13, 2026 •

Copy link
Copy Markdown
Owner

A polish pass on the preview audio picker, the export panel, the timeline zoom buttons and the light theme.

  • Audio picker. A plain click or Enter plays only that track and closes the menu. Shift-click, Shift+Enter or right-click adds or removes a track and keeps the menu open. This is a soloClick option on DropdownSelect, so the export panel's pickers keep the old toggle behaviour.
  • Advanced section. I rebuilt it as an AdvancedSection component. The options are always rendered and visible. Only the box around them animates its height from 0 to auto (interpolate-size), so unfolding uncovers options that are already drawn instead of fading them in. The box clips only while it moves, so the Other tracks dropdown can still spill out once it's open. It is inert only once fully folded, to keep hidden options out of the tab order. While Advanced opens, the modal body scrolls along, so the options don't unfold below the fold.
  • Zoom buttons. Zoom in and Zoom out disable at the half-second floor and at fit. The floor now lives in one helper, minimumViewLength, instead of three copies.
  • Switches. You can drag the thumb back and forth. It follows the pointer, the colours show which side it will land on, and it settles on whichever side it's released past. A plain press still toggles. The invisible checkbox now covers the whole switch, since the global checkbox size had shrunk it to 18px at the right edge.
  • Copy clip times. Removed from the in-app and native Edit menus. The commands still exist and can be bound to keys in Settings.
  • Focused fields. A focused field stays a dark slot with a thin accent ring. Before, focus gave it the same background as its card, so it blended into the card while typing. The global rule uses :where(), so the shortcut search can still skip the ring when it takes focus as the tab opens.
  • Light theme. Panels are nearly opaque now, because the translucent light glass picked up the video behind it as a pastel wash. The layers are a gray sheet, white cards and gray fields. Off switches have a white thumb, shadows and menus are softer, and the accent colours are the dark theme's hues, darkened enough for white text. Dark mode is unchanged.

Verification

  • bun run format and bun run verify: 446 unit tests pass, including a new canZoom test that steps from fit to both limits.
  • Drove the built app under xvfb with a scratch Playwright script:
    • Checked plain, Shift, right-click and Shift+Enter picks in the audio menu.
    • Logged per-frame height, overflow and inert while Advanced opens and folds. Options are visible on every frame, clipping lifts once it settles, and folded means 0px and inert.
    • Confirmed Zoom out is disabled at fit.
    • Dragged a switch both ways, short of halfway and past the row edge, and checked plain and label clicks still toggle.
    • Took screenshots of both themes.
  • Updated the UI specs for the new behaviour:
    • scene-cuts sends the copy commands over app:command.
    • export-dialog checks the folded box instead of toBeHidden.
    • export-workflow builds a track mix with Shift-clicks, which keeps it covering the remuxed preview.
    • control-conventions gains a switch-drag test.
  • The first CI run caught regressions in export-workflow and settings-reset, both fixed here.

For review

  • The preview stage stays dark in light mode on purpose.
  • There's no version bump. Release after merge with bun run release.

@NoomStuff
NoomStuff merged commit 22542af into main Nov 13, 2026
12 checks passed
@NoomStuff
NoomStuff deleted the feature/light-theme-polish branch November 13, 2026 20:37
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant