-
Notifications
You must be signed in to change notification settings - Fork 0
lore
This history is based on the git log, release tags, and /Users/vriesd/projects/csv-align/CHANGELOG.md. For the current system layout, see CSV Align overview and architecture.
CSV Align began on 2026-04-07 with the initial commit, described as a CSV comparison desktop app. The same day, the project gained the Vite React frontend, Tauri desktop packaging, early Linux release compatibility work, desktop CSV file recognition, and a dark/light theme toggle with dark mode enabled by default.
The longest-standing product idea is already visible in this first day: compare two CSV files locally, choose how rows should align, and review differences in a desktop-friendly workflow. The dual app shape also appears immediately, with Rust doing the comparison work and a React frontend handling the workflow.
On 2026-04-08, v0.2.13 fixed mismatch classification for mapped columns and restored desktop CSV export through a native save dialog. On 2026-04-09, v0.2.16 replaced packed semicolon-style output with structured CSV export columns for keys, File A values, File B values, and mismatch details. On 2026-04-10, v0.2.17 added JSON-aware comparison so equivalent JSON payloads can match despite formatting or key-order differences.
One replaced feature is clear from 2026-04-09: v0.2.15 removed automatic suggested mappings from the frontend configure flow so column pairing became fully user-driven. Later releases reintroduced automation more conservatively as auto-pairing, with confidence filtering and key-first ordering.
On 2026-04-13, v1.0.0 simplified cleanup settings, strengthened normalization coverage, and smoothed navigation between file selection and configuration. From 2026-04-13 to 2026-04-15, the changelog shows a reliability arc through date normalization, nullish-key handling, unkeyed-row categories, and duplicate-key protections.
On 2026-04-15, v1.0.8 added save/load support for pair-order selections. On 2026-04-15, v1.0.15 added configure-step auto-pair controls built on conservative mapping confidence. On 2026-04-16, v1.0.19 added saved comparison snapshots that reopen completed results in read-only mode. On 2026-04-16, v1.0.27 added result-table sorting and search.
On 2026-04-18, v2.0.0 was the main compatibility boundary. It introduced the v2 snapshot format with on-disk version: 2, changed duplicate result wire values to duplicate_file_a, duplicate_file_b, and duplicate_both, moved the local web app to 127.0.0.1:3001, and collapsed the previous mapping request and response split into a single mapping DTO contract.
The same release modernized the stack to Rust edition 2024, React 19, Axum 0.8, TypeScript 5.8, and newer runtime dependencies. It also rebuilt backend internals around the shared session store, typed error handling, snapshot persistence modules, validation workflows, and a flatter comparison domain model.
On 2026-04-19, v2.1.0 rebuilt the frontend around the KINETIC design system with a dark broadcast-HUD presentation, bundled local fonts, and redesigned workflow, filter, summary, and results surfaces. On 2026-04-19, v2.1.3 finalized that direction by removing the theme toggle and light palette path, making the interface dark-only.
On 2026-04-20, v2.1.17 added standalone HTML results export. From 2026-04-20 through 2026-04-21, the releases repeatedly aligned the standalone report with the in-app review surface, including value-difference cards, expanded inspection panels, collapsed row presentation, and paired-value context.
On 2026-04-24, v2.1.37 added virtual JSON field mapping so object keys stored inside a CSV cell can be selected and compared. On 2026-04-28, v2.1.39 and v2.1.40 tightened cleanup-driven key matching and numeric equivalence. On 2026-04-29, v2.1.47 and v2.1.48 added and corrected decimal-rounding cleanup behavior.
This period made the comparison engine more tolerant of real-world CSV exports while keeping the raw displayed values stable in results and exports.
In 2026-05, flexible row-key matching became a major thread. On 2026-05-05, v2.1.51 added opt-in ** matching for variable key segments. From 2026-05-11 to 2026-05-12, v2.1.72 through v2.1.79 refined wildcard boundary behavior, candidate limits, shared anchors, case-sensitive normalization, and helper text.
In 2026-05, Linux distribution also grew quickly. On 2026-05-10, v2.1.64 added signed APT repository generation. On 2026-05-10, v2.1.67 added the hosted repository setup script. On 2026-05-20, v2.1.84 added RPM assets. On 2026-05-21, v2.1.85 and v2.1.86 hardened RPM packaging and authenticated APT setup with GPG-signed checksum sidecars.
On 2026-05-19, v2.1.81 through v2.1.83 added compact scoped search to the results table and kept standalone HTML reports aligned with that search behavior.
In 2026-06, the release pace slowed and the work shifted toward hardening. On 2026-06-13, v2.1.87 tightened desktop file handling, raw webview path exposure, snapshot reload responses, exact-match ordering, delimiter detection, and release gates. On 2026-06-14, v2.1.89 added stale snapshot metadata rejection, web-session cleanup, transport branch coverage, and artifact-gate hardening.
On 2026-06-15, v2.1.91 upgraded the dependency trail through TypeScript 6, thiserror 2, tower-http 0.7, and Tauri 2.11. On 2026-06-15, v2.1.92 deferred paired-value inspection panels until a row is opened. On 2026-06-17, v2.1.95 hardened large saved-snapshot reloads with an explicit route limit and reduced CSV upload copying.
As of 2026-07-01, the last 90 days contain 270 commits: 212 in 2026-04, 49 in 2026-05, and 9 in 2026-06. The tag history reaches 162 release tags through v2.1.95. The trajectory is a rapid April buildout, a May feature and packaging expansion, then a June stabilization pass.
For the numeric snapshot behind this trajectory, see by the numbers. For small repository details, see fun facts.