feat(workspace): name tonight's first hook plan on the map - #1017
feat(workspace): name tonight's first hook plan on the map#1017seonghobae wants to merge 11 commits into
Conversation
Name the owning part, owned hookPlan copy, labeled section, and time so the next rehearsal action is obvious. Open moves to the matching map section. Do not invent hook copy from other rehearsal metadata.
📝 WalkthroughWalkthroughRehearsal 역할에 Changes첫 훅 계획 기능
Estimated code review effort: 4 (Complex) | ~45 minutes Merge Risk: 🔵 Low · up to The PR adds an optional corroborated hook plan to Workspace with navigation to the matching map section. The remaining issues are limited to contradictory contributor guidance and an outdated architecture description, so the change is mergeable with explicit owner follow-up to align the documentation. Sequence Diagram(s)sequenceDiagram
participant Workspace
participant FirstHookPlanCallout
participant resolveFirstHookPlan
participant SongStructureRenderer
Workspace->>FirstHookPlanCallout: song 전달
FirstHookPlanCallout->>resolveFirstHookPlan: 첫 hookPlan 해석
FirstHookPlanCallout->>SongStructureRenderer: 대상 section으로 scrollIntoView
SongStructureRenderer-->>FirstHookPlanCallout: 탐색 완료 상태 반환
🚥 Pre-merge checks | ✅ 5✅ Passed checks (5 passed)
Full details: Docstring CoverageExplanation 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 10 files. (7 skipped: 7 unsupported.) ✨ Finishing Touches 💡 1🛠️ Fix failing CI checks 💡
📝 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 |
|
Repair only canonical BandScope PR #1017 branch Current-head review finding Run the shared-types lint/typecheck/tests and the applicable repository quickcheck, commit only this JSDoc repair to the same branch, and report the exact successor head plus verification evidence. Do not create another PR, merge, force-push, self-approve, or weaken protection. |
|
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
|
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 (FirstHookPlanCallout + 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: ffa1766. |
| /** Return whether a code point is in the cross-language plan whitespace set. */ | ||
| function isPlanWhitespaceCodePoint(codePoint: number): boolean { | ||
| return ( | ||
| (codePoint >= 0x0009 && codePoint <= 0x000d) || | ||
| codePoint === 0x0020 || | ||
| codePoint === 0x0085 || | ||
| codePoint === 0x00a0 || | ||
| codePoint === 0x1680 || | ||
| (codePoint >= 0x2000 && codePoint <= 0x200a) || | ||
| codePoint === 0x2028 || | ||
| codePoint === 0x2029 || | ||
| codePoint === 0x202f || | ||
| codePoint === 0x205f || | ||
| codePoint === 0x3000 || | ||
| codePoint === 0xfeff | ||
| ); | ||
| } | ||
|
|
||
| /** Apply one explicit cross-language Unicode whitespace policy to plan text. */ | ||
| export function isNonEmptySingleLineText(value: unknown): value is string { | ||
| if (typeof value !== "string") { | ||
| return false; | ||
| } | ||
| let hasNonWhitespace = false; | ||
| for (const character of value) { | ||
| const codePoint = character.codePointAt(0)!; | ||
| if ( | ||
| codePoint === 0x000a || | ||
| codePoint === 0x000d || | ||
| codePoint === 0x0085 || | ||
| codePoint === 0x2028 || | ||
| codePoint === 0x2029 | ||
| ) { | ||
| return false; | ||
| } | ||
| if (!isPlanWhitespaceCodePoint(codePoint)) { | ||
| hasNonWhitespace = true; | ||
| } | ||
| } | ||
| return hasNonWhitespace; |
There was a problem hiding this comment.
| if (!isNonEmptySingleLineText(hookPlan)) { | ||
| return null; | ||
| } | ||
| const trimmed = hookPlan.trim(); | ||
| return truncateCodePoints(trimmed, MAX_HOOK_PLAN_CHARACTERS); |
Product outcome
The mounted rehearsal workspace names tonight's first hook so a part can lock the melody before the room starts. Open moves to the matching rendered map section.
Customer-facing next action: Open Lead Vocal hook at 0:10 (demo). If no corroborated hook exists, stay on tonight's map for the next rehearsal cue.
Exact current identity
develop@749511c3ad4000090048718f685c6bee6b3d2c25.f1003c639229880b22808527894df8a3ad2eef5d.feat/workspace-first-hook-plan.Scope and trust boundary
hookPlancopy on an active, corroborated part plus labeled section and time.gettrap cannot substitute different buyer-visible hook copy after the own-data check.RehearsalRole.hookPlandeclaration documents that the field is rehearsal-facing hook guidance owned by the role only when runtime graph evidence corroborates it.behavior: auto.훅).Exact-head verification state
Current review finding
PRRT_kwDORjvEXs6bsI4mwas verified against the previous head, repaired on the canonical branch with descriptive shared-type JSDoc, and resolved only after the exact new blob was refetched.Fresh repository-native workflows for exact head
f1003c639229880b22808527894df8a3ad2eef5dare dispatched. At the latest refetchbuild-baselineis in progress andci,release,security-audit, aggregateSecurity Scan,sbom,SAST Semgrep,bandit, andsecret-scan-gateare queued. None of these non-terminal results is counted as success, and no predecessor-head evidence transfers.Security Notes
Dependency / merge gate
pdfjs-dist/nanoid/undicifindings are not copied or suppressed here.Summary by CodeRabbit