Skip to content

Phase 3: rekordbox XML export UI (busy state + result panel)#13

Open
xxvw wants to merge 1 commit into
mainfrom
feat/rekordbox-xml-export-ui
Open

Phase 3: rekordbox XML export UI (busy state + result panel)#13
xxvw wants to merge 1 commit into
mainfrom
feat/rekordbox-xml-export-ui

Conversation

@xxvw
Copy link
Copy Markdown
Owner

@xxvw xxvw commented May 18, 2026

Summary

Phase 3 polishes the Library Export / Import experience now that the
rekordbox XML exporter actually writes a file end-to-end (Phase 2).

  • A new libraryBusy: 'export' | 'import' | null flag is raised
    between the file-picker reply and the IPC reply, so the toolbar
    buttons disable themselves and switch labels to "Exporting…" /
    "Importing…" during a slow dispatch.
  • The previous one-line "Exported N tracks" hint is replaced by a
    dedicated LibraryResultPanel showing destination path
    (mono-formatted), track count, byte size for export, and
    imported/updated/skipped for import. Warnings collapse into a
    <details> block.
  • Errors get a red-bordered variant with the full message in a
    <pre> block.
  • CSS lives in a sibling LibraryResultPanel.css (App.css
    untouched), matching the colocation pattern used for
    FormatPickerModal.css in Phase 0.

Test plan

  • cargo test --workspace (carried over from main, no Rust changes here).
  • tsc --noEmit in ui/ — passes.
  • Visual: Playwright + Vite (no Tauri) confirms the new toolbar
    buttons render correctly and the FormatPickerModal opens (see
    screenshots/library-export-ui/{before,annotated,after}/).
    The busy-state label flip and LibraryResultPanel still need a
    manual smoke test with a real Tauri build because they depend
    on real IPC traffic.

…import

The Library screen now reflects the actual lifecycle of an export or
import dispatch:

- A `libraryBusy` flag is raised between the moment the user accepts
  the file-picker dialog and the IPC reply, so the Export Library… /
  Import Library… buttons disable themselves and show "Exporting…" /
  "Importing…" labels (preventing accidental re-trigger on a slow
  exporter).
- The previous one-line "Exported N tracks" hint is replaced by a
  dedicated `LibraryResultPanel` showing the destination path
  (mono-formatted), track count, byte size for export, and
  imported/updated/skipped counts for import. Warnings collapse into
  a `<details>` block so the success line stays uncluttered when the
  warning list is non-empty.
- Errors get a separate red-bordered variant with the full message
  in a preformatted block so multi-line errors from the plugins
  (e.g. "no exporter registered for serato") stay readable.

CSS lives next to the component (LibraryResultPanel.css) following
the same colocated pattern FormatPickerModal already uses, so App.css
is not touched.
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