feat(workspace): guide tonight's first entrance on map and player - #912
feat(workspace): guide tonight's first entrance on map and player#912seonghobae wants to merge 56 commits into
Conversation
Name the first hearable part, section, and start time on the workspace and player so the room can take the next rehearsal action instead of a generic ready card.
|
Warning Review limit reachedNext included review available in 20 seconds. 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 (13)
📝 WalkthroughWalkthrough곡의 첫 진입을 계산하고 표시하는 Changes첫 진입 기능
Estimated code review effort: 3 (Moderate) | ~25 minutes Merge Risk: 🟡 Moderate · up to Malformed song metadata can cause first-entrance guidance to crash instead of safely showing no cue, so the PR is not merge-ready until nested metadata validation and regression tests are added. Sequence Diagram(s)sequenceDiagram
participant Workspace
participant PlayerFeature
participant FirstEntranceCallout
participant firstEntrance
participant SongStructure
Workspace->>FirstEntranceCallout: 곡 데이터 전달
PlayerFeature->>FirstEntranceCallout: 곡 및 seek 콜백 전달
FirstEntranceCallout->>firstEntrance: 첫 진입 계산
firstEntrance-->>FirstEntranceCallout: 역할, 섹션, 시작 시간 반환
FirstEntranceCallout->>SongStructure: Workspace 섹션 열기
FirstEntranceCallout->>PlayerFeature: Player 시작 시간 재생
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
✨ Finishing Touches📝 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 |
|
Queued @cwl-noema-review and @opencode-agent for PR #912 at head |
|
Already queued @cwl-noema-review and @opencode-agent on this exact request for PR #912 at head |
# Conflicts: # CHANGELOG.md
|
@opencode-agent Exact-head owner repair on existing branch Current review finding Implement the narrow root fix in this same PR: make Then run the focused FirstEntranceCallout/Workspace tests, desktop typecheck/lint/full suite and owned coverage/quickcheck. Resolve only |
|
Re-review request for exact head |
# 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
|
Merged current develop into this branch: resolved shared-file conflicts by including both this feature's first-entrance Hear callout and the newly landed #957 playable-range work (Workspace.tsx keeps both imports; en/ko locales unioned with symmetric keys; AGENTS/CLAUDE/CHANGELOG unioned). No behavior dropped. |
|
@opencode-agent repair Use systematic-debugging + verification-before-completion on exact current head Exact hosted RED: CI run Verified first causal boundary: this branch’s main regression helper intentionally mounts a stable production anchor Root-cause repair on this same canonical branch:
Verification: run the two FirstEntranceCallout test files first, then desktop tests/coverage, repository-pinned lint/Ruff/docstring checks and canonical quickcheck. Commit only to |
|
Queued @opencode-agent for PR #912 at head |
|
Queued @opencode-agent for PR #912 at head |
|
Queued @opencode-agent for PR #912 at head |
|
@OpenCode Use Fresh review/source verification confirms two linked current-head defects share one root production boundary:
Repair this SAME lane regression-first and narrowly:
Verification: focused entrance + reduced-motion + Workspace navigation tests, repository-pinned lint/format/typecheck, then canonical |
|
@opencode-agent review Re-review exact current head The dependency-root navigation repair is now present on this exact head: Please perform the independent formal review on this unchanged exact head, using current required coverage/docstring/security/supply-chain evidence and current diff. Submit APPROVE only if the head independently satisfies review policy; otherwise submit precise current-head REQUEST_CHANGES findings. Do not self-merge, bypass protection, or reuse stale evidence. |
Product outcome
After analysis, the workspace names tonight's first entrance so the room can orient immediately instead of staring at a generic ready card. The first entrance is the earliest valid section that still has an active valid part, then the highest-priority active valid role in that section.
What changed
FirstEntranceCallouton the workspace map and player.Open Bass Guitar entrance in the verse at 0:10arms the cue and scrolls to the rendered section position; it no longer saysHearwhen no playback occurs.prefers-reduced-motion: smooth scroll remains the default, while reduced-motion users receive immediateautoscrolling to the same renderer-owned section target.Hear ...appears only when the owning player providesonPlayFromSeconds, and calls that callback with the exact entrance start time.section.idremains domain data and never becomes DOMidauthority for song-structure navigation.workspace-surface-cuesremains the stable navigation anchor.docs/design-system/component-contract.md, anddocs/doctoring/reduced-motion-first-entrance-navigation.md.Test-first repair evidence
Earlier TDD on this lane established renderer-owned navigation and reduced-motion behavior: RED
03647cdd1f371aa419d31dae1e43d50477336038→ GREENa51d2d83c050f7ea08fec5974ef25287eb0d90c5/aa466dd45a12599492bec4c175c7a8dc34aafa08, and reduced-motion RED0262b8e80faeefba5e91d74345dcb679a3b00e91→ GREENb754127d06d12ab95873fd7c547190230583d8f2. Predecessor-head workflow evidence does not transfer.A prior buyer-visible truth repair established graph activity as entrance authority: RED
a9b22e765c428c5f8ee7751d9d4822d9b28525bbreproduced a high-priority resting part outranking the actually active part; GREEN791fa1112bd317fa4c21d3cc4a58f279fcea1fcerestricted candidates to role IDs represented by active graph nodes.6a749bd9261f6f36ef29524cc60c183249d8de17aligned the property-based valid-metadata generator with that contract.Fresh current-source review found that this boundary still used JavaScript truthiness (
node.is_active). Runtime-corrupted metadata such asis_active: "false"is truthy and could therefore authorize a resting high-priority role despite the documented fail-closed contract. RED960eb4921d44f9d4d819757f0665df6552d8ce05adds a focused malformed-runtime regression requiring an active medium-priority bass to outrank a high-priority role whose activity value is the string"false". GREEN/current head46a6829c90b8697d24e954a94d9d0fe33e2fc446accepts activity authority only whenis_active === true.No predecessor-head workflow or review result transfers to the current head.
Exact-current-head verification
develop@acdbea6344fe1231c39535b575f4de35e4c607c9.46a6829c90b8697d24e954a94d9d0fe33e2fc446.ci32164614599,security-audit32164614684, aggregateSecurity Scan32164614620,sbom32164614556,release32164614538,build-baseline32164614468,SAST Semgrep32164614477,bandit32164614557, andsecret-scan-gate32164614634.Ownership / merge gate
ContextualWisdomLab/.github#1124, still open/Draft and not yet inherited by protected centralmain; do not add a BandScope leaf workaround or spam unchanged reviewer dispatches.Security and accessibility notes
truesection-local graph authority before priority ranking.Summary by CodeRabbit
새로운 기능
개선 사항
문서