Skip to content

feat(workspace): name tonight's first fill plan on the map - #1016

Open
seonghobae wants to merge 17 commits into
developfrom
feat/workspace-first-fill-plan
Open

feat(workspace): name tonight's first fill plan on the map#1016
seonghobae wants to merge 17 commits into
developfrom
feat/workspace-first-fill-plan

Conversation

@seonghobae

@seonghobae seonghobae commented Aug 24, 2026

Copy link
Copy Markdown
Collaborator

Product outcome

The mounted rehearsal workspace names tonight's first fill so a part can lock the walk-in before the room starts. Open moves to the matching rendered map section.

Customer-facing next action: Open Bass Guitar fill at 0:10 (demo). If no corroborated fill exists, stay on tonight's map for the next rehearsal cue.

Exact current identity

  • Protected base: develop@acdbea6344fe1231c39535b575f4de35e4c607c9.
  • Exact head: 070fceff58a5ab87089981c7e8424ccd75a4c05b.
  • Branch: feat/workspace-first-fill-plan.

Scope and trust boundary

  • Owned fillPlan copy on an active, corroborated part plus labeled section and time.
  • Do not invent fill copy from groove, cue, simplification, overlap, range, chord labels, function labels, setup notes, transposition plans, tuning plans, dynamics plans, articulation plans, confirmed overrides, harmonic explanations, or confidence notes.
  • Runtime fill-plan authority is the snapshotted own data-property descriptor value. A Proxy get trap cannot substitute different buyer-visible fill copy after the own-data check.
  • Regression commit 7a7b0553a9a5e33d9ae4bba412465a19d87a0e19 locks the Proxy get-trap case; production repair commit 070fceff58a5ab87089981c7e8424ccd75a4c05b consumes the descriptor value directly.
  • Distinct from first-setup-note, first-transposition-plan, first-tuning-plan, first-dynamics-plan, and first-articulation-plan.
  • Reduced-motion Open uses behavior: auto.
  • Korean next-action copy stays particle-safe (필인).

Exact-head verification state

Fresh repository workflows for 070fceff58a5ab87089981c7e8424ccd75a4c05b have been dispatched. At the latest refetch they are still queued/in-progress, so no non-terminal result is counted as success and predecessor-head workflow evidence is not transferred. The predecessor security failure was inspected at its actual merge checkout and was the protected-base nanoid / pdfjs-dist / undici HIGH baseline rather than this fill-plan branch.

Dependency / merge gate


Open in Devin Review

Summary by CodeRabbit

  • 새 기능

    • 리허설 작업공간에서 오늘의 첫 번째 필 플랜을 확인할 수 있습니다.
    • 플랜의 담당 파트, 섹션, 시작 시간을 표시합니다.
    • 열기 동작으로 해당 렌더링 맵 섹션으로 이동합니다.
    • 플랜이 없을 때 안내 문구를 제공합니다.
    • 영어와 한국어를 지원하며, 한국어 문법과 섹션 라벨을 자연스럽게 표시합니다.
  • 개선 사항

    • reduced-motion 설정에서는 즉시 이동해 멀미를 줄입니다.
    • 곡이나 플랜 정보가 변경되면 안내 상태를 안전하게 초기화합니다.

Show the earliest corroborated fill so a part can lock the walk-in
before rehearsal. Open moves to the matching rendered map section.
Do not invent fill copy from groove, cue, simplification, overlap,
range, chords, setup, transposition, tuning, dynamics, or articulation.
@coderabbitai

coderabbitai Bot commented Aug 24, 2026

Copy link
Copy Markdown
Contributor

Review Change Stack

Warning

Review limit reached

Next included review available in 41 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: 16a88d8a-d64e-47da-a305-382450fdde08

📥 Commits

Reviewing files that changed from the base of the PR and between 38e7d57 and a4948df.

