feat(workspace): name Choose another song after local intake fails - #981
feat(workspace): name Choose another song after local intake fails#981seonghobae wants to merge 28 commits into
Conversation
Distinguish User cancelled from unsupported-format failures so the workspace can keep the prior admitted song and recovery card. Security Notes: - Untrusted input: native picker rejection text, including path- and secret-shaped diagnostics. - Trust boundary: Tauri select_local_audio_source → this bridge → buyer-visible copy. - Safe failure: cancellation is silent; unknown native text is replaced with supported-format guidance. - Privacy: absolute paths and secret-shaped messages must not cross into LocalAudioSelectionResult.error.
Keep picker cancellation silent, recover with Choose another song, and disable the header action while the native picker is open. Security Notes: - Untrusted input: native picker rejection text. - Trust boundary: selectLocalAudioSource result -> workspace ErrorState. - Safe failure: cancellation keeps prior admitted song and recovery card. - Privacy: path-shaped native text is already redacted by the analysis bridge.
…ancel Security Notes: - Untrusted input: native picker rejection text including User cancelled. - Trust boundary: selectLocalAudioSource -> App workspace recovery card. - Safe failure: cancel keeps prior admitted song and recovery; concurrent pickers are ignored. - Privacy: path-shaped diagnostics stay out of buyer-visible copy.
|
Warning Review limit reachedNext included review available in 9 minutes. View limit detailsLimit details: You’ve used the included review currently available. You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository. Review configuration: ⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (15)
✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
# Conflicts: # AGENTS.md # CHANGELOG.md
|
Merged current develop into this branch: resolved shared-file conflicts by including both this feature's local-selection failure next action and the newly landed #957 playable-range work (AGENTS/CHANGELOG unioned). No behavior dropped. |
… copy A failed local pick while the Score view was active never rendered the recovery ErrorState (renderWorkspaceState is skipped for score) and the header chip was gone, so the failure was fully silent. handleChooseLocalAudio now returns to the workspace before setting the local selection error. WorkspaceStates test now drives copy from the en locale instead of divergent hardcoded literals, so shipped guidance strings are what get verified. Evidence: App.test 74/74 incl. new Score-view failure path, WorkspaceStates 5/5.
Product outcome
A musician whose local file cannot start tonight still has a next rehearsal action. The workspace names Choose another song instead of leaving an unsupported-format chip with no recovery. Dismissing the picker stays silent and does not look like a failed song.
This is a first-run recovery slice of #964. It does not invent a bundled demo, compete with #980 (Use my own song), #974 (Analyze this song), or #976 (analysis-failure recovery), or open a parallel MIR product.
Exact identity
develop@acdbea6344fe1231c39535b575f4de35e4c607c9.feat/local-selection-failure-next-action.12432cbb18b0148dcc543e637db8247e70e9e7f4.What the buyer sees
Out of scope
Security Notes
User cancelled.select_local_audio_source→selectLocalAudioSource→ workspaceErrorState. No new filesystem, URL, subprocess, or IPC API.{ ok: false; cancelled: true }result; unknown native text is replaced with supported-format guidance; concurrent pickers are ignored.Merge gate
Keep unmerged until this unchanged exact head has repository and central CI/security/SAST/SBOM/coverage/review gates terminal-success, zero valid unresolved findings, a qualifying independent non-author last-push approval, and ordinary branch-protection acceptance. Never self-approve or bypass protection. Queued, pending, skipped, cancelled, predecessor-head, author, or model-only evidence is non-passing. Inherited #783 npm HIGH findings must not be suppressed here.