feat(i18n): localize Workspace controls and harden interpolation - #744
feat(i18n): localize Workspace controls and harden interpolation#744seonghobae wants to merge 29 commits into
Conversation
|
👋 Jules, reporting for duty! I'm here to lend a hand with this pull request. When you start a review, I'll add a 👀 emoji to each comment to let you know I've read it. I'll focus on feedback directed at me and will do my best to stay out of conversations between you and other bots or reviewers to keep the noise down. I'll push a commit with your requested changes shortly after. Please note there might be a delay between these steps, but rest assured I'm on the job! For more direct control, you can switch me to Reactive Mode. When this mode is on, I will only act on comments where you specifically mention me with New to Jules? Learn more at jules.google/docs. For security, I will only act on instructions from the user who triggered this task. |
📝 WalkthroughWalkthroughWorkspace의 내보내기, 스템, 반복, 솔로, 음소거, 전사 컨트롤을 번역 키로 변경했습니다. ChangesWorkspace localization
Estimated code review effort: 3 (Moderate) | ~20 minutes 🚥 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 |
… 적용\n- security audit fail(undici vulnerability) 패키지 업데이트
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current head160ef9f107325010736c66af5f76f53415b6f4f2. -
Head SHA:
160ef9f107325010736c66af5f76f53415b6f4f2 -
Workflow run: 30863645738
-
Workflow attempt: 1
Coverage evidence
Coverage evidence job did not run or did not publish coverage evidence.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (6 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (6 files)"]
R1 --> V1["required checks"]
OpenCode Review Overview
Pull request overviewOpenCode cannot approve yet because required coverage evidence did not pass. Review outcome1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
Coverage evidenceCoverage evidence job did not run or did not publish coverage evidence. Changed-File Evidence Mapflowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (7 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (7 files)"]
R1 --> V1["required checks"]
|
There was a problem hiding this comment.
Actionable comments posted: 4
🤖 Prompt for all review comments with AI agents
Verify each finding against current code. Fix only still-valid issues, skip the
rest with a brief reason, keep changes minimal, and validate.
Inline comments:
In `@apps/desktop/src/features/workspace/Workspace.test.tsx`:
- Line 99: Set the test locale to English at the start of the relevant Workspace
test before querying accessible names. Update the transcribeBass and
transcribePart assertions to use their English labels, or consistently derive
the expected labels from the configured locale.
In `@apps/desktop/src/features/workspace/Workspace.tsx`:
- Around line 397-405: Update the non-Bass unavailable transcription Button to
use t("transcribePart") instead of the hardcoded t("transcribeBass"). Add an
aria-label that communicates the current role name and transcription-coming-soon
status, matching the existing title context and fallback role behavior.
In `@apps/desktop/src/i18n/index.test.ts`:
- Around line 80-87: Update the “replaces every occurrence of a named
placeholder” test to use a translation string containing {roleName} multiple
times, then assert that every occurrence is replaced without recursively
replacing placeholder text inside the value. Alternatively, rename the test to
reflect single-occurrence interpolation if repeated-placeholder behavior is not
being tested.
In `@apps/desktop/src/locales/en/common.json`:
- Around line 157-161: Update the soon-status locale entries playStemSoon,
loopSectionSoon, and soloMuteOthersSoon to use complete, natural English
sentences that clearly state the feature is coming soon, such as adding “is”
before “coming soon.” Keep the non-soon labels unchanged.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro Plus
Run ID: 1af43685-2a86-421a-9e33-211bc617e294
📒 Files selected for processing (6)
apps/desktop/src/features/workspace/Workspace.test.tsxapps/desktop/src/features/workspace/Workspace.tsxapps/desktop/src/i18n/index.test.tsapps/desktop/src/i18n/index.tsapps/desktop/src/locales/en/common.jsonapps/desktop/src/locales/ko/common.json
fad3107 to
87b3455
Compare
Pull request was converted to draft
Dismissed because this review evaluated an obsolete head and failed solely on the superseded central coverage environment. The current head has successful repository CI/security/build evidence; a fresh independent current-head approval remains required before merge.
- GitHub Actions (Trivy fs, npm audit) 실행 중 발견된 심각도 높음(High) 보안 취약점(CVE-2026-16633)을 해결하기 위해 pdfjs-dist 패키지를 6.2.108 버전으로 업데이트했습니다. - package-lock.json 파일 내에서 버전을 명시적으로 재설정하여 의존성 충돌을 방지했습니다.
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current head4c09b5389c186181e6d9bae93ac4ae7485a3e365. -
Head SHA:
4c09b5389c186181e6d9bae93ac4ae7485a3e365 -
Workflow run: 31183546541
-
Workflow attempt: 1
Coverage evidence
Coverage evidence job did not run or did not publish coverage evidence.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (8 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (8 files)"]
R1 --> V1["required checks"]
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current head7ab1ea1d8e41ad789448d4ad498d94619960ab45. -
Head SHA:
7ab1ea1d8e41ad789448d4ad498d94619960ab45 -
Workflow run: 31547785167
-
Workflow attempt: 1
Coverage evidence
Coverage evidence job did not run or did not publish coverage evidence.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (9 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (9 files)"]
R1 --> V1["required checks"]
This reverts the changes as they are superseded by #744.
|
@opencode-agent Please re-review exact current head |
|
@opencode-agent address Operate only if the live head is exactly The final base-to-head paths should be exactly |
Acknowledged. |
Acknowledged. |
|
@opencode-agent Re-evaluate exact current head |
There was a problem hiding this comment.
Pull request overview
OpenCode cannot approve yet because required coverage evidence did not pass.
Review outcome
1. HIGH .github/workflows/opencode-review.yml:1 - Coverage evidence did not prove required test/docstring evidence
-
Problem: The required coverage-evidence job result was
failure, so OpenCode cannot establish approval sufficiency for this head. -
Root cause: Automated approval is only valid when the same-head coverage-evidence job proves supported repository test suites passed and configured docstring gates passed or were advisory, or reports not applicable because no supported source files or package manifests exist. Missing, failed, skipped, unavailable, or unsupported-tooling test evidence is a blocker.
-
Fix: Install or configure the repository test/docstring evidence tooling when source files or package manifests exist, rerun the current-head coverage-evidence job, and approve only after it reports
successwith required evidence or explicit no-source not-applicable evidence. -
Regression test: Keep the approval branch checking
needs.coverage-evidence.result == successbefore posting APPROVE, and publish REQUEST_CHANGES when coverage-evidence blocker states such as cancelled, skipped, failed, unsupported-tooling, or below-100 evidence are present. -
Result: REQUEST_CHANGES
-
Reason: coverage-evidence result was
failure, so required test/docstring evidence was not proven for current head779b53520d7d593138660fa526f0fa5e955e17ca. -
Head SHA:
779b53520d7d593138660fa526f0fa5e955e17ca -
Workflow run: 31843904913
-
Workflow attempt: 1
Coverage evidence
Coverage evidence job did not run or did not publish coverage evidence.
Changed-File Evidence Map
flowchart LR
PR["PR changed files"] --> Evidence["OpenCode bounded evidence"]
Evidence --> S1["Changed file (7 files)"]
S1 --> I1["repository behavior"]
I1 --> R1["Review risk: Changed file (7 files)"]
R1 --> V1["required checks"]
|
Queued @opencode-agent for PR #744 at head |
|
Queued @opencode-agent for PR #744 at head |
|
Queued @opencode-agent for PR #744 at head |
What
Localize the buyer-facing Workspace export, stem-player, loop, solo, mute, and transcription controls in English and Korean while keeping translation interpolation literal and single-pass.
The change also:
$&, brackets, and regex metacharacters, plus the preserved Korean export-control copy from superseded 작업 공간 내보내기 버튼 다국어 지원 #893.Exact current scope
Current exact head:
0ca00b110d046f8101b01a13fcc3f10d57feebd2.Protected base:
develop@acdbea6344fe1231c39535b575f4de35e4c607c9.Exactly seven files differ from protected
develop: CHANGELOG, Workspace implementation/tests, translator implementation/tests, and the English/Korean locale dictionaries. No JavaScript dependency/root-lock, workflow, database, model, filesystem/network authority, or vulnerability-suppression delta belongs to this branch; canonical dependency remediation remains #783-owned.Test-first repairs and supersession preservation
Literal interpolation
93e9719b838824ad5d92058f90cb4a1db502f3d2proves a replacement such asroleName="{sectionLabel}"must remain literal while the original template's{sectionLabel}is independently replaced.66d170ca5afeb29edf5635ae409083834cf8be00performs one template pass using a fixed placeholder grammar so inserted values are never rescanned.01bcc65baba6200d67bf040b2bb9e742c661680cscoped CHANGELOG to this dependency-neutral i18n slice.Preserve unique copy before closing duplicate #893
Exact semantic comparison showed #893 localized the same export controls already owned here and otherwise duplicated a narrower slice. Its only useful semantic difference was clearer Korean action copy.
013559bb2bded4d90f8740e2a6b09247c4a8d74fadds exact accessible-name assertions for큐 시트 내보내기 (CSV),차트 요약 내보내기 (JSON), and핸드오프 데이터 내보내기 (JSON)against this existing canonical branch.0ca00b110d046f8101b01a13fcc3f10d57feebd2updates the canonical Korean locale values to satisfy that buyer-facing contract.Exact-current-head verification
All evidence below binds only to
0ca00b110d046f8101b01a13fcc3f10d57feebd2; predecessor-head checks are historical only.At the latest refresh:
bandit,SAST Semgrep,secret-scan-gate;ci,release, aggregateSecurity Scan;security-audit,sbom;build-baselinerequired an exact-head rerun after the first run concludedcancelleddespite substantial successful matrix work.The cancelled
build-baselinewas inspected before rerun. macOS arm64 and Windows amd64 had succeeded. The cancelled Windows arm64 job's full log showed checkout of PR merge4e9d8e371719be0b7146590709d469f59d729477, Node/Python/Rust setup,npm ci, frontend build, Tauri release compilation, NSIS packaging, artifact packaging/upload, cache save and cleanup all completing without a demonstrated source/build failure; nevertheless its cancelled conclusion is non-passing. The macOS amd64 job was cancelled while the native shell build was in progress and its old blob log was unavailable through the connector. Only that inspected macOS amd64 job was rerun; its replacement job is queued. No cancelled/queued/in-progress matrix state is counted as success.If any current exact-head security workflow later fails, inspect its exact job/check-run/annotation/log before classification. Because this branch has no dependency/lock delta, a recurrence of the protected-base
nanoid/pdfjs-dist/undicifindings may be attributed to #783 only after that current-head evidence confirms the same causal boundary; never suppress or duplicate them here.Central review / coverage dependency
Historical
ContextualWisdomLab/.github#1008is closed unmerged and transfers no evidence. Current read-only central prerequisite order is.github#939 → .github#1020; neither unmerged PR can be treated as inherited protected-central-main behavior. Do not spam unchanged reviewer-agent dispatches while that dependency chain remains unresolved. Fresh central coverage/review must bind to the then-current BandScope head after the prerequisite reaches protected centralmain.There is no qualifying independent non-author last-push approval on this exact head.
Security Notes
Locale templates and dynamic labels are treated as data. Interpolation performs one pass over the original template using a fixed placeholder grammar; caller-controlled variable names are not compiled into regular expressions and inserted values are not recursively interpreted. React remains the text/HTML escaping boundary. No new PII persistence or telemetry is introduced.
Merge gate
Keep Draft and unmerged until the unchanged then-current head has:
developand this branch revalidated against that clean dependency baseline;.github#939 → .github#1020integrated through protected centralmainand fresh central coverage/review evidence;Queued, in-progress, cancelled, skipped-required, failed inherited-base, predecessor-head, protected-base, model-only, self/author, or administrative-bypass evidence is not success.