From abb469859662c285fac758c042812e0da943728f Mon Sep 17 00:00:00 2001
From: Ariver <shanghai3168@gmail.com>
Date: Thu, 02 Jul 2026 12:02:51 +0800
Subject: [PATCH] Create slim PrivateVoice2 handoff package

---
 C1.source/privatevoice.src/internal/startup/startup_linux.go                                              |    0 
 C1.source/privatevoice.src/internal/dock/dock.go                                                          |    0 
 C1.source/privatevoice.src/system_load_other.go                                                           |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/git-diff-check-20260603-round4.log                                   |    0 
 K2.项目管理/legacy/02-P-NBL/freeze/20260603-independent-repo-and-archive.md                                   |    0 
 C1.source/privatevoice.src/go.mod                                                                         |    0 
 C1.source/privatevoice.src/internal/input/paste.go                                                        |    0 
 K2.项目管理/legacy/Docs/KM2.项目管理-非业务直接相关/QA工作-经验与教训.md                                                        |    0 
 C1.source/privatevoice.src/build/darwin/original_app_icon.png                                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-zh-manual.png               |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/README.md                                                                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/local-build-install-20260603-round4.log                              |    0 
 C1.source/privatevoice.src/internal/textproc/textproc_test.go                                             |    0 
 C1.source/privatevoice.src/testdata/round1/models-valid-legacy/sensevoice/tokens.txt                      |    0 
 C1.source/privatevoice.src/internal/input/paste_darwin_test.go                                            |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log                                    |    0 
 K2.项目管理/restore-notes.md                                                                                  |   22 +
 C1.source/privatevoice.src/testdata/round1/models-zero-byte/sensevoice-zh/tokens.txt                      |    0 
 C1.source/privatevoice.src/internal/permissions/permissions_darwin.go                                     |    0 
 C1.source/privatevoice.src/frontend/src/lib/i18n/es.json                                                  |    0 
 C1.source/privatevoice.src/build/darwin/zh-Hans.lproj/InfoPlist.strings                                   |    0 
 C1.source/privatevoice.src/internal/input/paste_darwin.go                                                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english6.png                |    0 
 C1.source/privatevoice.src/internal/language/detect.go                                                    |    0 
 C1.source/privatevoice.src/internal/model/build_capabilities.go                                           |    0 
 C1.source/privatevoice.src/scripts/build-appstore-developerid-macos.sh                                    |    0 
 C1.source/privatevoice.src/build/darwin/Taskfile.yml                                                      |    0 
 C1.source/privatevoice.src/voicesnap.rc                                                                   |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_shadow_preview.svg                     |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.launch.log         |    0 
 C1.source/privatevoice.src/build/windows/Taskfile.yml                                                     |    0 
 C1.source/privatevoice.src/build/darwin/entitlements.plist                                                |    0 
 C1.source/privatevoice.src/internal/audio/recorder.go                                                     |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/prd.md                                                                    |    0 
 C1.source/privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte                       |    0 
 C1.source/privatevoice.src/internal/history/history.go                                                    |    0 
 C1.source/privatevoice.src/locale_windows.go                                                              |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.restore.log        |    0 
 K2.项目管理/legacy/Docs/KM2.项目管理-非业务直接相关/AppStore审核拒绝-20260610.md                                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/engineering-tasks.md                                                      |    0 
 K2.项目管理/新窗口接手指南.md                                                                                        |   52 +++
 C1.source/privatevoice.src/internal/engine/engine.go                                                      |    0 
 C1.source/privatevoice.src/internal/overlay/overlay.go                                                    |    0 
 C1.source/privatevoice.src/scripts/build-release-macos.sh                                                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log                                   |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/prd.md                                                                    |    0 
 K2.项目管理/legacy/02-P-NBL/round-5/dev-check-report.md                                                       |    0 
 C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3.go                                         |    0 
 K2.项目管理/legacy/02-P-NBL/round-5/prd.md                                                                    |    0 
 K2.项目管理/legacy/02-P-NBL/round-5/todo-list.md                                                              |    0 
 C1.source/privatevoice.src/internal/logger/logger.go                                                      |    0 
 C1.source/privatevoice.src/internal/startup/startup.go                                                    |    0 
 C1.source/privatevoice.src/internal/hotkey/hotkey.go                                                      |    0 
 C1.source/privatevoice.src/testdata/round1/state-points-to-broken/broken/tokens.txt                       |    0 
 C3.tools/README.md                                                                                        |   19 +
 C1.source/privatevoice.src/internal/config/config.go                                                      |    0 
 C1.source/privatevoice.src/internal/model/install_state.go                                                |    0 
 K2.项目管理/legacy/02-P-NBL/freeze/20260607-x-asr-experiment-branch.md                                        |    0 
 C1.source/privatevoice.src/build/darwin/app_icon_source.png                                               |    0 
 C1.source/privatevoice.src/go.monterey.mod                                                                |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-693-310.png          |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/npm-run-build-20260603-round4-after-qa-fix.log                       |    0 
 K2.项目管理/legacy/02-P-NBL/round-5/qa-report.md                                                              |    0 
 C1.source/privatevoice.src/internal/singleinstance/singleinstance.go                                      |    0 
 K2.项目管理/legacy/02-P-NBL/freeze/20260604-mac-app-store-release-freeze.md                                   |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/engineering-tasks.md                                                      |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/go-test-all-20260603.log                                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/network-sample-20260602.log                               |    0 
 C1.source/privatevoice.src/frontend/src/styles/global.css                                                 |    0 
 C1.source/privatevoice.src/internal/correctioncsv/correctioncsv_test.go                                   |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/qa-handoff-current.md                                                     |    0 
 C1.source/privatevoice.src/frontend/src/assets/app-icon.png                                               |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/qa-test-plan.md                                                           |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english3.png                |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_C_taglauncher-style.svg                  |    0 
 C1.source/privatevoice.src/frontend/src/components/settings/HistoryPage.svelte                            |    0 
 C1.source/privatevoice.src/frontend/src/lib/i18n/index.ts                                                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-after-restart.png           |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/qa-test-plan.md                                                           |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_C_taglauncher-style.png                  |    0 
 C1.source/privatevoice.src/services/updater_service.go                                                    |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/code-review-current.md                                                    |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/go-test-all-20260603-2.1.20.log                                      |    0 
 C1.source/privatevoice.src/internal/audio/recorder_test.go                                                |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.225709.pid                  |    0 
 C1.source/privatevoice.src/build/linux/privatevoice-input.desktop                                         |    0 
 C1.source/privatevoice.src/services/userdict_service.go                                                   |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_shadow_preview.png                     |    0 
 C1.source/privatevoice.src/testdata/round1/README.md                                                      |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/npm-run-build-20260602.log                                           |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.recognition.log    |    0 
 C1.source/privatevoice.src/services/audio_service.go                                                      |    0 
 C1.source/privatevoice.src/services/engine_service.go                                                     |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/qa-handoff-current.md                                                     |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/dev-checklist-current.md                                                  |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/engineering-tasks.md                                                      |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/qa-precheck-current.md                                                    |    0 
 C1.source/privatevoice.src/build/darwin/Info.plist                                                        |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/npm-run-build-20260603-round4.log                                    |    0 
 C1.source/privatevoice.src/frontend/src/lib/i18n/ko.json                                                  |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/README.md                                                                 |    0 
 C1.source/privatevoice.src/internal/history/history_test.go                                               |    0 
 K2.项目管理/legacy/Docs/KM2.项目管理-非业务直接相关/AppStore打包连续返工经验教训-20260611.md                                       |    0 
 C1.source/privatevoice.src/frontend/src/components/settings/SettingsWindow.svelte                         |    0 
 C1.source/privatevoice.src/testdata/round1/state-points-to-legacy/sensevoice/tokens.txt                   |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/go-test-internal-model-20260602.log                                  |    0 
 K2.项目管理/legacy/02-P-NBL/product-plan.md                                                                   |    0 
 C1.source/privatevoice.src/testdata/round1/models-incomplete-missing-model/sensevoice-zh/tokens.txt       |    0 
 C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3_monterey.go                                |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-1095-523.png         |    0 
 C1.source/privatevoice.src/frontend/src/components/settings/UserDictPage.svelte                           |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/qa-test-plan.md                                                           |    0 
 C1.source/privatevoice.src/frontend/src/components/settings/AboutPage.svelte                              |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-new-user.png                |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/qa-report.md                                                              |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/logs/npm-run-build-20260603.log                                           |    0 
 C1.source/privatevoice.src/internal/model/model_test.go                                                   |    0 
 C1.source/privatevoice.src/internal/userdict/userdict_test.go                                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.restore.log          |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_candidates_preview.png                   |    0 
 C1.source/privatevoice.src/scripts/qa-settings-window-macos.sh                                            |    0 
 C1.source/privatevoice.src/scripts/build-local-macos-universal.sh                                         |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-postcheck-20260602.log                    |    0 
 C1.source/privatevoice.src/internal/textproc/textproc.go                                                  |    0 
 C1.source/privatevoice.src/build/darwin/VoiceSnap-approved.icns                                           |    0 
 C1.source/privatevoice.src/frontend/src/lib/stores/config.ts                                              |    0 
 C1.source/privatevoice.src/build/Taskfile.yml                                                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-6/todo-dev.md                                                               |    0 
 C1.source/privatevoice.src/frontend/src/components/update/UpdateDialog.svelte                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-5/engineering-tasks.md                                                      |    0 
 C1.source/privatevoice.src/frontend/src/lib/stores/indicator.ts                                           |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/logs/download-failure-protection-20260603.log                             |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.svg                      |    0 
 C1.source/privatevoice.src/internal/language/detect_other.go                                              |    0 
 C1.source/privatevoice.src/services/app_service.go                                                        |    0 
 C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/RELEASE_MANIFEST.md                             |   66 ++++
 C1.source/privatevoice.src/build/darwin/approved_app_icon.png                                             |    0 
 K2.项目管理/QA地图.md                                                                                           |   48 +++
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english5.png                |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/local-build-install-20260603-round4-after-qa-fix.log                 |    0 
 C1.source/privatevoice.src/frontend/src/lib/i18n/fr.json                                                  |    0 
 C1.source/privatevoice.src/internal/model/profile.go                                                      |    0 
 K2.项目管理/接收验证记录.md                                                                                         |   28 +
 C1.source/privatevoice.src/internal/updater/updater.go                                                    |    0 
 C1.source/privatevoice.src/frontend/src/lib/i18n/en.json                                                  |    0 
 C1.source/privatevoice.src/internal/modelselection/selection.go                                           |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/qa-report-current.md                                                      |    0 
 C1.source/privatevoice.src/go.sum                                                                         |    0 
 C1.source/privatevoice.src/internal/model/resolver.go                                                     |    0 
 C2.builds/README.md                                                                                       |    9 
 .gitignore                                                                                                |   23 +
 C1.source/privatevoice.src/build/darwin/refined_mic_app_icon.png                                          |    0 
 C1.source/privatevoice.src/internal/permissions/permissions_other.go                                      |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_candidates_preview.svg                   |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/todo-list.md                                                              |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-final-20260603.014931.log                   |    0 
 C1.source/privatevoice.src/scripts/install-x-asr-zh-en-960ms.sh                                           |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english4.png                |    0 
 K2.项目管理/session-topics/Windows预览.md                                                                       |   24 +
 C1.source/privatevoice.src/frontend/src/lib/i18n/pt.json                                                  |    0 
 C1.source/privatevoice.src/testdata/round1/state-points-to-broken/sensevoice/model.int8.onnx              |    0 
 C1.source/privatevoice.src/internal/hotkey/hotkey_linux.go                                                |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/README.md                                                                 |    0 
 C1.source/privatevoice.src/internal/permissions/permissions.go                                            |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-start-check-20260603.014931.log                   |    0 
 C1.source/privatevoice.src/internal/hotkey/hotkey_darwin.go                                               |    0 
 C1.source/privatevoice.src/services/engine_service_windows_test.go                                        |    0 
 C1.source/privatevoice.src/internal/engine/engine_linux.go                                                |    0 
 C1.source/privatevoice.src/internal/language/language_test.go                                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-activated.png               |    0 
 K2.项目管理/迁移资产清单.md                                                                                         |   44 ++
 K2.项目管理/legacy/02-P-NBL/round-3/logs/git-diff-check-20260603-2.1.21.log                                   |    0 
 C1.source/privatevoice.src/frontend/instructions.md                                                       |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_E_compact-liquid.png                     |    0 
 C1.source/privatevoice.src/internal/model/validator.go                                                    |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/build-local-round2-20260603.014931.log                    |    0 
 K2.项目管理/legacy/02-P-NBL/engineering-plan.md                                                               |    0 
 C1.source/privatevoice.src/frontend/src/components/shared/AppIcon.svelte                                  |    0 
 K2.项目管理/session-topics/00-Topics.md                                                                       |   13 
 C1.source/privatevoice.src/wails.json                                                                     |    0 
 C1.source/privatevoice.src/testdata/round1/state-points-to-legacy/sensevoice/model.int8.onnx              |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.launch.log           |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-local-run-20260603.014931.pid                      |    0 
 K2.项目管理/legacy/02-P-NBL/freeze/20260605-mac-app-store-quarantine-hotfix.md                                |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/npm-run-build-20260603.log                                           |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english.png                 |    0 
 C1.source/privatevoice.src/build/darwin/en.lproj/InfoPlist.strings                                        |    0 
 C1.source/privatevoice.src/build/darwin/entitlements-appstore.plist                                       |    0 
 C1.source/privatevoice.src/frontend/src/vite-env.d.ts                                                     |    0 
 C1.source/privatevoice.src/scripts/QA-WINDOWS-PREVIEW.ps1                                                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/prd.md                                                                    |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-start-20260603.014931.log                   |    0 
 C1.source/privatevoice.src/services/history_service.go                                                    |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/todo-list.md                                                              |    0 
 C1.source/privatevoice.src/scripts/build-windows-preview.sh                                               |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/dev-self-check.md                                                         |    0 
 C1.source/privatevoice.src/build/config.yml                                                               |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-safety-20260603.014931.log                  |    0 
 C1.source/privatevoice.src/build/darwin/tray_icon.png                                                     |    0 
 K2.项目管理/legacy/02-P-NBL/freeze/20260605-mac-app-store-upload-preflight.md                                 |    0 
 C1.source/privatevoice.src/go.monterey.sum                                                                |    0 
 C1.source/privatevoice.src/internal/engine/release_tail.go                                                |    0 
 C1.source/privatevoice.src/internal/dock/dock_darwin.go                                                   |    0 
 C1.source/privatevoice.src/system_load_darwin.go                                                          |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg                    |    0 
 C1.source/privatevoice.src/internal/model/build_capabilities_windows.go                                   |    0 
 C1.source/privatevoice.src/scripts/verify-windows-qa-evidence.sh                                          |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/go-test-all-20260603-round4.log                                      |    0 
 C1.source/privatevoice.src/internal/input/paste_windows.go                                                |    0 
 K2.项目管理/legacy/TODO-旧任务清单.md                                                                              |    0 
 C1.source/privatevoice.src/app.go                                                                         |    0 
 C1.source/privatevoice.src/frontend/index.html                                                            |    0 
 C1.source/privatevoice.src/internal/correctioncsv/correctioncsv.go                                        |    0 
 C1.source/privatevoice.src/internal/language/detect_darwin.go                                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.223742.log                  |    0 
 C1.source/privatevoice.src/frontend/src/lib/i18n/de.json                                                  |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/go-test-all-20260602.log                                             |    0 
 C1.source/privatevoice.src/internal/model/build_capabilities_monterey.go                                  |    0 
 C1.source/privatevoice.src/main.go                                                                        |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_E_compact-liquid.svg                     |    0 
 C1.source/privatevoice.src/internal/overlay/overlay_other.go                                              |    0 
 K2.项目管理/moved-assets.jsonl                                                                                |    5 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-local-run-20260603.014931.log                      |    0 
 C1.source/privatevoice.src/internal/config/config_test.go                                                 |    0 
 C1.source/privatevoice.src/internal/sound/sound_other.go                                                  |    0 
 C1.source/privatevoice.src/testdata/round1/models-valid-legacy/sensevoice/model.int8.onnx                 |    0 
 C1.source/privatevoice.src/internal/overlay/overlay_windows.go                                            |    0 
 C1.source/privatevoice.src/internal/userdict/userdict.go                                                  |    0 
 C1.source/privatevoice.src/internal/startup/startup_darwin.go                                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/logs/go-test-all-20260603.log                                             |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_D_glass-circle.png                       |    0 
 C1.source/privatevoice.src/testdata/round1/models-incomplete-missing-tokens/sensevoice-zh/model.int8.onnx |    0 
 K2.项目管理/legacy/02-P-NBL/x-asr-realtime-insertion-report.md                                                |    0 
 C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/SHA256SUMS.txt                                  |    4 
 C1.source/privatevoice.src/testdata/round1/models-valid-new/sensevoice-zh/tokens.txt                      |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/new-user-run-20260603.014931.log                          |    0 
 C1.source/privatevoice.src/build/windows/icon.ico                                                         |    0 
 C1.source/privatevoice.src/frontend/svelte.config.js                                                      |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/dev-checklist-current.md                                                  |    0 
 C1.source/privatevoice.src/locale_other.go                                                                |    0 
 K2.项目管理/legacy/02-P-NBL/round-6/README.md                                                                 |    0 
 C1.source/privatevoice.src/frontend/package-lock.json                                                     |    0 
 C1.source/privatevoice.src/build/darwin/macos26_mic_app_icon.png                                          |    0 
 C1.source/privatevoice.src/embed.go                                                                       |    0 
 C1.source/privatevoice.src/frontend/src/components/settings/HotkeysPage.svelte                            |    0 
 C1.source/privatevoice.src/internal/hotkey/hotkey_windows.go                                              |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/logs/git-diff-check-20260603.log                                          |    0 
 C1.source/privatevoice.src/testdata/round1/models-valid-new/sensevoice-zh/model.int8.onnx                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/qa-precheck-current.md                                                    |    0 
 C1.source/privatevoice.src/build/darwin/icon.icns                                                         |    0 
 C1.source/privatevoice.src/build/windows/wails.exe.manifest                                               |    0 
 C1.source/privatevoice.src/internal/dock/dock_other.go                                                    |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/dev-checklist.md                                                          |    0 
 K2.项目管理/session-topics/多语种与粤语.md                                                                          |   23 +
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_D_glass-circle.svg                       |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.png                      |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log                                      |    0 
 C1.source/privatevoice.src/internal/singleinstance/singleinstance_unix.go                                 |    0 
 C1.source/privatevoice.src/scripts/build-macappstore-pkg-macos.sh                                         |    0 
 K2.项目管理/session-topics/AppStore与独立站.md                                                                    |   28 +
 C1.source/privatevoice.src/services/engine_service_qwen3_default_test.go                                  |    0 
 C1.source/privatevoice.src/frontend/src/components/settings/GeneralPage.svelte                            |    0 
 C1.source/privatevoice.src/scripts/build-local-macos.sh                                                   |    0 
 C1.source/privatevoice.src/frontend/src/components/settings/LanguagePage.svelte                           |    0 
 C1.source/privatevoice.src/scripts/RUN-WINDOWS-QA.cmd                                                     |    0 
 C1.source/privatevoice.src/services/hotkey_service.go                                                     |    0 
 K2.项目管理/legacy/02-P-NBL/freeze/20260605-mac-app-store-application-identifier-hotfix.md                    |    0 
 K2.项目管理/legacy/02-P-NBL/freeze/20260607-x-asr-experimental-build.md                                       |    0 
 C1.source/privatevoice.src/testdata/round1/state-points-to-broken/sensevoice/tokens.txt                   |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/dev-checklist-current.md                                                  |    0 
 C1.source/privatevoice.src/frontend/src/lib/i18n/zh.json                                                  |    0 
 C1.source/privatevoice.src/internal/overlay/overlay_darwin.go                                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/prd.md                                                                    |    0 
 C1.source/privatevoice.src/internal/model/build_capabilities_default.go                                   |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-initial.png                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/todo-list.md                                                              |    0 
 C1.source/privatevoice.src/testdata/round1/state-points-to-broken/state.json                              |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-app-log-20260602.log                      |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/engineering-tasks.md                                                      |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/qa-report-current.md                                                      |    0 
 C1.source/privatevoice.src/internal/singleinstance/singleinstance_windows.go                              |    0 
 C1.source/privatevoice.src/build/darwin/archive/legacy-icons/VoiceSnap-original.icns                      |    0 
 C1.source/privatevoice.src/services/permission_service.go                                                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/current-run-id.txt                                        |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/npm-run-build-20260603-2.1.20.log                                    |    0 
 C1.source/privatevoice.src/internal/model/downloader.go                                                   |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-1260-565.png         |    0 
 C1.source/privatevoice.src/internal/startup/startup_darwin_appstore.go                                    |    0 
 K3.运营与发布资料/legacy-运营资料/README.md                                                                          |   10 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.recognition.log      |    0 
 C1.source/privatevoice.src/internal/model/registry.go                                                     |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/README.md                                                                 |    0 
 C1.source/privatevoice.src/build/darwin/VoiceSnap-refined-mic.icns                                        |    0 
 C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3_monterey_test.go                           |    0 
 C1.source/privatevoice.src/app_live_caption_test.go                                                       |    0 
 K2.项目管理/session-topics/发布与打包.md                                                                           |   32 ++
 C1.source/privatevoice.src/internal/input/paste_linux.go                                                  |    0 
 C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3_test.go                                    |    0 
 K2.项目管理/legacy/02-P-NBL/round-5/README.md                                                                 |    0 
 C1.source/privatevoice.src/testdata/round1/state-invalid-json/state.json                                  |    0 
 K2.项目管理/legacy/02-P-NBL/plan.md                                                                           |    0 
 C1.source/privatevoice.src/frontend/src/components/shared/ToggleSwitch.svelte                             |    0 
 C1.source/privatevoice.src/frontend/tsconfig.json                                                         |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/qa-handoff.md                                                             |    0 
 C1.source/privatevoice.src/frontend/src/lib/i18n/it.json                                                  |    0 
 C1.source/privatevoice.src/frontend/src/main.ts                                                           |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.setup.log            |    0 
 C1.source/privatevoice.src/services/engine_service_test.go                                                |    0 
 C1.source/privatevoice.src/scripts/build-local-macos-monterey.sh                                          |    0 
 K2.项目管理/发布地图.md                                                                                           |   34 ++
 README.md                                                                                                 |  187 ++---------
 C1.source/privatevoice.src/internal/startup/startup_windows.go                                            |    0 
 K2.项目管理/handoffs/2026-07-02-迁移交接.md                                                                       |   47 ++
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.setup.log          |    0 
 AGENTS.md                                                                                                 |   66 +--
 K2.项目管理/legacy/02-P-NBL/round-4/code-review.md                                                            |    0 
 C1.source/privatevoice.src/frontend/vite.config.ts                                                        |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/qa-report-template.md                                                     |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.225709.log                  |    0 
 C1.source/privatevoice.src/frontend/src/lib/i18n/ja.json                                                  |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/qa-precheck-current.md                                                    |    0 
 C1.source/privatevoice.src/frontend/package.json                                                          |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/todo-list.md                                                              |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/qa-handoff-current.md                                                     |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/git-diff-check-20260603-round4-after-qa-fix.log                      |    0 
 K2.项目管理/legacy/02-P-NBL/round-6/requirements-dev.md                                                       |    0 
 K2.项目管理/session-topics/性能与稳定性.md                                                                          |   23 +
 C1.source/privatevoice.src/frontend/src/components/settings/CorrectionImportPreviewDialog.svelte          |    0 
 K2.项目管理/legacy/02-P-NBL/round-5/qa-handoff.md                                                             |    0 
 C1.source/privatevoice.src/scripts/build-appstore-macos.sh                                                |    0 
 K2.项目管理/legacy/02-P-NBL/freeze/20260604-mac-app-store-category-hotfix.md                                  |    0 
 C1.source/privatevoice.src/testdata/round1/state-points-to-legacy/state.json                              |    0 
 C1.source/privatevoice.src/build/darwin/app_icon.png                                                      |    0 
 C1.source/privatevoice.src/frontend/src/lib/stores/update.ts                                              |    0 
 C1.source/privatevoice.src/internal/paths/paths.go                                                        |    0 
 K3.运营与发布资料/screenshot.png                                                                                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/qa-report-20260602-2.1.19.md                                              |    0 
 C1.source/privatevoice.src/build/darwin/VoiceSnap-macos26-mic.icns                                        |    0 
 C1.source/privatevoice.src/internal/language/resolver.go                                                  |    0 
 C1.source/privatevoice.src/internal/engine/engine_darwin.go                                               |    0 
 C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.png                    |    0 
 C1.source/privatevoice.src/internal/engine/engine_darwin_test.go                                          |    0 
 K2.项目管理/legacy/02-P-NBL/freeze/20260603-directory-consolidation.md                                        |    0 
 K3.运营与发布资料/README.md                                                                                      |   12 
 C1.source/privatevoice.src/internal/engine/engine_windows.go                                              |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/logs/npm-run-build-20260603-2.1.21.log                                    |    0 
 C1.source/privatevoice.src/build/darwin/VoiceSnap-selected-B-shadow.icns                                  |    0 
 C1.source/privatevoice.src/internal/sound/sound_windows.go                                                |    0 
 K2.项目管理/legacy/02-P-NBL/freeze/20260605-mac-app-store-clean-rebuild.md                                    |    0 
 C1.source/privatevoice.src/internal/modelselection/selection_test.go                                      |    0 
 C1.source/privatevoice.src/internal/correctioncsv/correctioncsv_e2e_test.go                               |    0 
 C1.source/privatevoice.src/services/engine_service_qwen3_monterey_test.go                                 |    0 
 C1.source/privatevoice.src/services/correction_csv_service.go                                             |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-chinese.png                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-3/logs/go-test-all-20260603-2.1.21.log                                      |    0 
 K2.项目管理/legacy/02-P-NBL/round-1/logs/qa-runtime/app-log-tail-20260602.log                                 |    0 
 C1.source/privatevoice.src/services/config_service.go                                                     |    0 
 C1.source/privatevoice.src/frontend/src/App.svelte                                                        |    0 
 C1.source/privatevoice.src/frontend/src/components/indicator/FloatingIndicator.svelte                     |    0 
 C1.source/privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte                        |    0 
 C1.source/privatevoice.src/Taskfile.yml                                                                   |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english2.png                |    0 
 K2.项目管理/legacy/02-P-NBL/round-4/logs/go-test-all-20260603-round4-after-qa-fix.log                         |    0 
 CODEGRAPH.md                                                                                              |   78 ++--
 K2.项目管理/legacy/02-P-NBL/round-4/logs/npm-ci-20260603-round4.log                                           |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/new-user-run-20260603.014931.pid                          |    0 
 C1.source/privatevoice.src/instructions.md                                                                |    0 
 K1.业务知识/成果地图.md                                                                                           |   40 ++
 K2.项目管理/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-safety-20260603.014931.pid                  |    0 
 K2.项目管理/legacy/02-P-NBL/round-5/qa-test-plan.md                                                           |    0 
 C1.source/privatevoice.src/frontend/src/lib/stores/app.ts                                                 |    0 
 K2.项目管理/legacy/02-P-NBL/round-2/qa-test-plan.md                                                           |    0 
 372 files changed, 700 insertions(+), 237 deletions(-)

