feat(workspace): name tonight's first pending approval on the map - #998
feat(workspace): name tonight's first pending approval on the map#998seonghobae wants to merge 12 commits into
Conversation
Name the owner and owned scope so the room can sign off the waiting approval. Open moves to the uniquely named rendered map section. Assignments, comments, and already-approved scopes stay guidance-only.
|
Warning Review limit reachedNext included review available in 55 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 (23)
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 |
Band-wide approvals have no section to navigate to, so the callout renders no Open action there and the key was never read in either locale. Drop the dead copy instead of wiring a destination-less button.
…scope
The changes copy appended {scope}를, which reads ungrammatically when the
owner-supplied scope ends in a consonant. Attach the particle to a fixed
noun ({scope} 부분을) so the sentence is grammatical for every scope ending,
and pin the safe shape in the i18n tests.
# 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 (FirstApprovalCallout + firstRangeSqueeze), unioned en/ko locale tails (JSON valid, en/ko symmetric). Also fixed a case-collision: merged legacy .Jules/palette.md learnings into canonical .jules/palette.md (10 unique sections appended) and dropped the stale alias. No conflict markers remain. Merge head: 69e5930. |
…ators
Free-text owner scopes like 'pre chorus' previously matched only
'chorus', silently pointing at the wrong section; canonical labels
use hyphens ('pre-chorus'). Normalize [-\s]+ runs to single spaces
for both scope and label keys before whole-token matching, keeping
occupied-span bookkeeping intact.
Evidence: firstApproval suite 12/12 incl. new 'pre chorus' case.
…scope
- duplicated approval ids now vanish even when only one side is
actionable (approved is not actionable, so status-first filtering
let a pending duplicate present itself as the sole sign-off)
- label matching runs on the full trimmed scope; the 180-code-point
bound applies only to reported copy, so truncation can no longer
manufacture token boundaries ('verseline' \u2192 'verse')
Evidence: firstApproval suite 14/14 incl. both regression cases.
Product outcome
Name tonight's first pending approval so the room can read the waiting scope and open the uniquely named rendered map section.
Design authority: workspace next-action pattern plus
docs/design-system/component-contract.md. Distinct from first-assignment (#996), first-open-comment (#997), first-count (#995), first-lyric (#913), and export-and-priority (#900). This does not invent a parallel MIR product; #828 remains the owner of #770. This does not replace #740 (handoff import).Current exact scope
develop@acdbea6344fe1231c39535b575f4de35e4c607c9.feat/workspace-first-pending-approval.FirstApprovalCalloutnames the owner, the owned scope, and the uniquely named labeled section and time.changes_requestedoverpending. Already-approved scopes are not tonight's next action.{owner}님이.Demo song: pending MD approval for
Verse harmony passat 0:10 on the unique verse.Trust boundary
section.idis never DOM-ID authority. Navigation uses renderer child index under the song-structure region.behavior: "auto"when the OS requests it.Dependency ownership
Canonical #783 owns the protected-base JavaScript HIGH findings (
pdfjs-dist/nanoid/undici). This branch has no JavaScript dependency, lockfile, or vulnerability-suppression delta. Inherited npm HIGH must not be suppressed here.Merge gate
APPROVEDreview.Queued, pending, skipped-required, failed, predecessor-head, protected-base, author-only, model-only, status-only, or synthetic evidence is non-passing.