feat(workspace): name tonight's first transition cue on the map - #993
feat(workspace): name tonight's first transition cue on the map#993seonghobae wants to merge 27 commits into
Conversation
Name the holding part when an active graph node corroborates it, the owned cue.kind === "transition" value, and the time so the room can catch the change together. Open scrolls the renderer-owned song-structure section. Do not invent a change from lyric, count, groove, setup, simplification, overlap, or form labels.
|
Warning Review limit reachedNext included review available in 54 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 (20)
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Plus Run ID: 📒 Files selected for processing (20)
Included review availability: Your plan provides up to 1 included review per hour; 0 remain after this review. 📝 WalkthroughWalkthrough첫 번째 소유 전환 큐를 검증하고 선택하는 로직을 추가했습니다. 워크스페이스는 전환 안내를 표시하고 대응하는 곡 구조 섹션으로 이동합니다. 지역화, reduced-motion, 런타임 입력 검증, 회귀 테스트와 문서가 추가되었습니다. Changes첫 전환 기능
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: ⚪ Minimal · up to This localized documentation-only change has no actionable merge-blocking risk remaining and is merge-ready after normal checks and review. Sequence Diagram(s)sequenceDiagram
participant Workspace
participant FirstTransitionCallout
participant resolveFirstTransition
participant SongStructure
Workspace->>FirstTransitionCallout: song 전달
FirstTransitionCallout->>resolveFirstTransition: 첫 전환 해석 요청
resolveFirstTransition-->>FirstTransitionCallout: 역할, 큐, 시간 반환
FirstTransitionCallout->>SongStructure: data-section-index 대상 검색
FirstTransitionCallout->>SongStructure: scrollIntoView({block: "nearest", behavior: "smooth" 또는 "auto"})
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation Docstring coverage is 82.61% which is sufficient. The required threshold is 80.00%. Docstring coverage is scoped to functions touched by this diff. Analyzed 23 functions across 12 files. (8 skipped: 8 unsupported.) ✨ 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 |
|
Re-review request for exact head |
# Conflicts: # AGENTS.md # CLAUDE.md # apps/desktop/src/features/workspace/Workspace.tsx # apps/desktop/src/locales/en/common.json # apps/desktop/src/locales/ko/common.json
|
Resolved merge conflicts against origin/develop (749511c): unioned AGENTS.md bullets, merged both workspace descriptions in CLAUDE.md, kept both import sets in Workspace.tsx (FirstTransitionCallout + firstRangeSqueeze; both render paths already auto-merged), and unioned en/ko locale tails (transition keys + range keys; JSON valid, en/ko symmetric). No conflict markers remain. Merge head: 5d2d14c. |
Product outcome
Name tonight's first transition cue so the room can catch the change together. The Open action moves to the matching rendered map section.
Design authority: workspace next-action pattern plus
docs/design-system/component-contract.md. This uses the already-ownedCueAnchorKindvaluetransition; it does not invent a new MIR product.Exact current identity
develop@acdbea6344fe1231c39535b575f4de35e4c607c9.feat/workspace-first-transition-cue.ad661de729a332cf55353d61992581f94f022e6c.Buyer-visible contract
FirstTransitionCalloutnames the holding part when an active graph node corroborates it, the ownedcue.kind === "transition"value, and the validated transition time.Current repairs
useId()removes duplicate landmark ids when transition callouts are co-mounted.FirstTransitionCallout.workspace-scope.test.tsxpins multi-workspace correctness.firstTransitionLabelinstead of the long guidance sentence;FirstTransitionCallout.unavailable-a11y.test.tsxpins the accessible name.The memoization, landmark-id, workspace-scope, and unavailable-label tests were committed before their successor production fixes, but hosted RED runs did not reach terminal state before the successor pushes. Treat them as regression-first source evidence, not terminal hosted RED evidence.
Single-writer ownership
PR #994 overlaps this exact
FirstTransitionCallout/firstTransitionproduction authority and is Draft. #994 is not closed because its labeled-section/localization and cue-truncation semantics are not identical. Keep #993 as the earlier canonical first-transition owner and do not mutate both lanes in parallel.Exact-head verification state
Fresh repository workflows for exact head
ad661de729a332cf55353d61992581f94f022e6cwere dispatched after the latest repair. At the latest refetch, CI, release, security-audit, aggregate Security Scan, SBOM, build-baseline, Semgrep, Bandit, and secret-scan were queued. None is counted as success and no predecessor-head workflow/review evidence transfers.The previously open Devin finding about unmemoized transition resolution has been verified against the current implementation and resolved. No current approval is inferred from that thread resolution.
Dependency and merge gate
Canonical #783 owns the protected-base JavaScript dependency-security baseline. This branch has no JavaScript dependency, lockfile, or vulnerability-suppression delta; inherited dependency findings must not be suppressed here.
Keep unmerged until one unchanged exact head has every applicable repository and central CI/build/release/security/SAST/SBOM/supply-chain/coverage/review gate terminal-success, exact required coverage/docstring evidence, zero valid unresolved current-head findings, and the live ruleset requirement for two qualifying independent approvals is satisfied. Never self-approve, bypass protection, or transfer queued/pending/skipped/failed/stale/predecessor/protected-base/model-only/status-only evidence.