diff --git a/.gitignore b/.gitignore
index a91619c..1b99ff6 100755
--- a/.gitignore
+++ b/.gitignore
@@ -8,6 +8,8 @@
 VoiceSnapGo/frontend/dist/
 privatevoice.src/frontend/node_modules/
 privatevoice.src/frontend/dist/
+C1.source/privatevoice.src/frontend/node_modules/
+C1.source/privatevoice.src/frontend/dist/
 
 # Go/build artifacts
 VoiceSnapGo/build/local/
@@ -21,6 +23,15 @@
 privatevoice.src/build/windows-preview/
 privatevoice.src/build/*.log
 privatevoice.src/PrivateVoice
+C1.source/privatevoice.src/build/local/
+C1.source/privatevoice.src/build/appstore-local/
+C1.source/privatevoice.src/build/deps/
+C1.source/privatevoice.src/build/local-build-logs/
+C1.source/privatevoice.src/build/macappstore*/
+C1.source/privatevoice.src/build/qa/
+C1.source/privatevoice.src/build/windows-preview/
+C1.source/privatevoice.src/build/*.log
+C1.source/privatevoice.src/PrivateVoice
 *.app/
 *.dmg
 
@@ -29,6 +40,8 @@
 VoiceSnapGo/build/darwin/approved_app_icon.iconset/
 privatevoice.src/build/darwin/icon.iconset/
 privatevoice.src/build/darwin/approved_app_icon.iconset/
+C1.source/privatevoice.src/build/darwin/icon.iconset/
+C1.source/privatevoice.src/build/darwin/approved_app_icon.iconset/
 
 # Runtime data should live in Application Support, not source control.
 config.json
@@ -47,5 +60,15 @@
 # Release packages, certificates, logs, and upload artifacts are local outputs.
 /Release/
 
+# Migrated local build packages are present in this project folder for handoff,
+# but binary packages are not committed into the slim Git repo.
+/C2.builds/**/*.dmg
+/C2.builds/**/*.zip
+
 # Local product/operation reference assets.
 /X-运营资料/
