edit | blame | history | raw

CODEGRAPH

Project

  • Product: Wails v3 / Go desktop dictation app.
  • Git root: /Users/ar/Projects/PrivateVoice/03-O.
  • Source root: /Users/ar/Projects/PrivateVoice/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.

Automatic Codebase Memory

  • Status: enabled.
  • Tool: codebase-memory-mcp 0.8.1.
  • Current project name after path unification: Users-ar-Projects-PrivateVoice-03-O.
  • Existing artifact note: .codebase-memory/artifact.json may still record legacy project name Users-ar-Projects-PrivateVoice2-03-O until the graph is regenerated.
  • Shared artifact: .codebase-memory/graph.db.zst; metadata: .codebase-memory/artifact.json.
  • Scope: /Users/ar/Projects/PrivateVoice/03-O.
  • Refresh command: codebase-memory-mcp cli index_repository '{"repo_path":"/Users/ar/Projects/PrivateVoice/03-O"}'.
  • Current indexed_at, commit, node count, and edge count are recorded in .codebase-memory/artifact.json.
  • Excluded by indexer: .git, K3.运营与发布资料/legacy-运营资料/PrivateVoice-26.0604上架, K3.运营与发布资料/legacy-运营资料/运营文档, C1.source/privatevoice.src/frontend/dist, C1.source/privatevoice.src/frontend/node_modules.
  • Query example after regenerating graph from Git root: codebase-memory-mcp cli search_graph '{"project":"Users-ar-Projects-PrivateVoice-03-O","query":"model registry","limit":5}'.
  • This automatic graph is an exploration aid only; it does not replace source reading, tests, QA evidence, or this CODEGRAPH.md.
  • Refresh rule: regenerate .codebase-memory/ before each source freeze, version freeze, formal rollback-capable test package, or release package; daily Coder work-in-progress changes do not force a refresh.
  • Freeze record requirement: record the refresh command, .codebase-memory/artifact.json path, indexed commit, freeze commit, and whether the two commits match or differ only by .codebase-memory/ artifact updates.

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.