Skip to content

Overlay flow rework: one list, copy a URL (v0.1.6)#21

Merged
Soulhackzlol merged 3 commits into
mainfrom
feat/overlay-flow-rework
Jun 11, 2026
Merged

Overlay flow rework: one list, copy a URL (v0.1.6)#21
Soulhackzlol merged 3 commits into
mainfrom
feat/overlay-flow-rework

Conversation

@Soulhackzlol

Copy link
Copy Markdown
Owner

Reworks the Overlay tab around one idea: everything is just an overlay with a URL you copy into OBS. Addresses the "too complex" feedback (preset vs editable vs legacy, hidden materialize-on-copy, redundant Open Studio).

One list

  • Presets are pre-installed as real overlays on first dashboard load (baked from the live runtime, so always fresh). No more preset/editable/legacy split or type filter - one list, every item has a working URL.
  • A one-time overlays_seeded config flag stops deleted presets from reappearing.

Three real actions

  • Per overlay: Copy URL, Edit in Studio, Duplicate, Delete (hand-written legacy: Copy URL + Delete, no Studio round-trip).
  • The standalone Open Studio button is replaced by + New overlay.
  • Studio save is two clear buttons: Save (overwrite) and Save as new.

Auto-hide as a quick toggle

  • Per-overlay Auto-hide when live switch; off appends ?autohide=off to the copied/preview URL (runtime already honors it - no re-bake, no duplicate file). The per-state control in the Studio remains the baked default. list_overlays now reports an autohide flag to drive the switch.

Restore / reset (deletes overlays, clearly stated)

  • Restore default overlays button and the factory reset wipe your Studio overlays and reinstall the built-ins, with a confirmation that says so plainly. Legacy hand-written files are kept.

Server

POST /overlays/seeded (mark installed) and POST /overlays/reset (wipe Studio overlays + clear flag); config reset scope=all also wipes them. New overlays_seeded bool mirrors the existing config-flag pattern.

Notes

Seeded overlays are per-install runtime artifacts and are gitignored (only the 4 shipped hand-written overlays stay tracked). Verified end-to-end: fresh load seeds 10 presets, ?autohide=off keeps an overlay up, Save/Save-as-new/Duplicate behave, restore/reset wipe Studio overlays but keep legacy. fmt + clippy -D warnings clean, 171 tests (incl. a wipe/autohide test + overlays_seeded round-trip). Ships as 0.1.6; tag after merge.

Reworks the Overlay tab so every overlay is just a file with a URL.

- Presets are pre-installed as real overlays on first run: one list, no
  preset/editable/legacy split or filter. A new `overlays_seeded` config
  flag keeps deleted presets from reappearing.
- Per overlay: Copy URL, Edit in Studio, Duplicate, Delete. "+ New
  overlay" replaces the standalone Open Studio button; Studio save is
  Save (overwrite) + Save as new.
- Auto-hide is a quick per-overlay toggle that appends ?autohide=off to
  the copied URL (no re-bake); the per-state Studio control stays the
  baked default.
- Restore default overlays (and the factory reset) wipe Studio overlays
  and re-seed, with a confirmation that says so; legacy hand-written
  files are kept.

Server: list_overlays reports an autohide flag; POST /overlays/seeded
and /overlays/reset; config reset scope=all wipes Studio overlays.
Seeded overlays are per-install runtime artifacts (gitignored).
Docs caught up to the Studio/one-list model:
- README / README.es overlay sections lead with the Studio (copy a URL,
  edit, Save / Save as new); the older ?style= URLs noted as the no-setup
  path.
- overlays/README rewritten around the Studio + the /state contract (fixes
  bitrate_kbps placement); CONTRIBUTING points new overlays at the Studio
  PRESETS.

Retire the bundled legacy overlays (minimal/corner/strip): files removed,
startup no longer drops them (main.rs embeds only the README + the
hand-write example now). Serving is unchanged - any dropped .html and the
/overlay?style= URLs still render.

Bug-hunt fixes on the new flow:
- Studio overlay cards no longer show an empty tag pill (:empty hidden).
- Gallery "Auto preview" keeps the widget on screen instead of demoing
  auto-hide, which left the canvas empty for most of the cycle.
- Removed dead CSS left by the rework (filter chips, preset/editable tag
  variants, old studio preset-list classes).
@Soulhackzlol Soulhackzlol added the enhancement New feature or request label Jun 10, 2026
Self-update: an About-tab Update button downloads the latest release,
verifies it against the published SHA-256, swaps the exe and relaunches
on the same ports. The header update-available pill now opens the in-app
updater instead of GitHub. Adds src/self_update.rs and a hand-rolled
src/sha256.rs (no new dependencies).

Restart from the dashboard, plus Show-in-Explorer buttons for the buffer
file, trace log and overlays folder. Relaunch (restart and self-update)
no longer lets the spawned child inherit our listening sockets, so the
ports release cleanly and the new instance reclaims the same ingest/web
ports (no spurious port-in-use switch prompt).

Overlay studio: auto-hide exits animate again (keyframe instead of a
skipped transition); tunable effects (liquid fill level/wave/speed/
smoothness, buffer-ring/edge/corner/tint knobs); the preview re-syncs all
hide timers on edit; unsaved-changes guard; calmer graph meter; the theme
colour picker no longer closes mid hue-drag; layer swatches update live;
overlays seed even without a configured destination.
@Soulhackzlol
Soulhackzlol merged commit ad77e33 into main Jun 11, 2026
4 checks passed
@Soulhackzlol
Soulhackzlol deleted the feat/overlay-flow-rework branch June 11, 2026 02:09
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement New feature or request

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant