feat(workspace): name the next instrument check on Ranges and Player - #1052
feat(workspace): name the next instrument check on Ranges and Player#1052seonghobae wants to merge 20 commits into
Conversation
Ranges now uses the same playable-span authority as the rehearsal map and tells the player to check tonight's notes on their instrument. The Player window names the first map section to loop and does not claim local-audio playback.
|
Warning Review limit reachedNext included review available in 38 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 (6)
📝 WalkthroughWalkthroughRanges가 재생 가능한 범위와 악기 확인 문구를 표시합니다. Player가 첫 명명 섹션을 루프 대상으로 표시합니다. Workspace가 두 기능을 통합하고 영어·한국어 번역과 테스트를 추가합니다. ChangesRanges 화면
Workspace 화면 통합
동작 문서화
Estimated code review effort: 3 (Moderate) | ~20 minutes Merge Risk: 🟡 Moderate · up to The Ranges guidance can name a later playable span instead of tonight’s first playable span when a later span has an overlap warning, which may direct musicians to check the wrong section. This is a bounded correctness issue that should be fixed before merge. Sequence Diagram(s)sequenceDiagram
participant Workspace
participant RangesFeature
participant PlayerFeature
participant Translator
Workspace->>RangesFeature: song과 activeRole 전달
RangesFeature->>Translator: 범위 상태 문구 요청
Translator-->>RangesFeature: 현재 로케일 문구 반환
RangesFeature-->>Workspace: 첫 범위와 역할 카드 렌더링
Workspace->>PlayerFeature: song 전달
PlayerFeature->>Translator: Player 상태 문구 요청
Translator-->>PlayerFeature: 현재 로케일 문구 반환
PlayerFeature-->>Workspace: 첫 명명 섹션과 오디오 상태 렌더링
🚥 Pre-merge checks | ✅ 4 | ❌ 1❌ Failed checks (1 warning)
✅ Passed checks (4 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 66.67% which is insufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 9 functions across 7 files. (6 skipped: 6 unsupported.) ✨ Finishing Touches 💡 2📝 Generate docstrings 💡
🛠️ Fix failing CI checks 💡
🧪 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 |
|
@opencode-agent review Please review exact current head |
|
@opencode-agent Please perform the required independent formal review on exact current head |
|
@opencode-agent Please perform the required independent formal review on exact current head |
|
@opencode-agent review |
|
@opencode-agent review Review exact current head Revalidate first-playable-span ordering, Ranges/Player loaded-product integration, own-data/Proxy fail-closed reads for song/section/range authority, unique role/card identity, no-playback honesty, desktop exact 100% statement/branch/function/line evidence, and current security/supply-chain state. Bind any formal verdict only to this exact head; do not inherit predecessor-head, deterministic-fallback, model-unavailable, status-only, or rate-limited evidence. |
|
Queued @opencode-agent for PR #1052 at head |
There was a problem hiding this comment.
Pull request overview
OpenCode reviewed the current-head product diff. Coverage is a separate gate.
Changed files
AGENTS.md— repository behaviorARCHITECTURE.md— repository behaviorCHANGELOG.md— repository behaviorCLAUDE.md— repository behaviorapps/desktop/src/features/player/index.test.tsx— TypeScript or JavaScript runtimeapps/desktop/src/features/player/index.tsx— TypeScript or JavaScript runtimeapps/desktop/src/features/ranges/index.test.tsx— TypeScript or JavaScript runtimeapps/desktop/src/features/ranges/index.tsx— TypeScript or JavaScript runtimeapps/desktop/src/features/workspace/Workspace.rehearsalSurfaces.test.tsx— TypeScript or JavaScript runtimeapps/desktop/src/features/workspace/Workspace.test.tsx— TypeScript or JavaScript runtimeapps/desktop/src/features/workspace/Workspace.tsx— TypeScript or JavaScript runtimeapps/desktop/src/features/workspace/firstRangeSqueeze.test.ts— TypeScript or JavaScript runtimeapps/desktop/src/features/workspace/firstRangeSqueeze.ts— TypeScript or JavaScript runtimeapps/desktop/src/locales/en/common.json— repository behaviorapps/desktop/src/locales/ko/common.json— repository behavior
Changed behavior
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Repository file: AGENTS.md"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Repository file: AGENTS.md"]
R1 --> V1["required checks"]
Evidence --> S2["Repository file: ARCHITECTURE.md"]
S2 --> I2["repository behavior"]
I2 --> R2["Review risk: Repository file: ARCHITECTURE.md"]
R2 --> V2["required checks"]
Evidence --> S3["Repository file: CHANGELOG.md"]
S3 --> I3["repository behavior"]
I3 --> R3["Review risk: Repository file: CHANGELOG.md"]
R3 --> V3["required checks"]
Evidence --> S4["Repository file: CLAUDE.md"]
S4 --> I4["repository behavior"]
I4 --> R4["Review risk: Repository file: CLAUDE.md"]
R4 --> V4["required checks"]
Evidence --> S5["TypeScript/JavaScript: index.test.tsx (9 files)"]
S5 --> I5["TypeScript or JavaScript runtime"]
I5 --> R5["Review risk: TypeScript/JavaScript: index.test.tsx (9 files)"]
R5 --> V5["package test plus coverage"]
Evidence --> S6["Repository file: common.json"]
S6 --> I6["repository behavior"]
I6 --> R6["Review risk: Repository file: common.json"]
R6 --> V6["required checks"]
Evidence --> S7["Repository file: common.json"]
S7 --> I7["repository behavior"]
I7 --> R7["Review risk: Repository file: common.json"]
R7 --> V7["required checks"]
Findings
No source-backed product finding is synthesized from the coverage gate. A coverage miss belongs in the status comment.
- Head SHA:
b737906aba0b95251109e53434dd8860ff6664fd - Workflow run: 33246682101
- Workflow attempt: 1
- Coverage gate:
failure
Review outcome
Coverage is a gate, not the review. This body reviews the changed product files.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Repository file: AGENTS.md"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Repository file: AGENTS.md"]
R1 --> V1["required checks"]
Evidence --> S2["Repository file: ARCHITECTURE.md"]
S2 --> I2["repository behavior"]
I2 --> R2["Review risk: Repository file: ARCHITECTURE.md"]
R2 --> V2["required checks"]
Evidence --> S3["Repository file: CHANGELOG.md"]
S3 --> I3["repository behavior"]
I3 --> R3["Review risk: Repository file: CHANGELOG.md"]
R3 --> V3["required checks"]
Evidence --> S4["Repository file: CLAUDE.md"]
S4 --> I4["repository behavior"]
I4 --> R4["Review risk: Repository file: CLAUDE.md"]
R4 --> V4["required checks"]
Evidence --> S5["TypeScript/JavaScript: index.test.tsx (9 files)"]
S5 --> I5["TypeScript or JavaScript runtime"]
I5 --> R5["Review risk: TypeScript/JavaScript: index.test.tsx (9 files)"]
R5 --> V5["package test plus coverage"]
Evidence --> S6["Repository file: common.json"]
S6 --> I6["repository behavior"]
I6 --> R6["Review risk: Repository file: common.json"]
R6 --> V6["required checks"]
Evidence --> S7["Repository file: common.json"]
S7 --> I7["repository behavior"]
I7 --> R7["Review risk: Repository file: common.json"]
R7 --> V7["required checks"]
OpenCode Review Overview
Coverage evidence did not pass, so approval is blocked. The formal pull-request review is the source-backed diff review, not this status comment. |
|
Exact-head OpenCode dispatch note for b737906: the central coverage-evidence job failed before PR execution while building its trusted Python 3.14 tool image because base lock installation could not find antlr4-python3-runtime==4.9.3. This is central .github toolchain evidence, not a BandScope source verdict; no approval or merge evidence was produced. |
Product outcome
Ranges now uses the same playable-span authority as the ready rehearsal map. A musician sees tonight's first named span and is told to check it on their instrument. Inverted or unnamed evidence is rejected instead of being shown as playable. The Player window names tonight's first map section to loop and states that this window does not play audio yet.
This completes the #957 playable-range contract on the Ranges board. It does not decode or play local audio; that remains #961. It does not extract
OverlapWarningListor Storybook tokens; that remains #897.Exact current identity
develop@749511c3ad4000090048718f685c6bee6b3d2c25.1f9a4ef75e563fe318f7761a400094b0d4ebff73.feat/ranges-player-next-instrument-check.Current exact scope
playableRange/firstRangeSqueezedecide which spans Ranges may name.Verification
Post-push review repairs
Centralized runtime-object validation for nullable and malformed roots.
Preserved the first valid playable range; later clash warnings no longer replace the first-span cue.
Added singular English/Korean written-note copy.
Made range-card React keys and test ids unique within and across sections; overlap-warning keys remain unique within a role.
Rejects id-less roles instead of rendering a card that cannot be named by the canonical first-range resolver.
npm run test --workspace @bandscope/desktop: 226 tests passed; coverage thresholds held on the configured files.npm run typecheck --workspace @bandscope/desktopnpm run lint --workspace @bandscope/desktopnpm run build --workspace @bandscope/desktopSecurity Notes
song, section, role, range, overlap-warning, and transcription values from analysis results.developshipped JavaScript dependency truth. This branch does not copy or suppresspdfjs-dist/nanoid/undicifindings.Merge gate
develop.Summary by CodeRabbit
새 기능
개선 사항
Latest exact-head verification
Active-work guard
No runtime boundary or dependency was added. Malformed or accessor-backed analysis values fail closed before becoming buyer-visible range or loop authority.