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

Lore

CSV Anonymizer's history is compact but busy: the repository started on 2026-06-17, moved through a desktop Electron shape on 2026-06-17, and settled into the current Rust/Tauri/React architecture by 2026-06-18. For the current source shape, see By the numbers and the overview.

Eras

First implementation, 2026-06-17

  • 2026-06-17: e45023d created the repository with Initial commit.
  • 2026-06-17: 09731b5 added the CSV data anonymizer application, including TypeScript CLI, server, core, tests, and a Vue UI.

This first era established the product idea: detect sensitive CSV data and produce safer output before sharing. Most current source files do not come from this exact shape, but the product vocabulary survived into README.md and the current workflow pages.

Desktop experiments, 2026-06-17

  • 2026-06-17: df8c614 refactored the project into a desktop Electron app.
  • 2026-06-17: fixes such as 223dede handled packaged CSV preview and anonymize failures.
  • 2026-06-17: 762651b prepared v1.0.0 desktop distribution assets.

The repository still contains historical packaged Electron artifacts under release/, which are intentionally excluded from By the numbers. The active desktop stack no longer uses this runtime.

Rust and Tauri consolidation, 2026-06-18

  • 2026-06-18: release commits had introduced the durable Rust/Tauri direction, including crates/csv-anonymizer-core, crates/csv-anonymizer-app, and src-tauri.
  • 2026-06-18: docs/rust-rewrite-plan.md recorded Rust for core logic, Tauri for the active desktop shell, and Vite for the production UI.
  • 2026-06-18: the old Bun/Electrobun/Vue runtime and TypeScript test surface were removed from the active release path, according to docs/rust-rewrite-plan.md.

This era created the source layout contributors work in today: shared core logic in crates/csv-anonymizer-core/src, desktop commands in src-tauri/src, and React UI code in frontend/src.

Product narrowing and detector expansion, 2026-06-30 to 2026-07-01

  • 2026-06-30: v1.0.56 narrowed the product surface to CSV file, Paste sample, and Quick by data type workflows.
  • 2026-06-30: v1.0.56 removed formal tabular, differential privacy aggregate, synthetic data, column role, DP budget ledger, and permanent release-readiness UI surfaces.
  • 2026-06-30: v1.0.59 replaced literal English-only header detection with a Unicode-normalized multilingual taxonomy and focused value validators.
  • 2026-07-01: docs/dependency-audit-followups.md recorded the stable Tauri 2.x dependency line and current audit state.
  • 2026-07-01: v1.0.63 became the current release point in the local history.

This era left the product smaller but deeper. The current wiki pages focus on the three supported workflows and the detector/reporting systems that support them.

Longest-standing features

Feature First seen Still active in
CSV analysis and anonymization 2026-06-17 crates/csv-anonymizer-core/src/service.rs, frontend/src/components/workflow/AnonymizerWorkflowView.tsx
Desktop packaging 2026-06-17 src-tauri/tauri.conf.json, .github/workflows/release.yml, docs/releasing.md
Release metadata checks 2026-06-17 scripts/check-release-metadata.mjs
Linux package metadata validation 2026-06-17 scripts/validate_linux_package_metadata.py, scripts/build_apt_repository.py
Shared CLI smoke path 2026-06-18 crates/csv-anonymizer-app/src/cli.rs, scripts/rust-smoke.mjs

These features have survived the most runtime churn. They also appear in the current churn table because release, packaging, and core contracts changed repeatedly during the 2026-06-17 to 2026-07-01 release sprint.

Deprecated and removed features

Feature or stack Introduced Removed or superseded Replacement
Vue and TypeScript-first app surface 2026-06-17 2026-06-18 React/Vite frontend in frontend/src plus Rust core in crates/csv-anonymizer-core/src
Electron desktop runtime 2026-06-17 2026-06-18 Tauri desktop shell in src-tauri/src
Bun/Electrobun release path 2026-06-17 2026-06-18 Tauri packaging and Node/Vite build path described in docs/rust-rewrite-plan.md
Formal tabular, DP aggregate, synthetic data, column roles, DP budget ledger, permanent release-readiness UI 2026-06-17 or 2026-06-18 era 2026-06-30 CSV file, Paste sample, and Quick by data type workflows

The removed privacy surfaces are important context for Security: the app reduces exposure in transformed source data, but it does not claim formal anonymity or differential privacy output.

Major rewrites

Date Rewrite Before After
2026-06-17 Desktop refactor First TypeScript implementation Electron desktop app
2026-06-18 Rust/Tauri rewrite Electron/Bun/Electrobun/Vue-era stack Rust core, Tauri shell, React/Vite frontend
2026-06-30 Detector rewrite Literal English-oriented header detection Unicode-normalized taxonomy in crates/csv-anonymizer-core/src/detection/header_taxonomy.json, validators in crates/csv-anonymizer-core/src/detection/validators.rs, and evidence in crates/csv-anonymizer-core/src/detection/privacy.rs

The detector rewrite is the most visible current-domain rewrite. It changed how headers, values, and evidence are represented without moving the product away from local deterministic detection.

Growth trajectory

  • 2026-06-17: repository creation and first app commits.
  • 2026-06-17: release packaging began early, with desktop distribution assets and Linux package scripts.
  • 2026-06-18: the Rust workspace gained crates/csv-anonymizer-core, crates/csv-anonymizer-app, and src-tauri.
  • 2026-06-18 to 2026-07-01: tags advanced from v1.0.1 to v1.0.63.
  • 2026-06-30 to 2026-07-01: product scope narrowed, detection coverage grew, dependency audits were documented, and the current release line settled around Tauri 2.x.

The current codebase is young, so its history reads more like a launch sprint than a multi-year migration. The useful lesson is not age, it is the boundary that survived the churn: keep privacy-sensitive logic in the Rust core, keep desktop authority in Tauri, and keep workflow state visible in React.

Clone this wiki locally