📒 Files selected for processing (11)
  • .Jules/palette.md
  • .jules/palette.md
  • AGENTS.md
  • ARCHITECTURE.md
  • CHANGELOG.md
  • CLAUDE.md
  • apps/desktop/src/features/workspace/Workspace.test.tsx
  • apps/desktop/src/features/workspace/Workspace.tsx
  • apps/desktop/src/locales/en/common.json
  • apps/desktop/src/locales/ko/common.json
  • packages/shared-types/src/index.ts
📝 Walkthrough

Walkthrough

Changes

첫 fill plan workspace 흐름

Layer / File(s) Summary
Fill plan 데이터 및 표시 계약
packages/shared-types/src/index.ts, packages/shared-types/test/index.test.ts, apps/desktop/src/i18n/index.ts, apps/desktop/src/i18n/index.test.ts, apps/desktop/src/locales/*/common.json
RehearsalRolefillPlan을 추가했습니다. 역할 데이터 검증과 데모 데이터를 갱신했습니다. 섹션 라벨과 영어·한국어 callout 문구를 추가했습니다.
첫 fill plan 선택 및 검증
apps/desktop/src/features/workspace/firstFillPlan.ts, apps/desktop/src/features/workspace/firstFillPlan*.test.ts
소유 데이터 속성만 사용해 유효한 fill plan을 선택합니다. 활성 그래프 노드, 시간 범위, 역할 우선순위, 안정적 ID 정렬, Unicode 길이 제한을 검증합니다.
Workspace callout 및 섹션 탐색
apps/desktop/src/features/workspace/FirstFillPlanCallout*, apps/desktop/src/features/workspace/Workspace.*, apps/desktop/src/features/workspace/coverageContract.test.ts, apps/desktop/vite.config.ts, docs/*, AGENTS.md, ARCHITECTURE.md, CHANGELOG.md, CLAUDE.md
FirstFillPlanCallout을 workspace에 렌더링합니다. 버튼이 현재 song-structure renderer의 섹션으로 이동하도록 연결했습니다. reduced-motion, 다중 workspace, 접근성 ID, 현지화, 비정상 입력을 테스트하고 관련 문서와 커버리지 계약을 갱신했습니다.

Estimated code review effort: 4 (Complex) | ~45 minutes

Merge Risk: ⚪ Minimal · up to 38e7d

The PR adds a first-fill plan callout and map navigation; the remaining issues are limited to documentation, consistency, and test cleanup and do not create merge-blocking product or production risk. It is merge-ready after normal checks and review.

Sequence Diagram(s)

sequenceDiagram
  participant Workspace
  participant FirstFillPlanCallout
  participant resolveFirstFillPlan
  participant SongStructureRenderer
  Workspace->>FirstFillPlanCallout: 현재 song 전달
  FirstFillPlanCallout->>resolveFirstFillPlan: 첫 fill plan 해석
  resolveFirstFillPlan-->>FirstFillPlanCallout: 유효한 plan 반환
  FirstFillPlanCallout->>SongStructureRenderer: sectionIndex 대상 조회
  SongStructureRenderer-->>FirstFillPlanCallout: 소유 섹션 반환
  FirstFillPlanCallout->>SongStructureRenderer: scrollIntoView 실행
Loading
🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed PR 제목은 mounted rehearsal workspace map에 tonight’s first fill plan을 표시하는 핵심 변경을 정확하고 간결하게 설명합니다.
Docstring Coverage ✅ Passed Docstring coverage is 83.33% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 30 functions across 22 files. (8 skipped: 8…
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Full details: Docstring Coverage

Explanation

Docstring coverage is 83.33% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 30 functions across 22 files. (8 skipped: 8 unsupported.)

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/workspace-first-fill-plan

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.

@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 24, 2026 — with Grok (by xAI)
devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

devin-ai-integration[bot]

This comment was marked as resolved.

coderabbitai[bot]

This comment was marked as resolved.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Continue only on the existing canonical feat/workspace-first-fill-plan branch. Fresh writer lease: exact head 38e7d5709faa1e09267a34b8ea7fd37432b8eb22, protected base develop@acdbea6344fe1231c39535b575f4de35e4c607c9, and current packages/shared-types/src/index.ts blob 1eda7d99d639f75d39c06f2cd3a904f004223. Do not create another PR, force-push/rebase, touch foreign repositories, or alter dependency/security ownership.

Receiving-code-review verification: current CodeRabbit thread PRRT_kwDORjvEXs6cDO0b is valid. RehearsalRole is an exported shared contract, but its current doc comment is only /** Documented. */; this PR adds optional fillPlan?: string without documenting the role contract or what makes fillPlan authoritative. Make the smallest docs-only source repair on this same branch: replace the placeholder JSDoc immediately above RehearsalRole with beginner-readable JSDoc that explains the type represents one rehearsal role and that optional fillPlan is role-owned rehearsal guidance, consumed only when runtime graph/section evidence corroborates that role. Do not change fields, runtime validation, demo values, or product behavior.

