Skip to content

Commit d0c2674

Browse files
docs: changelog for v0.17.0
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1 parent b7f10f5 commit d0c2674

File tree

2 files changed

+64
-0
lines changed

2 files changed

+64
-0
lines changed

CHANGELOG-v0.17.0.md

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
## [0.17.0] - 2026-04-17
2+
3+
Distribution is now one-click on Windows, macOS, and Linux. The Bibliogon launcher handles install, uninstall, Docker lifecycle, and update notifications without any terminal step.
4+
5+
### Added
6+
- **One-click launcher install and uninstall** across all three platforms (D-01, D-02, D-03). Folder picker, ZIP download, extraction, `docker compose up --build`, health check, browser open on install; confirmation, `compose down`, volume + image cleanup, directory removal on uninstall. No terminal required.
7+
- **Pending cleanup retry.** If uninstall is interrupted, the next launcher start silently retries each unfinished step via `cleanup.json`.
8+
- **Activity log with 1 MB rotation.** `install.log` in the platformdirs config dir records every launcher event.
9+
- **Auto-update check (D-04)** with three-button notification (Open release page / Dismiss / Don't check for updates). Background thread, silent on any failure.
10+
- **Settings dialog** with opt-out toggle. Persists to `settings.json`; fail-open on any corruption.
11+
- **macOS CI workflow (`launcher-macos.yml`)** — arm64 `.app` bundle, unsigned (requires Gatekeeper bypass on first launch).
12+
- **Linux CI workflow (`launcher-linux.yml`)** — 13 MB ELF binary via PyInstaller.
13+
- **`uninstall.sh`** — POSIX sh fallback for CLI-based uninstall.
14+
- **Distribution smoke test template** covering install.sh, all three launcher platforms, install/uninstall + cleanup retry + activity log, and `uninstall.sh`.
15+
16+
### Fixed
17+
- **install.sh VERSION pin** was hardcoded to `v0.7.0`. Fresh installs cloned the wrong code. Now pinned to the current release tag and updated during release prep.
18+
- **install.sh shallow clone update path** failed on Windows Git Bash. Replaced with delete-and-re-clone, preserving `.env`.
19+
- **Launcher lockfile NoneType crash** on Windows (`tasklist` returning `stdout=None`). Guard added plus fail-open wrapper.
20+
21+
### Changed
22+
- **manuscripta 0.8 → 0.9.0**, forcing:
23+
- **DEP-08 resolved:** Pillow 11 → 12 (manuscripta requires `>=12.0`)
24+
- **DEP-06 resolved:** pandas 2.3 → 3.0 (transitive, manuscripta requires `>=3.0`)
25+
26+
### Deferred
27+
- D-03a AppImage, D-05 Full Windows installer (user-demand triggers)
28+
- DEP-01 React 19, DEP-02 TipTap 3, DEP-03 react-router-dom 7, DEP-04 Vite 8 + TypeScript 6, DEP-05 elevenlabs 2.x, DEP-07 lucide-react 1.x (dedicated sessions)
29+
30+
### Pending manual smoke tests
31+
- [#2 Windows launcher](https://github.com/astrapi69/bibliogon/issues/2)
32+
- [#3 macOS `.app` bundle](https://github.com/astrapi69/bibliogon/issues/3)
33+
- [#4 Linux binary](https://github.com/astrapi69/bibliogon/issues/4)

docs/CHANGELOG.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,37 @@
22

33
Completed phases and their content. Current state in CLAUDE.md, open items in ROADMAP.md.
44

5+
## [0.17.0] - 2026-04-17
6+
7+
Distribution is now one-click on Windows, macOS, and Linux. The Bibliogon launcher handles install, uninstall, Docker lifecycle, and update notifications without any terminal step. Dependency currency restored with the manuscripta 0.9.0 upgrade.
8+
9+
### Added
10+
- **One-click launcher install (D-01, D-02, D-03).** The Windows `.exe`, macOS `.app` bundle (arm64), and Linux PyInstaller binary now handle the full distribution flow: folder picker, ZIP download from GitHub Releases, extraction, `.env` generation, `docker compose up --build -d`, health check, and browser open. No Git Bash or terminal required. Manifest at `install.json` tracks installation state; corrupt or missing file is treated as "not installed, show install UI". Tests: 142 launcher tests.
11+
- **One-click launcher uninstall.** Confirmation dialog, `docker compose down`, dynamic volume + image removal via `docker volume ls --filter name=bibliogon` / `docker images --filter reference=*bibliogon*`, directory removal, manifest deletion. All Docker operations are best-effort (no Docker running = skip that step, never abort). `uninstall.sh` script ships as the CLI-based alternative.
12+
- **Pending cleanup retry.** If uninstall is interrupted mid-flight (process killed, Docker locked files, power loss), the launcher writes `cleanup.json` at the start and marks each step `true` as it completes. On next launch, the launcher silently retries each step still marked `false`. A one-time warning fires only if `rmtree` still fails (the user may need to delete the directory manually).
13+
- **Activity log with rotation.** All launcher events (install, uninstall, Docker ops, errors) write to `install.log` in the platformdirs config dir via `RotatingFileHandler` (1 MB max, 1 backup). Legacy `launcher.log` under `APPDATA/Bibliogon/` is kept for backward compatibility.
14+
- **Auto-update check (D-04).** Background daemon thread polls `https://api.github.com/repos/astrapi69/bibliogon/releases/latest` on every launcher start, compares against the installed version in `install.json`, and shows a three-button dialog (Open release page / Dismiss / Don't check for updates) when a strictly newer release is available. All failures are silent (network, timeout, rate limit, malformed response). Stdlib-only (urllib + threading). 21 tests.
15+
- **Settings dialog with opt-out.** Settings button in the main launcher UI opens a dialog with an `auto_update_check` checkbox (default on). Persists to `settings.json` in the platformdirs config dir. The notification's "Don't check for updates" button also flips this setting. 17 tests covering defaults, corruption fallback, persistence, guard behavior.
16+
- **macOS CI workflow (D-02).** `launcher-macos.yml` runs on `macos-14`, generates `bibliogon.icns` via new `scripts/make_icns.py` + `iconutil`, builds the `.app` bundle from the cross-platform spec file, and produces `bibliogon-launcher-macos.zip` with SHA256. arm64-only for initial release; unsigned binary requires Gatekeeper bypass on first launch.
17+
- **Linux CI workflow (D-03).** `launcher-linux.yml` runs on `ubuntu-22.04`, installs `python3-tk` before PyInstaller, builds a 13 MB ELF binary from the same spec file. No source changes were needed; the spec file was already cross-platform aware.
18+
- **Distribution smoke test template.** `docs/manual-tests/distribution-smoke-test.md` now covers all 6 flows: install.sh, Windows launcher, launcher install/uninstall + cleanup retry + activity log, Linux binary, macOS .app, and `uninstall.sh`. GitHub issues #2, #3, #4 track the three pending platform smoke tests.
19+
20+
### Fixed
21+
- **install.sh VERSION pin** (`cfcac6f`). The default was hardcoded to `v0.7.0`, an ancient release where the Docker build architecture was fundamentally different (`build: ./backend` context vs. current `context: .`). Fresh installs via `curl | bash` were cloning the wrong code and hitting plugin-path failures. Now pinned to `v0.16.0` / `v0.17.0`, bumped during each release cycle (added to `release-workflow.md` Step 4).
22+
- **install.sh shallow clone update path** (`cfcac6f`). The "already installed, update" branch tried to surgically repair a shallow clone and failed on Windows Git Bash with "pathspec 'main' did not match". Replaced with delete-and-re-clone (preserving `.env` via a tempfile backup). Eliminates an entire class of git state edge cases.
23+
- **Launcher lockfile NoneType crash on Windows** (`21e218e`). `tasklist` returned `stdout=None` on a Windows locale edge case, which made `str(pid) in result.stdout` raise `TypeError` and blocked every launcher start. Guard added on line 79 plus a fail-open wrapper around the whole check in `__main__.py`. New lessons-learned entry: diagnostic and convenience features should always fail open.
24+
25+
### Changed
26+
- **manuscripta 0.8 -> 0.9.0**, which forced the `pillow` and `pandas` bumps:
27+
- **DEP-08 resolved:** Pillow 11 -> 12.2.0 (manuscripta 0.9.0 requires `pillow >=12.0`). Both bumped together since 0.9.0 won't resolve with Pillow 11.
28+
- **DEP-06 resolved:** pandas 2.3 -> 3.0.2 (transitive dep of manuscripta 0.9.0 requiring `pandas >=3.0`). tenacity 8.5 -> 9.1.4 came along as another transitive.
29+
- **Docker config directory layout under `%APPDATA%\bibliogon\`** (Windows) / `~/.config/bibliogon/` (Linux) / `~/Library/Application Support/bibliogon/` (macOS): the launcher now writes `install.json`, `install.log` (+ `.log.1` rotation), `cleanup.json` (only during interrupted uninstall), and `settings.json`.
30+
31+
### Deferred (still tracked)
32+
- D-03a AppImage for Linux (deferred; re-evaluate on missing-tkinter user reports)
33+
- D-05 Full Windows installer (deferred until user feedback shows install friction)
34+
- DEP-01 React 19, DEP-02 TipTap 3, DEP-03 react-router-dom 7, DEP-04 Vite 8 + TypeScript 6, DEP-05 elevenlabs SDK 2.x, DEP-07 lucide-react 1.x (all major bumps deferred to dedicated sessions)
35+
536
## [0.16.0] - 2026-04-16
637

738
Audiobook export is now robust against cancellation and live-updates during generation. Dependency currency restored across the stack.

0 commit comments

Comments
 (0)