# 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-249] - 2026-10-31 - 02:49

### Added

- The explainer shows the app: a screenshot of the real window with an invented sample letter open and two passages (a name and a Medicare number) marked for redaction.

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

### Added

- The explainer site is published: <https://pdf-redactor.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/pdf-redactor`, 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 (the file argument, wheel and Ctrl+wheel zoom, drag) and Development.

### 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**: PEP 621 `[project]`, `uv_build` backend (flat layout), a `pdf-redactor` script entry point, `requires-python = ">=3.12"`, `.python-version` 3.12, `uv.lock`; `poetry.lock` removed. Authorship set to Arziel.
- Dependencies moved to their current releases: PyMuPDF 2.0 (from 1.26) and Pillow 13.0 (from 11.2). Redaction verified on PyMuPDF 2.0 (a searched word is removed by `apply_redactions`; pages still render).
- `import fitz` replaced by `import pymupdf as fitz`: PyMuPDF 2 deprecates the `fitz` name.
- README rewritten to match the app: it advertised a **Print** button that does not exist and missed Save as, Undo / Redo, Redact all and zoom; install and run through uv.

### Added

- README `## Privacy & security`: no network requests; the file is rewritten whole on save (`garbage=4`), so earlier incremental revisions do not survive; document metadata and attachments are **not** edited.

### 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 (`e76b074`)
- 2026-06-30 — Add markdownlint config (house standard) (`23a51da`)
- 2026-06-29 — Add house logo.svg (`3835616`)
- 2025-06-10 — KISS for the UI, swapped PRINT with SAVE AS (`51b7194`)
- 2025-06-10 — Remove text selection mode, improve UI with rounded styling, fix scroll behavior, and update print functionality to show OS print dialog. (`5b265de`)
- 2025-06-10 — Add undo/redo functionality, polish UI with rounded corners and centering, and implement zoom controls with mouse wheel support. (`c85d4ce`)
- 2025-06-10 — Text select fix (`3d576e5`)
- 2025-06-10 — Add text selection mode toggle, black redaction color, persistent selections across pages, and modern Bootstrap-style UI. (`158c7ab`)
- 2025-06-10 — Baseline (`bac5a27`)
