# Changelog

All notable changes are documented here, newest first. Entries use the timestamp scheme
`[YYYY.M.D-HHMM] - YYYY-MM-DD - HH:MM`.

## [2026.10.31-117] - 2026-10-31 - 01:17

### Added

- The explainer site is published: <https://railway-geometry-visualiser.niftylittletools.dev/> (GitLab Pages, built from `explainer/` by the new `.gitlab-ci.yml`), its `site` set for canonical links and the sitemap, and the README's **Live:** line.

## [2026.10.30-1844] - 2026-10-30 - 18:44

### Changed

- Repository: `gitlab.com/nifty-little-tools/desktop-apps/railway-geometry-visualiser`, in the README and the explainer.

## [2026.10.29-1959] - 2026-10-29 - 19:59

### Documentation

- README to the workspace structure (`_templates/README.md`): the key line, Parameters/Flags (every sidebar input with its default and range) and Development; the two buttons are named as the app names them.

### Fixed

- `uv.lock` had recorded an older version of the project itself, which `uv sync --locked` refuses; relocked (one line, no dependency changed). `check_conformance.py` now checks it.

## [2026.10.28-2156] - 2026-10-28 - 21:56

### Added

- **Explainer site** (`explainer/`, global §11): a static Astro page in the house Cyanotype style that says what the app is, what it does, how to run it, and its privacy terms, written from this README. It is light by default with its theme remembered, has a toggleable intro and the privacy notice, and loads nothing from a third party. Built from the workspace's shared template (`_explainer/`), copied unchanged and checked by `check_conformance.py`; only `src/site.js` (its words) is this tool's own. It is published once the tool's domain is chosen (plan Phase 8). The README gains an "Explainer site" section.

## [2026.10.26-1842] - 2026-10-26 - 18:42

### Changed

- Migrated from Poetry to **uv**: `uv_build` backend (src layout), `requires-python = ">=3.12"` (from >=3.13: nothing here needs 3.13), `.python-version` 3.12, `uv.lock`; `poetry.lock` removed. Authorship set to Arziel.
- Dependencies moved to their current releases: streamlit 1.66.1, matplotlib 3.11.2, numpy 2.5.4. Verified: the app starts headless and `/_stcore/health` answers `ok`.

### Added

- `README.md` (it was empty): what the app shows, features, install, usage, privacy.
- `.streamlit/config.toml`: `gatherUsageStats = false` (Streamlit sends usage statistics by default) and `server.address = "localhost"` (by default it listens on every interface and looks up your public IP from an outside service). Both checked both ways: without the file Streamlit reports `gatherUsageStats = true` and a Network and External URL; with it, only `http://localhost`.

### Security

- `pip-audit` over the new lockfile: no known vulnerabilities.

## [2026.10.26-1813] - 2026-10-26 - 18:13

### Changed

- `.gitattributes` normalising line endings to LF (`* text=auto eol=lf`) and marking binaries.

## Before this changelog

Reconstructed from `git log` (commit date, subject, hash):

- 2026-10-26 — Add AGPL-3.0 LICENSE (`ee92526`)
- 2026-06-30 — Add markdownlint config (house standard) (`eef7f3f`)
- 2026-06-29 — Add house logo.svg (`1a8c58b`)
- 2025-12-17 — User Guide tab (`d8d4c75`)
- 2025-12-17 — Visual zoom fix (`e7e1ff2`)
- 2025-12-17 — Baseline (`bd4c674`)
