Compare commits
2 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 74acf09212 | |||
| ba07decbb0 |
+39
-29
@@ -74,13 +74,38 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
|||||||
through a confirmation page, the same pattern as domain deletion, instead of
|
through a confirmation page, the same pattern as domain deletion, instead of
|
||||||
a plain submit button next to Save with no confirmation at all.
|
a plain submit button next to Save with no confirmation at all.
|
||||||
|
|
||||||
|
- panel (restore): after a backup is extracted and the version guard passes,
|
||||||
|
the panel runs one mail-path Resync on the first boot — OpenDKIM's tables
|
||||||
|
and Postfix's sender map are re-derived from SQLite and the daemons are
|
||||||
|
reloaded, so drift between the archive and the database is healed before
|
||||||
|
mail flows. Later starts skip that step; the Status page Reload button runs
|
||||||
|
the same Resync on demand. The `internal/backup` package comment now matches
|
||||||
|
this behaviour.
|
||||||
|
|
||||||
### Changed
|
### Changed
|
||||||
|
|
||||||
|
- docs: [guide.md](docs/guide.md) reorganised into **Installation**, **Instance
|
||||||
|
administration**, and **Domain administration** — DNS setup, operations,
|
||||||
|
rate limiting, and backup sections follow the instance/domain boundary
|
||||||
|
instead of mixing them. **Installation** now reads Ports → Local trial →
|
||||||
|
Initial setup → Full deployment (with the fixed image tag nested under it) →
|
||||||
|
Environment variables → Reverse proxy; the step-by-step production deploy and
|
||||||
|
per-proxy TLS commands move here from README's "Reference deploy" (README
|
||||||
|
keeps a short pointer). Internal (non-operator) environment variables move
|
||||||
|
to [architecture.md](docs/architecture.md) § Configuration; the guide keeps
|
||||||
|
a one-line pointer. **Full backup and restore** gains worked commands for
|
||||||
|
in-place restore, move-to-a-new-host, and encrypted-backup decrypt-first,
|
||||||
|
plus the version-mismatch error text. README anchors updated for the new
|
||||||
|
headings. No behaviour change.
|
||||||
|
|
||||||
- docs: the 2026-08-13 full-tree review plan is complete — every phase (P0–P7)
|
- docs: the 2026-08-13 full-tree review plan is complete — every phase (P0–P7)
|
||||||
is closed — and `docs/plans/code-review.md` is deleted per its own exit
|
is closed — and `docs/plans/code-review.md` is deleted per its own exit
|
||||||
criteria (history in git and in this file). The
|
criteria (history in git and in this file). The plan covered architecture,
|
||||||
[roadmap](docs/roadmap.md)'s recommended order returns to **queue-retries**
|
quality, GUI, tests, and licence work; P0 was domain-admin send-log
|
||||||
and then **inbound-relay**.
|
authorization. The [roadmap](docs/roadmap.md)'s recommended order returns to
|
||||||
|
**queue-retries** and then **inbound-relay**; it still records
|
||||||
|
**schema-squash** (replace the 1.x SQLite migration chain with a 2.x baseline;
|
||||||
|
not a reason to cut a major on its own).
|
||||||
|
|
||||||
- licence: [NOTICE](NOTICE) tells modifiers to update `SourceURL` in
|
- licence: [NOTICE](NOTICE) tells modifiers to update `SourceURL` in
|
||||||
`internal/legal/legal.go` (the value the panel footer actually injects), not
|
`internal/legal/legal.go` (the value the panel footer actually injects), not
|
||||||
@@ -108,13 +133,15 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
|||||||
downloaded from a running panel through `POST /backup` (plain and encrypted),
|
downloaded from a running panel through `POST /backup` (plain and encrypted),
|
||||||
unpacked the way `tar -xzf` unpacks it onto the `/data` bind mount, and a
|
unpacked the way `tar -xzf` unpacks it onto the `/data` bind mount, and a
|
||||||
second panel is booted on the result through the startup order the panel
|
second panel is booted on the result through the startup order the panel
|
||||||
itself uses — version guard, database, services, HTTP application. The
|
itself uses — version guard, database, one Resync when restoring, then
|
||||||
restored panel shows the domain and journal the archive carried, finds the
|
services and the HTTP application. The restored panel shows the domain and
|
||||||
DKIM key, SASL database and Postfix sender map where its configuration says
|
journal the archive carried, finds the DKIM key, SASL database and Postfix
|
||||||
they are, does not reopen the one-time setup link, and still honours a
|
sender map where its configuration says they are, does not reopen the
|
||||||
session that predates the backup. A data directory left by another version is
|
one-time setup link, and still honours a session that predates the backup.
|
||||||
refused with both versions named and the manifest kept. `serveHTTP` is split
|
Drifted on-disk maps are healed by that Resync step
|
||||||
in two so that composition can be started without binding a port; no
|
(`TestResyncAfterRestoreHealsDriftedMaps`). A data directory left by another
|
||||||
|
version is refused with both versions named and the manifest kept. `serveHTTP`
|
||||||
|
is split in two so that composition can be started without binding a port; no
|
||||||
behaviour change.
|
behaviour change.
|
||||||
|
|
||||||
- test (e2e): the CoreDNS image is pinned to `1.14.6` instead of `latest`, so
|
- test (e2e): the CoreDNS image is pinned to `1.14.6` instead of `latest`, so
|
||||||
@@ -144,13 +171,6 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
|||||||
prompts existed — and why that is acceptable (the prompt is a mis-click
|
prompts existed — and why that is acceptable (the prompt is a mis-click
|
||||||
guard, not an authorization boundary).
|
guard, not an authorization boundary).
|
||||||
|
|
||||||
- docs: full-tree review plan (`docs/plans/code-review.md`, since completed
|
|
||||||
and deleted — history in git)
|
|
||||||
— architecture, quality, GUI, tests, licence; P0 is domain-admin send-log
|
|
||||||
authorization. Roadmap queues that plan ahead of inbound-relay and records
|
|
||||||
`schema-squash` (replace the 1.x SQLite migration chain with a 2.x baseline;
|
|
||||||
not a reason to cut a major on its own).
|
|
||||||
|
|
||||||
- docs: security and operator docs updated for the panel that has shipped
|
- docs: security and operator docs updated for the panel that has shipped
|
||||||
global administrators and domain-admins since 1.2.0. The CSRF ADR in
|
global administrators and domain-admins since 1.2.0. The CSRF ADR in
|
||||||
[security.md](docs/security.md) no longer argues from "single-user"; it now
|
[security.md](docs/security.md) no longer argues from "single-user"; it now
|
||||||
@@ -162,11 +182,8 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
|||||||
fail-open behaviour, that restoring an older backup can resurrect sessions,
|
fail-open behaviour, that restoring an older backup can resurrect sessions,
|
||||||
and that a domain-admin can export working SASL passwords for domains
|
and that a domain-admin can export working SASL passwords for domains
|
||||||
assigned to them. [architecture.md](docs/architecture.md)'s route table now
|
assigned to them. [architecture.md](docs/architecture.md)'s route table now
|
||||||
lists `/license` and the `/account` → `/settings` redirect. Fixed the
|
lists `/license` and the `/account` → `/settings` redirect. Corrected stale
|
||||||
`internal/backup` package comment, which claimed the panel regenerates
|
`admin.dmarc_report_email` references in
|
||||||
Postfix/OpenDKIM state from SQLite on every restore boot (it only runs the
|
|
||||||
version guard; drifted daemon state is healed by the Status page's Reload
|
|
||||||
button). Corrected stale `admin.dmarc_report_email` references in
|
|
||||||
[roadmap.md](docs/roadmap.md) and
|
[roadmap.md](docs/roadmap.md) and
|
||||||
[docs/plans/dmarc-reports.md](docs/plans/dmarc-reports.md) to the setting's
|
[docs/plans/dmarc-reports.md](docs/plans/dmarc-reports.md) to the setting's
|
||||||
actual home after migration `0005`. No behaviour change.
|
actual home after migration `0005`. No behaviour change.
|
||||||
@@ -181,13 +198,6 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
|||||||
longer promises in-panel report reception in a future release — SelfPost
|
longer promises in-panel report reception in a future release — SelfPost
|
||||||
does not receive inbound mail.
|
does not receive inbound mail.
|
||||||
|
|
||||||
- panel (restore): after a backup is extracted and the version guard passes,
|
|
||||||
the panel runs one mail-path Resync on the first boot — OpenDKIM's tables
|
|
||||||
and Postfix's sender map are re-derived from SQLite and the daemons are
|
|
||||||
reloaded, so drift between the archive and the database is healed before
|
|
||||||
mail flows. Later starts skip that step; the Status page Reload button runs
|
|
||||||
the same Resync on demand.
|
|
||||||
|
|
||||||
## [1.2.5] - 2026-08-13
|
## [1.2.5] - 2026-08-13
|
||||||
|
|
||||||
Rate-limit form polish after 1.2.4. Upgrading is a tag bump; no migration.
|
Rate-limit form polish after 1.2.4. Upgrading is a tag bump; no migration.
|
||||||
|
|||||||
Reference in New Issue
Block a user