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

---
 CODEGRAPH.md |   78 ++++++++++++++++++++++++--------------
 1 files changed, 49 insertions(+), 29 deletions(-)

diff --git a/CODEGRAPH.md b/CODEGRAPH.md
index f30d7da..91cfda1 100644
--- a/CODEGRAPH.md
+++ b/CODEGRAPH.md
@@ -3,61 +3,81 @@
 ## Project
 
 - Product: Wails v3 / Go desktop dictation app.
-- Current branch purpose: Windows technical preview based on `v2.1.38-build20260629.2014-diagnostic`.
-- Protected macOS behavior: existing macOS App Store / local DMG build lines are not changed by this branch.
+- 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 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
+
+- `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`.
+  - Backend: SenseVoice with `LanguageParam="yue"`.
+  - The Cantonese language profile intentionally has no upgrade models, so Qwen3-ASR and X-ASR are not shown as Cantonese-specific options.
 
 ## 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`
+  - 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
 
 - Windows preview supports `SenseVoice` only.
 - Non-SenseVoice models remain visible in settings but are disabled through `model.IsModelSupportedInCurrentBuild`.
 - Windows unsupported reason: `windows_preview_unsupported`.
-- Build script: `privatevoice.src/scripts/build-windows-preview.sh`.
-- Runtime package includes:
-  - `PrivateVoice Dictation.exe`
-  - `onnxruntime.dll`
-  - `sherpa-onnx-c-api.dll`
-  - `sherpa-onnx-cxx-api.dll`
-  - `QA-WINDOWS-PREVIEW.ps1`
-  - `README-WINDOWS-PREVIEW.txt`
+- Windows overlay remains native Win32/GDI+, with a larger translucent spectrum-style capsule indicator for recording states.
+- Build script: `C1.source/privatevoice.src/scripts/build-windows-preview.sh`.
+- Evidence verifier: `C1.source/privatevoice.src/scripts/verify-windows-qa-evidence.sh`.
+
+## macOS Package Scope
+
+- 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
 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 ./...
 ./scripts/build-windows-preview.sh
+./scripts/build-local-macos.sh arm64
+./scripts/build-local-macos.sh x86_64
+./scripts/build-local-macos-universal.sh
+./scripts/verify-windows-qa-evidence.sh /path/to/qa-evidence-YYYYMMDD-HHMMSS.zip
 ```
 
 ## Known Gaps
 
-- Windows runtime QA must still be performed on Windows 10/11 hardware.
-- Run `QA-WINDOWS-PREVIEW.ps1` from the extracted preview package to collect startup, engine, recording, recognition, and paste evidence.
-- 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.

--
Gitblit v1.9.3