Verification-before-completion: run the repository's applicable shared-types TypeScript/docstring/lint tests and any exact contract test covering exported declarations; then refetch the resulting exact head and report the checks. Resolve only PRRT_kwDORjvEXs6cDO0b after the fixed exact head has the applicable deterministic checks green. The other current informational fill-copy thread is not part of this mutation.

Copy link
Copy Markdown
Collaborator Author

@opencode-agent Repair the exact current-head unresolved JSDoc contract finding on the existing feat/workspace-first-fill-plan branch only. Refetched identity immediately before dispatch: protected base develop@acdbea6344fe1231c39535b575f4de35e4c607c9, exact head 38e7d5709faa1e09267a34b8ea7fd37432b8eb22, unresolved thread PRRT_kwDORjvEXs6cDO0b on packages/shared-types/src/index.ts. Verify the finding against this exact head before editing. The current exported RehearsalRole still has only the generic /** Documented. */ marker and fillPlan?: string has no descriptive field contract. Make the smallest documentation-only repair: replace/strengthen the declaration JSDoc so it describes RehearsalRole as a rehearsable part in a song section and documents optional fillPlan as rehearsal-facing copy owned by that role; if you use a field-level JSDoc, state only the existing contract and do not invent new runtime authority. Do not change any TypeScript shape, validation/runtime behavior, fill-plan selection semantics, dependencies, lockfiles, or unrelated docs. Run the repository-required shared-types/TypeScript lint/typecheck/tests and applicable quickcheck/docstring checks; commit to this same branch; then report the exact successor head and verification. Resolve only this thread after the successor exact head proves the descriptive JSDoc is present and required checks for the touched contract are green.

@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 2 new potential issues.

Open in Devin Review

Comment thread apps/desktop/src/features/workspace/firstFillPlan.ts
Comment thread apps/desktop/src/features/workspace/FirstFillPlanCallout.tsx
# Conflicts:
#	AGENTS.md
#	CHANGELOG.md
#	CLAUDE.md
#	apps/desktop/src/features/workspace/Workspace.tsx
#	apps/desktop/src/locales/en/common.json
#	apps/desktop/src/locales/ko/common.json
@seonghobae

Copy link
Copy Markdown
Collaborator Author

Resolved merge conflicts against origin/develop (749511c): union-merged AGENTS.md/CHANGELOG.md bullets, sentence-merged CLAUDE.md, kept both import sets in Workspace.tsx (FirstFillPlanCallout + firstRangeSqueeze), unioned en/ko locale tails (JSON valid, en/ko symmetric). Merged legacy .Jules/palette.md into canonical .jules/palette.md, dropped alias. No conflict markers remain. Merge head: 195967e.

CodeRabbit flagged the exported declaration as lacking descriptive
JSDoc per coding guidelines. Comment-only change.
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