feat(workspace): name the next action after project load or save fails - #984
feat(workspace): name the next action after project load or save fails#984seonghobae wants to merge 7 commits into
Conversation
Keep an open rehearsal map visible when save fails, and name Choose another project / Try saving again instead of the analysis error card. Security Notes: - Untrusted input is project file picker results and native load/save errors. - Trust boundary: Tauri load_project/save_project -> redacted error copy -> recovery action. - Recovery reuses the existing load/save pickers; it does not follow paths or start analysis. - Privacy: paths, URLs, and secret-shaped diagnostics stay redacted.
|
Warning Review limit reachedNext included review available in 40 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 (12)
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 |
…order The recovery card added a projectError load branch before EmptyState and a save-failure banner above Workspace, but the component contract still listed only the original four routing states. Update the routing-order rule so the documented contract matches App.tsx.
The Save Project control stays reachable while the Score view is active, but renderWorkspaceState is bypassed there, so a failed save set projectError with no visible feedback. Hoist the shared recovery banner so it renders above ScoreView as well, and pin the behavior with a test.
# Conflicts: # CLAUDE.md
|
Merged current develop into this branch: resolved the shared-file conflict by including both this feature's project save/load failure next actions and the newly landed #957 playable-range work (CLAUDE.md keeps both sentences). No behavior dropped. |
Product outcome
When a project file cannot open, the workspace names Choose another project as the next rehearsal action. When tonight's rehearsal map cannot be saved, it names Try saving again and keeps the open song visible. BandScope does not reuse the analysis error card for these persistence failures and does not invent a demo or retry analysis.
This is the remaining project-file failure path after analysis recovery (#976), local-file recovery (#981), and YouTube recovery (#982). Canonical MIR/known-stem work stays on #828 / #770. Canonical crash-safe save publication stays on #970 / #962. Canonical handoff import stays on #740 / #739.
Exact current identity
develop@acdbea6344fe1231c39535b575f4de35e4c607c9.feat/project-save-load-failure-next-action.1f6c68d44389c049c7edb6dc1d08730117414709.Buyer-visible contract
That project file can't open tonight/그 프로젝트 파일로는 오늘 합주를 열 수 없습니다.Choose another project/다른 프로젝트 선택하기reuses the existing project picker.Tonight's rehearsal map couldn't be saved/오늘 합주 지도를 저장하지 못했습니다.Try saving again/다시 저장하기reuses the existing save picker.Security Notes
load_project/save_projecterror copy, including path- and URL-shaped diagnostics.safeErrorDetail→ persistence recovery card → existing picker.secret-tokennever appears in the recovery heading or action.Verification
Desktop Vitest on this head, with 100% gated coverage on
App.tsx,export.ts,i18n, and Score*:src/App.test.tsx(73)src/i18n/index.test.ts(9)src/lib/export.test.ts(17)apps/desktoptsc --noEmitpassed.Dependency / merge gate
nanoid,pdfjs-dist,undici) remain owned by fix(security): establish canonical npm, PDF.js, Nanoid, and Undici baseline #783. This branch has no lockfile or vulnerability-suppression delta.