+
+# Migrated operation assets are local handoff materials; keep only the index.
+/K3.运营与发布资料/legacy-运营资料/**
+!/K3.运营与发布资料/legacy-运营资料/
+!/K3.运营与发布资料/legacy-运营资料/README.md
diff --git a/AGENTS.md b/AGENTS.md
index 0622acf..54d697b 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -1,56 +1,32 @@
 ## 项目属性
 
 项目类型:研发项目
-主要产物:Wails / Go 桌面语音输入 App
+主要产物:Wails v3 / Go 桌面语音输入 App
 
-## 1. 命令输出保护
+## 读取顺序
 
-保护上下文用量。
+如果当前工作目录在 `03-O` 内,先回到项目根入口读取:
 
-任何输出量未知或可能很大的命令,都必须限制输出字节数。
+1. `/Users/ar/Projects/PrivateVoice2/AGENTS.md`
+2. `/Users/ar/Projects/PrivateVoice2/PROJECT.md`
+3. `/Users/ar/Projects/PrivateVoice2/INDEX.md`
+4. `/Users/ar/Projects/PrivateVoice2/02-P/进度地图.md`
+5. `/Users/ar/Projects/PrivateVoice2/03-O/CODEGRAPH.md`
 
-默认安全写法:
+旧 `K2.项目管理/legacy/` 资料只作证据附件,不能作为活跃任务来源。
 
-```bash
-COMMAND 2>&1 | head -c 6000
-```
+## 路径边界
 
-## 2. 发布版本规则
+- 项目根:`/Users/ar/Projects/PrivateVoice2`
+- Git 根:`/Users/ar/Projects/PrivateVoice2/03-O`
+- 源码根:`/Users/ar/Projects/PrivateVoice2/03-O/C1.source/privatevoice.src`
+- 构建/发布候选包:`/Users/ar/Projects/PrivateVoice2/03-O/C2.builds`
+- 构建与 QA 脚本:源码内 `C1.source/privatevoice.src/scripts/`,`C3.tools/` 只放索引和迁移工具说明。
+- 会话记忆目录:`/Users/ar/Projects/PrivateVoice2/.codex-sessionhistory/`
 
-本项目声明为 `研发项目`,发布或分发安装包前默认遵守 `~/.codex/rules/release-versioning.md`;如本项目 release 文档或构建脚本另有更具体要求,以本项目规则为准。
+## 工作规则
 
-## 3. 测试通过后的默认打包规则
-
-当某一轮改动已经完成开发自测,并且 QA 验证也通过后,默认进入测试包交付流程,不需要再单独询问用户是否打包。
-
-执行打包前仍必须遵守发布版本规则:递增 patch 版本号、生成新的 `YYYYMMDD.HHMM` build 编号、更新 App 元数据与 `CHANGELOG.md`,并生成可分发的 macOS `.dmg`。
-
-如果只有开发自测通过,但 QA 尚未验证通过,则不得把该版本作为测试人员可用包交付;此时只说明当前处于待 QA 状态。
-
-## 4. Mac App Store 出口合规规则
-
-如果本 App 未实现、未打包、未接入非 Apple 操作系统提供的加密算法,Mac App Store 构建的 `Info.plist` 应声明:
-
-```xml
-<key>ITSAppUsesNonExemptEncryption</key>
-<false/>
-```
-
-提交 App Store Connect 前必须检查该键是否存在并为 `false`,以避免每次上传 build 后出现 `Missing Compliance` 并需要手动回答加密出口合规问题。
-
-如果后续新增自实现加密、第三方加密库、非系统提供的标准加密算法或专有加密算法,必须重新评估出口合规,不得沿用上述声明。
-
-## 5. 对话记忆保存规则
-
-本项目需要保存重要会话记忆,但不得为了普通会话记录频繁打断用户审批。
-
-- 首选保存目录:项目根目录下的 `.codex-sessionhistory/`,即 `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/`。
-- 只在发生以下情况时保存会话记录:关键决策、文件修改、发布 / 构建 / QA 结论、重大问题排查、用户明确要求保存、阶段性收尾。
-- 纯询问、路径确认、状态查询、简单说明、无实质决策或无文件变更的对话,不强制保存。
-- 文件名格式:`YYYY-MM-DD-主题.md`;主题必须概括本轮 session 的核心内容,控制在 20 个字符以内,优先使用中文短语,避免空格、`/`、`:` 等不适合作为文件名的字符。
-- 如果同一天同主题已有记录文件,必须创建新文件并追加序号,避免覆盖:`YYYY-MM-DD-主题-01.md`、`YYYY-MM-DD-主题-02.md`。
-- 保存内容至少包括:用户目标、已完成事项、关键决策、文件变更、未决问题、后续建议。
-- 如果首选目录在当前沙盒下不可写,不得发起额外权限审批;必须改存到当前 Codex 工作区的 `.codex-sessionhistory/PrivateVoice/`,并在最终答复中说明实际保存位置。
-- 只有首选目录和当前工作区备用目录都不可写时,才允许跳过保存,并在最终答复中说明原因。
-- 如果确需保存,应一次性保存本轮完整摘要,避免为了会话记录反复修正。
-- 跨项目对话以主要项目保存;如果多个项目都有实质决策或改动,应按同样的首选目录 / 当前工作区备用目录规则分别保存摘要。
+- 统一活跃台账是 `/Users/ar/Projects/PrivateVoice2/02-P/进度地图.md`。
+- `CODEGRAPH.md` 是人工维护工程地图;自动索引或缓存不能替代它。
+- 发布、QA、签名、打包和版本冻结必须遵守项目根入口声明的全局规则路由。
+- 标准验证命令必须保持原始可执行形式,不在命令本身追加输出截断管道。
diff --git a/privatevoice.src/Taskfile.yml b/C1.source/privatevoice.src/Taskfile.yml
similarity index 100%
rename from privatevoice.src/Taskfile.yml
rename to C1.source/privatevoice.src/Taskfile.yml
diff --git a/privatevoice.src/app.go b/C1.source/privatevoice.src/app.go
similarity index 100%
rename from privatevoice.src/app.go
rename to C1.source/privatevoice.src/app.go
diff --git a/privatevoice.src/app_live_caption_test.go b/C1.source/privatevoice.src/app_live_caption_test.go
similarity index 100%
rename from privatevoice.src/app_live_caption_test.go
rename to C1.source/privatevoice.src/app_live_caption_test.go
diff --git a/privatevoice.src/build/Taskfile.yml b/C1.source/privatevoice.src/build/Taskfile.yml
similarity index 100%
rename from privatevoice.src/build/Taskfile.yml
rename to C1.source/privatevoice.src/build/Taskfile.yml
diff --git a/privatevoice.src/build/config.yml b/C1.source/privatevoice.src/build/config.yml
similarity index 100%
rename from privatevoice.src/build/config.yml
rename to C1.source/privatevoice.src/build/config.yml
diff --git a/privatevoice.src/build/darwin/Info.plist b/C1.source/privatevoice.src/build/darwin/Info.plist
similarity index 100%
rename from privatevoice.src/build/darwin/Info.plist
rename to C1.source/privatevoice.src/build/darwin/Info.plist
diff --git a/privatevoice.src/build/darwin/Taskfile.yml b/C1.source/privatevoice.src/build/darwin/Taskfile.yml
similarity index 100%
rename from privatevoice.src/build/darwin/Taskfile.yml
rename to C1.source/privatevoice.src/build/darwin/Taskfile.yml
diff --git a/privatevoice.src/build/darwin/VoiceSnap-approved.icns b/C1.source/privatevoice.src/build/darwin/VoiceSnap-approved.icns
similarity index 100%
rename from privatevoice.src/build/darwin/VoiceSnap-approved.icns
rename to C1.source/privatevoice.src/build/darwin/VoiceSnap-approved.icns
Binary files differ
diff --git a/privatevoice.src/build/darwin/VoiceSnap-macos26-mic.icns b/C1.source/privatevoice.src/build/darwin/VoiceSnap-macos26-mic.icns
similarity index 100%
rename from privatevoice.src/build/darwin/VoiceSnap-macos26-mic.icns
rename to C1.source/privatevoice.src/build/darwin/VoiceSnap-macos26-mic.icns
Binary files differ
diff --git a/privatevoice.src/build/darwin/VoiceSnap-refined-mic.icns b/C1.source/privatevoice.src/build/darwin/VoiceSnap-refined-mic.icns
similarity index 100%
rename from privatevoice.src/build/darwin/VoiceSnap-refined-mic.icns
rename to C1.source/privatevoice.src/build/darwin/VoiceSnap-refined-mic.icns
Binary files differ
diff --git a/privatevoice.src/build/darwin/VoiceSnap-selected-B-shadow.icns b/C1.source/privatevoice.src/build/darwin/VoiceSnap-selected-B-shadow.icns
similarity index 100%
rename from privatevoice.src/build/darwin/VoiceSnap-selected-B-shadow.icns
rename to C1.source/privatevoice.src/build/darwin/VoiceSnap-selected-B-shadow.icns
Binary files differ
diff --git a/privatevoice.src/build/darwin/app_icon.png b/C1.source/privatevoice.src/build/darwin/app_icon.png
similarity index 100%
rename from privatevoice.src/build/darwin/app_icon.png
rename to C1.source/privatevoice.src/build/darwin/app_icon.png
Binary files differ
diff --git a/privatevoice.src/build/darwin/app_icon_source.png b/C1.source/privatevoice.src/build/darwin/app_icon_source.png
similarity index 100%
rename from privatevoice.src/build/darwin/app_icon_source.png
rename to C1.source/privatevoice.src/build/darwin/app_icon_source.png
Binary files differ
diff --git a/privatevoice.src/build/darwin/approved_app_icon.png b/C1.source/privatevoice.src/build/darwin/approved_app_icon.png
similarity index 100%
rename from privatevoice.src/build/darwin/approved_app_icon.png
rename to C1.source/privatevoice.src/build/darwin/approved_app_icon.png
Binary files differ
diff --git a/privatevoice.src/build/darwin/archive/legacy-icons/VoiceSnap-original.icns b/C1.source/privatevoice.src/build/darwin/archive/legacy-icons/VoiceSnap-original.icns
similarity index 100%
rename from privatevoice.src/build/darwin/archive/legacy-icons/VoiceSnap-original.icns
rename to C1.source/privatevoice.src/build/darwin/archive/legacy-icons/VoiceSnap-original.icns
Binary files differ
diff --git a/privatevoice.src/build/darwin/en.lproj/InfoPlist.strings b/C1.source/privatevoice.src/build/darwin/en.lproj/InfoPlist.strings
similarity index 100%
rename from privatevoice.src/build/darwin/en.lproj/InfoPlist.strings
rename to C1.source/privatevoice.src/build/darwin/en.lproj/InfoPlist.strings
diff --git a/privatevoice.src/build/darwin/entitlements-appstore.plist b/C1.source/privatevoice.src/build/darwin/entitlements-appstore.plist
similarity index 100%
rename from privatevoice.src/build/darwin/entitlements-appstore.plist
rename to C1.source/privatevoice.src/build/darwin/entitlements-appstore.plist
diff --git a/privatevoice.src/build/darwin/entitlements.plist b/C1.source/privatevoice.src/build/darwin/entitlements.plist
similarity index 100%
rename from privatevoice.src/build/darwin/entitlements.plist
rename to C1.source/privatevoice.src/build/darwin/entitlements.plist
diff --git a/privatevoice.src/build/darwin/icon.icns b/C1.source/privatevoice.src/build/darwin/icon.icns
similarity index 100%
rename from privatevoice.src/build/darwin/icon.icns
rename to C1.source/privatevoice.src/build/darwin/icon.icns
Binary files differ
diff --git a/privatevoice.src/build/darwin/macos26_mic_app_icon.png b/C1.source/privatevoice.src/build/darwin/macos26_mic_app_icon.png
similarity index 100%
rename from privatevoice.src/build/darwin/macos26_mic_app_icon.png
rename to C1.source/privatevoice.src/build/darwin/macos26_mic_app_icon.png
Binary files differ
diff --git a/privatevoice.src/build/darwin/original_app_icon.png b/C1.source/privatevoice.src/build/darwin/original_app_icon.png
similarity index 100%
rename from privatevoice.src/build/darwin/original_app_icon.png
rename to C1.source/privatevoice.src/build/darwin/original_app_icon.png
Binary files differ
diff --git a/privatevoice.src/build/darwin/refined_mic_app_icon.png b/C1.source/privatevoice.src/build/darwin/refined_mic_app_icon.png
similarity index 100%
rename from privatevoice.src/build/darwin/refined_mic_app_icon.png
rename to C1.source/privatevoice.src/build/darwin/refined_mic_app_icon.png
Binary files differ
diff --git a/privatevoice.src/build/darwin/tray_icon.png b/C1.source/privatevoice.src/build/darwin/tray_icon.png
similarity index 100%
rename from privatevoice.src/build/darwin/tray_icon.png
rename to C1.source/privatevoice.src/build/darwin/tray_icon.png
Binary files differ
diff --git a/privatevoice.src/build/darwin/zh-Hans.lproj/InfoPlist.strings b/C1.source/privatevoice.src/build/darwin/zh-Hans.lproj/InfoPlist.strings
similarity index 100%
rename from privatevoice.src/build/darwin/zh-Hans.lproj/InfoPlist.strings
rename to C1.source/privatevoice.src/build/darwin/zh-Hans.lproj/InfoPlist.strings
diff --git a/privatevoice.src/build/linux/privatevoice-input.desktop b/C1.source/privatevoice.src/build/linux/privatevoice-input.desktop
similarity index 100%
rename from privatevoice.src/build/linux/privatevoice-input.desktop
rename to C1.source/privatevoice.src/build/linux/privatevoice-input.desktop
diff --git a/privatevoice.src/build/windows/Taskfile.yml b/C1.source/privatevoice.src/build/windows/Taskfile.yml
similarity index 100%
rename from privatevoice.src/build/windows/Taskfile.yml
rename to C1.source/privatevoice.src/build/windows/Taskfile.yml
diff --git a/privatevoice.src/build/windows/icon.ico b/C1.source/privatevoice.src/build/windows/icon.ico
similarity index 100%
rename from privatevoice.src/build/windows/icon.ico
rename to C1.source/privatevoice.src/build/windows/icon.ico
Binary files differ
diff --git a/privatevoice.src/build/windows/wails.exe.manifest b/C1.source/privatevoice.src/build/windows/wails.exe.manifest
similarity index 100%
rename from privatevoice.src/build/windows/wails.exe.manifest
rename to C1.source/privatevoice.src/build/windows/wails.exe.manifest
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.png b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.png
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.png
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.png
Binary files differ
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.svg b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.svg
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.svg
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_A_pure-blue-mic.svg
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_B_shadow_preview.png b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_shadow_preview.png
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_B_shadow_preview.png
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_shadow_preview.png
Binary files differ
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_B_shadow_preview.svg b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_shadow_preview.svg
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_B_shadow_preview.svg
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_shadow_preview.svg
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.png b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.png
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.png
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.png
Binary files differ
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_B_thin-blue-glyph.svg
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_C_taglauncher-style.png b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_C_taglauncher-style.png
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_C_taglauncher-style.png
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_C_taglauncher-style.png
Binary files differ
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_C_taglauncher-style.svg b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_C_taglauncher-style.svg
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_C_taglauncher-style.svg
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_C_taglauncher-style.svg
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_D_glass-circle.png b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_D_glass-circle.png
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_D_glass-circle.png
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_D_glass-circle.png
Binary files differ
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_D_glass-circle.svg b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_D_glass-circle.svg
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_D_glass-circle.svg
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_D_glass-circle.svg
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_E_compact-liquid.png b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_E_compact-liquid.png
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_E_compact-liquid.png
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_E_compact-liquid.png
Binary files differ
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_E_compact-liquid.svg b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_E_compact-liquid.svg
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_E_compact-liquid.svg
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_E_compact-liquid.svg
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_candidates_preview.png b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_candidates_preview.png
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_candidates_preview.png
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_candidates_preview.png
Binary files differ
diff --git a/privatevoice.src/design/icon-candidates/voicesnap_icon_candidates_preview.svg b/C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_candidates_preview.svg
similarity index 100%
rename from privatevoice.src/design/icon-candidates/voicesnap_icon_candidates_preview.svg
rename to C1.source/privatevoice.src/design/icon-candidates/voicesnap_icon_candidates_preview.svg
diff --git a/privatevoice.src/embed.go b/C1.source/privatevoice.src/embed.go
similarity index 100%
rename from privatevoice.src/embed.go
rename to C1.source/privatevoice.src/embed.go
diff --git a/privatevoice.src/frontend/index.html b/C1.source/privatevoice.src/frontend/index.html
similarity index 100%
rename from privatevoice.src/frontend/index.html
rename to C1.source/privatevoice.src/frontend/index.html
diff --git a/privatevoice.src/frontend/instructions.md b/C1.source/privatevoice.src/frontend/instructions.md
similarity index 100%
rename from privatevoice.src/frontend/instructions.md
rename to C1.source/privatevoice.src/frontend/instructions.md
diff --git a/privatevoice.src/frontend/package-lock.json b/C1.source/privatevoice.src/frontend/package-lock.json
similarity index 100%
rename from privatevoice.src/frontend/package-lock.json
rename to C1.source/privatevoice.src/frontend/package-lock.json
diff --git a/privatevoice.src/frontend/package.json b/C1.source/privatevoice.src/frontend/package.json
similarity index 100%
rename from privatevoice.src/frontend/package.json
rename to C1.source/privatevoice.src/frontend/package.json
diff --git a/privatevoice.src/frontend/src/App.svelte b/C1.source/privatevoice.src/frontend/src/App.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/App.svelte
rename to C1.source/privatevoice.src/frontend/src/App.svelte
diff --git a/privatevoice.src/frontend/src/assets/app-icon.png b/C1.source/privatevoice.src/frontend/src/assets/app-icon.png
similarity index 100%
rename from privatevoice.src/frontend/src/assets/app-icon.png
rename to C1.source/privatevoice.src/frontend/src/assets/app-icon.png
Binary files differ
diff --git a/privatevoice.src/frontend/src/components/indicator/FloatingIndicator.svelte b/C1.source/privatevoice.src/frontend/src/components/indicator/FloatingIndicator.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/indicator/FloatingIndicator.svelte
rename to C1.source/privatevoice.src/frontend/src/components/indicator/FloatingIndicator.svelte
diff --git a/privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte b/C1.source/privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte
rename to C1.source/privatevoice.src/frontend/src/components/onboarding/OnboardingView.svelte
diff --git a/privatevoice.src/frontend/src/components/settings/AboutPage.svelte b/C1.source/privatevoice.src/frontend/src/components/settings/AboutPage.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/settings/AboutPage.svelte
rename to C1.source/privatevoice.src/frontend/src/components/settings/AboutPage.svelte
diff --git a/privatevoice.src/frontend/src/components/settings/CorrectionImportPreviewDialog.svelte b/C1.source/privatevoice.src/frontend/src/components/settings/CorrectionImportPreviewDialog.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/settings/CorrectionImportPreviewDialog.svelte
rename to C1.source/privatevoice.src/frontend/src/components/settings/CorrectionImportPreviewDialog.svelte
diff --git a/privatevoice.src/frontend/src/components/settings/GeneralPage.svelte b/C1.source/privatevoice.src/frontend/src/components/settings/GeneralPage.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/settings/GeneralPage.svelte
rename to C1.source/privatevoice.src/frontend/src/components/settings/GeneralPage.svelte
diff --git a/privatevoice.src/frontend/src/components/settings/HistoryPage.svelte b/C1.source/privatevoice.src/frontend/src/components/settings/HistoryPage.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/settings/HistoryPage.svelte
rename to C1.source/privatevoice.src/frontend/src/components/settings/HistoryPage.svelte
diff --git a/privatevoice.src/frontend/src/components/settings/HotkeysPage.svelte b/C1.source/privatevoice.src/frontend/src/components/settings/HotkeysPage.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/settings/HotkeysPage.svelte
rename to C1.source/privatevoice.src/frontend/src/components/settings/HotkeysPage.svelte
diff --git a/privatevoice.src/frontend/src/components/settings/LanguagePage.svelte b/C1.source/privatevoice.src/frontend/src/components/settings/LanguagePage.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/settings/LanguagePage.svelte
rename to C1.source/privatevoice.src/frontend/src/components/settings/LanguagePage.svelte
diff --git a/privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte b/C1.source/privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte
rename to C1.source/privatevoice.src/frontend/src/components/settings/PermissionsPage.svelte
diff --git a/privatevoice.src/frontend/src/components/settings/SettingsWindow.svelte b/C1.source/privatevoice.src/frontend/src/components/settings/SettingsWindow.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/settings/SettingsWindow.svelte
rename to C1.source/privatevoice.src/frontend/src/components/settings/SettingsWindow.svelte
diff --git a/privatevoice.src/frontend/src/components/settings/UserDictPage.svelte b/C1.source/privatevoice.src/frontend/src/components/settings/UserDictPage.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/settings/UserDictPage.svelte
rename to C1.source/privatevoice.src/frontend/src/components/settings/UserDictPage.svelte
diff --git a/privatevoice.src/frontend/src/components/shared/AppIcon.svelte b/C1.source/privatevoice.src/frontend/src/components/shared/AppIcon.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/shared/AppIcon.svelte
rename to C1.source/privatevoice.src/frontend/src/components/shared/AppIcon.svelte
diff --git a/privatevoice.src/frontend/src/components/shared/ToggleSwitch.svelte b/C1.source/privatevoice.src/frontend/src/components/shared/ToggleSwitch.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/shared/ToggleSwitch.svelte
rename to C1.source/privatevoice.src/frontend/src/components/shared/ToggleSwitch.svelte
diff --git a/privatevoice.src/frontend/src/components/update/UpdateDialog.svelte b/C1.source/privatevoice.src/frontend/src/components/update/UpdateDialog.svelte
similarity index 100%
rename from privatevoice.src/frontend/src/components/update/UpdateDialog.svelte
rename to C1.source/privatevoice.src/frontend/src/components/update/UpdateDialog.svelte
diff --git a/privatevoice.src/frontend/src/lib/i18n/de.json b/C1.source/privatevoice.src/frontend/src/lib/i18n/de.json
similarity index 100%
rename from privatevoice.src/frontend/src/lib/i18n/de.json
rename to C1.source/privatevoice.src/frontend/src/lib/i18n/de.json
diff --git a/privatevoice.src/frontend/src/lib/i18n/en.json b/C1.source/privatevoice.src/frontend/src/lib/i18n/en.json
similarity index 100%
rename from privatevoice.src/frontend/src/lib/i18n/en.json
rename to C1.source/privatevoice.src/frontend/src/lib/i18n/en.json
diff --git a/privatevoice.src/frontend/src/lib/i18n/es.json b/C1.source/privatevoice.src/frontend/src/lib/i18n/es.json
similarity index 100%
rename from privatevoice.src/frontend/src/lib/i18n/es.json
rename to C1.source/privatevoice.src/frontend/src/lib/i18n/es.json
diff --git a/privatevoice.src/frontend/src/lib/i18n/fr.json b/C1.source/privatevoice.src/frontend/src/lib/i18n/fr.json
similarity index 100%
rename from privatevoice.src/frontend/src/lib/i18n/fr.json
rename to C1.source/privatevoice.src/frontend/src/lib/i18n/fr.json
diff --git a/privatevoice.src/frontend/src/lib/i18n/index.ts b/C1.source/privatevoice.src/frontend/src/lib/i18n/index.ts
similarity index 100%
rename from privatevoice.src/frontend/src/lib/i18n/index.ts
rename to C1.source/privatevoice.src/frontend/src/lib/i18n/index.ts
diff --git a/privatevoice.src/frontend/src/lib/i18n/it.json b/C1.source/privatevoice.src/frontend/src/lib/i18n/it.json
similarity index 100%
rename from privatevoice.src/frontend/src/lib/i18n/it.json
rename to C1.source/privatevoice.src/frontend/src/lib/i18n/it.json
diff --git a/privatevoice.src/frontend/src/lib/i18n/ja.json b/C1.source/privatevoice.src/frontend/src/lib/i18n/ja.json
similarity index 100%
rename from privatevoice.src/frontend/src/lib/i18n/ja.json
rename to C1.source/privatevoice.src/frontend/src/lib/i18n/ja.json
diff --git a/privatevoice.src/frontend/src/lib/i18n/ko.json b/C1.source/privatevoice.src/frontend/src/lib/i18n/ko.json
similarity index 100%
rename from privatevoice.src/frontend/src/lib/i18n/ko.json
rename to C1.source/privatevoice.src/frontend/src/lib/i18n/ko.json
diff --git a/privatevoice.src/frontend/src/lib/i18n/pt.json b/C1.source/privatevoice.src/frontend/src/lib/i18n/pt.json
similarity index 100%
rename from privatevoice.src/frontend/src/lib/i18n/pt.json
rename to C1.source/privatevoice.src/frontend/src/lib/i18n/pt.json
diff --git a/privatevoice.src/frontend/src/lib/i18n/zh.json b/C1.source/privatevoice.src/frontend/src/lib/i18n/zh.json
similarity index 100%
rename from privatevoice.src/frontend/src/lib/i18n/zh.json
rename to C1.source/privatevoice.src/frontend/src/lib/i18n/zh.json
diff --git a/privatevoice.src/frontend/src/lib/stores/app.ts b/C1.source/privatevoice.src/frontend/src/lib/stores/app.ts
similarity index 100%
rename from privatevoice.src/frontend/src/lib/stores/app.ts
rename to C1.source/privatevoice.src/frontend/src/lib/stores/app.ts
diff --git a/privatevoice.src/frontend/src/lib/stores/config.ts b/C1.source/privatevoice.src/frontend/src/lib/stores/config.ts
similarity index 100%
rename from privatevoice.src/frontend/src/lib/stores/config.ts
rename to C1.source/privatevoice.src/frontend/src/lib/stores/config.ts
diff --git a/privatevoice.src/frontend/src/lib/stores/indicator.ts b/C1.source/privatevoice.src/frontend/src/lib/stores/indicator.ts
similarity index 100%
rename from privatevoice.src/frontend/src/lib/stores/indicator.ts
rename to C1.source/privatevoice.src/frontend/src/lib/stores/indicator.ts
diff --git a/privatevoice.src/frontend/src/lib/stores/update.ts b/C1.source/privatevoice.src/frontend/src/lib/stores/update.ts
similarity index 100%
rename from privatevoice.src/frontend/src/lib/stores/update.ts
rename to C1.source/privatevoice.src/frontend/src/lib/stores/update.ts
diff --git a/privatevoice.src/frontend/src/main.ts b/C1.source/privatevoice.src/frontend/src/main.ts
similarity index 100%
rename from privatevoice.src/frontend/src/main.ts
rename to C1.source/privatevoice.src/frontend/src/main.ts
diff --git a/privatevoice.src/frontend/src/styles/global.css b/C1.source/privatevoice.src/frontend/src/styles/global.css
similarity index 100%
rename from privatevoice.src/frontend/src/styles/global.css
rename to C1.source/privatevoice.src/frontend/src/styles/global.css
diff --git a/privatevoice.src/frontend/src/vite-env.d.ts b/C1.source/privatevoice.src/frontend/src/vite-env.d.ts
similarity index 100%
rename from privatevoice.src/frontend/src/vite-env.d.ts
rename to C1.source/privatevoice.src/frontend/src/vite-env.d.ts
diff --git a/privatevoice.src/frontend/svelte.config.js b/C1.source/privatevoice.src/frontend/svelte.config.js
similarity index 100%
rename from privatevoice.src/frontend/svelte.config.js
rename to C1.source/privatevoice.src/frontend/svelte.config.js
diff --git a/privatevoice.src/frontend/tsconfig.json b/C1.source/privatevoice.src/frontend/tsconfig.json
similarity index 100%
rename from privatevoice.src/frontend/tsconfig.json
rename to C1.source/privatevoice.src/frontend/tsconfig.json
diff --git a/privatevoice.src/frontend/vite.config.ts b/C1.source/privatevoice.src/frontend/vite.config.ts
similarity index 100%
rename from privatevoice.src/frontend/vite.config.ts
rename to C1.source/privatevoice.src/frontend/vite.config.ts
diff --git a/privatevoice.src/go.mod b/C1.source/privatevoice.src/go.mod
similarity index 100%
rename from privatevoice.src/go.mod
rename to C1.source/privatevoice.src/go.mod
diff --git a/privatevoice.src/go.monterey.mod b/C1.source/privatevoice.src/go.monterey.mod
similarity index 100%
rename from privatevoice.src/go.monterey.mod
rename to C1.source/privatevoice.src/go.monterey.mod
diff --git a/privatevoice.src/go.monterey.sum b/C1.source/privatevoice.src/go.monterey.sum
similarity index 100%
rename from privatevoice.src/go.monterey.sum
rename to C1.source/privatevoice.src/go.monterey.sum
diff --git a/privatevoice.src/go.sum b/C1.source/privatevoice.src/go.sum
similarity index 100%
rename from privatevoice.src/go.sum
rename to C1.source/privatevoice.src/go.sum
diff --git a/privatevoice.src/instructions.md b/C1.source/privatevoice.src/instructions.md
similarity index 100%
rename from privatevoice.src/instructions.md
rename to C1.source/privatevoice.src/instructions.md
diff --git a/privatevoice.src/internal/audio/recorder.go b/C1.source/privatevoice.src/internal/audio/recorder.go
similarity index 100%
rename from privatevoice.src/internal/audio/recorder.go
rename to C1.source/privatevoice.src/internal/audio/recorder.go
diff --git a/privatevoice.src/internal/audio/recorder_test.go b/C1.source/privatevoice.src/internal/audio/recorder_test.go
similarity index 100%
rename from privatevoice.src/internal/audio/recorder_test.go
rename to C1.source/privatevoice.src/internal/audio/recorder_test.go
diff --git a/privatevoice.src/internal/config/config.go b/C1.source/privatevoice.src/internal/config/config.go
similarity index 100%
rename from privatevoice.src/internal/config/config.go
rename to C1.source/privatevoice.src/internal/config/config.go
diff --git a/privatevoice.src/internal/config/config_test.go b/C1.source/privatevoice.src/internal/config/config_test.go
similarity index 100%
rename from privatevoice.src/internal/config/config_test.go
rename to C1.source/privatevoice.src/internal/config/config_test.go
diff --git a/privatevoice.src/internal/correctioncsv/correctioncsv.go b/C1.source/privatevoice.src/internal/correctioncsv/correctioncsv.go
similarity index 100%
rename from privatevoice.src/internal/correctioncsv/correctioncsv.go
rename to C1.source/privatevoice.src/internal/correctioncsv/correctioncsv.go
diff --git a/privatevoice.src/internal/correctioncsv/correctioncsv_e2e_test.go b/C1.source/privatevoice.src/internal/correctioncsv/correctioncsv_e2e_test.go
similarity index 100%
rename from privatevoice.src/internal/correctioncsv/correctioncsv_e2e_test.go
rename to C1.source/privatevoice.src/internal/correctioncsv/correctioncsv_e2e_test.go
diff --git a/privatevoice.src/internal/correctioncsv/correctioncsv_test.go b/C1.source/privatevoice.src/internal/correctioncsv/correctioncsv_test.go
similarity index 100%
rename from privatevoice.src/internal/correctioncsv/correctioncsv_test.go
rename to C1.source/privatevoice.src/internal/correctioncsv/correctioncsv_test.go
diff --git a/privatevoice.src/internal/dock/dock.go b/C1.source/privatevoice.src/internal/dock/dock.go
similarity index 100%
rename from privatevoice.src/internal/dock/dock.go
rename to C1.source/privatevoice.src/internal/dock/dock.go
diff --git a/privatevoice.src/internal/dock/dock_darwin.go b/C1.source/privatevoice.src/internal/dock/dock_darwin.go
similarity index 100%
rename from privatevoice.src/internal/dock/dock_darwin.go
rename to C1.source/privatevoice.src/internal/dock/dock_darwin.go
diff --git a/privatevoice.src/internal/dock/dock_other.go b/C1.source/privatevoice.src/internal/dock/dock_other.go
similarity index 100%
rename from privatevoice.src/internal/dock/dock_other.go
rename to C1.source/privatevoice.src/internal/dock/dock_other.go
diff --git a/privatevoice.src/internal/engine/engine.go b/C1.source/privatevoice.src/internal/engine/engine.go
similarity index 100%
rename from privatevoice.src/internal/engine/engine.go
rename to C1.source/privatevoice.src/internal/engine/engine.go
diff --git a/privatevoice.src/internal/engine/engine_darwin.go b/C1.source/privatevoice.src/internal/engine/engine_darwin.go
similarity index 100%
rename from privatevoice.src/internal/engine/engine_darwin.go
rename to C1.source/privatevoice.src/internal/engine/engine_darwin.go
diff --git a/privatevoice.src/internal/engine/engine_darwin_qwen3.go b/C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3.go
similarity index 100%
rename from privatevoice.src/internal/engine/engine_darwin_qwen3.go
rename to C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3.go
diff --git a/privatevoice.src/internal/engine/engine_darwin_qwen3_monterey.go b/C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3_monterey.go
similarity index 100%
rename from privatevoice.src/internal/engine/engine_darwin_qwen3_monterey.go
rename to C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3_monterey.go
diff --git a/privatevoice.src/internal/engine/engine_darwin_qwen3_monterey_test.go b/C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3_monterey_test.go
similarity index 100%
rename from privatevoice.src/internal/engine/engine_darwin_qwen3_monterey_test.go
rename to C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3_monterey_test.go
diff --git a/privatevoice.src/internal/engine/engine_darwin_qwen3_test.go b/C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3_test.go
similarity index 100%
rename from privatevoice.src/internal/engine/engine_darwin_qwen3_test.go
rename to C1.source/privatevoice.src/internal/engine/engine_darwin_qwen3_test.go
diff --git a/privatevoice.src/internal/engine/engine_darwin_test.go b/C1.source/privatevoice.src/internal/engine/engine_darwin_test.go
similarity index 100%
rename from privatevoice.src/internal/engine/engine_darwin_test.go
rename to C1.source/privatevoice.src/internal/engine/engine_darwin_test.go
diff --git a/privatevoice.src/internal/engine/engine_linux.go b/C1.source/privatevoice.src/internal/engine/engine_linux.go
similarity index 100%
rename from privatevoice.src/internal/engine/engine_linux.go
rename to C1.source/privatevoice.src/internal/engine/engine_linux.go
diff --git a/privatevoice.src/internal/engine/engine_windows.go b/C1.source/privatevoice.src/internal/engine/engine_windows.go
similarity index 100%
rename from privatevoice.src/internal/engine/engine_windows.go
rename to C1.source/privatevoice.src/internal/engine/engine_windows.go
diff --git a/privatevoice.src/internal/engine/release_tail.go b/C1.source/privatevoice.src/internal/engine/release_tail.go
similarity index 100%
rename from privatevoice.src/internal/engine/release_tail.go
rename to C1.source/privatevoice.src/internal/engine/release_tail.go
diff --git a/privatevoice.src/internal/history/history.go b/C1.source/privatevoice.src/internal/history/history.go
similarity index 100%
rename from privatevoice.src/internal/history/history.go
rename to C1.source/privatevoice.src/internal/history/history.go
diff --git a/privatevoice.src/internal/history/history_test.go b/C1.source/privatevoice.src/internal/history/history_test.go
similarity index 100%
rename from privatevoice.src/internal/history/history_test.go
rename to C1.source/privatevoice.src/internal/history/history_test.go
diff --git a/privatevoice.src/internal/hotkey/hotkey.go b/C1.source/privatevoice.src/internal/hotkey/hotkey.go
similarity index 100%
rename from privatevoice.src/internal/hotkey/hotkey.go
rename to C1.source/privatevoice.src/internal/hotkey/hotkey.go
diff --git a/privatevoice.src/internal/hotkey/hotkey_darwin.go b/C1.source/privatevoice.src/internal/hotkey/hotkey_darwin.go
similarity index 100%
rename from privatevoice.src/internal/hotkey/hotkey_darwin.go
rename to C1.source/privatevoice.src/internal/hotkey/hotkey_darwin.go
diff --git a/privatevoice.src/internal/hotkey/hotkey_linux.go b/C1.source/privatevoice.src/internal/hotkey/hotkey_linux.go
similarity index 100%
rename from privatevoice.src/internal/hotkey/hotkey_linux.go
rename to C1.source/privatevoice.src/internal/hotkey/hotkey_linux.go
diff --git a/privatevoice.src/internal/hotkey/hotkey_windows.go b/C1.source/privatevoice.src/internal/hotkey/hotkey_windows.go
similarity index 100%
rename from privatevoice.src/internal/hotkey/hotkey_windows.go
rename to C1.source/privatevoice.src/internal/hotkey/hotkey_windows.go
diff --git a/privatevoice.src/internal/input/paste.go b/C1.source/privatevoice.src/internal/input/paste.go
similarity index 100%
rename from privatevoice.src/internal/input/paste.go
rename to C1.source/privatevoice.src/internal/input/paste.go
diff --git a/privatevoice.src/internal/input/paste_darwin.go b/C1.source/privatevoice.src/internal/input/paste_darwin.go
similarity index 100%
rename from privatevoice.src/internal/input/paste_darwin.go
rename to C1.source/privatevoice.src/internal/input/paste_darwin.go
diff --git a/privatevoice.src/internal/input/paste_darwin_test.go b/C1.source/privatevoice.src/internal/input/paste_darwin_test.go
similarity index 100%
rename from privatevoice.src/internal/input/paste_darwin_test.go
rename to C1.source/privatevoice.src/internal/input/paste_darwin_test.go
diff --git a/privatevoice.src/internal/input/paste_linux.go b/C1.source/privatevoice.src/internal/input/paste_linux.go
similarity index 100%
rename from privatevoice.src/internal/input/paste_linux.go
rename to C1.source/privatevoice.src/internal/input/paste_linux.go
diff --git a/privatevoice.src/internal/input/paste_windows.go b/C1.source/privatevoice.src/internal/input/paste_windows.go
similarity index 100%
rename from privatevoice.src/internal/input/paste_windows.go
rename to C1.source/privatevoice.src/internal/input/paste_windows.go
diff --git a/privatevoice.src/internal/language/detect.go b/C1.source/privatevoice.src/internal/language/detect.go
similarity index 100%
rename from privatevoice.src/internal/language/detect.go
rename to C1.source/privatevoice.src/internal/language/detect.go
diff --git a/privatevoice.src/internal/language/detect_darwin.go b/C1.source/privatevoice.src/internal/language/detect_darwin.go
similarity index 100%
rename from privatevoice.src/internal/language/detect_darwin.go
rename to C1.source/privatevoice.src/internal/language/detect_darwin.go
diff --git a/privatevoice.src/internal/language/detect_other.go b/C1.source/privatevoice.src/internal/language/detect_other.go
similarity index 100%
rename from privatevoice.src/internal/language/detect_other.go
rename to C1.source/privatevoice.src/internal/language/detect_other.go
diff --git a/privatevoice.src/internal/language/language_test.go b/C1.source/privatevoice.src/internal/language/language_test.go
similarity index 100%
rename from privatevoice.src/internal/language/language_test.go
rename to C1.source/privatevoice.src/internal/language/language_test.go
diff --git a/privatevoice.src/internal/language/resolver.go b/C1.source/privatevoice.src/internal/language/resolver.go
similarity index 100%
rename from privatevoice.src/internal/language/resolver.go
rename to C1.source/privatevoice.src/internal/language/resolver.go
diff --git a/privatevoice.src/internal/logger/logger.go b/C1.source/privatevoice.src/internal/logger/logger.go
similarity index 100%
rename from privatevoice.src/internal/logger/logger.go
rename to C1.source/privatevoice.src/internal/logger/logger.go
diff --git a/privatevoice.src/internal/model/build_capabilities.go b/C1.source/privatevoice.src/internal/model/build_capabilities.go
similarity index 100%
rename from privatevoice.src/internal/model/build_capabilities.go
rename to C1.source/privatevoice.src/internal/model/build_capabilities.go
diff --git a/privatevoice.src/internal/model/build_capabilities_default.go b/C1.source/privatevoice.src/internal/model/build_capabilities_default.go
similarity index 100%
rename from privatevoice.src/internal/model/build_capabilities_default.go
rename to C1.source/privatevoice.src/internal/model/build_capabilities_default.go
diff --git a/privatevoice.src/internal/model/build_capabilities_monterey.go b/C1.source/privatevoice.src/internal/model/build_capabilities_monterey.go
similarity index 100%
rename from privatevoice.src/internal/model/build_capabilities_monterey.go
rename to C1.source/privatevoice.src/internal/model/build_capabilities_monterey.go
diff --git a/privatevoice.src/internal/model/build_capabilities_windows.go b/C1.source/privatevoice.src/internal/model/build_capabilities_windows.go
similarity index 100%
rename from privatevoice.src/internal/model/build_capabilities_windows.go
rename to C1.source/privatevoice.src/internal/model/build_capabilities_windows.go
diff --git a/privatevoice.src/internal/model/downloader.go b/C1.source/privatevoice.src/internal/model/downloader.go
similarity index 100%
rename from privatevoice.src/internal/model/downloader.go
rename to C1.source/privatevoice.src/internal/model/downloader.go
diff --git a/privatevoice.src/internal/model/install_state.go b/C1.source/privatevoice.src/internal/model/install_state.go
similarity index 100%
rename from privatevoice.src/internal/model/install_state.go
rename to C1.source/privatevoice.src/internal/model/install_state.go
diff --git a/privatevoice.src/internal/model/model_test.go b/C1.source/privatevoice.src/internal/model/model_test.go
similarity index 100%
rename from privatevoice.src/internal/model/model_test.go
rename to C1.source/privatevoice.src/internal/model/model_test.go
diff --git a/privatevoice.src/internal/model/profile.go b/C1.source/privatevoice.src/internal/model/profile.go
similarity index 100%
rename from privatevoice.src/internal/model/profile.go
rename to C1.source/privatevoice.src/internal/model/profile.go
diff --git a/privatevoice.src/internal/model/registry.go b/C1.source/privatevoice.src/internal/model/registry.go
similarity index 100%
rename from privatevoice.src/internal/model/registry.go
rename to C1.source/privatevoice.src/internal/model/registry.go
diff --git a/privatevoice.src/internal/model/resolver.go b/C1.source/privatevoice.src/internal/model/resolver.go
similarity index 100%
rename from privatevoice.src/internal/model/resolver.go
rename to C1.source/privatevoice.src/internal/model/resolver.go
diff --git a/privatevoice.src/internal/model/validator.go b/C1.source/privatevoice.src/internal/model/validator.go
similarity index 100%
rename from privatevoice.src/internal/model/validator.go
rename to C1.source/privatevoice.src/internal/model/validator.go
diff --git a/privatevoice.src/internal/modelselection/selection.go b/C1.source/privatevoice.src/internal/modelselection/selection.go
similarity index 100%
rename from privatevoice.src/internal/modelselection/selection.go
rename to C1.source/privatevoice.src/internal/modelselection/selection.go
diff --git a/privatevoice.src/internal/modelselection/selection_test.go b/C1.source/privatevoice.src/internal/modelselection/selection_test.go
similarity index 100%
rename from privatevoice.src/internal/modelselection/selection_test.go
rename to C1.source/privatevoice.src/internal/modelselection/selection_test.go
diff --git a/privatevoice.src/internal/overlay/overlay.go b/C1.source/privatevoice.src/internal/overlay/overlay.go
similarity index 100%
rename from privatevoice.src/internal/overlay/overlay.go
rename to C1.source/privatevoice.src/internal/overlay/overlay.go
diff --git a/privatevoice.src/internal/overlay/overlay_darwin.go b/C1.source/privatevoice.src/internal/overlay/overlay_darwin.go
similarity index 100%
rename from privatevoice.src/internal/overlay/overlay_darwin.go
rename to C1.source/privatevoice.src/internal/overlay/overlay_darwin.go
diff --git a/privatevoice.src/internal/overlay/overlay_other.go b/C1.source/privatevoice.src/internal/overlay/overlay_other.go
similarity index 100%
rename from privatevoice.src/internal/overlay/overlay_other.go
rename to C1.source/privatevoice.src/internal/overlay/overlay_other.go
diff --git a/privatevoice.src/internal/overlay/overlay_windows.go b/C1.source/privatevoice.src/internal/overlay/overlay_windows.go
similarity index 100%
rename from privatevoice.src/internal/overlay/overlay_windows.go
rename to C1.source/privatevoice.src/internal/overlay/overlay_windows.go
diff --git a/privatevoice.src/internal/paths/paths.go b/C1.source/privatevoice.src/internal/paths/paths.go
similarity index 100%
rename from privatevoice.src/internal/paths/paths.go
rename to C1.source/privatevoice.src/internal/paths/paths.go
diff --git a/privatevoice.src/internal/permissions/permissions.go b/C1.source/privatevoice.src/internal/permissions/permissions.go
similarity index 100%
rename from privatevoice.src/internal/permissions/permissions.go
rename to C1.source/privatevoice.src/internal/permissions/permissions.go
diff --git a/privatevoice.src/internal/permissions/permissions_darwin.go b/C1.source/privatevoice.src/internal/permissions/permissions_darwin.go
similarity index 100%
rename from privatevoice.src/internal/permissions/permissions_darwin.go
rename to C1.source/privatevoice.src/internal/permissions/permissions_darwin.go
diff --git a/privatevoice.src/internal/permissions/permissions_other.go b/C1.source/privatevoice.src/internal/permissions/permissions_other.go
similarity index 100%
rename from privatevoice.src/internal/permissions/permissions_other.go
rename to C1.source/privatevoice.src/internal/permissions/permissions_other.go
diff --git a/privatevoice.src/internal/singleinstance/singleinstance.go b/C1.source/privatevoice.src/internal/singleinstance/singleinstance.go
similarity index 100%
rename from privatevoice.src/internal/singleinstance/singleinstance.go
rename to C1.source/privatevoice.src/internal/singleinstance/singleinstance.go
diff --git a/privatevoice.src/internal/singleinstance/singleinstance_unix.go b/C1.source/privatevoice.src/internal/singleinstance/singleinstance_unix.go
similarity index 100%
rename from privatevoice.src/internal/singleinstance/singleinstance_unix.go
rename to C1.source/privatevoice.src/internal/singleinstance/singleinstance_unix.go
diff --git a/privatevoice.src/internal/singleinstance/singleinstance_windows.go b/C1.source/privatevoice.src/internal/singleinstance/singleinstance_windows.go
similarity index 100%
rename from privatevoice.src/internal/singleinstance/singleinstance_windows.go
rename to C1.source/privatevoice.src/internal/singleinstance/singleinstance_windows.go
diff --git a/privatevoice.src/internal/sound/sound_other.go b/C1.source/privatevoice.src/internal/sound/sound_other.go
similarity index 100%
rename from privatevoice.src/internal/sound/sound_other.go
rename to C1.source/privatevoice.src/internal/sound/sound_other.go
diff --git a/privatevoice.src/internal/sound/sound_windows.go b/C1.source/privatevoice.src/internal/sound/sound_windows.go
similarity index 100%
rename from privatevoice.src/internal/sound/sound_windows.go
rename to C1.source/privatevoice.src/internal/sound/sound_windows.go
diff --git a/privatevoice.src/internal/startup/startup.go b/C1.source/privatevoice.src/internal/startup/startup.go
similarity index 100%
rename from privatevoice.src/internal/startup/startup.go
rename to C1.source/privatevoice.src/internal/startup/startup.go
diff --git a/privatevoice.src/internal/startup/startup_darwin.go b/C1.source/privatevoice.src/internal/startup/startup_darwin.go
similarity index 100%
rename from privatevoice.src/internal/startup/startup_darwin.go
rename to C1.source/privatevoice.src/internal/startup/startup_darwin.go
diff --git a/privatevoice.src/internal/startup/startup_darwin_appstore.go b/C1.source/privatevoice.src/internal/startup/startup_darwin_appstore.go
similarity index 100%
rename from privatevoice.src/internal/startup/startup_darwin_appstore.go
rename to C1.source/privatevoice.src/internal/startup/startup_darwin_appstore.go
diff --git a/privatevoice.src/internal/startup/startup_linux.go b/C1.source/privatevoice.src/internal/startup/startup_linux.go
similarity index 100%
rename from privatevoice.src/internal/startup/startup_linux.go
rename to C1.source/privatevoice.src/internal/startup/startup_linux.go
diff --git a/privatevoice.src/internal/startup/startup_windows.go b/C1.source/privatevoice.src/internal/startup/startup_windows.go
similarity index 100%
rename from privatevoice.src/internal/startup/startup_windows.go
rename to C1.source/privatevoice.src/internal/startup/startup_windows.go
diff --git a/privatevoice.src/internal/textproc/textproc.go b/C1.source/privatevoice.src/internal/textproc/textproc.go
similarity index 100%
rename from privatevoice.src/internal/textproc/textproc.go
rename to C1.source/privatevoice.src/internal/textproc/textproc.go
diff --git a/privatevoice.src/internal/textproc/textproc_test.go b/C1.source/privatevoice.src/internal/textproc/textproc_test.go
similarity index 100%
rename from privatevoice.src/internal/textproc/textproc_test.go
rename to C1.source/privatevoice.src/internal/textproc/textproc_test.go
diff --git a/privatevoice.src/internal/updater/updater.go b/C1.source/privatevoice.src/internal/updater/updater.go
similarity index 100%
rename from privatevoice.src/internal/updater/updater.go
rename to C1.source/privatevoice.src/internal/updater/updater.go
diff --git a/privatevoice.src/internal/userdict/userdict.go b/C1.source/privatevoice.src/internal/userdict/userdict.go
similarity index 100%
rename from privatevoice.src/internal/userdict/userdict.go
rename to C1.source/privatevoice.src/internal/userdict/userdict.go
diff --git a/privatevoice.src/internal/userdict/userdict_test.go b/C1.source/privatevoice.src/internal/userdict/userdict_test.go
similarity index 100%
rename from privatevoice.src/internal/userdict/userdict_test.go
rename to C1.source/privatevoice.src/internal/userdict/userdict_test.go
diff --git a/privatevoice.src/locale_other.go b/C1.source/privatevoice.src/locale_other.go
similarity index 100%
rename from privatevoice.src/locale_other.go
rename to C1.source/privatevoice.src/locale_other.go
diff --git a/privatevoice.src/locale_windows.go b/C1.source/privatevoice.src/locale_windows.go
similarity index 100%
rename from privatevoice.src/locale_windows.go
rename to C1.source/privatevoice.src/locale_windows.go
diff --git a/privatevoice.src/main.go b/C1.source/privatevoice.src/main.go
similarity index 100%
rename from privatevoice.src/main.go
rename to C1.source/privatevoice.src/main.go
diff --git a/privatevoice.src/scripts/QA-WINDOWS-PREVIEW.ps1 b/C1.source/privatevoice.src/scripts/QA-WINDOWS-PREVIEW.ps1
similarity index 100%
rename from privatevoice.src/scripts/QA-WINDOWS-PREVIEW.ps1
rename to C1.source/privatevoice.src/scripts/QA-WINDOWS-PREVIEW.ps1
diff --git a/privatevoice.src/scripts/RUN-WINDOWS-QA.cmd b/C1.source/privatevoice.src/scripts/RUN-WINDOWS-QA.cmd
similarity index 100%
rename from privatevoice.src/scripts/RUN-WINDOWS-QA.cmd
rename to C1.source/privatevoice.src/scripts/RUN-WINDOWS-QA.cmd
diff --git a/privatevoice.src/scripts/build-appstore-developerid-macos.sh b/C1.source/privatevoice.src/scripts/build-appstore-developerid-macos.sh
similarity index 100%
rename from privatevoice.src/scripts/build-appstore-developerid-macos.sh
rename to C1.source/privatevoice.src/scripts/build-appstore-developerid-macos.sh
diff --git a/privatevoice.src/scripts/build-appstore-macos.sh b/C1.source/privatevoice.src/scripts/build-appstore-macos.sh
similarity index 100%
rename from privatevoice.src/scripts/build-appstore-macos.sh
rename to C1.source/privatevoice.src/scripts/build-appstore-macos.sh
diff --git a/privatevoice.src/scripts/build-local-macos-monterey.sh b/C1.source/privatevoice.src/scripts/build-local-macos-monterey.sh
similarity index 100%
rename from privatevoice.src/scripts/build-local-macos-monterey.sh
rename to C1.source/privatevoice.src/scripts/build-local-macos-monterey.sh
diff --git a/privatevoice.src/scripts/build-local-macos-universal.sh b/C1.source/privatevoice.src/scripts/build-local-macos-universal.sh
similarity index 100%
rename from privatevoice.src/scripts/build-local-macos-universal.sh
rename to C1.source/privatevoice.src/scripts/build-local-macos-universal.sh
diff --git a/privatevoice.src/scripts/build-local-macos.sh b/C1.source/privatevoice.src/scripts/build-local-macos.sh
similarity index 100%
rename from privatevoice.src/scripts/build-local-macos.sh
rename to C1.source/privatevoice.src/scripts/build-local-macos.sh
diff --git a/privatevoice.src/scripts/build-macappstore-pkg-macos.sh b/C1.source/privatevoice.src/scripts/build-macappstore-pkg-macos.sh
similarity index 100%
rename from privatevoice.src/scripts/build-macappstore-pkg-macos.sh
rename to C1.source/privatevoice.src/scripts/build-macappstore-pkg-macos.sh
diff --git a/privatevoice.src/scripts/build-release-macos.sh b/C1.source/privatevoice.src/scripts/build-release-macos.sh
similarity index 100%
rename from privatevoice.src/scripts/build-release-macos.sh
rename to C1.source/privatevoice.src/scripts/build-release-macos.sh
diff --git a/privatevoice.src/scripts/build-windows-preview.sh b/C1.source/privatevoice.src/scripts/build-windows-preview.sh
similarity index 100%
rename from privatevoice.src/scripts/build-windows-preview.sh
rename to C1.source/privatevoice.src/scripts/build-windows-preview.sh
diff --git a/privatevoice.src/scripts/install-x-asr-zh-en-960ms.sh b/C1.source/privatevoice.src/scripts/install-x-asr-zh-en-960ms.sh
similarity index 100%
rename from privatevoice.src/scripts/install-x-asr-zh-en-960ms.sh
rename to C1.source/privatevoice.src/scripts/install-x-asr-zh-en-960ms.sh
diff --git a/privatevoice.src/scripts/qa-settings-window-macos.sh b/C1.source/privatevoice.src/scripts/qa-settings-window-macos.sh
similarity index 100%
rename from privatevoice.src/scripts/qa-settings-window-macos.sh
rename to C1.source/privatevoice.src/scripts/qa-settings-window-macos.sh
diff --git a/privatevoice.src/scripts/verify-windows-qa-evidence.sh b/C1.source/privatevoice.src/scripts/verify-windows-qa-evidence.sh
similarity index 100%
rename from privatevoice.src/scripts/verify-windows-qa-evidence.sh
rename to C1.source/privatevoice.src/scripts/verify-windows-qa-evidence.sh
diff --git a/privatevoice.src/services/app_service.go b/C1.source/privatevoice.src/services/app_service.go
similarity index 100%
rename from privatevoice.src/services/app_service.go
rename to C1.source/privatevoice.src/services/app_service.go
diff --git a/privatevoice.src/services/audio_service.go b/C1.source/privatevoice.src/services/audio_service.go
similarity index 100%
rename from privatevoice.src/services/audio_service.go
rename to C1.source/privatevoice.src/services/audio_service.go
diff --git a/privatevoice.src/services/config_service.go b/C1.source/privatevoice.src/services/config_service.go
similarity index 100%
rename from privatevoice.src/services/config_service.go
rename to C1.source/privatevoice.src/services/config_service.go
diff --git a/privatevoice.src/services/correction_csv_service.go b/C1.source/privatevoice.src/services/correction_csv_service.go
similarity index 100%
rename from privatevoice.src/services/correction_csv_service.go
rename to C1.source/privatevoice.src/services/correction_csv_service.go
diff --git a/privatevoice.src/services/engine_service.go b/C1.source/privatevoice.src/services/engine_service.go
similarity index 100%
rename from privatevoice.src/services/engine_service.go
rename to C1.source/privatevoice.src/services/engine_service.go
diff --git a/privatevoice.src/services/engine_service_qwen3_default_test.go b/C1.source/privatevoice.src/services/engine_service_qwen3_default_test.go
similarity index 100%
rename from privatevoice.src/services/engine_service_qwen3_default_test.go
rename to C1.source/privatevoice.src/services/engine_service_qwen3_default_test.go
diff --git a/privatevoice.src/services/engine_service_qwen3_monterey_test.go b/C1.source/privatevoice.src/services/engine_service_qwen3_monterey_test.go
similarity index 100%
rename from privatevoice.src/services/engine_service_qwen3_monterey_test.go
rename to C1.source/privatevoice.src/services/engine_service_qwen3_monterey_test.go
diff --git a/privatevoice.src/services/engine_service_test.go b/C1.source/privatevoice.src/services/engine_service_test.go
similarity index 100%
rename from privatevoice.src/services/engine_service_test.go
rename to C1.source/privatevoice.src/services/engine_service_test.go
diff --git a/privatevoice.src/services/engine_service_windows_test.go b/C1.source/privatevoice.src/services/engine_service_windows_test.go
similarity index 100%
rename from privatevoice.src/services/engine_service_windows_test.go
rename to C1.source/privatevoice.src/services/engine_service_windows_test.go
diff --git a/privatevoice.src/services/history_service.go b/C1.source/privatevoice.src/services/history_service.go
similarity index 100%
rename from privatevoice.src/services/history_service.go
rename to C1.source/privatevoice.src/services/history_service.go
diff --git a/privatevoice.src/services/hotkey_service.go b/C1.source/privatevoice.src/services/hotkey_service.go
similarity index 100%
rename from privatevoice.src/services/hotkey_service.go
rename to C1.source/privatevoice.src/services/hotkey_service.go
diff --git a/privatevoice.src/services/permission_service.go b/C1.source/privatevoice.src/services/permission_service.go
similarity index 100%
rename from privatevoice.src/services/permission_service.go
rename to C1.source/privatevoice.src/services/permission_service.go
diff --git a/privatevoice.src/services/updater_service.go b/C1.source/privatevoice.src/services/updater_service.go
similarity index 100%
rename from privatevoice.src/services/updater_service.go
rename to C1.source/privatevoice.src/services/updater_service.go
diff --git a/privatevoice.src/services/userdict_service.go b/C1.source/privatevoice.src/services/userdict_service.go
similarity index 100%
rename from privatevoice.src/services/userdict_service.go
rename to C1.source/privatevoice.src/services/userdict_service.go
diff --git a/privatevoice.src/system_load_darwin.go b/C1.source/privatevoice.src/system_load_darwin.go
similarity index 100%
rename from privatevoice.src/system_load_darwin.go
rename to C1.source/privatevoice.src/system_load_darwin.go
diff --git a/privatevoice.src/system_load_other.go b/C1.source/privatevoice.src/system_load_other.go
similarity index 100%
rename from privatevoice.src/system_load_other.go
rename to C1.source/privatevoice.src/system_load_other.go
diff --git a/privatevoice.src/testdata/round1/README.md b/C1.source/privatevoice.src/testdata/round1/README.md
similarity index 100%
rename from privatevoice.src/testdata/round1/README.md
rename to C1.source/privatevoice.src/testdata/round1/README.md
diff --git a/privatevoice.src/testdata/round1/models-incomplete-missing-model/sensevoice-zh/tokens.txt b/C1.source/privatevoice.src/testdata/round1/models-incomplete-missing-model/sensevoice-zh/tokens.txt
similarity index 100%
rename from privatevoice.src/testdata/round1/models-incomplete-missing-model/sensevoice-zh/tokens.txt
rename to C1.source/privatevoice.src/testdata/round1/models-incomplete-missing-model/sensevoice-zh/tokens.txt
diff --git a/privatevoice.src/testdata/round1/models-incomplete-missing-tokens/sensevoice-zh/model.int8.onnx b/C1.source/privatevoice.src/testdata/round1/models-incomplete-missing-tokens/sensevoice-zh/model.int8.onnx
similarity index 100%
rename from privatevoice.src/testdata/round1/models-incomplete-missing-tokens/sensevoice-zh/model.int8.onnx
rename to C1.source/privatevoice.src/testdata/round1/models-incomplete-missing-tokens/sensevoice-zh/model.int8.onnx
diff --git a/privatevoice.src/testdata/round1/models-valid-legacy/sensevoice/model.int8.onnx b/C1.source/privatevoice.src/testdata/round1/models-valid-legacy/sensevoice/model.int8.onnx
similarity index 100%
rename from privatevoice.src/testdata/round1/models-valid-legacy/sensevoice/model.int8.onnx
rename to C1.source/privatevoice.src/testdata/round1/models-valid-legacy/sensevoice/model.int8.onnx
diff --git a/privatevoice.src/testdata/round1/models-valid-legacy/sensevoice/tokens.txt b/C1.source/privatevoice.src/testdata/round1/models-valid-legacy/sensevoice/tokens.txt
similarity index 100%
rename from privatevoice.src/testdata/round1/models-valid-legacy/sensevoice/tokens.txt
rename to C1.source/privatevoice.src/testdata/round1/models-valid-legacy/sensevoice/tokens.txt
diff --git a/privatevoice.src/testdata/round1/models-valid-new/sensevoice-zh/model.int8.onnx b/C1.source/privatevoice.src/testdata/round1/models-valid-new/sensevoice-zh/model.int8.onnx
similarity index 100%
rename from privatevoice.src/testdata/round1/models-valid-new/sensevoice-zh/model.int8.onnx
rename to C1.source/privatevoice.src/testdata/round1/models-valid-new/sensevoice-zh/model.int8.onnx
diff --git a/privatevoice.src/testdata/round1/models-valid-new/sensevoice-zh/tokens.txt b/C1.source/privatevoice.src/testdata/round1/models-valid-new/sensevoice-zh/tokens.txt
similarity index 100%
rename from privatevoice.src/testdata/round1/models-valid-new/sensevoice-zh/tokens.txt
rename to C1.source/privatevoice.src/testdata/round1/models-valid-new/sensevoice-zh/tokens.txt
diff --git a/privatevoice.src/testdata/round1/models-zero-byte/sensevoice-zh/tokens.txt b/C1.source/privatevoice.src/testdata/round1/models-zero-byte/sensevoice-zh/tokens.txt
similarity index 100%
rename from privatevoice.src/testdata/round1/models-zero-byte/sensevoice-zh/tokens.txt
rename to C1.source/privatevoice.src/testdata/round1/models-zero-byte/sensevoice-zh/tokens.txt
diff --git a/privatevoice.src/testdata/round1/state-invalid-json/state.json b/C1.source/privatevoice.src/testdata/round1/state-invalid-json/state.json
similarity index 100%
rename from privatevoice.src/testdata/round1/state-invalid-json/state.json
rename to C1.source/privatevoice.src/testdata/round1/state-invalid-json/state.json
diff --git a/privatevoice.src/testdata/round1/state-points-to-broken/broken/tokens.txt b/C1.source/privatevoice.src/testdata/round1/state-points-to-broken/broken/tokens.txt
similarity index 100%
rename from privatevoice.src/testdata/round1/state-points-to-broken/broken/tokens.txt
rename to C1.source/privatevoice.src/testdata/round1/state-points-to-broken/broken/tokens.txt
diff --git a/privatevoice.src/testdata/round1/state-points-to-broken/sensevoice/model.int8.onnx b/C1.source/privatevoice.src/testdata/round1/state-points-to-broken/sensevoice/model.int8.onnx
similarity index 100%
rename from privatevoice.src/testdata/round1/state-points-to-broken/sensevoice/model.int8.onnx
rename to C1.source/privatevoice.src/testdata/round1/state-points-to-broken/sensevoice/model.int8.onnx
diff --git a/privatevoice.src/testdata/round1/state-points-to-broken/sensevoice/tokens.txt b/C1.source/privatevoice.src/testdata/round1/state-points-to-broken/sensevoice/tokens.txt
similarity index 100%
rename from privatevoice.src/testdata/round1/state-points-to-broken/sensevoice/tokens.txt
rename to C1.source/privatevoice.src/testdata/round1/state-points-to-broken/sensevoice/tokens.txt
diff --git a/privatevoice.src/testdata/round1/state-points-to-broken/state.json b/C1.source/privatevoice.src/testdata/round1/state-points-to-broken/state.json
similarity index 100%
rename from privatevoice.src/testdata/round1/state-points-to-broken/state.json
rename to C1.source/privatevoice.src/testdata/round1/state-points-to-broken/state.json
diff --git a/privatevoice.src/testdata/round1/state-points-to-legacy/sensevoice/model.int8.onnx b/C1.source/privatevoice.src/testdata/round1/state-points-to-legacy/sensevoice/model.int8.onnx
similarity index 100%
rename from privatevoice.src/testdata/round1/state-points-to-legacy/sensevoice/model.int8.onnx
rename to C1.source/privatevoice.src/testdata/round1/state-points-to-legacy/sensevoice/model.int8.onnx
diff --git a/privatevoice.src/testdata/round1/state-points-to-legacy/sensevoice/tokens.txt b/C1.source/privatevoice.src/testdata/round1/state-points-to-legacy/sensevoice/tokens.txt
similarity index 100%
rename from privatevoice.src/testdata/round1/state-points-to-legacy/sensevoice/tokens.txt
rename to C1.source/privatevoice.src/testdata/round1/state-points-to-legacy/sensevoice/tokens.txt
diff --git a/privatevoice.src/testdata/round1/state-points-to-legacy/state.json b/C1.source/privatevoice.src/testdata/round1/state-points-to-legacy/state.json
similarity index 100%
rename from privatevoice.src/testdata/round1/state-points-to-legacy/state.json
rename to C1.source/privatevoice.src/testdata/round1/state-points-to-legacy/state.json
diff --git a/privatevoice.src/voicesnap.rc b/C1.source/privatevoice.src/voicesnap.rc
similarity index 100%
rename from privatevoice.src/voicesnap.rc
rename to C1.source/privatevoice.src/voicesnap.rc
diff --git a/privatevoice.src/wails.json b/C1.source/privatevoice.src/wails.json
similarity index 100%
rename from privatevoice.src/wails.json
rename to C1.source/privatevoice.src/wails.json
diff --git a/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/RELEASE_MANIFEST.md b/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/RELEASE_MANIFEST.md
new file mode 100644
index 0000000..a5570ef
--- /dev/null
+++ b/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/RELEASE_MANIFEST.md
@@ -0,0 +1,66 @@
+# PrivateVoice Dictation 2.2.0 Build 20260702.0303
+
+## Release Scope
+
+- Type: real-user test candidate
+- Version: 2.2.0
+- Build: 20260702.0303
+- Branch: codex/x-asr-experiment-2.1.29
+- Commit: 0ffbf1935c9d091cce22a5583275ac0902f7a693
+- Tag: v2.2.0-build20260702.0303-real-user-test
+- Generated: 2026-07-02 03:09:18 CST
+- Operator: Codex
+
+This package set contains three macOS DMGs and one Windows preview ZIP for real-user testing. It is not an App Store package set. macOS DMGs are locally signed and not notarized. The Windows ZIP is an unsigned preview package.
+
+## Artifacts
+
+| Platform | Artifact | Size |
+| --- | --- | --- |
+| macOS Apple Silicon | `PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-arm64.dmg` | 19M |
+| macOS Intel | `PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-x86_64.dmg` | 19M |
+| macOS Universal | `PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-universal.dmg` | 37M |
+| Windows amd64 preview | `PrivateVoice-Dictation-2.2.0-build20260702.0303-windows-amd64-preview.zip` | 20M |
+
+## SHA256
+
+```text
+db7b7a0c5ac14dd664c8430f9033ce7adb227ee1f30cc3cd38b6ce0bf44eb784  PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-arm64.dmg
+f72aca7f0c6a41ba15e8d618a924eda59c1238e6cd780844bf1bfad5ca75b539  PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-universal.dmg
+4ef0fc8afe40a9a2a843bc320a940b4f29d536da918dafaf5b0e0407c831703b  PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-x86_64.dmg
+82118105340a187bdc954eff01ef0ac2824e86037342e0606821dbf86d9a6b42  PrivateVoice-Dictation-2.2.0-build20260702.0303-windows-amd64-preview.zip
+```
+
+## Build Commands
+
+```bash
+cd /Users/ar/Projects/PrivateVoice/privatevoice.src
+go test ./... -count=1
+npm --prefix frontend run build
+GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ go test -exec=/usr/bin/true ./...
+./scripts/build-local-macos-universal.sh
+./scripts/build-windows-preview.sh
+```
+
+## Validation
+
+- `go test ./... -count=1`: passed
+- `npm --prefix frontend run build`: passed with existing Svelte accessibility warnings
+- Windows cross-compile smoke test: passed
+- `git diff --check`: passed
+- `hdiutil verify` for all three DMGs: passed
+- `unzip -t` for Windows ZIP: passed
+- `shasum -a 256 -c SHA256SUMS.txt`: passed
+- macOS binary architectures:
+  - arm64 DMG app: `arm64`
+  - x86_64 DMG app: `x86_64`
+  - universal DMG app: `x86_64 arm64`
+- `codesign --verify --deep --strict --verbose=2` for all three local macOS apps: passed
+- `com.apple.quarantine`: not present on release artifacts
+
+## Notes
+
+- This build includes Round 6 Cantonese language/model option work and prior Windows overlay/P1 download workflow changes from the current branch.
+- Real Windows machine QA is still required before calling the Windows package stable.
+- Monterey compatibility has not been revalidated in this package set.
+- The release directory also contains `SHA256SUMS.txt` for independent checksum verification.
diff --git a/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/SHA256SUMS.txt b/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/SHA256SUMS.txt
new file mode 100644
index 0000000..454d291
--- /dev/null
+++ b/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/SHA256SUMS.txt
@@ -0,0 +1,4 @@
+db7b7a0c5ac14dd664c8430f9033ce7adb227ee1f30cc3cd38b6ce0bf44eb784  PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-arm64.dmg
+f72aca7f0c6a41ba15e8d618a924eda59c1238e6cd780844bf1bfad5ca75b539  PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-universal.dmg
+4ef0fc8afe40a9a2a843bc320a940b4f29d536da918dafaf5b0e0407c831703b  PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-x86_64.dmg
+82118105340a187bdc954eff01ef0ac2824e86037342e0606821dbf86d9a6b42  PrivateVoice-Dictation-2.2.0-build20260702.0303-windows-amd64-preview.zip
diff --git a/C2.builds/README.md b/C2.builds/README.md
new file mode 100644
index 0000000..a7d6d65
--- /dev/null
+++ b/C2.builds/README.md
@@ -0,0 +1,9 @@
+# C2.builds
+
+本目录保存迁移时保留的当前候选包。
+
+当前迁入:
+
+- `PrivateVoice-Dictation-2.2.0-build20260702.0303/`
+
+二进制 `.dmg` 和 `.zip` 默认不提交 Git;本地文件用于当前机器接手、校验和分发准备。长期事实以 `RELEASE_MANIFEST.md`、`SHA256SUMS.txt`、`K2.项目管理/发布地图.md` 和会话主题摘要为准。
diff --git a/C3.tools/README.md b/C3.tools/README.md
new file mode 100644
index 0000000..e555db4
--- /dev/null
+++ b/C3.tools/README.md
@@ -0,0 +1,19 @@
+# C3.tools
+
+工具入口索引。实际构建、打包和 QA 脚本仍跟随源码维护,位于:
+
+```text
+../C1.source/privatevoice.src/scripts/
+```
+
+常用脚本:
+
+- `build-local-macos.sh`
+- `build-local-macos-universal.sh`
+- `build-local-macos-monterey.sh`
+- `build-release-macos.sh`
+- `build-windows-preview.sh`
+- `verify-windows-qa-evidence.sh`
+- `qa-settings-window-macos.sh`
+
+不要在本目录复制一份脚本实现,避免脚本漂移。
diff --git a/CODEGRAPH.md b/CODEGRAPH.md
index 359f71b..91cfda1 100644
--- a/CODEGRAPH.md
+++ b/CODEGRAPH.md
@@ -3,20 +3,22 @@
 ## Project
 
 - Product: Wails v3 / Go desktop dictation app.
+- Git root: `/Users/ar/Projects/PrivateVoice2/03-O`.
+- Source root: `/Users/ar/Projects/PrivateVoice2/03-O/C1.source/privatevoice.src`.
 - Current branch purpose: Round 6 Cantonese language version real-user test package based on `v2.2.0-build20260702.0303`.
-- Protected macOS behavior: existing macOS App Store / local DMG build lines are not changed by this branch.
+- Protected behavior: existing macOS App Store, local DMG, Monterey compatibility, Windows preview, model download safety, and paste/clipboard protection must not be changed without a scoped task and QA plan.
 
 ## Core Entrypoints
 
-- `privatevoice.src/main.go`: process startup, data migration, logger, single-instance guard.
-- `privatevoice.src/app.go`: Wails app wiring, settings window, tray, recorder, hotkey loop, ASR init, paste orchestration.
-- `privatevoice.src/embed.go`: embeds frontend assets and app/tray icons.
+- `C1.source/privatevoice.src/main.go`: process startup, data migration, logger, single-instance guard.
+- `C1.source/privatevoice.src/app.go`: Wails app wiring, settings window, tray, recorder, hotkey loop, ASR init, paste orchestration.
+- `C1.source/privatevoice.src/embed.go`: embeds frontend assets and app/tray icons.
 
 ## Language And Model Registry
 
-- `privatevoice.src/internal/model/profile.go`: model and language IDs, model profile shape, install status types.
-- `privatevoice.src/internal/model/registry.go`: language profile order, model profiles, language profiles, and normalization.
-- `privatevoice.src/internal/modelselection/selection.go`: resolves current language and model, including manual-model fallback.
+- `C1.source/privatevoice.src/internal/model/profile.go`: model and language IDs, model profile shape, install status types.
+- `C1.source/privatevoice.src/internal/model/registry.go`: language profile order, model profiles, language profiles, and normalization.
+- `C1.source/privatevoice.src/internal/modelselection/selection.go`: resolves current language and model, including manual-model fallback.
 - Round 6 Cantonese path:
   - Language ID: `yue-HK`, displayed as `粤语`.
   - Default model: `sensevoice-yue-2025-09-09`.
@@ -25,23 +27,20 @@
 
 ## Platform Modules
 
-- Audio: `privatevoice.src/internal/audio/recorder.go`
-  - Uses `github.com/gen2brain/malgo`.
-  - Cross-platform capture target: 16 kHz, 16-bit, mono.
+- Audio: `C1.source/privatevoice.src/internal/audio/recorder.go`
 - Hotkey:
-  - macOS: `privatevoice.src/internal/hotkey/hotkey_darwin.go`
-  - Windows: `privatevoice.src/internal/hotkey/hotkey_windows.go`
+  - macOS: `C1.source/privatevoice.src/internal/hotkey/hotkey_darwin.go`
+  - Windows: `C1.source/privatevoice.src/internal/hotkey/hotkey_windows.go`
 - Text input:
-  - macOS: `privatevoice.src/internal/input/paste_darwin.go`
-  - Windows: `privatevoice.src/internal/input/paste_windows.go`
+  - macOS: `C1.source/privatevoice.src/internal/input/paste_darwin.go`
+  - Windows: `C1.source/privatevoice.src/internal/input/paste_windows.go`
 - ASR engine:
-  - macOS: `privatevoice.src/internal/engine/engine_darwin.go`
-  - Windows: `privatevoice.src/internal/engine/engine_windows.go`
-  - Linux: `privatevoice.src/internal/engine/engine_linux.go`
-  - SenseVoice profiles may set `Profile.LanguageParam`; Cantonese uses `yue`.
+  - macOS: `C1.source/privatevoice.src/internal/engine/engine_darwin.go`
+  - Windows: `C1.source/privatevoice.src/internal/engine/engine_windows.go`
+  - Linux: `C1.source/privatevoice.src/internal/engine/engine_linux.go`
 - Overlay:
-  - macOS: `privatevoice.src/internal/overlay/overlay_darwin.go`
-  - Windows: `privatevoice.src/internal/overlay/overlay_windows.go`
+  - macOS: `C1.source/privatevoice.src/internal/overlay/overlay_darwin.go`
+  - Windows: `C1.source/privatevoice.src/internal/overlay/overlay_windows.go`
 
 ## Windows Preview Scope
 
@@ -49,31 +48,21 @@
 - Non-SenseVoice models remain visible in settings but are disabled through `model.IsModelSupportedInCurrentBuild`.
 - Windows unsupported reason: `windows_preview_unsupported`.
 - Windows overlay remains native Win32/GDI+, with a larger translucent spectrum-style capsule indicator for recording states.
-- Build script: `privatevoice.src/scripts/build-windows-preview.sh`.
-- Evidence verifier: `privatevoice.src/scripts/verify-windows-qa-evidence.sh`.
-- Runtime package includes:
-  - `PrivateVoice Dictation.exe`
-  - `onnxruntime.dll`
-  - `sherpa-onnx-c-api.dll`
-  - `sherpa-onnx-cxx-api.dll`
-  - `RUN-WINDOWS-QA.cmd`
-  - `QA-WINDOWS-PREVIEW.ps1`
-  - `README-WINDOWS-PREVIEW.txt`
+- Build script: `C1.source/privatevoice.src/scripts/build-windows-preview.sh`.
+- Evidence verifier: `C1.source/privatevoice.src/scripts/verify-windows-qa-evidence.sh`.
 
-## macOS Local Package Scope
+## macOS Package Scope
 
-- Local DMG script: `privatevoice.src/scripts/build-local-macos.sh`.
-- Universal DMG script: `privatevoice.src/scripts/build-local-macos-universal.sh`.
-- Local macOS package set for this branch:
-  - `arm64` DMG for Apple Silicon.
-  - `x86_64` DMG for Intel Mac.
-  - `universal` DMG for Intel + Apple Silicon.
-- Mainline macOS local packages keep `LSMinimumSystemVersion=14.0` and the default Qwen3-capable dependency line.
-- Monterey-compatible packages remain a separate build line through `privatevoice.src/scripts/build-local-macos-monterey.sh`.
+- Local DMG script: `C1.source/privatevoice.src/scripts/build-local-macos.sh`.
+- Universal DMG script: `C1.source/privatevoice.src/scripts/build-local-macos-universal.sh`.
+- Monterey compatibility script: `C1.source/privatevoice.src/scripts/build-local-macos-monterey.sh`.
+- Developer ID / notarization script: `C1.source/privatevoice.src/scripts/build-release-macos.sh`.
+- Mainline macOS local packages keep `LSMinimumSystemVersion=14.0`.
+- Monterey-compatible packages remain a separate build line.
 
 ## Standard Verification Commands
 
-Run from `privatevoice.src`:
+Run from `C1.source/privatevoice.src`:
 
 ```bash
 npm --prefix frontend run build
@@ -88,8 +77,7 @@
 
 ## Known Gaps
 
-- Windows runtime QA must still be performed on Windows 10/11 hardware.
-- Run `RUN-WINDOWS-QA.cmd` from the extracted preview package to collect WebView2/audio preflight, startup, engine, recording, recognition, paste, and Notepad target text evidence.
-- After evidence is returned, run `verify-windows-qa-evidence.sh` and require `WINDOWS_QA_EVIDENCE_PASS` before claiming the goal complete.
-- The Windows preview zip is unsigned and not an installer.
-- SmartScreen / Defender prompts are expected for local testing.
+- Windows runtime QA must still be performed on Windows 10/11 hardware before calling Windows stable.
+- macOS 2.2.0 real-user test DMGs are locally signed and not notarized.
+- Monterey compatibility was not revalidated for the 2.2.0 package set.
+- Independent-site sales still need Developer ID release packaging, download page, authorization/activation, update strategy, support path, release manifest, and rollback policy.
diff --git "a/K1.\344\270\232\345\212\241\347\237\245\350\257\206/\346\210\220\346\236\234\345\234\260\345\233\276.md" "b/K1.\344\270\232\345\212\241\347\237\245\350\257\206/\346\210\220\346\236\234\345\234\260\345\233\276.md"
new file mode 100644
index 0000000..fdd06c7
--- /dev/null
+++ "b/K1.\344\270\232\345\212\241\347\237\245\350\257\206/\346\210\220\346\236\234\345\234\260\345\233\276.md"
@@ -0,0 +1,40 @@
+# 成果地图
+
+## 代码成果
+
+- 当前源码根:`03-O/C1.source/privatevoice.src`
+- 工程地图:`03-O/CODEGRAPH.md`
+- 主要技术栈:Go、Wails v3、Svelte 5、Vite、sherpa-onnx、malgo。
+
+## 产品成果
+
+- 离线语音输入桌面 App。
+- 正式语言:中文、English、French、German、Spanish、Italian、Portuguese、Japanese、Korean。
+- 真实用户测试候选:粤语 `yue-HK`,默认 `SenseVoice Yue 2025-09-09`。
+- Windows preview:当前只支持 SenseVoice。
+
+## QA 成果
+
+- Round 6 粤语实现:`go test ./... -count=1`、前端 build、Windows cross test、`git diff --check` 通过。
+- 2.2.0 四包候选:DMG verify、ZIP test、SHA256、架构和 codesign 校验通过。
+- 详见 `03-O/K2.项目管理/QA地图.md`。
+
+## 发布成果
+
+- 最新候选包:`03-O/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/`
+- 包类型:真实用户测试候选包。
+- 不是官网正式发布包;未 notarize。
+- 详见 `03-O/K2.项目管理/发布地图.md`。
+
+## 不作为当前成果的材料
+
+- `03-O/K2.项目管理/legacy/` 下旧 Round 文档只作历史证据。
+- 旧原始 session 正文不迁入新项目正文。
+- `03-O/K3.运营与发布资料/legacy-运营资料/` 是本地运营素材,不等同当前发布事实。
+
+## 当前缺口
+
+- 官网独立站销售闭环。
+- Windows 正式签名安装器与完整 QA。
+- Monterey 覆盖验证。
+- 自动更新策略重定向到官网发布链路。
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/QA\345\234\260\345\233\276.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/QA\345\234\260\345\233\276.md"
new file mode 100644
index 0000000..f67a5e1
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/QA\345\234\260\345\233\276.md"
@@ -0,0 +1,48 @@
+# QA 地图
+
+## 当前 QA 结论
+
+迁移接收验证与产品 QA 结论必须区分。
+
+- 迁移接收验证:由 `接收验证记录.md` 记录。
+- Round 6 产品 QA:已有会话和 release manifest 证明基础自动化/包校验通过。
+- Windows 真机 QA:仍未由本迁移补跑。
+- 官网正式发布 QA:仍未完成 notarization、下载页、授权/激活、更新和回滚链路验证。
+
+## 标准源码验证
+
+从 `03-O/C1.source/privatevoice.src` 执行:
+
+```bash
+npm --prefix frontend run build
+go test ./...
+GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ go test -exec=/usr/bin/true ./...
+```
+
+## 包验证
+
+从 `03-O/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303` 执行:
+
+```bash
+shasum -a 256 -c SHA256SUMS.txt
+hdiutil verify 'PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-arm64.dmg'
+hdiutil verify 'PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-x86_64.dmg'
+hdiutil verify 'PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-universal.dmg'
+unzip -t 'PrivateVoice-Dictation-2.2.0-build20260702.0303-windows-amd64-preview.zip'
+```
+
+## Windows QA 入口
+
+在 Windows preview 包解压后运行:
+
+```text
+RUN-WINDOWS-QA.cmd
+```
+
+收回 evidence zip 后,在源码根执行:
+
+```bash
+./scripts/verify-windows-qa-evidence.sh /path/to/qa-evidence-YYYYMMDD-HHMMSS.zip
+```
+
+只有出现 `WINDOWS_QA_EVIDENCE_PASS`,才能声称 Windows preview evidence 通过。
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/handoffs/2026-07-02-\350\277\201\347\247\273\344\272\244\346\216\245.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/handoffs/2026-07-02-\350\277\201\347\247\273\344\272\244\346\216\245.md"
new file mode 100644
index 0000000..8d3f358
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/handoffs/2026-07-02-\350\277\201\347\247\273\344\272\244\346\216\245.md"
@@ -0,0 +1,47 @@
+# 2026-07-02 迁移交接
+
+## 来源
+
+- 源项目:`/Users/ar/Projects/PrivateVoice`
+- 新项目:`/Users/ar/Projects/PrivateVoice2`
+- 源分支:`codex/x-asr-experiment-2.1.29`
+- 固定点:`0ffbf1935c9d091cce22a5583275ac0902f7a693`
+- Tag:`v2.2.0-build20260702.0303-real-user-test`
+
+## 当前目标
+
+让新 Codex 窗口可以只读 `PrivateVoice2` 文件继续工作,不依赖旧项目长会话。
+
+## 已完成
+
+- 新项目结构 `01-I / 02-P / 03-O` 已建立。
+- Git 历史 clone 到 `03-O`,源码迁入 `03-O/C1.source/privatevoice.src`。
+- 最新 2.2.0 候选包迁入 `03-O/C2.builds`。
+- 旧过程文档降级到 `03-O/K2.项目管理/legacy/`。
+- 原始 session 正文未迁入;已整理主题摘要。
+- 入口文档、台账、事件地图、成果地图、QA/发布地图和迁移清单已建立。
+
+## 已知错误或未跑检查
+
+- 本迁移不补跑 Windows 真机 QA。
+- 本迁移不补跑 notarization。
+- 本迁移不重新构建 2.2.0 包。
+- Monterey 兼容未在迁移中重新验证。
+
+## 不可触碰区域
+
+- 不修改 `/Users/ar/Projects/PrivateVoice` 旧项目。
+- 不删除源项目旧 release、证书、worktree 或 session。
+- 不把 `legacy` 旧任务清单当作当前活跃任务。
+
+## 下一步
+
+1. 完成迁移接收验证并更新 `接收验证记录.md`。
+2. 如要继续产品工作,先在 `02-P/进度地图.md` 领取或新增活跃任务。
+3. 若目标是官网销售,先补独立站 P0 发布计划。
+4. 若目标是 Windows 正式版,先补签名、安装器和真机 QA evidence。
+5. 若目标是粤语真实用户测试,先确认测试人、平台、反馈渠道和包分发口径。
+
+## Reactivation Prompt
+
+我们从这份 handoff 继续。请先读取本文件,再检查 `/Users/ar/Projects/PrivateVoice2/AGENTS.md`、`PROJECT.md`、`INDEX.md`、`02-P/进度地图.md`、`03-O/CODEGRAPH.md` 和当前 Git 状态,核对哪些结论仍然成立,然后从“下一步”继续推进;不要假设旧 session 上下文仍然可用。
diff --git a/02-P-NBL/engineering-plan.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/engineering-plan.md"
similarity index 100%
rename from 02-P-NBL/engineering-plan.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/engineering-plan.md"
diff --git a/02-P-NBL/freeze/20260603-directory-consolidation.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260603-directory-consolidation.md"
similarity index 100%
rename from 02-P-NBL/freeze/20260603-directory-consolidation.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260603-directory-consolidation.md"
diff --git a/02-P-NBL/freeze/20260603-independent-repo-and-archive.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260603-independent-repo-and-archive.md"
similarity index 100%
rename from 02-P-NBL/freeze/20260603-independent-repo-and-archive.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260603-independent-repo-and-archive.md"
diff --git a/02-P-NBL/freeze/20260604-mac-app-store-category-hotfix.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260604-mac-app-store-category-hotfix.md"
similarity index 100%
rename from 02-P-NBL/freeze/20260604-mac-app-store-category-hotfix.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260604-mac-app-store-category-hotfix.md"
diff --git a/02-P-NBL/freeze/20260604-mac-app-store-release-freeze.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260604-mac-app-store-release-freeze.md"
similarity index 100%
rename from 02-P-NBL/freeze/20260604-mac-app-store-release-freeze.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260604-mac-app-store-release-freeze.md"
diff --git a/02-P-NBL/freeze/20260605-mac-app-store-application-identifier-hotfix.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260605-mac-app-store-application-identifier-hotfix.md"
similarity index 100%
rename from 02-P-NBL/freeze/20260605-mac-app-store-application-identifier-hotfix.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260605-mac-app-store-application-identifier-hotfix.md"
diff --git a/02-P-NBL/freeze/20260605-mac-app-store-clean-rebuild.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260605-mac-app-store-clean-rebuild.md"
similarity index 100%
rename from 02-P-NBL/freeze/20260605-mac-app-store-clean-rebuild.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260605-mac-app-store-clean-rebuild.md"
diff --git a/02-P-NBL/freeze/20260605-mac-app-store-quarantine-hotfix.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260605-mac-app-store-quarantine-hotfix.md"
similarity index 100%
rename from 02-P-NBL/freeze/20260605-mac-app-store-quarantine-hotfix.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260605-mac-app-store-quarantine-hotfix.md"
diff --git a/02-P-NBL/freeze/20260605-mac-app-store-upload-preflight.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260605-mac-app-store-upload-preflight.md"
similarity index 100%
rename from 02-P-NBL/freeze/20260605-mac-app-store-upload-preflight.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260605-mac-app-store-upload-preflight.md"
diff --git a/02-P-NBL/freeze/20260607-x-asr-experiment-branch.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260607-x-asr-experiment-branch.md"
similarity index 100%
rename from 02-P-NBL/freeze/20260607-x-asr-experiment-branch.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260607-x-asr-experiment-branch.md"
diff --git a/02-P-NBL/freeze/20260607-x-asr-experimental-build.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260607-x-asr-experimental-build.md"
similarity index 100%
rename from 02-P-NBL/freeze/20260607-x-asr-experimental-build.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/freeze/20260607-x-asr-experimental-build.md"
diff --git a/02-P-NBL/plan.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/plan.md"
similarity index 100%
rename from 02-P-NBL/plan.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/plan.md"
diff --git a/02-P-NBL/product-plan.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/product-plan.md"
similarity index 100%
rename from 02-P-NBL/product-plan.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/product-plan.md"
diff --git a/02-P-NBL/round-1/README.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/README.md"
similarity index 100%
rename from 02-P-NBL/round-1/README.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/README.md"
diff --git a/02-P-NBL/round-1/dev-checklist-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/dev-checklist-current.md"
similarity index 100%
rename from 02-P-NBL/round-1/dev-checklist-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/dev-checklist-current.md"
diff --git a/02-P-NBL/round-1/dev-checklist.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/dev-checklist.md"
similarity index 100%
rename from 02-P-NBL/round-1/dev-checklist.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/dev-checklist.md"
diff --git a/02-P-NBL/round-1/engineering-tasks.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/engineering-tasks.md"
similarity index 100%
rename from 02-P-NBL/round-1/engineering-tasks.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/engineering-tasks.md"
diff --git a/02-P-NBL/round-1/logs/go-test-all-20260602.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/go-test-all-20260602.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/go-test-all-20260602.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/go-test-all-20260602.log"
diff --git a/02-P-NBL/round-1/logs/go-test-internal-model-20260602.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/go-test-internal-model-20260602.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/go-test-internal-model-20260602.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/go-test-internal-model-20260602.log"
diff --git a/02-P-NBL/round-1/logs/npm-run-build-20260602.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/npm-run-build-20260602.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/npm-run-build-20260602.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/npm-run-build-20260602.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/app-log-tail-20260602.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/app-log-tail-20260602.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/app-log-tail-20260602.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/app-log-tail-20260602.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/network-sample-20260602.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/network-sample-20260602.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/network-sample-20260602.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/network-sample-20260602.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.launch.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.launch.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.launch.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.launch.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.recognition.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.recognition.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.recognition.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.recognition.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.restore.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.restore.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.restore.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.restore.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.setup.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.setup.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.setup.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-clean-install-20260602.231851.setup.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.launch.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.launch.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.launch.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.launch.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.recognition.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.recognition.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.recognition.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.recognition.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.restore.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.restore.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.restore.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.restore.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.setup.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.setup.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.setup.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/new-user-recognition-20260603.005122.setup.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/offline-restart-app-log-20260602.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-app-log-20260602.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/offline-restart-app-log-20260602.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-app-log-20260602.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/offline-restart-postcheck-20260602.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-postcheck-20260602.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/offline-restart-postcheck-20260602.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-postcheck-20260602.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.223742.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.223742.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.223742.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.223742.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.225709.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.225709.log"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.225709.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.225709.log"
diff --git a/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.225709.pid "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.225709.pid"
similarity index 100%
rename from 02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.225709.pid
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/logs/qa-runtime/offline-restart-test-20260602.225709.pid"
diff --git a/02-P-NBL/round-1/prd.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/prd.md"
similarity index 100%
rename from 02-P-NBL/round-1/prd.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/prd.md"
diff --git a/02-P-NBL/round-1/qa-handoff-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/qa-handoff-current.md"
similarity index 100%
rename from 02-P-NBL/round-1/qa-handoff-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/qa-handoff-current.md"
diff --git a/02-P-NBL/round-1/qa-precheck-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/qa-precheck-current.md"
similarity index 100%
rename from 02-P-NBL/round-1/qa-precheck-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/qa-precheck-current.md"
diff --git a/02-P-NBL/round-1/qa-report-20260602-2.1.19.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/qa-report-20260602-2.1.19.md"
similarity index 100%
rename from 02-P-NBL/round-1/qa-report-20260602-2.1.19.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/qa-report-20260602-2.1.19.md"
diff --git a/02-P-NBL/round-1/qa-report-template.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/qa-report-template.md"
similarity index 100%
rename from 02-P-NBL/round-1/qa-report-template.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/qa-report-template.md"
diff --git a/02-P-NBL/round-1/qa-test-plan.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/qa-test-plan.md"
similarity index 100%
rename from 02-P-NBL/round-1/qa-test-plan.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/qa-test-plan.md"
diff --git a/02-P-NBL/round-1/todo-list.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/todo-list.md"
similarity index 100%
rename from 02-P-NBL/round-1/todo-list.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-1/todo-list.md"
diff --git a/02-P-NBL/round-2/README.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/README.md"
similarity index 100%
rename from 02-P-NBL/round-2/README.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/README.md"
diff --git a/02-P-NBL/round-2/dev-checklist-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/dev-checklist-current.md"
similarity index 100%
rename from 02-P-NBL/round-2/dev-checklist-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/dev-checklist-current.md"
diff --git a/02-P-NBL/round-2/engineering-tasks.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/engineering-tasks.md"
similarity index 100%
rename from 02-P-NBL/round-2/engineering-tasks.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/engineering-tasks.md"
diff --git a/02-P-NBL/round-2/logs/go-test-all-20260603-2.1.20.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/go-test-all-20260603-2.1.20.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/go-test-all-20260603-2.1.20.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/go-test-all-20260603-2.1.20.log"
diff --git a/02-P-NBL/round-2/logs/go-test-all-20260603.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/go-test-all-20260603.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/go-test-all-20260603.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/go-test-all-20260603.log"
diff --git a/02-P-NBL/round-2/logs/npm-run-build-20260603-2.1.20.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/npm-run-build-20260603-2.1.20.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/npm-run-build-20260603-2.1.20.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/npm-run-build-20260603-2.1.20.log"
diff --git a/02-P-NBL/round-2/logs/npm-run-build-20260603.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/npm-run-build-20260603.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/npm-run-build-20260603.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/npm-run-build-20260603.log"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/build-local-round2-20260603.014931.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/build-local-round2-20260603.014931.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/build-local-round2-20260603.014931.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/build-local-round2-20260603.014931.log"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/current-run-id.txt "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/current-run-id.txt"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/current-run-id.txt
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/current-run-id.txt"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/new-user-run-20260603.014931.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/new-user-run-20260603.014931.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/new-user-run-20260603.014931.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/new-user-run-20260603.014931.log"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/new-user-run-20260603.014931.pid "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/new-user-run-20260603.014931.pid"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/new-user-run-20260603.014931.pid
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/new-user-run-20260603.014931.pid"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/offline-start-check-20260603.014931.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-start-check-20260603.014931.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/offline-start-check-20260603.014931.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-start-check-20260603.014931.log"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/offline-voice-final-20260603.014931.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-final-20260603.014931.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/offline-voice-final-20260603.014931.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-final-20260603.014931.log"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/offline-voice-safety-20260603.014931.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-safety-20260603.014931.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/offline-voice-safety-20260603.014931.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-safety-20260603.014931.log"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/offline-voice-safety-20260603.014931.pid "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-safety-20260603.014931.pid"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/offline-voice-safety-20260603.014931.pid
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-safety-20260603.014931.pid"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/offline-voice-start-20260603.014931.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-start-20260603.014931.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/offline-voice-start-20260603.014931.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/offline-voice-start-20260603.014931.log"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-local-run-20260603.014931.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-local-run-20260603.014931.log"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-local-run-20260603.014931.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-local-run-20260603.014931.log"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-local-run-20260603.014931.pid "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-local-run-20260603.014931.pid"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-local-run-20260603.014931.pid
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-local-run-20260603.014931.pid"
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-activated.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-activated.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-activated.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-activated.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-after-restart.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-after-restart.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-after-restart.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-after-restart.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-chinese.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-chinese.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-chinese.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-chinese.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-1095-523.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-1095-523.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-1095-523.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-1095-523.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-1260-565.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-1260-565.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-1260-565.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-1260-565.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-693-310.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-693-310.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-693-310.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-cursor-693-310.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english2.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english2.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english2.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english2.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english3.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english3.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english3.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english3.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english4.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english4.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english4.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english4.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english5.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english5.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english5.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english5.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english6.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english6.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english6.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-english6.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-initial.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-initial.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-initial.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-initial.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-new-user.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-new-user.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-new-user.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-new-user.png"
Binary files differ
diff --git a/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-zh-manual.png "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-zh-manual.png"
similarity index 100%
rename from 02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-zh-manual.png
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/logs/qa-runtime/round2-screen-20260603.014931-zh-manual.png"
Binary files differ
diff --git a/02-P-NBL/round-2/prd.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/prd.md"
similarity index 100%
rename from 02-P-NBL/round-2/prd.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/prd.md"
diff --git a/02-P-NBL/round-2/qa-handoff-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/qa-handoff-current.md"
similarity index 100%
rename from 02-P-NBL/round-2/qa-handoff-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/qa-handoff-current.md"
diff --git a/02-P-NBL/round-2/qa-precheck-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/qa-precheck-current.md"
similarity index 100%
rename from 02-P-NBL/round-2/qa-precheck-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/qa-precheck-current.md"
diff --git a/02-P-NBL/round-2/qa-report-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/qa-report-current.md"
similarity index 100%
rename from 02-P-NBL/round-2/qa-report-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/qa-report-current.md"
diff --git a/02-P-NBL/round-2/qa-test-plan.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/qa-test-plan.md"
similarity index 100%
rename from 02-P-NBL/round-2/qa-test-plan.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/qa-test-plan.md"
diff --git a/02-P-NBL/round-2/todo-list.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/todo-list.md"
similarity index 100%
rename from 02-P-NBL/round-2/todo-list.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-2/todo-list.md"
diff --git a/02-P-NBL/round-3/README.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/README.md"
similarity index 100%
rename from 02-P-NBL/round-3/README.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/README.md"
diff --git a/02-P-NBL/round-3/code-review-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/code-review-current.md"
similarity index 100%
rename from 02-P-NBL/round-3/code-review-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/code-review-current.md"
diff --git a/02-P-NBL/round-3/dev-checklist-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/dev-checklist-current.md"
similarity index 100%
rename from 02-P-NBL/round-3/dev-checklist-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/dev-checklist-current.md"
diff --git a/02-P-NBL/round-3/engineering-tasks.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/engineering-tasks.md"
similarity index 100%
rename from 02-P-NBL/round-3/engineering-tasks.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/engineering-tasks.md"
diff --git a/02-P-NBL/round-3/logs/download-failure-protection-20260603.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/download-failure-protection-20260603.log"
similarity index 100%
rename from 02-P-NBL/round-3/logs/download-failure-protection-20260603.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/download-failure-protection-20260603.log"
diff --git a/02-P-NBL/round-3/logs/git-diff-check-20260603-2.1.21.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/git-diff-check-20260603-2.1.21.log"
similarity index 100%
rename from 02-P-NBL/round-3/logs/git-diff-check-20260603-2.1.21.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/git-diff-check-20260603-2.1.21.log"
diff --git a/02-P-NBL/round-3/logs/git-diff-check-20260603.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/git-diff-check-20260603.log"
similarity index 100%
rename from 02-P-NBL/round-3/logs/git-diff-check-20260603.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/git-diff-check-20260603.log"
diff --git a/02-P-NBL/round-3/logs/go-test-all-20260603-2.1.21.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/go-test-all-20260603-2.1.21.log"
similarity index 100%
rename from 02-P-NBL/round-3/logs/go-test-all-20260603-2.1.21.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/go-test-all-20260603-2.1.21.log"
diff --git a/02-P-NBL/round-3/logs/go-test-all-20260603.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/go-test-all-20260603.log"
similarity index 100%
rename from 02-P-NBL/round-3/logs/go-test-all-20260603.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/go-test-all-20260603.log"
diff --git a/02-P-NBL/round-3/logs/npm-run-build-20260603-2.1.21.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/npm-run-build-20260603-2.1.21.log"
similarity index 100%
rename from 02-P-NBL/round-3/logs/npm-run-build-20260603-2.1.21.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/npm-run-build-20260603-2.1.21.log"
diff --git a/02-P-NBL/round-3/logs/npm-run-build-20260603.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/npm-run-build-20260603.log"
similarity index 100%
rename from 02-P-NBL/round-3/logs/npm-run-build-20260603.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/logs/npm-run-build-20260603.log"
diff --git a/02-P-NBL/round-3/prd.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/prd.md"
similarity index 100%
rename from 02-P-NBL/round-3/prd.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/prd.md"
diff --git a/02-P-NBL/round-3/qa-handoff-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/qa-handoff-current.md"
similarity index 100%
rename from 02-P-NBL/round-3/qa-handoff-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/qa-handoff-current.md"
diff --git a/02-P-NBL/round-3/qa-precheck-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/qa-precheck-current.md"
similarity index 100%
rename from 02-P-NBL/round-3/qa-precheck-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/qa-precheck-current.md"
diff --git a/02-P-NBL/round-3/qa-report-current.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/qa-report-current.md"
similarity index 100%
rename from 02-P-NBL/round-3/qa-report-current.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/qa-report-current.md"
diff --git a/02-P-NBL/round-3/qa-test-plan.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/qa-test-plan.md"
similarity index 100%
rename from 02-P-NBL/round-3/qa-test-plan.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/qa-test-plan.md"
diff --git a/02-P-NBL/round-3/todo-list.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/todo-list.md"
similarity index 100%
rename from 02-P-NBL/round-3/todo-list.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-3/todo-list.md"
diff --git a/02-P-NBL/round-4/README.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/README.md"
similarity index 100%
rename from 02-P-NBL/round-4/README.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/README.md"
diff --git a/02-P-NBL/round-4/code-review.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/code-review.md"
similarity index 100%
rename from 02-P-NBL/round-4/code-review.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/code-review.md"
diff --git a/02-P-NBL/round-4/dev-self-check.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/dev-self-check.md"
similarity index 100%
rename from 02-P-NBL/round-4/dev-self-check.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/dev-self-check.md"
diff --git a/02-P-NBL/round-4/engineering-tasks.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/engineering-tasks.md"
similarity index 100%
rename from 02-P-NBL/round-4/engineering-tasks.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/engineering-tasks.md"
diff --git a/02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/git-diff-check-20260603-2.1.22.log"
diff --git a/02-P-NBL/round-4/logs/git-diff-check-20260603-round4-after-qa-fix.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/git-diff-check-20260603-round4-after-qa-fix.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/git-diff-check-20260603-round4-after-qa-fix.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/git-diff-check-20260603-round4-after-qa-fix.log"
diff --git a/02-P-NBL/round-4/logs/git-diff-check-20260603-round4.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/git-diff-check-20260603-round4.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/git-diff-check-20260603-round4.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/git-diff-check-20260603-round4.log"
diff --git a/02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/go-test-all-20260603-2.1.22.log"
diff --git a/02-P-NBL/round-4/logs/go-test-all-20260603-round4-after-qa-fix.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/go-test-all-20260603-round4-after-qa-fix.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/go-test-all-20260603-round4-after-qa-fix.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/go-test-all-20260603-round4-after-qa-fix.log"
diff --git a/02-P-NBL/round-4/logs/go-test-all-20260603-round4.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/go-test-all-20260603-round4.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/go-test-all-20260603-round4.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/go-test-all-20260603-round4.log"
diff --git a/02-P-NBL/round-4/logs/local-build-install-20260603-round4-after-qa-fix.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/local-build-install-20260603-round4-after-qa-fix.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/local-build-install-20260603-round4-after-qa-fix.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/local-build-install-20260603-round4-after-qa-fix.log"
diff --git a/02-P-NBL/round-4/logs/local-build-install-20260603-round4.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/local-build-install-20260603-round4.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/local-build-install-20260603-round4.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/local-build-install-20260603-round4.log"
diff --git a/02-P-NBL/round-4/logs/npm-ci-20260603-round4.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/npm-ci-20260603-round4.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/npm-ci-20260603-round4.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/npm-ci-20260603-round4.log"
diff --git a/02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/npm-run-build-20260603-2.1.22.log"
diff --git a/02-P-NBL/round-4/logs/npm-run-build-20260603-round4-after-qa-fix.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/npm-run-build-20260603-round4-after-qa-fix.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/npm-run-build-20260603-round4-after-qa-fix.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/npm-run-build-20260603-round4-after-qa-fix.log"
diff --git a/02-P-NBL/round-4/logs/npm-run-build-20260603-round4.log "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/npm-run-build-20260603-round4.log"
similarity index 100%
rename from 02-P-NBL/round-4/logs/npm-run-build-20260603-round4.log
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/logs/npm-run-build-20260603-round4.log"
diff --git a/02-P-NBL/round-4/prd.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/prd.md"
similarity index 100%
rename from 02-P-NBL/round-4/prd.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/prd.md"
diff --git a/02-P-NBL/round-4/qa-handoff.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/qa-handoff.md"
similarity index 100%
rename from 02-P-NBL/round-4/qa-handoff.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/qa-handoff.md"
diff --git a/02-P-NBL/round-4/qa-report.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/qa-report.md"
similarity index 100%
rename from 02-P-NBL/round-4/qa-report.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/qa-report.md"
diff --git a/02-P-NBL/round-4/qa-test-plan.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/qa-test-plan.md"
similarity index 100%
rename from 02-P-NBL/round-4/qa-test-plan.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/qa-test-plan.md"
diff --git a/02-P-NBL/round-4/todo-list.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/todo-list.md"
similarity index 100%
rename from 02-P-NBL/round-4/todo-list.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-4/todo-list.md"
diff --git a/02-P-NBL/round-5/README.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/README.md"
similarity index 100%
rename from 02-P-NBL/round-5/README.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/README.md"
diff --git a/02-P-NBL/round-5/dev-check-report.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/dev-check-report.md"
similarity index 100%
rename from 02-P-NBL/round-5/dev-check-report.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/dev-check-report.md"
diff --git a/02-P-NBL/round-5/engineering-tasks.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/engineering-tasks.md"
similarity index 100%
rename from 02-P-NBL/round-5/engineering-tasks.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/engineering-tasks.md"
diff --git a/02-P-NBL/round-5/prd.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/prd.md"
similarity index 100%
rename from 02-P-NBL/round-5/prd.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/prd.md"
diff --git a/02-P-NBL/round-5/qa-handoff.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/qa-handoff.md"
similarity index 100%
rename from 02-P-NBL/round-5/qa-handoff.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/qa-handoff.md"
diff --git a/02-P-NBL/round-5/qa-report.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/qa-report.md"
similarity index 100%
rename from 02-P-NBL/round-5/qa-report.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/qa-report.md"
diff --git a/02-P-NBL/round-5/qa-test-plan.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/qa-test-plan.md"
similarity index 100%
rename from 02-P-NBL/round-5/qa-test-plan.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/qa-test-plan.md"
diff --git a/02-P-NBL/round-5/todo-list.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/todo-list.md"
similarity index 100%
rename from 02-P-NBL/round-5/todo-list.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-5/todo-list.md"
diff --git a/02-P-NBL/round-6/README.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-6/README.md"
similarity index 100%
rename from 02-P-NBL/round-6/README.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-6/README.md"
diff --git a/02-P-NBL/round-6/requirements-dev.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-6/requirements-dev.md"
similarity index 100%
rename from 02-P-NBL/round-6/requirements-dev.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-6/requirements-dev.md"
diff --git a/02-P-NBL/round-6/todo-dev.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-6/todo-dev.md"
similarity index 100%
rename from 02-P-NBL/round-6/todo-dev.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/round-6/todo-dev.md"
diff --git a/02-P-NBL/x-asr-realtime-insertion-report.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/x-asr-realtime-insertion-report.md"
similarity index 100%
rename from 02-P-NBL/x-asr-realtime-insertion-report.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/02-P-NBL/x-asr-realtime-insertion-report.md"
diff --git "a/Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/AppStore\345\256\241\346\240\270\346\213\222\347\273\235-20260610.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/AppStore\345\256\241\346\240\270\346\213\222\347\273\235-20260610.md"
similarity index 100%
rename from "Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/AppStore\345\256\241\346\240\270\346\213\222\347\273\235-20260610.md"
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/AppStore\345\256\241\346\240\270\346\213\222\347\273\235-20260610.md"
diff --git "a/Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/AppStore\346\211\223\345\214\205\350\277\236\347\273\255\350\277\224\345\267\245\347\273\217\351\252\214\346\225\231\350\256\255-20260611.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/AppStore\346\211\223\345\214\205\350\277\236\347\273\255\350\277\224\345\267\245\347\273\217\351\252\214\346\225\231\350\256\255-20260611.md"
similarity index 100%
rename from "Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/AppStore\346\211\223\345\214\205\350\277\236\347\273\255\350\277\224\345\267\245\347\273\217\351\252\214\346\225\231\350\256\255-20260611.md"
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/AppStore\346\211\223\345\214\205\350\277\236\347\273\255\350\277\224\345\267\245\347\273\217\351\252\214\346\225\231\350\256\255-20260611.md"
diff --git "a/Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/QA\345\267\245\344\275\234-\347\273\217\351\252\214\344\270\216\346\225\231\350\256\255.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/QA\345\267\245\344\275\234-\347\273\217\351\252\214\344\270\216\346\225\231\350\256\255.md"
similarity index 100%
rename from "Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/QA\345\267\245\344\275\234-\347\273\217\351\252\214\344\270\216\346\225\231\350\256\255.md"
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/Docs/KM2.\351\241\271\347\233\256\347\256\241\347\220\206-\351\235\236\344\270\232\345\212\241\347\233\264\346\216\245\347\233\270\345\205\263/QA\345\267\245\344\275\234-\347\273\217\351\252\214\344\270\216\346\225\231\350\256\255.md"
diff --git a/TODO.md "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/TODO-\346\227\247\344\273\273\345\212\241\346\270\205\345\215\225.md"
similarity index 100%
rename from TODO.md
rename to "K2.\351\241\271\347\233\256\347\256\241\347\220\206/legacy/TODO-\346\227\247\344\273\273\345\212\241\346\270\205\345\215\225.md"
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/moved-assets.jsonl" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/moved-assets.jsonl"
new file mode 100644
index 0000000..abce943
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/moved-assets.jsonl"
@@ -0,0 +1,5 @@
+{"time":"2026-07-02","scope":"new-project","source":"/Users/ar/Projects/PrivateVoice2/03-O/privatevoice.src","target":"/Users/ar/Projects/PrivateVoice2/03-O/C1.source/privatevoice.src","reason":"set source root to SOP C1.source path; source project was not modified"}
+{"time":"2026-07-02","scope":"new-project","source":"/Users/ar/Projects/PrivateVoice2/03-O/02-P-NBL","target":"/Users/ar/Projects/PrivateVoice2/03-O/K2.项目管理/legacy/02-P-NBL","reason":"downgrade old process documents to historical evidence; source project was not modified"}
+{"time":"2026-07-02","scope":"new-project","source":"/Users/ar/Projects/PrivateVoice2/03-O/Docs","target":"/Users/ar/Projects/PrivateVoice2/03-O/K2.项目管理/legacy/Docs","reason":"place old project management docs under legacy evidence; source project was not modified"}
+{"time":"2026-07-02","scope":"new-project","source":"/Users/ar/Projects/PrivateVoice2/03-O/TODO.md","target":"/Users/ar/Projects/PrivateVoice2/03-O/K2.项目管理/legacy/TODO-旧任务清单.md","reason":"old TODO is not the active ledger; source project was not modified"}
+{"time":"2026-07-02","scope":"new-project","source":"/Users/ar/Projects/PrivateVoice2/03-O/screenshot.png","target":"/Users/ar/Projects/PrivateVoice2/03-O/K3.运营与发布资料/screenshot.png","reason":"place product screenshot under operation/release materials; source project was not modified"}
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/restore-notes.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/restore-notes.md"
new file mode 100644
index 0000000..c786e03
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/restore-notes.md"
@@ -0,0 +1,22 @@
+# Restore Notes
+
+## 源项目恢复
+
+本次迁移没有修改、移动、删除或归档 `/Users/ar/Projects/PrivateVoice` 内的任何材料。需要恢复旧项目材料时,直接回到源路径读取。
+
+## 新项目结构性移动
+
+新项目内发生的结构性移动记录在 `moved-assets.jsonl`。如果要恢复旧仓库布局,可在 `03-O` 中用 Git 历史查看迁移前路径:
+
+```bash
+cd /Users/ar/Projects/PrivateVoice2/03-O
+git log --oneline --follow -- C1.source/privatevoice.src/main.go
+```
+
+## 本地大文件
+
+`C2.builds` 和 `K3.运营与发布资料/legacy-运营资料` 中的本地二进制/素材文件默认不提交 Git。若丢失,可从源项目重新复制:
+
+```bash
+rsync -a /Users/ar/Projects/PrivateVoice/Release/PrivateVoice-Dictation-2.2.0-build20260702.0303/ /Users/ar/Projects/PrivateVoice2/03-O/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/
+```
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/00-Topics.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/00-Topics.md"
new file mode 100644
index 0000000..706baa5
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/00-Topics.md"
@@ -0,0 +1,13 @@
+# 会话主题索引
+
+旧项目原始 session 正文不迁入新项目正文。本目录只保留对接手仍有价值的主题摘要和来源索引。
+
+| 主题 | 文档 | 时间范围 | 说明 |
+| --- | --- | --- | --- |
+| 多语种与粤语 | `多语种与粤语.md` | 2026-05-29 至 2026-07-02 | 模型路线、Round 6 粤语、语言切换安全 |
+| Windows 预览 | `Windows预览.md` | 2026-06-30 至 2026-07-02 | Windows preview 合并、限制、包和 QA 缺口 |
+| 发布与打包 | `发布与打包.md` | 2026-06-04 至 2026-07-02 | App Store、本地包、2.2.0 四包候选 |
+| App Store 与独立站 | `AppStore与独立站.md` | 2026-06-10 至 2026-07-02 | 渠道转向和独立站缺口 |
+| 性能与稳定性 | `性能与稳定性.md` | 2026-06-28 至 2026-07-01 | 慢识别、尾音、下载/取消/首尾字修复 |
+
+原始记录仍保留在源项目 `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/`。
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/AppStore\344\270\216\347\213\254\347\253\213\347\253\231.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/AppStore\344\270\216\347\213\254\347\253\213\347\253\231.md"
new file mode 100644
index 0000000..0fad1e3
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/AppStore\344\270\216\347\213\254\347\253\213\347\253\231.md"
@@ -0,0 +1,28 @@
+# App Store 与独立站
+
+## 当前状态
+
+项目曾围绕 Mac App Store 审核、pkg、合规和启动问题推进。2026-07-02 的结论是:主发布出口转为独立站销售。
+
+## 当前结论
+
+- App Store 特有链路不再是当前主线门禁。
+- 建议采用“功能冻结,不做二进制绝对冻结”的发布策略。
+- 首发建议先做 macOS 官网直发,不同步追求完整账号体系和复杂自动更新。
+
+## P0 缺口
+
+1. 固定官网发布基线。
+2. Developer ID signed + notarized DMG。
+3. 下载页、版本页、SHA256 和 manifest。
+4. 最小授权 / 激活 / 交付闭环。
+5. 更新策略:首发是否关闭自动更新,或跳官网。
+6. 支持、诊断导出和退款/订单查询路径。
+
+## 来源索引
+
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-06-10-审核拒绝排查.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-06-10-审核处理方案.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-06-13-AppStore三审驳回.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-06-23-AppStore四审会诊.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-07-02-独立站发布清单.md`
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/Windows\351\242\204\350\247\210.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/Windows\351\242\204\350\247\210.md"
new file mode 100644
index 0000000..871d8ba
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/Windows\351\242\204\350\247\210.md"
@@ -0,0 +1,24 @@
+# Windows 预览
+
+## 当前状态
+
+Windows preview 已合入当前分支,并包含在 2.2.0 四包候选中。它仍是 unsigned preview ZIP,不是正式 Windows 安装器。
+
+## 核心事实
+
+- Windows preview 当前只支持 SenseVoice。
+- 非 SenseVoice 模型在设置中可见但禁用。
+- Windows overlay 使用原生 Win32/GDI+ 胶囊指示器。
+- QA 脚本在包内:`RUN-WINDOWS-QA.cmd`、`QA-WINDOWS-PREVIEW.ps1`。
+- 收回 evidence 后用 `scripts/verify-windows-qa-evidence.sh` 验证。
+
+## 缺口
+
+- 需要真实 Windows 10/11 硬件 QA。
+- 需要签名、安装器和 SmartScreen 体验处理,才能推进正式 PC 版本。
+
+## 来源索引
+
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-06-30-Windows预览版.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-07-01-Windows合并.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-07-01-Windows动效打包.md`
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/\345\217\221\345\270\203\344\270\216\346\211\223\345\214\205.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/\345\217\221\345\270\203\344\270\216\346\211\223\345\214\205.md"
new file mode 100644
index 0000000..b72f6a7
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/\345\217\221\345\270\203\344\270\216\346\211\223\345\214\205.md"
@@ -0,0 +1,32 @@
+# 发布与打包
+
+## 当前最新包
+
+- Version:`2.2.0`
+- Build:`20260702.0303`
+- Commit:`0ffbf1935c9d091cce22a5583275ac0902f7a693`
+- Tag:`v2.2.0-build20260702.0303-real-user-test`
+- 类型:真实用户测试候选包。
+
+## 包组成
+
+- macOS arm64 DMG
+- macOS x86_64 DMG
+- macOS universal DMG
+- Windows amd64 preview ZIP
+
+## 验证摘要
+
+源会话记录表明以下检查通过:`go test ./... -count=1`、`npm --prefix frontend run build`、Windows cross smoke、`git diff --check`、DMG verify、ZIP test、SHA256、架构和 codesign。
+
+## 边界
+
+- macOS 包未 notarize。
+- Windows 包未签名。
+- Monterey 兼容未在 2.2.0 四包中重新验证。
+
+## 来源索引
+
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-07-02-多平台打包整理.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-07-02-粤语四包交付.md`
+- `/Users/ar/Projects/PrivateVoice/Release/PrivateVoice-Dictation-2.2.0-build20260702.0303/RELEASE_MANIFEST.md`
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/\345\244\232\350\257\255\347\247\215\344\270\216\347\262\244\350\257\255.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/\345\244\232\350\257\255\347\247\215\344\270\216\347\262\244\350\257\255.md"
new file mode 100644
index 0000000..e2a2c50
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/\345\244\232\350\257\255\347\247\215\344\270\216\347\262\244\350\257\255.md"
@@ -0,0 +1,23 @@
+# 多语种与粤语
+
+## 当前状态
+
+PrivateVoice 已从中文/English 双语言扩展到多语种 profile。Round 6 已新增独立粤语语言版本。
+
+## 最近结论
+
+- `yue-HK` 是独立语言 profile,显示为 `粤语`。
+- 默认模型为 `sensevoice-yue-2025-09-09` / `SenseVoice Yue`。
+- SenseVoice Yue engine 参数固定为 `LanguageParam="yue"`。
+- 粤语 profile 不默认展示 Qwen3-ASR / X-ASR 作为粤语专项模型。
+- `zh-HK` 不自动映射到粤语,避免香港用户被误切到粤语。
+- 未安装目标语言只做 UI 预览;下载成功后才持久化语言并 reload engine。
+
+## 来源索引
+
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-05-29-关于FunASR等模型的技术选型.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-06-22-多语种扩展.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-06-22-README语言表.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-07-02-粤语版本需求.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-07-02-粤语开发实现.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-07-02-粤语四包交付.md`
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/\346\200\247\350\203\275\344\270\216\347\250\263\345\256\232\346\200\247.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/\346\200\247\350\203\275\344\270\216\347\250\263\345\256\232\346\200\247.md"
new file mode 100644
index 0000000..af90f43
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/session-topics/\346\200\247\350\203\275\344\270\216\347\250\263\345\256\232\346\200\247.md"
@@ -0,0 +1,23 @@
+# 性能与稳定性
+
+## 当前状态
+
+2026-07-01 慢识别复盘显示,用户感知慢主要来自 `recognize_ms` 抖动和系统负载峰值,不是上屏、历史写入或 engine lock。
+
+## 已落地
+
+- 新增 `PERF slow_recognition` 日志。
+- SenseVoice 尾音保护为 100ms。
+- X-ASR 尾音保护为 300ms。
+- 其他 sherpa 离线模型不再默认加尾音保护。
+
+## 后续观察
+
+- 系统负载异常时需要区分 Codex/Spotlight/WindowServer 等外部负载影响。
+- 如继续优化,先补更细日志和真实用户样本,不直接盲调模型线程或 provider。
+
+## 来源索引
+
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-06-28-首尾字修复.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-06-29-性能日志.md`
+- `/Users/ar/Projects/PrivateVoice/.codex-sessionhistory/2026-07-01-识别变慢复盘.md`
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\345\217\221\345\270\203\345\234\260\345\233\276.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\345\217\221\345\270\203\345\234\260\345\233\276.md"
new file mode 100644
index 0000000..e1a9278
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\345\217\221\345\270\203\345\234\260\345\233\276.md"
@@ -0,0 +1,34 @@
+# 发布地图
+
+## 当前最新候选包
+
+- Version:`2.2.0`
+- Build:`20260702.0303`
+- Commit:`0ffbf1935c9d091cce22a5583275ac0902f7a693`
+- Tag:`v2.2.0-build20260702.0303-real-user-test`
+- 类型:真实用户测试候选包
+- 路径:`03-O/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/`
+
+## 包列表
+
+- `PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-arm64.dmg`
+- `PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-x86_64.dmg`
+- `PrivateVoice-Dictation-2.2.0-build20260702.0303-macos-universal.dmg`
+- `PrivateVoice-Dictation-2.2.0-build20260702.0303-windows-amd64-preview.zip`
+- `RELEASE_MANIFEST.md`
+- `SHA256SUMS.txt`
+
+## 当前边界
+
+- macOS 包是本地签名 DMG,未 notarize。
+- Windows 包是 unsigned preview ZIP,不是安装器。
+- 该包可用于真实用户测试,不等同正式官网发布。
+
+## 官网独立站 P0 缺口
+
+1. 明确官网首发固定 commit/build。
+2. 生成 Developer ID signed + notarized DMG。
+3. 建立下载页、版本页、SHA256、release manifest。
+4. 决定授权/试用/激活/换机/重装最小方案。
+5. 决定首发是否关闭应用内自动更新;如关闭,检查更新应跳官网。
+6. 定义支持、诊断导出、退款/订单查询最小流程。
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\346\216\245\346\224\266\351\252\214\350\257\201\350\256\260\345\275\225.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\346\216\245\346\224\266\351\252\214\350\257\201\350\256\260\345\275\225.md"
new file mode 100644
index 0000000..1447f1d
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\346\216\245\346\224\266\351\252\214\350\257\201\350\256\260\345\275\225.md"
@@ -0,0 +1,28 @@
+# 接收验证记录
+
+## 验证目标
+
+验证 `PrivateVoice2` 迁移包是否可接手。该结论不等同产品 QA PASS、正式发布 PASS 或官网销售链路 PASS。
+
+## 结果
+
+| 项 | 命令或检查 | 结果 | 备注 |
+| --- | --- | --- | --- |
+| Git 状态 | `git status --short --branch` | PASS | 显示预期迁移变更;提交后需再看最终 clean 状态 |
+| Diff 空白检查 | `git diff --check` | PASS | 无输出 |
+| 依赖安装 | `npm --prefix frontend ci` | PASS with warning | 安装 48 packages;仍有既有 `6 vulnerabilities (3 moderate, 3 high)` |
+| 前端 build | `npm --prefix frontend run build` | PASS with warning | 生成 `frontend/dist`;仍有既有 Svelte a11y warning |
+| Go 测试 | `go test ./...` | PASS with warning | 通过;仍有既有 macOS linker warning |
+| Windows cross smoke | `GOOS=windows GOARCH=amd64 CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc CXX=x86_64-w64-mingw32-g++ go test -exec=/usr/bin/true ./...` | PASS | 通过 |
+| SHA256 | `shasum -a 256 -c SHA256SUMS.txt` | PASS | 四个候选包均 OK |
+| macOS DMG 完整性 | `hdiutil verify ...arm64.dmg` | PASS | VALID |
+| macOS DMG 完整性 | `hdiutil verify ...x86_64.dmg` | PASS | VALID |
+| macOS DMG 完整性 | `hdiutil verify ...universal.dmg` | PASS | VALID |
+| Windows ZIP 完整性 | `unzip -t ...windows-amd64-preview.zip` | PASS | No errors detected |
+
+## 未跑项默认解释
+
+- Windows 真机 QA 不属于本次迁移接收验证。
+- Notarization 不属于本次迁移接收验证。
+- 重新打包不属于本次迁移接收验证。
+- 本次迁移验证不处理 `npm audit` 中既有漏洞提示;如要处理,需单独进入依赖安全任务。
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\346\226\260\347\252\227\345\217\243\346\216\245\346\211\213\346\214\207\345\215\227.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\346\226\260\347\252\227\345\217\243\346\216\245\346\211\213\346\214\207\345\215\227.md"
new file mode 100644
index 0000000..22d180d
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\346\226\260\347\252\227\345\217\243\346\216\245\346\211\213\346\214\207\345\215\227.md"
@@ -0,0 +1,52 @@
+# 新窗口接手指南
+
+## 接手目标
+
+从 `PrivateVoice2` 文件系统接手项目,不依赖旧长会话上下文。
+
+## 必读顺序
+
+1. `/Users/ar/Projects/PrivateVoice2/AGENTS.md`
+2. `/Users/ar/Projects/PrivateVoice2/PROJECT.md`
+3. `/Users/ar/Projects/PrivateVoice2/INDEX.md`
+4. `/Users/ar/Projects/PrivateVoice2/02-P/进度地图.md`
+5. `/Users/ar/Projects/PrivateVoice2/02-P/事件地图.md`
+6. `/Users/ar/Projects/PrivateVoice2/03-O/CODEGRAPH.md`
+7. `/Users/ar/Projects/PrivateVoice2/03-O/K2.项目管理/迁移资产清单.md`
+
+## 当前事实快照
+
+- 当前工作不是继续旧会话,而是从新项目文件接手。
+- 源码根:`03-O/C1.source/privatevoice.src`
+- 当前基线:`v2.2.0-build20260702.0303-real-user-test`
+- Round 6 粤语实现和四包候选已完成。
+- Windows preview 与官网正式发布仍有缺口。
+
+## 接手自检命令
+
+```bash
+cd /Users/ar/Projects/PrivateVoice2/03-O
+git status --short --branch
+git diff --check
+cd C1.source/privatevoice.src
+npm --prefix frontend run build
+go test ./...
+```
+
+## 不迁移内容
+
+- 原始长会话正文。
+- 旧 worktree。
+- 旧构建包全集。
+- 证书目录。
+- node_modules、dist、构建缓存和用户级缓存。
+
+## 成功判定
+
+新窗口只读新项目文件后,应能说明:
+
+- 项目是什么。
+- 当前做到哪里。
+- Git 根、源码根、QA 入口和发布入口在哪里。
+- 下一步需要谁决策。
+- 哪些材料是 legacy,不可直接作为当前任务来源。
diff --git "a/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\350\277\201\347\247\273\350\265\204\344\272\247\346\270\205\345\215\225.md" "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\350\277\201\347\247\273\350\265\204\344\272\247\346\270\205\345\215\225.md"
new file mode 100644
index 0000000..2272114
--- /dev/null
+++ "b/K2.\351\241\271\347\233\256\347\256\241\347\220\206/\350\277\201\347\247\273\350\265\204\344\272\247\346\270\205\345\215\225.md"
@@ -0,0 +1,44 @@
+# 迁移资产清单
+
+## 来源与目标
+
+- 来源项目:`/Users/ar/Projects/PrivateVoice`
+- 新项目:`/Users/ar/Projects/PrivateVoice2`
+- 迁移时间:2026-07-02
+- 基线:`0ffbf1935c9d091cce22a5583275ac0902f7a693` / `v2.2.0-build20260702.0303-real-user-test`
+
+## 已迁入
+
+| 来源 | 目标 | 说明 |
+| --- | --- | --- |
+| 旧 Git 仓库 | `03-O` | 使用 `git clone --no-hardlinks` 保留历史 |
+| `privatevoice.src/` | `03-O/C1.source/privatevoice.src/` | 源码根迁入固定 C1.source |
+| `02-P-NBL/` | `03-O/K2.项目管理/legacy/02-P-NBL/` | 旧 Round/计划/QA 证据,降级为历史 |
+| `Docs/` | `03-O/K2.项目管理/legacy/Docs/` | 旧项目管理经验文档 |
+| `TODO.md` | `03-O/K2.项目管理/legacy/TODO-旧任务清单.md` | 旧 TODO,只作历史 |
+| `Release/PrivateVoice-Dictation-2.2.0-build20260702.0303/` | `03-O/C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/` | 最新真实用户测试候选包 |
+| `X-运营资料/PrivateVoice-26.0604上架` 等 | `03-O/K3.运营与发布资料/legacy-运营资料/` | 本地运营素材,默认不提交 Git |
+| `.codex-sessionhistory/` 关键信息 | `03-O/K2.项目管理/session-topics/`、`handoffs/` | 只迁移压缩摘要和交接,不迁原始正文 |
+
+## 明确排除
+
+- 旧项目 `.git/worktrees/` 与 `.worktrees/`。
+- 旧项目 `.codex/` 与原始长会话正文。
+- `privatevoice.src/frontend/node_modules/`。
+- `privatevoice.src/frontend/dist/`。
+- `privatevoice.src/build/local/`、`build/macappstore*`、`build/windows-preview/` 等本地构建输出。
+- `Release/X-旧版build成果/` 历史包。
+- `Release/01-证书/` 证书目录。
+- 用户级缓存、系统噪声和 `.DS_Store`。
+
+## Git 策略
+
+- `03-O` 是新项目 Git 根。
+- 最新包和运营素材已在本地目录保留,但大二进制文件默认由 `.gitignore` 排除,不进入迁移提交。
+- `RELEASE_MANIFEST.md`、`SHA256SUMS.txt`、地图和清单可以提交。
+
+## 风险说明
+
+- 新路径把源码移动到 `C1.source/privatevoice.src`;已有脚本通常使用相对路径,后续执行命令需从新源码根进入。
+- 历史文档里的旧路径保留为证据,不机械替换。
+- 本次迁移不生成正式 release,不补跑 Windows 真机 QA,不补 notarization。
diff --git "a/K3.\350\277\220\350\220\245\344\270\216\345\217\221\345\270\203\350\265\204\346\226\231/README.md" "b/K3.\350\277\220\350\220\245\344\270\216\345\217\221\345\270\203\350\265\204\346\226\231/README.md"
new file mode 100644
index 0000000..de13c48
--- /dev/null
+++ "b/K3.\350\277\220\350\220\245\344\270\216\345\217\221\345\270\203\350\265\204\346\226\231/README.md"
@@ -0,0 +1,12 @@
+# 运营与发布资料
+
+## 当前资料
+
+- `screenshot.png`:产品截图。
+- `legacy-运营资料/`:从旧项目选择性复制的运营素材和历史上架资料,本地保留,默认不提交 Git。
+
+## 规则
+
+- 运营素材不能覆盖 `PROJECT.md`、`发布地图.md` 或 release manifest 的当前发布事实。
+- 名称带 `X-`、`旧`、`归档` 的资料只作历史参考。
+- 如要对外发布官网内容,必须先在 `02-P/进度地图.md` 建立活跃任务并明确发布基线。
diff --git "a/K3.\350\277\220\350\220\245\344\270\216\345\217\221\345\270\203\350\265\204\346\226\231/legacy-\350\277\220\350\220\245\350\265\204\346\226\231/README.md" "b/K3.\350\277\220\350\220\245\344\270\216\345\217\221\345\270\203\350\265\204\346\226\231/legacy-\350\277\220\350\220\245\350\265\204\346\226\231/README.md"
new file mode 100644
index 0000000..f47d967
--- /dev/null
+++ "b/K3.\350\277\220\350\220\245\344\270\216\345\217\221\345\270\203\350\265\204\346\226\231/legacy-\350\277\220\350\220\245\350\265\204\346\226\231/README.md"
@@ -0,0 +1,10 @@
+# legacy 运营资料
+
+本目录为旧项目运营资料的本地副本,来源:
+
+- `/Users/ar/Projects/PrivateVoice/X-运营资料/PrivateVoice-26.0604上架`
+- `/Users/ar/Projects/PrivateVoice/X-运营资料/运营文档`
+- `/Users/ar/Projects/PrivateVoice/X-运营资料/OP资料-Privatevoice.MD`
+- `/Users/ar/Projects/PrivateVoice/X-运营资料/26.0602-备忘.markdown`
+
+这些材料用于追溯历史上架、截图、文案和运营准备,不是当前发布事实源。
diff --git a/screenshot.png "b/K3.\350\277\220\350\220\245\344\270\216\345\217\221\345\270\203\350\265\204\346\226\231/screenshot.png"
similarity index 100%
rename from screenshot.png
rename to "K3.\350\277\220\350\220\245\344\270\216\345\217\221\345\270\203\350\265\204\346\226\231/screenshot.png"
Binary files differ
diff --git a/README.md b/README.md
old mode 100755
new mode 100644
index 178f83b..a044eac
--- a/README.md
+++ b/README.md
@@ -1,165 +1,58 @@
 # PrivateVoice
 
-> 长按说话,松手即输 —— 离线 · 极速 · 跨平台
+PrivateVoice 是一款离线语音转文字桌面 App:按住快捷键说话,松开后本地识别并输入到当前应用。当前源码位于 `C1.source/privatevoice.src`。
 
-![PrivateVoice](screenshot.png)
+![PrivateVoice](K3.运营与发布资料/screenshot.png)
 
-PrivateVoice 是一款离线语音转文字工具。按住快捷键说话,松开即识别并输入文字到任意应用。无需联网,无需注册,开箱即用。
+## 当前迁移基线
 
-## 核心特性
+- 分支:`codex/x-asr-experiment-2.1.29`
+- Commit:`0ffbf1935c9d091cce22a5583275ac0902f7a693`
+- Tag:`v2.2.0-build20260702.0303-real-user-test`
+- 包类型:真实用户测试候选包,不是 notarized 官网正式发布包。
+- 迁移后源码根:`C1.source/privatevoice.src`
+- 最新候选包本地路径:`C2.builds/PrivateVoice-Dictation-2.2.0-build20260702.0303/`
 
-- **完全离线** — SenseVoice 模型本地推理,无数据上传
-- **DirectML GPU 加速** — 自动检测显卡,CPU 自动回退
-- **两种输入模式** — 长按说话 + 短按自由说话
-- **自定义快捷键** — 支持 Ctrl / Alt / Shift / 功能键 / 字母键
-- **麦克风选择** — 下拉切换输入设备
-- **录音音效** — 马林巴风格提示音(可关闭)
-- **录音计时** — 指示器实时显示录音时长(0:00 → 0:03 → ...)
-- **Escape 取消** — 录音中按 Esc 立即取消
-- **剪贴板保护** — 粘贴后自动恢复原剪贴板内容
-- **识别历史** — 自动保存最近 50 条,可复制、删除、设置保留时长
-- **语气词过滤** — 自动去除"嗯、啊、呃"及 um/uh/hmm 等填充词
-- **静音自动停止** — 自由说话模式下连续 3 秒无声自动结束并识别
-- **中英混合优化** — 自动在中英文之间加空格,句首大写
-- **DPI 自适应** — 指示器根据系统缩放自动调整大小
-- **指示器可拖拽** — 拖动浮动指示器到任意位置,自动记忆
-- **中英双语界面** — 自动跟随系统语言
-- **应用内更新** — 自动检查新版本并提示下载
-- **系统托盘常驻** — 关闭窗口不退出
-- **开机自启** — 可选
+## 核心能力
 
-## 支持的输入语言
+- 完全离线识别,模型本地推理。
+- 长按说话与短按自由说话两种输入模式。
+- 自定义快捷键、麦克风选择、录音音效、录音计时、Esc 取消。
+- 剪贴板保护、识别历史、用户词库、语气词过滤和中英混合文本后处理。
+- macOS 本地签名 DMG、Windows amd64 preview ZIP。
+- 当前 Round 6 已新增独立 `粤语` 语言选项,默认模型为 `SenseVoice Yue 2025-09-09`。
 
-当前 PrivateVoice 的产品语言版本为 **中文**、**English**、**French**、**German**、**Spanish**、**Italian**、**Portuguese**、**Japanese** 和 **Korean**。识别模型已经扩展到 SenseVoice、Moonshine English、Parakeet English、Parakeet TDT v3、日语 Zipformer、韩语 Zipformer、Qwen3-ASR 和 X-ASR zh-en 960ms;不同模型覆盖的输入语言和成熟度不同。
+## 语言与模型状态
 
 | 输入语言 / 场景 | 当前支持状态 | 默认 / 可选模型 | 说明 |
-|---|---|---|---|
-| 中文(普通话、简体 / 繁体) | 正式支持 | 默认:SenseVoice;可选高级:Qwen3-ASR;实验:X-ASR zh-en 960ms | 中文语言版本默认使用 SenseVoice,适合中文听写和日常输入。 |
-| English | 正式支持 | 默认:Moonshine English;可选高级:Parakeet English;实验:X-ASR zh-en 960ms | English 语言版本默认使用 Moonshine English,Parakeet 适合更高准确率的英文输入。 |
-| French / German / Spanish / Italian / Portuguese | 正式支持 | 默认:Parakeet TDT v3 | 欧洲五语统一使用 NVIDIA / sherpa-onnx 的 Parakeet TDT v3 多语种离线模型。Portuguese 覆盖 `pt-PT` 和 `pt-BR` 的基础识别路径。 |
-| 中英混输 | 正式支持场景 | SenseVoice、Qwen3-ASR、X-ASR zh-en 960ms | 适合中文句子中夹杂英文术语、产品名、代码词等场景。 |
-| 粤语(Cantonese) | 模型支持,尚非独立语言版本 | SenseVoice、Qwen3-ASR、X-ASR zh-en 960ms | 底层模型包含粤语能力;当前建议在中文语言版本下使用。 |
-| 日语(日本語) | 正式支持 | 默认:Zipformer Japanese | 日语语言版本默认使用 ReazonSpeech 日语专项 Zipformer 离线模型。 |
-| 韩语(한국어) | 正式支持 | 默认:Zipformer Korean | 韩语语言版本默认使用韩语专项 Zipformer 离线模型。 |
-| 欧洲其他语种 | 模型支持,尚非独立语言版本 | Parakeet TDT v3 | Parakeet TDT v3 支持 25 种欧洲语言;当前只把 French、German、Spanish、Italian、Portuguese 作为正式产品语言版本。 |
-| 其他语言 | 暂未正式支持 | 无独立默认模型 | 系统语言不在当前正式语言范围内时,当前产品会回落到 English 语言版本。 |
+| --- | --- | --- | --- |
+| 中文 | 正式支持 | 默认 SenseVoice;可选 Qwen3-ASR;实验 X-ASR zh-en 960ms | 中文听写和中英混输主路径。 |
+| 粤语 | 真实用户测试候选 | 默认 SenseVoice Yue 2025-09-09 | 独立语言 profile:`yue-HK`,engine 参数固定 `yue`。 |
+| English | 正式支持 | 默认 Moonshine English;可选 Parakeet English;实验 X-ASR zh-en 960ms | 英文听写主路径。 |
+| French / German / Spanish / Italian / Portuguese | 正式支持 | Parakeet TDT v3 | 欧洲五语离线识别。 |
+| Japanese | 正式支持 | Zipformer Japanese | 日语专项模型。 |
+| Korean | 正式支持 | Zipformer Korean | 韩语专项模型。 |
+| Windows preview | 技术预览 | SenseVoice only | 非 SenseVoice 模型可见但禁用;Windows 包未签名。 |
 
-| 识别模型 | 模型状态 | 覆盖的输入语言 / 场景 | 所属语言版本 | 说明 |
-|---|---|---|---|---|
-| SenseVoice | 默认轻量模型 | 中文、粤语、English、日语、韩语 | 中文默认 | 轻量模型,当前推荐用于中文和中英混输,也提供日语、韩语等底层识别能力。 |
-| Qwen3-ASR | 高级模型 | 中文、简繁中文、粤语、中英混输 | 中文可选 | 体积更大,适合中文长句、技术词和更高准确率需求。 |
-| Moonshine English | 默认轻量模型 | English | English 默认 | 轻量英文离线模型,适合英文日常听写。 |
-| Parakeet English | 高级模型 | English | English 可选 | 当前接入的是 `parakeet-unified-en-0.6b` 英文模型,适合长句、技术词和更高准确率需求。 |
-| Parakeet TDT v3 | 默认多语种模型 | French、German、Spanish、Italian、Portuguese | 欧洲五语默认 | 一个模型包覆盖欧洲五语,适合离线听写;发布前基准对比 Canary-1B-v2 和 Whisper large-v3-turbo。 |
-| Zipformer Japanese | 默认专项模型 | Japanese | 日语默认 | 基于 ReazonSpeech 的日语专项离线模型。 |
-| Zipformer Korean | 默认专项模型 | Korean | 韩语默认 | 韩语专项离线模型。 |
-| X-ASR zh-en 960ms | 实验模型 | 中文、English、粤语、中英混输 | 中文 / English 可选实验项 | 实验性中英流式模型,用于评估更低延迟和未来“边说边出字”体验。 |
-
-## 快速开始
-
-### 用户
-
-1. 从项目 Releases 页面下载最新版本
-2. **Windows**:解压到任意目录,双击 `privatevoice.exe`
-3. **macOS**:打开 `.dmg`,拖入 Applications,首次启动需授予辅助功能权限
-4. 首次启动自动下载语音模型(~200 MB)
-5. 就绪后,在任意输入框中按住 **右 Ctrl**(macOS: **右 Command**)说话,松开即输入
-
-### 开发者
+## 开发入口
 
 ```bash
-# 环境要求
-# - Go 1.22+
-# - Node.js 20+
-# - CGO 编译器 (Windows: LLVM MinGW UCRT, macOS: Xcode Command Line Tools)
-
-# 克隆
-git clone <PrivateVoice 仓库地址>
-cd PrivateVoice/privatevoice.src
-
-# 安装前端依赖
-cd frontend && npm install && cd ..
-
-# 开发模式
-wails3 dev
-
-# 生产构建 (Windows)
-windres privatevoice.rc -o privatevoice.syso
-CGO_ENABLED=1 go build -ldflags "-H windowsgui -s -w" -o privatevoice.exe .
-
-# 生产构建 (macOS)
-CGO_ENABLED=1 go build -o privatevoice .
+cd /Users/ar/Projects/PrivateVoice2/03-O/C1.source/privatevoice.src
+npm --prefix frontend run build
+go test ./...
 ```
 
-## 使用方法
+常用打包和 QA 命令见 `CODEGRAPH.md`、`K2.项目管理/QA地图.md` 和 `K2.项目管理/发布地图.md`。
 
-1. 系统托盘出现 PrivateVoice 图标,引擎加载完成后就绪
-2. **长按模式**:按住快捷键说话,松开即识别并粘贴
-3. **自由说话**:短按一下开始,连续说话,再短按一下停止
-4. **取消录音**:录音中按 Esc
-5. 右键托盘图标可打开设置或退出
+## 目录
 
-## 运行文件
-
-**Windows:**
-
-| 文件 | 大小 | 说明 |
-|---|---|---|
-| `privatevoice.exe` | ~15 MB | 主程序 |
-| `onnxruntime.dll` | ~15 MB | ONNX Runtime |
-| `sherpa-onnx-c-api.dll` | ~4 MB | sherpa-onnx C API |
-| `sherpa-onnx-cxx-api.dll` | ~248 KB | sherpa-onnx C++ API |
-| `models/sensevoice/` | ~200 MB | 语音模型(首次自动下载) |
-
-**macOS:**
-
-| 文件 | 大小 | 说明 |
-|---|---|---|
-| `PrivateVoice Dictation.app` | ~15 MB | 应用包(含 dylib) |
-| `models/sensevoice/` | ~200 MB | 语音模型(首次自动下载) |
-
-## 项目结构
-
+```text
+03-O/
+├── C1.source/privatevoice.src/   源码根
+├── C2.builds/                    本地迁移的最新候选包,二进制包不纳入 Git 提交
+├── C3.tools/                     工具索引
+├── K1.业务知识/                  成果地图和长期业务/技术知识
+├── K2.项目管理/                  QA、发布、迁移、handoff、legacy 资料
+├── K3.运营与发布资料/            当前运营资料索引和本地素材
+└── CODEGRAPH.md                  人工工程地图
 ```
-privatevoice.src/
-├── main.go               # 入口:单实例 + Wails 启动
-├── app.go                # 编排:热键 → 录音 → 识别 → 粘贴
-├── internal/
-│   ├── audio/            # malgo 录音 + 设备枚举
-│   ├── engine/           # sherpa-onnx 推理
-│   ├── hotkey/           # 全局热键轮询
-│   ├── input/            # 剪贴板 + 粘贴 + 剪贴板保护
-│   ├── config/           # JSON 配置
-│   ├── history/          # 识别历史(JSON 持久化)
-│   ├── textproc/         # 中英混合文本后处理
-│   ├── sound/            # 录音音效(合成 WAV)
-│   ├── overlay/          # 浮动指示器(Win32 GDI+ / macOS AppKit)
-│   └── ...
-├── services/             # Wails 服务(前端绑定)
-└── frontend/             # Svelte + Vite
-    ├── src/components/   # 设置窗口 + 指示器
-    └── src/lib/          # stores + i18n
-```
-
-## 技术栈
-
-| 组件 | 技术 |
-|---|---|
-| 桌面框架 | [Wails v3](https://wails.io/) |
-| 前端 | [Svelte 5](https://svelte.dev/) + Vite + TypeScript |
-| 音频录制 | [malgo](https://github.com/gen2brain/malgo) (miniaudio) |
-| 语音识别 | [sherpa-onnx](https://github.com/k2-fsa/sherpa-onnx) (SenseVoice) |
-| 全局热键 | Windows: GetAsyncKeyState 轮询 / macOS: NSEvent + CGEventSource |
-| 文字输入 | Windows: 剪贴板 + SendInput / macOS: 剪贴板 + CGEvent |
-| 浮动指示器 | Windows: GDI+ Layered Window / macOS: AppKit + CoreGraphics |
-| 音效 | 程序合成 WAV + 平台原生播放 |
-
-## 许可证
-
-MIT License
-
-## 致谢
-
-- [SherpaOnnx](https://github.com/k2-fsa/sherpa-onnx) — 语音识别引擎
-- [Wails](https://wails.io/) — Go 桌面应用框架
-- [SenseVoice](https://github.com/FunAudioLLM/SenseVoice) — 语音模型

--
Gitblit v1.9.3