Two recon findings from the reset work, fixed properly (whole class + tests +
docs), plus the destructive reset path is now exercised end-to-end.
1. ~/.config/omnivoice/env survived every uninstall. The app persists the
model-cache location (and a possible HF_TOKEN) there via
backend/core/user_env.py, but the in-app "Remove all data" (uninstall.rs),
uninstall.sh, and uninstall.ps1 all walked past it — so a reinstall silently
inherited the old file and redirected downloads to a maybe-deleted location.
All three now remove it. It's the same expanduser("~/.config/omnivoice/env")
path on every OS, so the Windows script uses %USERPROFILE%\.config\omnivoice.
is_recognizably_ours accepts it (contains "omnivoice"); docs tables updated.
2. Disk usage measured the wrong engines dir. storage_report.default_engines_dir()
returned backend/engines (built-in engine *modules*, no venvs), while sidecar
installs live in DATA_DIR/engines/<id>. So a multi-GB IndexTTS-2 install was
invisible in the engine-venv category and rolled into data/"other". Now points
at DATA_DIR/engines and sizes the WHOLE install (venv + checkout + weights),
with the data category claiming that subtree so it isn't double-counted.
Reset hardening: extracted purge_scopes() as a pure fs function (no AppHandle),
so the actual delete loop runs in tests against a real on-disk install tree —
"everything" wipes the install but spares the venv/foreign temp/sibling folders,
a settings reset keeps content+config+models, and a poisoned data_dir="$HOME"
deletes NOTHING. This is the live drive-through of the destructive path, minus
the GUI.
Also: gitignore the node_modules symlink form (the directory rule node_modules/
never matched a worktree symlink, so it kept slipping into commits).
Tests: Rust 78 (6 new), storage_report 20 (2 new incl. once-not-twice count +
default-dir guard), frontend 1207, i18n probe green, format+lint clean.
Co-authored-by: mergetest <nizam4103@gmail.com>
138 lines
7.3 KiB
Plaintext
138 lines
7.3 KiB
Plaintext
# ─────────────────────────────────────────────────────────────────────────
|
|
# Python
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
__pycache__/
|
|
*.pyc
|
|
*.pyo
|
|
*.so
|
|
*.egg
|
|
*.egg-info/
|
|
.venv/
|
|
.pytest_cache/
|
|
.mypy_cache/
|
|
.ruff_cache/
|
|
dist/
|
|
build/
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# Node / Turborepo / Tauri
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
node_modules/
|
|
node_modules
|
|
.turbo/
|
|
bun.lockb
|
|
frontend/src-tauri/target/
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# Secrets & env
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
.env
|
|
.env.local
|
|
.env.*.local
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# OS junk
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
.DS_Store
|
|
Thumbs.db
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# Editor / tool caches
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# Ignore ad-hoc Claude Code state, but allow project-bundled skills
|
|
# (CLAUDE.md invites `.claude/skills/<name>/SKILL.md`).
|
|
.claude/*
|
|
!.claude/skills/
|
|
!.claude/skills/**
|
|
/.cache*
|
|
/.tmp/
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# Research clones — upstream repos used as reference, not shipped
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
research/
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# Runtime data & artifacts
|
|
# (app-local state — safe to regenerate)
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
omnivoice_data/
|
|
/data/
|
|
/local/
|
|
/results/
|
|
/download
|
|
/run*
|
|
*.db
|
|
*.db-shm
|
|
*.db-wal
|
|
*.log
|
|
*.wav
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# Frozen regression fixture (GATE-01) — explicit allow-list.
|
|
# The patterns above (omnivoice_data/, *.db, *.wav) would otherwise hide
|
|
# tests/fixtures/omnivoice_data/ from git. Phase 0 requires this fixture
|
|
# to be checked in (no LFS) so every PR's smoke matrix loads it.
|
|
#
|
|
# We only un-ignore the EXACT files the seed script produces. The backend
|
|
# creates runtime subdirs (dub_jobs/, outputs/, preview/, etc.) when the
|
|
# smoke test boots — those stay ignored.
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
!tests/fixtures/omnivoice_data/
|
|
!tests/fixtures/omnivoice_data/README.md
|
|
!tests/fixtures/omnivoice_data/omnivoice.db
|
|
!tests/fixtures/omnivoice_data/voices/
|
|
!tests/fixtures/omnivoice_data/voices/test-voice/
|
|
!tests/fixtures/omnivoice_data/voices/test-voice/profile.json
|
|
!tests/fixtures/omnivoice_data/voices/test-voice/sample.wav
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# Bundled demo assets (synthetic, rendered by scripts/build_demos.sh).
|
|
# Ship with the installer so first-run users have working demos before any
|
|
# model weights download. *.wav above would hide these.
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
!backend/assets/samples/**/*.wav
|
|
!backend/assets/samples/*.wav
|
|
*.jsonl
|
|
demo_recording.webp
|
|
cloudflared
|
|
cloudflared.tgz
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# Reference / experiment scratch
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
/exp*/
|
|
example.py
|
|
examples/data*
|
|
examples/download*
|
|
examples/exp*/
|
|
omnivoice.zip
|
|
frontend/src-tauri/binaries/ffmpeg
|
|
|
|
# cuDNN 8 compat libs (auto-installed by scripts/setup_cudnn.py)
|
|
cudnn8_compat/
|
|
test-results/
|
|
|
|
# Research repos (local only)
|
|
research/
|
|
!.planning/research/
|
|
!.planning/research/**
|
|
marketing.md
|
|
.coverage
|
|
/engines/
|
|
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
# Local planning tooling (Spec Kit / GSD) — not part of OmniVoice.
|
|
# NOTE: .claude/skills/omnivoice/ (the MCP skill) IS tracked — only the
|
|
# speckit-* helper skills + .specify config are ignored.
|
|
# ─────────────────────────────────────────────────────────────────────────
|
|
.specify/
|
|
.claude/skills/speckit-*/
|
|
.antigravitycli/
|
|
|
|
playwright-report/
|
|
.last-run.json
|
|
|
|
# probe — generated HTML reports
|
|
tests/probe/reports/
|