feat(workspace): guide tonight's first verse on map and player - #947
seonghobae wants to merge 12 commits into
Conversation
Name the earliest labeled verse so the room can open the story line on the map or hear it from the player. Fail closed on intro, pre-chorus, chorus, bridge, outro, tag, pickup, stop, and handoff labels, and keep Hear behind a real seek callback.
|
Important Draft PR not reviewedDraft PRs are not automatically reviewed by default.
To automatically review draft PRs, update your CodeRabbit configuration: reviews:
auto_review:
drafts: true✨ 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 |
…le names
The ko firstVerseBody template attached the subject particle directly to
the dynamic role name ("{role}이 ..."), which produces ungrammatical copy
for vowel-ending names such as 피아노 (피아노이). Restructure the template
to "{at} {section}에서 {role} 파트가 첫 소절을 잡습니다." so particles
always attach to the fixed noun 파트, matching the particle-safe callout
convention used across the workspace-first series, and update the main
callout test expectation accordingly.
# Conflicts: # CHANGELOG.md
# 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-verse-line 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. |
|
Admission-state correction for exact head Finding: live develop comparison is diverged (11 ahead / 2 behind). This PR remains Open and is moved to Draft/Proposed. Its commits, reviews, threads, and valid delta are preserved. Return it to Ready after causal repair/non-force reconciliation and fresh exact-head evidence. No bypass, synthetic status/approval, manual rerun, Force Push, review dismissal, or Close is used. |
Product outcome
After analysis, the room can see tonight's first explicitly labeled verse and take one bounded next action: open that section on the renderer-owned map, or hear it from Player only when the owning surface supplies playback authority. Copy names the holding part only when section-local role evidence corroborates it; otherwise it stays band-wide.
Exact current identity
develop@314ddeae7b775a4957594b599358c8255617eb2e.c0008336a63b6b984310d59e8e063a5f3e5cffd0.feat/workspace-first-verse-line.develop.Stale-base / single-writer repair
The live branch had moved to
38ed1c8f4dc5f020db43536596aa401c454db55cwhile this body still described56e5b811.... Fresh comparison showed that the intervening history had merged old protected snapshots (#783and#957) and left the branch behind currentdevelopby two commits. It also made this micro-feature a writer of repository-wideAGENTS.md,ARCHITECTURE.md,CLAUDE.md,CHANGELOG.md, anddocs/design-system/component-contract.md.GitHub's clean current-base merge candidate
8cc442ab6fca495943c66999f6331be186897536proved the feature can reconcile with current protecteddevelop. Ordinary two-parent descendantc0008336...uses that current-base merge tree, but restores those five repository-wide authority files from protecteddevelop. The branch therefore consumes current protected workflow/security/product truth without taking ownership of global agent, architecture, release-history, or design-system policy. Branch movement wasforce=false; the full intervening history remains ancestry.No unrelated npm/PDF.js/workflow/dependency source is present in the current protected-base diff.
Product / trust boundary
versesection whose runtime window is an integer, non-negative, positive-duration interval bounded by sharedMAX_SECTION_TIME_SECONDS.Test-first stale-completion repair retained
6125221ab28147ae45986e14b71ebd20e6ea5f1dcovers two distinct runtime songs with invalid ids but equal verse metadata.a1f2c73834cd1268f598d2dffa0a29e55ed9d8c1binds the completion receipt to the currentRehearsalSongobject and requires receipt/song identity equality.d77924814b33c2977bd2ad331421b9bbad9b149frestores the production file terminal newline.56e5b81150fba328028c58b98052751a66c4d7bapreserved release history after an intermediate changelog mistake.파트가wording rather than attaching이directly to the dynamic role name.Current inline review threads are resolved; prior reviews/checks do not transfer to
c0008336....Distinct from neighboring rehearsal-decision lanes
First-intro, first-chorus, first-bridge, first-stop, playable-range, and other rehearsal-decision slices keep their own semantic ownership. This PR owns only the explicitly labeled first-verse decision surface and its Player/Workspace presentation; it does not absorb their source or repository-wide policy.
Exact-current-head verification
Fresh PR workflow generation exists for
c0008336a63b6b984310d59e8e063a5f3e5cffd0:ci35841964936: queuedbuild-baseline35841964960: queuedSecurity Scan35841965026: queuedSAST Semgrep35841964872: queuedsbom35841965032: queuedCodeQL PR35841964968: queuedQueued/pending/absent evidence is not GREEN. Inspect exact job/log/checkout-SHA evidence for any terminal failure before mutation or rerun. There is no qualifying independent non-author current-head
APPROVEDreview.Merge gate
Keep Draft until one unchanged exact head has terminal applicable repository/security/SAST/SBOM/CodeQL/build evidence, zero valid unresolved current-head findings, required owned coverage/docstring evidence, buyer-visible browser/Electron accessibility acceptance for this material UI, and a qualifying independent non-author latest-head approval.
Do not self-approve, force-push, destructively rebase, weaken branch protection, transfer predecessor evidence, create source-neutral wake commits, or blind-rerun failures.