diff --git a/CHANGELOG.md b/CHANGELOG.md index 46ceb3b..ab600a2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,8 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version ## [Unreleased] +## [2.1.0] - 2026-10-12 + ### Security - **The level-2 rate limit and an application's client IP list held only for diff --git a/README.md b/README.md index feca2ab..539ed09 100644 --- a/README.md +++ b/README.md @@ -112,7 +112,7 @@ docker run --rm -d --name selfpost-try \ -e SELFPOST_HOSTNAME=mail.local.test \ -e PANEL_COOKIE_SECURE=false \ -v selfpost-try-data:/data \ - ghcr.io/mixeme/selfpost:2.0.1 + ghcr.io/mixeme/selfpost:2.1.0 ``` **Get the setup URL** (pick one): diff --git a/deploy/docker-compose.yml b/deploy/docker-compose.yml index b3d4bd6..993b2d1 100644 --- a/deploy/docker-compose.yml +++ b/deploy/docker-compose.yml @@ -21,7 +21,7 @@ services: selfpost: - image: ghcr.io/mixeme/selfpost:2.0.1 + image: ghcr.io/mixeme/selfpost:2.1.0 restart: unless-stopped environment: SELFPOST_HOSTNAME: "${SELFPOST_HOSTNAME:?set the mail/panel hostname, e.g. mail.example.com}" diff --git a/docs/development.md b/docs/development.md index d120aad..26e05cc 100644 --- a/docs/development.md +++ b/docs/development.md @@ -107,7 +107,7 @@ than the default «meaningful step» rule in [§ Commits and release build](#com 2. Git tag `vX.Y.Z` and publish the GitHub Release only on explicit request (see [§ Release image](#release-image)). -**Planned version cuts** (from pin `2.0.1`; adjust if semver changes mid-track): +**Planned version cuts** (from pin `2.1.0`; adjust if semver changes mid-track): | Stage | ID | Cut | |---|---|---| @@ -125,7 +125,7 @@ than the default «meaningful step» rule in [§ Commits and release build](#com | 12 | GHCR release fix: keep per-arch images, sweep orphaned versions (CI only) | `1.9.5` (PATCH) | | 13 | panel-redesign | `2.0.0` (MAJOR, no compatibility) | | 14 | DMARC ingest drops and bounds, full backup from the panel, no queue in a backup | `2.0.1` (PATCH) | -| 15 | inbound-antispam-panel | `2.1.0` (planned; was `1.10.0`, reordered 2026-10-09) | +| 15 | inbound-antispam-panel | `2.1.0` (was `1.10.0`, reordered 2026-10-09) | Docs-only prep (checklists in plans, no product code) uses the same per-step commit rule but **no** version cut until the next product stage ships. diff --git a/docs/guide.md b/docs/guide.md index caf310c..04bd601 100644 --- a/docs/guide.md +++ b/docs/guide.md @@ -183,7 +183,7 @@ cat ./data/setup-token #### Fixed image tag `deploy/docker-compose.yml` pins an explicit version (`ghcr.io/mixeme/selfpost:X.Y.Z`), -deliberately never `:latest`. The current pin is `2.0.1`. Intermediate +deliberately never `:latest`. The current pin is `2.1.0`. Intermediate CHANGELOG sections (`0.2.0`…`0.6.0`) record development cuts from before that image was published. Pinning matters because of the backup version check (see [Full backup and restore](#full-backup-and-restore)): the panel binary's diff --git a/docs/plans/inbound-antispam-panel.md b/docs/plans/inbound-antispam-panel.md index 9c13b4c..0a4ebf0 100644 --- a/docs/plans/inbound-antispam-panel.md +++ b/docs/plans/inbound-antispam-panel.md @@ -1,6 +1,6 @@ # Plan: inbound-antispam-panel -**Status:** agreed +**Status:** shipped in `2.1.0` (2026-10-12) **Date:** 2026-08-19 **Version:** `2.1.0` MINOR (opt-in; no change to outbound-only or inbound-without-filter paths). Was `1.10.0`; on 2026-10-09 the owner put the panel redesign first, so this ships on the 2.0 baseline and its screens are built from the redesign's component kit ([panel-redesign.md](panel-redesign.md) § Component kit). diff --git a/docs/roadmap.md b/docs/roadmap.md index 763b540..80a20b4 100644 --- a/docs/roadmap.md +++ b/docs/roadmap.md @@ -30,7 +30,7 @@ in `git log` and [CHANGELOG.md](../CHANGELOG.md). |---|---|---|---|---| | preflight | Installation check page (`/preflight`) | candidate | — | [plans/preflight.md](plans/preflight.md) | | contributing | `CONTRIBUTING.md` | candidate | — | — | -| inbound-antispam-panel | Inbound antispam journal + allow/deny lists | in progress | 12/12 | [plans/inbound-antispam-panel.md](plans/inbound-antispam-panel.md) | +| inbound-antispam-panel | Inbound antispam journal + allow/deny lists | shipped `2.1.0` | 12/12 | [plans/inbound-antispam-panel.md](plans/inbound-antispam-panel.md) | | inbound-quarantine | Inbound spam quarantine (hold / review / release) | candidate | — | [plans/inbound-quarantine.md](plans/inbound-quarantine.md) | | csrf-tokens | Per-session CSRF tokens on state-changing forms | candidate | — | — | | template-data-typing | Typed structs for template data instead of `map[string]any` | candidate | — | — | @@ -44,9 +44,10 @@ in `git log` and [CHANGELOG.md](../CHANGELOG.md). | schema-squash | Squash SQLite migrations into a 2.x baseline | built in panel-redesign (stage 1) | — | [plans/panel-redesign.md](plans/panel-redesign.md) | **Recommended order** (not binding; owner, 2026-10-09: feature order follows -development convenience): **panel-redesign** shipped as `2.0.0` (2026-10-11); the next stage is -**inbound-antispam-panel** (`2.1.0`), built in the new component kit — -styling its two screens once instead of twice. panel-docs shipped in +development convenience): **panel-redesign** shipped as `2.0.0` (2026-10-11) and +**inbound-antispam-panel** as `2.1.0` (2026-10-12), built in the new component +kit — styling its two screens once instead of twice. Nothing is agreed after +it: every remaining item is a candidate. panel-docs shipped in [CHANGELOG.md](../CHANGELOG.md) `[1.8.0]`; dmarc-reports in `[1.7.0]` (its ingest path first ran in `2.0.0` and was reviewed on 2026-10-11, see [security.md](security.md)); domain-stats-auto-ratelimit in @@ -135,7 +136,7 @@ hook is set. **Dependencies / risks:** inbound relay `[1.4.0]`; rspamd map/header coupling; journal PII; global-admin-only RBAC. -**Version:** `2.1.0` MINOR (was `1.10.0`; reordered after the redesign on 2026-10-09); **agreed**. +**Version:** shipped `2.1.0` (2026-10-12), MINOR (was `1.10.0`; reordered after the redesign on 2026-10-09). --- diff --git a/docs/schema-migrations.md b/docs/schema-migrations.md index 050d9fa..7f1c2c4 100644 --- a/docs/schema-migrations.md +++ b/docs/schema-migrations.md @@ -71,7 +71,7 @@ inbound-antispam-panel (`2.1.0`). | Ver | File | Shipped | Kind | Summary | |-----|------|---------|------|---------| | 1 | `0001_init.sql` | 2.0.0 | DDL | The whole 2.0 schema, below | -| 2 | `0002_inbound_spam_log.sql` | 2.1.0 (unreleased) | DDL | `inbound_spam_log`, `inbound_spam_list` and two indexes; nothing existing changes | +| 2 | `0002_inbound_spam_log.sql` | 2.1.0 | DDL | `inbound_spam_log`, `inbound_spam_list` and two indexes; nothing existing changes | **Kind:** *DDL* — schema only; *data* — `INSERT`/`UPDATE` that must stay correct for operators upgrading from older 2.x images.