Skip to content

how to contribute debugging

Douwe de Vries edited this page Jul 1, 2026 · 1 revision

Debugging

Use this page for common failure areas in the Tauri desktop app, contract boundary, Local AI path, and release tooling. See Testing for the commands that verify fixes.

Tauri command is not registered

Symptoms:

  • The frontend wrapper in frontend/src/tauri.ts rejects with an invoke error.
  • A capability permission exists, but the command never reaches Rust.
  • Browser fallback works, while the desktop app does not.

Check:

  1. The command is included in src-tauri/src/tauri_command_list.rs.
  2. The command function is exported through src-tauri/src/commands.rs and its submodule.
  3. src-tauri/src/main.rs uses tauri_command_list!(generate_tauri_handler).
  4. src-tauri/capabilities/default.json includes the generated allow-* permission.
  5. frontend/src/tauri.ts calls the exact snake_case command name.

Run:

cargo test -p csv-anonymizer-tauri
npm run frontend:test

Rust and TypeScript contracts drifted

Symptoms:

  • npm run contracts:check reports missing enum variants or struct fields.
  • Frontend code sees undefined fields after a Rust response changes.
  • Rust serialization tests pass, but TypeScript interfaces were not updated.

Check:

  • Rust DTOs in crates/csv-anonymizer-core/src/types.rs.
  • Frontend mirrors in frontend/src/types.ts.
  • Tauri request wrappers in frontend/src/tauri.ts.
  • Command request structs in src-tauri/src/commands/csv.rs and src-tauri/src/commands/job_commands.rs.

Run:

npm run contracts:check
npm run test

Add targeted serialization tests when optional fields, defaults, or serde casing changed.

File access grants fail

Symptoms:

  • A command returns "File access has not been granted".
  • Manual paths fail while paths selected through Browse work.
  • Output opening fails after a successful transform.

Check:

  • src-tauri/src/path_access.rs grants canonical input files and normalized output files.
  • src-tauri/src/commands/shared.rs confirms manually typed input and output paths with a dialog.
  • Existing output leaves must be regular files, not symlinks or directories.
  • Output suffixes must not contain separators or control characters.

Use Browse in the UI to create a grant, or confirm manual access when the Tauri dialog appears. For output issues, verify the parent directory exists and the leaf is not a symlink.

Local AI or Ollama is not ready

Symptoms:

  • Smart replacement is blocked by preflight.
  • The status says Ollama is not running.
  • The model download job fails or remains unavailable.

Check:

  • src-tauri/src/local_ai/mod.rs fixes the endpoint at http://127.0.0.1:11434.
  • src-tauri/src/local_ai/ollama.rs checks /api/version and /api/tags.
  • The default model is gemma3:4b, unless settings selected another model.
  • src-tauri/src/local_ai/download.rs streams /api/pull progress and supports cancellation.
  • Smart replacement validates Local AI output in crates/csv-anonymizer-core/src/smart.rs.

Run:

npm run frontend:test
cargo test -p csv-anonymizer-tauri local_ai
cargo test -p csv-anonymizer-core smart

Frontend build or prebuilt frontend check fails

Symptoms:

  • Tauri build cannot find frontend/dist.
  • CSV_ANONYMIZER_USE_PREBUILT_FRONTEND=1 fails.
  • The prebuilt check reports a missing index.html or CSS asset.

Check:

  • scripts/build_frontend_for_tauri.sh validates frontend/dist/index.html and non-empty CSS files under frontend/dist/assets.
  • scripts/check-tauri-prebuilt-frontend.sh intentionally removes frontend/dist and a CSS asset to prove the guard fails when it should.
  • src-tauri/tauri.conf.json points frontendDist at ../frontend/dist.

Run:

npm run frontend:build
npm run tauri:prebuilt:check

Package metadata validation fails

Symptoms:

  • npm run release:check fails before a tag.
  • Linux package metadata validation fails for .deb or .rpm.
  • The APT installer or repository check fails.

Check:

  • Version sync in package.json, frontend/package.json, frontend/package-lock.json, Cargo.toml, and src-tauri/tauri.conf.json.
  • Changelog and metainfo release date sync in CHANGELOG.md and build/linux/io.github.ddv1982.csv-data-anonymizer.metainfo.xml.
  • Required icon entries in src-tauri/tauri.conf.json.
  • Desktop template expectations in build/linux/csv-anonymizer.desktop.hbs and src-tauri/tauri.linux.conf.json.
  • Linux package metadata extraction in scripts/validate_linux_package_metadata.py.
  • APT repository and installer checks in scripts/check-apt-repository.mjs and scripts/check-apt-installer.mjs.

Run:

npm run release:check
npm run linux:package-manager:check

See Deployment before changing release workflows or signing inputs.

Clone this wiki locally