Skip to content

Commit 4def94e

Browse files
committed
chore(release): 0.6.0
Changelog for the review-fix cycle and the telemetry overhaul; version bumped in pyproject, SECURITY.md, and uv.lock.
1 parent d79743b commit 4def94e

4 files changed

Lines changed: 62 additions & 5 deletions

File tree

CHANGELOG.md

Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,63 @@ All notable changes to this project are documented here. The format is based on
44
[Keep a Changelog](https://keepachangelog.com/en/1.1.0/) and this project follows
55
[Semantic Versioning](https://semver.org/spec/v2.0.0.html).
66

7+
## [0.6.0] - 2026-07-11
8+
9+
### Added
10+
11+
- Anonymous crash reports: an unhandled exception sends the exception *type* and its code location
12+
inside photo-tagger (`module:function:line`), never the error message (messages can embed paths).
13+
Same opt-outs as the usage telemetry; capped per process. The one-time telemetry notice re-shows
14+
once for existing installs so the expanded disclosure is seen.
15+
- Telemetry now reports coarse hardware facts (CPU/GPU model, logical cores, RAM in whole GB; probed
16+
once and cached), per-run outcome counters (successes, failures, cache hits, retry recoveries,
17+
workers, token totals, model time, dry-run flag), and failure buckets (fixed labels like `timeout`
18+
or `metadata-write`) so breakage is measurable, not anecdotal.
19+
- The telemetry dashboard grew sections for adoption, usage, hardware & performance, and reliability
20+
& crashes, plus a global interface filter (all/CLI/GUI).
21+
- The inference cache prunes entries older than 180 days when it opens, so `cache.sqlite` stops
22+
growing forever (every settings change orphans its old namespace).
23+
- A short pause before the retry pass, so an overloaded model server is not immediately re-hit.
24+
25+
### Changed
26+
27+
- `--append-to-skip-file` records full paths instead of bare filenames, so duplicate camera names
28+
across folders (`A/IMG_0001.CR3`, `B/IMG_0001.CR3`) can no longer make a resumed run silently skip
29+
unprocessed photos. Old name-only skip files keep working.
30+
- Config-file values now pass through the same conversion and validation as CLI flags, so a mistyped
31+
value fails with a clean error at startup instead of a traceback mid-run.
32+
- Photos with identical pixel content in one concurrent run share a single model call instead of
33+
each paying their own.
34+
- CSV reports are written as `utf-8-sig` so Excel renders accented titles and keywords correctly.
35+
36+
### Fixed
37+
38+
- Passing any CLI flag from an option group no longer silently resets the group's other config-file
39+
values to built-in defaults (e.g. `--temperature` used to revert a configured `max_tokens`).
40+
- `--dry-run` no longer appends previewed photos to `--append-to-skip-file`, which made later real
41+
runs skip photos that never got metadata.
42+
- The description mirror is written to `XMP-tiff:ImageDescription`; the previous `XMP-exif` tag was
43+
silently rejected by ExifTool, so the mirror never reached the file.
44+
- Keyword capitalization no longer corrupts acronyms and apostrophes (`NYC` stays `NYC` instead of
45+
becoming `Nyc`; `bird's nest` no longer becomes `Bird'S Nest`).
46+
- One corrupt or zero-byte photo no longer makes the whole folder read as untagged (and get
47+
re-tagged): the batched ExifTool reads salvage the healthy files, and `--skip-tagged` and the
48+
GUI's Tagged column now distinguish "could not read" from "no metadata".
49+
- Windows: file locking works again (the PID note into the held lock file raised on every
50+
acquisition), and the batched metadata reads no longer miss every file over path-separator
51+
differences.
52+
- Ctrl-C during concurrent batch start-up is honored instead of grinding through every queued photo;
53+
never-submitted photos are reported as pending.
54+
- A single over-long or blank keyword from the model no longer burns the whole validation retry
55+
budget (full vision calls); items are cleaned instead.
56+
- GUI: streamed-in thumbnails no longer swallow the next grid click; a non-domain error during
57+
generation no longer leaves the window stuck in the running state; removing photos prunes the
58+
visible grid and thumbnail cache; bulk actions no longer kick you out of the photo or folder being
59+
reviewed.
60+
- The `gui` command only suggests installing the `[gui]` extra when PySide6/shiboken6 is actually
61+
missing; other import errors surface as themselves.
62+
- A failed cache initialization no longer leaks its SQLite connection.
63+
764
## [0.5.0] - 2026-07-09
865

966
### Added

SECURITY.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,10 @@ fix lands, it goes out as a new release on that line, so upgrading is how you ge
1818

1919
| Version | Supported |
2020
| -------------- | ------------------ |
21-
| 0.5.0 (latest) | :white_check_mark: |
22-
| < 0.5.0 | :x: |
21+
| 0.6.0 (latest) | :white_check_mark: |
22+
| < 0.6.0 | :x: |
2323

24-
The current release is 0.5.0. Upgrade with:
24+
The current release is 0.6.0. Upgrade with:
2525

2626
```bash
2727
uv tool upgrade photo-tagger

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[project]
22
name = "photo-tagger"
3-
version = "0.5.0"
3+
version = "0.6.0"
44
description = "CLI tool to describe photos and add keywords using AI"
55
readme = "README.md"
66
requires-python = ">=3.14,<4"

uv.lock

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)