-
Notifications
You must be signed in to change notification settings - Fork 0
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.
- 2026-06-17:
e45023dcreated the repository withInitial commit. - 2026-06-17:
09731b5added 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.
- 2026-06-17:
df8c614refactored the project into a desktop Electron app. - 2026-06-17: fixes such as
223dedehandled packaged CSV preview and anonymize failures. - 2026-06-17:
762651bpreparedv1.0.0desktop 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.
- 2026-06-18: release commits had introduced the durable Rust/Tauri direction, including
crates/csv-anonymizer-core,crates/csv-anonymizer-app, andsrc-tauri. - 2026-06-18:
docs/rust-rewrite-plan.mdrecorded 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.
- 2026-06-30:
v1.0.56narrowed the product surface to CSV file, Paste sample, and Quick by data type workflows. - 2026-06-30:
v1.0.56removed formal tabular, differential privacy aggregate, synthetic data, column role, DP budget ledger, and permanent release-readiness UI surfaces. - 2026-06-30:
v1.0.59replaced literal English-only header detection with a Unicode-normalized multilingual taxonomy and focused value validators. - 2026-07-01:
docs/dependency-audit-followups.mdrecorded the stable Tauri 2.x dependency line and current audit state. - 2026-07-01:
v1.0.63became 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.
| 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.
| 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.
| 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.
- 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, andsrc-tauri. - 2026-06-18 to 2026-07-01: tags advanced from
v1.0.1tov1.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.