Skip to content

feat(gui): cozy library redesign (v0.3.0)#26

Merged
GregTheGreek merged 1 commit into
mainfrom
feat/redesign-tokens-atoms-library
May 18, 2026
Merged

feat(gui): cozy library redesign (v0.3.0)#26
GregTheGreek merged 1 commit into
mainfrom
feat/redesign-tokens-atoms-library

Conversation

@GregTheGreek
Copy link
Copy Markdown
Owner

Summary

Reworks the Rompatch GUI from a single-flow patcher into a small library + patcher app per the design handoff in ~/Desktop/romdesign/. The aim is a warm, library-like experience for non-technical players, while keeping all the existing verify / re-apply / export plumbing reachable.

What's new

  • Design tokens: warm light + dark themes (oklch), four user-selectable accents, Instrument Serif italic display / Geist UI / JetBrains Mono pairing.
  • Sidebar: cartridge brand mark, Library / Patcher / Discover hacks nav, Preferences footer.
  • Library: page header, search, segmented filter (All / Base / Patched), grid + list layouts. Base ROMs and Patched ROMs render in separate sections — patched ROMs are first-class cards with a format badge and a based on <BaseTitle> subline. Search matches against patch names too.
  • ROM detail slide-over (RomDetail.tsx): 520 px right-side panel with two modes (base / patched) navigated via a based on… pill. Download flow re-verifies the recorded hash before exporting and refuses on mismatch. Remove confirm copy adapts: base-with-N-patches / base-alone / patched.
  • Preferences modal (PreferencesModal.tsx): four sections — Appearance (Theme + Accent), Patching (strip header + fix checksum, persisted to localStorage and used to seed the patcher's Advanced defaults), Storage (library folder picker via librarySetRoot), About.
  • Patcher save strip: filename on top with double-click to rename, directory + "Change folder" beneath. Library refreshes immediately after a successful apply so the new patched ROM lands in the library without a manual refresh.

Backend

  • New library_reveal_rom(rom_hash) IPC so the slide-over can reveal a base ROM even when no patches reference it yet. Wraps the existing rom_path_for + reveal_in_finder.

Test plan

  • pnpm typecheck + cargo check -p rompatch-gui both pass.
  • Import a base ROM via the Library "Add ROM" button and via drag-drop; card appears in the Base section.
  • Apply a patch in the Patcher; new card appears in the Patched section without reload, sidebar count updates.
  • Click a base card → slide-over opens in base mode; click a patched card → slide-over opens directly in patched mode; click the based on… pill → navigates back to the base view within the same overlay.
  • Patched-mode Download: untouched patched output exports cleanly; corrupt the patched output file on disk between apply and download → download is refused with a danger toast.
  • Remove confirm copy adapts to base-with-N / base-alone / patched.
  • Reveal-in-Finder works from both header buttons.
  • Preferences → Patching: toggles persist across reload and seed the patcher's Advanced section on next visit.
  • Preferences → Storage: choose a new library folder, library reloads from the new location.
  • Preferences → Appearance: theme + accent persist; the pre-paint resolver in index.html matches on next launch.

… base/patched library split

Lift the rompatch UI from a single-flow patcher into a small, opinionated
library + patcher app per the design handoff.

- design tokens: warm light/dark themes, four accents, Instrument Serif
  + Geist + JetBrains Mono type pairing
- sidebar: cartridge brand mark, Library / Patcher / Discover hacks nav,
  Preferences footer
- library: page header, search, segmented filter (All / Base / Patched),
  grid + list layouts, separate Base and Patched sections — patched
  ROMs are first-class cards with format badge and based-on subline
- ROM detail slide-over: 520px right-side panel with two modes (base /
  patched) navigated via a based-on pill; download flow re-verifies the
  recorded hash and refuses on mismatch; remove confirm copy adapts to
  base-with-N / base-alone / patched contexts
- preferences modal: Appearance (Theme + Accent), Patching (strip header
  + fix checksum, persisted and used to seed the patcher's Advanced
  options), Storage (library folder picker), About
- patcher: save-strip now shows filename above directory with
  double-click to rename, and refreshes the library on a successful
  apply so the new patched ROM appears immediately
- backend: new library_reveal_rom IPC so the slide-over can reveal a
  base ROM even when no patches reference it yet

Co-Authored-By: Claude
@GregTheGreek GregTheGreek marked this pull request as ready for review May 18, 2026 07:06
@GregTheGreek GregTheGreek merged commit 0e0cc5c into main May 18, 2026
7 checks passed
@GregTheGreek GregTheGreek deleted the feat/redesign-tokens-atoms-library branch May 18, 2026 07:06
@GregTheGreek GregTheGreek changed the title feat(gui): cozy library redesign with slide-over and base/patched split feat(gui): cozy library redesign (v0.3.0) May 18, 2026
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