Skip to content
Closed
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@

- Display the analyzed song tempo (BPM) as a badge in the rehearsal workspace.
- 각 합주 역할(Role)별 개인 연습 진행도를 0~100% 범위로 기록 및 시각화할 수 있는 연습 진척도(`practiceProgress`) 트래커 기능 추가. UI 컨트롤(슬라이더 및 +/- 버튼)과 한/영 다국어 지원 포함.
- 작업 공간 내보내기 버튼(CSV, JSON, Handoff) 텍스트를 공통 i18n 번역 파일(ko/en)로 분리하고 동적으로 다국어를 지원하도록 개선.

## [0.1.3] - 2026-04-29

Expand Down
6 changes: 3 additions & 3 deletions apps/desktop/src/features/workspace/Workspace.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -263,7 +263,7 @@ export function Workspace({ song, sourceBootstrap = null, onSongUpdate }: Worksp
className="min-h-10 border-cyan-300/30 bg-cyan-300/10 font-semibold text-cyan-50 shadow-[0_10px_30px_rgba(34,211,238,0.16)] hover:bg-cyan-300/20 hover:text-white"
>
<Download className="mr-2 size-4 text-cyan-200" aria-hidden="true" />
Export Cue Sheet (CSV)
{t("exportCueSheetCsv")}

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

📐 Maintainability & Code Quality | 🟡 Minor | ⚡ Quick win

🧩 Analysis chain

🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

test_file="apps/desktop/src/features/workspace/Workspace.test.tsx"

# 새 번역 키 또는 렌더링 라벨을 검증하는 테스트를 찾습니다.
rg -n -C 4 \
  'exportCueSheetCsv|exportChartJson|exportHandoffJson|Export Cue Sheet|Export Chart|Export Handoff|큐 시트 내보내기|차트 내보내기|핸드오프 내보내기' \
  "$test_file"

Repository: ContextualWisdomLab/bandscope

Length of output: 167


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

workspace="apps/desktop/src/features/workspace/Workspace.tsx"
test_file="apps/desktop/src/features/workspace/Workspace.test.tsx"

printf '%s\n' '--- component export controls ---'
rg -n -C 12 'exportCueSheetCsv|exportChartJson|exportHandoffJson|aria-label|export' "$workspace"

printf '%s\n' '--- test file outline and relevant references ---'
wc -l "$test_file"
ast-grep outline "$test_file"
rg -n -C 6 'export|button|translation|locale|language|i18n|accessible|aria-label|name' "$test_file"

printf '%s\n' '--- translation key definitions ---'
rg -n -C 3 'exportCueSheetCsv|exportChartJson|exportHandoffJson' apps/desktop

Repository: ContextualWisdomLab/bandscope

Length of output: 22441


🏁 Script executed:

#!/usr/bin/env bash
set -euo pipefail

test_file="apps/desktop/src/features/workspace/Workspace.test.tsx"

printf '%s\n' '--- localization and export test bodies ---'
sed -n '160,273p' "$test_file"

printf '%s\n' '--- translator and locale detection ---'
rg -n -C 8 'function createTranslator|const createTranslator|detectPreferredLocale|navigator.language|common.json' apps/desktop/src/i18n apps/desktop/src

Repository: ContextualWisdomLab/bandscope

Length of output: 50385


새 번역 라벨의 회귀 테스트를 추가해 주세요.

영어 테스트에는 exportHandoffJson 버튼을 부분적으로 조회하는 검증만 있습니다. 세 버튼의 전체 접근 가능한 이름과 한국어 접근 가능한 이름을 검증하지 않습니다.

영어와 한국어 환경에서 exportCueSheetCsv, exportChartJson, exportHandoffJson의 접근 가능한 이름을 각각 검증해 주세요.

🤖 Prompt for 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.

In `@apps/desktop/src/features/workspace/Workspace.tsx` at line 266, 영어와 한국어 테스트에
세 내보내기 버튼의 전체 접근 가능한 이름 검증을 추가하세요. `exportCueSheetCsv`, `exportChartJson`,
`exportHandoffJson`에 해당하는 버튼을 각각 조회하고, 각 로케일에서 번역된 정확한 이름과 함께 세 버튼이 모두 렌더링되는지
확인하세요.

</Button>
<Button
variant="outline"
Expand All @@ -272,7 +272,7 @@ export function Workspace({ song, sourceBootstrap = null, onSongUpdate }: Worksp
className="min-h-10 border-white/10 bg-white/5 font-semibold text-slate-100 shadow-sm hover:bg-white/10 hover:text-white"
>
<Download className="mr-2 size-4 text-slate-300" aria-hidden="true" />
Export Chart (JSON)
{t("exportChartJson")}
</Button>
<Button
variant="outline"
Expand All @@ -281,7 +281,7 @@ export function Workspace({ song, sourceBootstrap = null, onSongUpdate }: Worksp
className="min-h-10 border-teal-300/25 bg-teal-300/10 font-semibold text-teal-50 shadow-sm hover:bg-teal-300/20 hover:text-white"
>
<Download className="mr-2 size-4 text-teal-200" aria-hidden="true" />
Export Handoff (JSON)
{t("exportHandoffJson")}
</Button>
</div>
</div>
Expand Down
5 changes: 4 additions & 1 deletion apps/desktop/src/locales/en/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -148,5 +148,8 @@
"practiceProgressRegionLabel": "Practice Progress",
"practiceProgressLabel": "Practice Progress",
"decreasePracticeProgressLabel": "Decrease progress",
"increasePracticeProgressLabel": "Increase progress"
"increasePracticeProgressLabel": "Increase progress",
"exportCueSheetCsv": "Export Cue Sheet (CSV)",
"exportChartJson": "Export Chart (JSON)",
"exportHandoffJson": "Export Handoff (JSON)"
}
5 changes: 4 additions & 1 deletion apps/desktop/src/locales/ko/common.json
Original file line number Diff line number Diff line change
Expand Up @@ -148,5 +148,8 @@
"practiceProgressRegionLabel": "연습 진척도",
"practiceProgressLabel": "연습 진척도",
"decreasePracticeProgressLabel": "진척도 감소",
"increasePracticeProgressLabel": "진척도 증가"
"increasePracticeProgressLabel": "진척도 증가",
"exportCueSheetCsv": "큐 시트 내보내기 (CSV)",
"exportChartJson": "차트 내보내기 (JSON)",
"exportHandoffJson": "핸드오프 내보내기 (JSON)"
}
Loading