Skip to content

feat(workspace): name tonight's first D.C. al Fine on the map - #1091

Open
seonghobae wants to merge 1 commit into
developfrom
feat/workspace-first-dc-al-fine
Open

feat(workspace): name tonight's first D.C. al Fine on the map#1091
seonghobae wants to merge 1 commit into
developfrom
feat/workspace-first-dc-al-fine

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 30, 2026

Copy link
Copy Markdown
Collaborator

Product outcome

The ready rehearsal map names tonight's first stored D.C. al Fine so the room can return to the beginning and end at Fine, then check tonight's first range. Customer copy stays target-agnostic: this is not MIR beginning/Fine detection, a destination mark, OCR, or a form tag. It is distinct from Da Capo, Dal Segno, Fine, To Coda, Coda, D.S. al Coda, D.C. al Coda, and D.S. al Fine.

Exact current identity

Current exact scope

  • Trusted D.C. al Fine is a MusicXML-shaped { label } on song.dcAlFine: D.C. al Fine or D.C. al Fine 1D.C. al Fine 9.
  • Missing, inherited, extra-keyed, lowercase, sibling-navigation, padded, or overlong labels fail closed to a stay-on-the-map next action. Do not invent D.C. al Fine.
  • Ready workspace copy tells the room to return to the beginning and end at Fine, then check tonight's first range (or name the first section when it is unlabeled).
  • Demo analysis carries the trusted demo D.C. al Fine; local-audio fallback does not fabricate the mark.
  • English and Korean copy enable the next action without asserting unverified beginning or Fine destinations.

Authority

Dependency / merge gate


Devin Review

Show a trusted D.C. al Fine on the ready rehearsal map so the room can
return to the beginning and end at Fine, then check tonight's first range.
Fail closed on sibling navigation, inherited labels, and unverified
beginning or Fine destinations. Do not invent D.C. al Fine from MIR.
@seonghobae seonghobae added area: ui-ux Frontend, interaction, design, or user experience priority: medium Normal-priority or P2 work type: feature New or expanded product capability scope: product-gap Customer-visible product gap labels Aug 30, 2026 — with Grok (by xAI)
@coderabbitai

coderabbitai Bot commented Aug 30, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 18 minutes.

View limit details

Limit 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.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro Plus

Run ID: 34971aa3-7d17-4422-96c7-e4c448e826d0

📥 Commits

Reviewing files that changed from the base of the PR and between 749511c and edab7e3.

📒 Files selected for processing (17)
  • AGENTS.md
  • ARCHITECTURE.md
  • CHANGELOG.md
  • CLAUDE.md
  • apps/desktop/core/src/lib.rs
  • apps/desktop/src/features/workspace/Workspace.test.tsx
  • apps/desktop/src/features/workspace/Workspace.tsx
  • apps/desktop/src/features/workspace/firstDcAlFine.test.ts
  • apps/desktop/src/features/workspace/firstDcAlFine.ts
  • apps/desktop/src/locales/en/common.json
  • apps/desktop/src/locales/ko/common.json
  • apps/desktop/vite.config.ts
  • docs/doctoring/workspace-first-dc-al-fine.md
  • packages/shared-types/src/index.ts
  • packages/shared-types/test/index.test.ts
  • services/analysis-engine/src/bandscope_analysis/api.py
  • services/analysis-engine/tests/test_dc_al_fine_contract.py

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.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@devin-ai-integration devin-ai-integration Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Devin Review found 3 potential issues.

Devin Review

Comment on lines +1776 to +1777
if (typeof value.label !== "string") {
return invalidField(`${path}.label`);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Inherited labels pass shared validation

When dcAlFine inherits label, validateRehearsalDcAlFine accepts it and parseRehearsalSong clones an empty marker. The workspace then reports the saved instruction as missing.

Suggested change
if (typeof value.label !== "string") {
return invalidField(`${path}.label`);
if (
!Object.prototype.hasOwnProperty.call(value, "label") ||
typeof value.label !== "string"
) {
return invalidField(`${path}.label`);
}
Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines +125 to +130
#[serde(
default,
deserialize_with = "deserialize_optional_dc_al_fine",
skip_serializing_if = "Option::is_none"
)]
dc_al_fine: Option<DcAlFinePayload>,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: Absent markers remain backward-compatible

The custom deserializer defaults an absent dcAlFine but rejects explicit null. Legacy projects still load without gaining a synthetic marker.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Comment on lines 1202 to +1204
result = build_demo_rehearsal_song(audio_features)
if request["sourceKind"] == "demo":
result["dcAlFine"] = {"label": "D.C. al Fine"}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📝 Info: Local caches preserve marker absence

Only demo requests add dcAlFine. Local-audio cache writes and hits preserve its absence instead of fabricating score notation.

Devin Review

Was this helpful? React with 👍 or 👎 to provide feedback.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: ui-ux Frontend, interaction, design, or user experience priority: medium Normal-priority or P2 work scope: product-gap Customer-visible product gap type: feature New or expanded product capability

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant