50 Commits
Author SHA1 Message Date
MarekWoandClaude Opus 5.5 51ba773c12 chore: open 2.20.0 development
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:13:26 +01:00
MarekWoandClaude Opus 5.5 8dc9d7be74 chore(release): finalize 2.19.0
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-31 13:13:02 +01:00
MarekWoandClaude Opus 5.5 3b06786981 chore: open 2.19.0 development
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:08:25 +02:00
MarekWoandClaude Opus 5.5 85ce680eec chore(release): finalize 2.18.3
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-02 21:08:10 +02:00
MarekWoandClaude Opus 5 1528082cd6 chore: open 2.19.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 18:20:37 +02:00
MarekWoandClaude Opus 5 2d75cbe39f chore(release): finalize 2.18.2
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-12 18:20:09 +02:00
MarekWoandClaude Opus 5 db209e4270 chore: open 2.19.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 08:52:11 +02:00
MarekWoandClaude Opus 5 59799068a6 chore(release): finalize 2.18.1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-11 08:51:04 +02:00
MarekWoandClaude Opus 5 f438ba3839 chore: open 2.19.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 18:58:41 +02:00
MarekWoandClaude Opus 5 b262500df1 chore: release 2.18.0
Also restores the "## 2.17.0" heading over its entries. That release was
titled on main only, so on dev its content was still sitting under
Unreleased and would have been republished as part of 2.18.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-09 18:56:49 +02:00
MarekWoandClaude Opus 5 b1f1992bd8 chore: open 2.18.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 13:14:27 +02:00
MarekWoandClaude Opus 5 fb4159ca14 chore(release): finalize 2.17.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 13:14:00 +02:00
MarekWoandClaude Opus 5 963acb9fed chore: open 2.17.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 07:43:34 +02:00
MarekWoandClaude Opus 5 f566caab4a chore(release): finalize 2.16.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-07 07:43:05 +02:00
MarekWoandClaude Opus 5 2afa9c182b chore: open 2.16.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-05 15:03:19 +02:00
MarekWoandClaude Opus 5 2d0c1bd01b chore(release): finalize 2.15.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-05 15:02:54 +02:00
MarekWoandClaude Opus 5 636dce70a1 chore: open 2.15.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 21:12:54 +02:00
MarekWoandClaude Opus 5 8403da3ca7 chore(release): finalize 2.14.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-02 21:12:22 +02:00
MarekWoandClaude Opus 5 3ea543eb7d chore: open 2.14.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-30 21:25:28 +02:00
MarekWoandClaude Opus 5 dba48ca2b8 chore(release): finalize 2.13.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-30 21:24:57 +02:00
MarekWoandClaude Opus 5 98f2afff7e chore: open 2.13.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 16:04:38 +02:00
MarekWoandClaude Opus 5 0c4b402dd5 chore(release): finalize 2.12.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-27 16:03:58 +02:00
MarekWoandClaude Opus 5 b5e5c69faf chore: open 2.12.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 08:26:33 +02:00
MarekWoandClaude Opus 5 9298a1720e chore(release): finalize 2.11.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-20 08:25:49 +02:00
MarekWoandClaude Opus 5 ab4e5f9a6e chore: open 2.11.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 15:56:53 +02:00
MarekWoandClaude Opus 5 dda56ab75b chore(release): finalize 2.10.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-19 15:56:13 +02:00
MarekWoandClaude Opus 5 8f3e04ae80 chore: open 2.10.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 13:04:14 +02:00
MarekWoandClaude Opus 5 9cadd067c5 chore(release): finalize 2.9.1
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 12:19:12 +02:00
MarekWoandClaude Opus 5 e848bc16a4 chore: open 2.10.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 10:53:33 +02:00
MarekWoandClaude Opus 5 4b89a02364 chore(release): finalize 2.9.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-14 10:52:31 +02:00
MarekWo e6497e31dd chore: open 2.9.0 development 2026-08-13 07:08:04 +02:00
MarekWoandClaude Opus 5 38dddf0ace chore(release): finalize 2.8.0
Drop the -dev suffix and date the pending whatsnew section. Also record the
two repeater path-wrapping fixes (31729fd, 8224128), which landed after the
docs pass and had no user-facing entry yet.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 07:07:38 +02:00
MarekWoandClaude Opus 5 92ff649984 chore: open 2.8.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 16:23:31 +02:00
MarekWoandClaude Opus 5 70e5238cfb chore(release): finalize 2.7.0
Also documents the two behaviours the release adds to Resend that only
whatsnew had covered: the stale-message confirmation, and that a resend
now repairs a message left with no delivery badge.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-07 16:22:47 +02:00
MarekWoandClaude Opus 5 75080de12e chore: open 2.7.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_0187QpThw1Y8n7aYDjHtMHax
2026-08-03 09:10:46 +02:00
MarekWoandClaude Opus 5 307eafade3 chore(release): finalize 2.6.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>

Claude-Session: https://claude.ai/code/session_0187QpThw1Y8n7aYDjHtMHax
2026-08-03 09:09:53 +02:00
MarekWoandClaude Opus 5 63f3784df5 chore: open 2.6.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 07:42:15 +02:00
MarekWoandClaude Opus 5 a958a74920 chore(release): finalize 2.5.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-03 07:41:44 +02:00
MarekWoandClaude Opus 5 4460219a19 chore: open 2.5.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 13:08:16 +02:00
MarekWoandClaude Opus 5 44d14d7c34 chore(release): finalize 2.4.2
Only a fix since 2.4.1, so PATCH per the project's SemVer rule.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 13:07:36 +02:00
MarekWoandClaude Opus 5 569e519007 chore: open 2.5.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 09:38:53 +02:00
MarekWoandClaude Opus 5 6e180e8d45 chore(release): finalize 2.4.1
Only fixes since 2.4.0, so PATCH per the project's SemVer rule.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-31 09:37:08 +02:00
MarekWoandClaude Opus 5 dc685348f9 chore: open 2.5.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 21:17:05 +02:00
MarekWoandClaude Opus 5 8695017af5 chore(release): 2.4.0
Also corrects the app-vs-PWA table in the user guide: it claimed QR
scanning and file downloads were unavailable in the Android app, which
contradicted the Android App guide from the start - both have always
worked there.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-29 21:16:18 +02:00
MarekWoandClaude Opus 5 6ecdfd6033 chore: open 2.4.0 development
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 21:21:29 +02:00
MarekWoandClaude Opus 5 f6e427be5d chore(release): 2.3.0
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-28 21:19:13 +02:00
MarekWoandClaude Opus 5 0c10640e28 chore: open 2.3.0 development
Marks dev as ahead of the 2.2.0 release, so tester builds report
2.3.0-dev instead of claiming to be the released version. The final
number is decided when the release is cut - a cycle that turns out to
carry only fixes ships as 2.2.1 instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 12:13:17 +02:00
MarekWoandClaude Opus 5 0fc73ec760 chore(release): 2.2.0
Drop the -dev suffix and date the whatsnew section so release.sh can find
its notes. Also make the build-string example in the whatsnew header read
as an example, instead of naming one particular build that goes stale the
moment it ships.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-27 12:11:55 +02:00
MarekWoandClaude Opus 5 9899f58ae7 chore: open 2.2.0 development
Marks dev as ahead of the 2.1.0 release, so tester builds report
2.2.0-dev instead of claiming to be the released version. The final
number is decided when the release is cut - a cycle that turns out to
carry only fixes ships as 2.1.1 instead.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 19:57:13 +02:00
MarekWoandClaude Opus 5 4c6857a00f feat: numbered releases (2.1.0) with git tags and GitHub releases
The app already knew exactly which build was running - a calendar version
of commit date plus short hash - but nothing gave a release a name users
could quote, and the repo had no tags at all.

Adds a VERSION file as the single source of truth for a SemVer release
number, read by app/version.py alongside the existing build string rather
than replacing it: the number is for people, the build is for pinning down
a deploy, and both ship in /api/version and the template context. The menu
shows the release first with the build underneath. #versionText still holds
the build string, because the remote-update poller compares it to detect
that the server came back on a new build.

Resolution order is unchanged (frozen file > git > fallback), and a frozen
file written before this change still yields a correct release number, so
an already-deployed server does not need re-freezing to stay sane. The
container has no git, hence COPY VERSION into the image - otherwise a plain
'docker compose build' reports 0.0.0.

scripts/release.sh cuts a release from main: it refuses a dirty tree, a
wrong branch, a malformed number or an existing tag, extracts the notes
from the matching whatsnew section, then tags, pushes and publishes via gh.

Numbering starts at 2.1.0 rather than 1.x: the v2 line has been in
production since March and 'v1' is the archived pre-migration branch, so
1.x would have been ambiguous. Sections in whatsnew before 2.1.0 keep
their date-only headings - they were never tagged.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-07-26 19:20:57 +02:00