edit | blame | history | raw

CODEGRAPH

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 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

  • 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: C1.source/privatevoice.src/internal/audio/recorder.go
  • Hotkey:
  • macOS: C1.source/privatevoice.src/internal/hotkey/hotkey_darwin.go
  • Windows: C1.source/privatevoice.src/internal/hotkey/hotkey_windows.go
  • Text input:
  • macOS: C1.source/privatevoice.src/internal/input/paste_darwin.go
  • Windows: C1.source/privatevoice.src/internal/input/paste_windows.go
  • ASR engine:
  • 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: 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.
  • 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 C1.source/privatevoice.src:

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 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.