Skip to content

feat(export): confirm bulk downloads - #138

Merged
flamboh merged 3 commits into
mainfrom
agent/bulk-export-confirmation
Aug 3, 2026
Merged

flamboh merged 3 commits into
mainfrom
agent/bulk-export-confirmation

Conversation

@flamboh

@flamboh flamboh commented Jul 24, 2026

Copy link
Copy Markdown
Owner

Summary

Rebuilds and supersedes #123 on top of current main.

  • keeps single-track downloads immediate while confirming album and library ZIP exports
  • shows a grouped, frozen manifest with album groups, loose tracks, and audio-only approximate size
  • revalidates export-relevant state before execution and requires a second confirmation when the plan changes
  • retains the dialog in an unavailable state when readiness or async write-time state drifts
  • isolates planning and equality in pure planExport / samePlan seams and projects unsaved editor values before planning
  • restores initiator focus, focuses Cancel first, and prevents duplicate/dismiss actions while busy
  • integrates with the mobile workspace drawer so it closes before confirmation opens and focus returns to a visible control

Scope decisions

Selection, sharing state, and empty albums do not invalidate the plan. Export-relevant metadata, filenames, ordering, settings, files, and full artwork bytes do.

Human review

Use the branch preview with three local audio files. Put two tracks in an album and leave one loose.

  1. On desktop, choose download all. Verify no download starts before confirmation, the dialog reports three tracks, the album and loose-track groups expand correctly, and Cancel has initial focus.
  2. Confirm the download. Verify exactly one ZIP downloads and contains the expected album folder, loose track, current filenames/metadata, and album cover when present.
  3. Download the album alone. Verify confirmation includes only that album and the resulting ZIP is album-scoped.
  4. Download one track from the editor. Verify it remains immediate and does not open confirmation.
  5. At a mobile viewport, open the library drawer and choose download all. Verify the drawer closes before the dialog opens, only the manifest scrolls at short heights, footer actions stay visible, and dismissing returns focus to the visible library button.
  6. With the dialog idle, verify Escape and an overlay click dismiss it. While it says Preparing…, dismissal and duplicate submission should be blocked.

Business-rule review: the displayed size is approximate audio size only; changing export-relevant data requires reconfirmation, while selection/sharing changes do not.

Validation

  • bun run typecheck
  • bun run lint: 0 warnings/errors
  • focused export/mobile tests: 5 files / 22 tests
  • full suite: 101 files / 630 tests
  • bun run build
  • git diff --check

The Playwright export flow was updated for the merged mobile drawer; the user-managed local dev server was not running during local validation.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Jul 24, 2026

Copy link
Copy Markdown

Deploying with  Cloudflare Workers  Cloudflare Workers

The latest updates on your project. Learn more about integrating Git with Workers.

Status Name Latest Commit Preview URL Updated (UTC)
✅ Deployment successful!
View logs
tagium 76c0c6b Commit Preview URL

Branch Preview URL
Jul 29 2026, 11:30 PM

@github-actions

github-actions Bot commented Jul 24, 2026

Copy link
Copy Markdown

React Doctor found no new issues. 🎉

Reviewed by React Doctor for commit 76c0c6b.

@flamboh
flamboh marked this pull request as ready for review July 25, 2026 08:27
# Conflicts:
#	src/features/workspace/audioTagger.tsx
@flamboh
flamboh merged commit 996c982 into main Aug 3, 2026
6 checks passed
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