Close CHANGELOG [Unreleased] as 1.2.0; correct missing entries; bump the compose pin and image references. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
+17
-4
@@ -5,6 +5,13 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
|||||||
|
|
||||||
## [Unreleased]
|
## [Unreleased]
|
||||||
|
|
||||||
|
## [1.2.0] - 2026-08-11
|
||||||
|
|
||||||
|
The second MINOR after 1.0.0: domain administrators with per-domain scope, a
|
||||||
|
panel visual refresh on the SelfPost palette, and refinements to navigation and
|
||||||
|
the send log. Upgrading runs one SQLite migration (`0005_panel_users`); the
|
||||||
|
single administrator becomes a global user.
|
||||||
|
|
||||||
### Added
|
### Added
|
||||||
|
|
||||||
- panel: **domain-admin role** — global administrators manage panel users and
|
- panel: **domain-admin role** — global administrators manage panel users and
|
||||||
@@ -17,6 +24,9 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- Docker build: `LICENSE` is no longer excluded by `.dockerignore`, so the
|
||||||
|
runtime image can copy it into `/usr/share/doc/selfpost/` as AGPL requires. A
|
||||||
|
clean build failed once the cached layer was invalidated.
|
||||||
- panel: on signed-in pages with a narrow card (**Settings**, the user form)
|
- panel: on signed-in pages with a narrow card (**Settings**, the user form)
|
||||||
the heading, flash, card and footer now share one left edge. `.card.narrow`
|
the heading, flash, card and footer now share one left edge. `.card.narrow`
|
||||||
had overridden only `max-width` while `main > *` still centred siblings on
|
had overridden only `max-width` while `main > *` still centred siblings on
|
||||||
@@ -32,21 +42,24 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version
|
|||||||
- panel: `/` redirects domain administrators to `/domains`; global users still
|
- panel: `/` redirects domain administrators to `/domains`; global users still
|
||||||
land on `/status`. Navigation hides global-only sections for domain
|
land on `/status`. Navigation hides global-only sections for domain
|
||||||
administrators.
|
administrators.
|
||||||
|
- panel: **Sign out** in the navigation column uses the same type size and
|
||||||
|
weight as the page entries above it; only the red tint and border mark it as
|
||||||
|
destructive.
|
||||||
- panel: **visual style** brought in line with the SelfPost mark — brick accent
|
- panel: **visual style** brought in line with the SelfPost mark — brick accent
|
||||||
and warm paper in place of the blue-on-cool-grey defaults, IBM Plex Sans and
|
and warm paper in place of the blue-on-cool-grey defaults, IBM Plex Sans and
|
||||||
IBM Plex Mono served by the panel itself, squarer corners, and column
|
IBM Plex Mono served by the panel itself, squarer corners, and column
|
||||||
headings, status badges and small labels set in the mono face. Light and dark
|
headings, status badges and small labels set in the mono face. Light and dark
|
||||||
schemes both keep their contrast; no page, control or workflow changed. The
|
schemes both keep their contrast; no page, control or workflow changed. The
|
||||||
send log stops breaking `Details` and `deferred` across two lines when a row
|
send log stops breaking `Details` and `deferred` across two lines when a row
|
||||||
is tight.
|
is tight. Badge padding and line-height are tuned so lowercase labels sit
|
||||||
|
centred in the box. The three WOFF2 files add ~76 KB to the image and are
|
||||||
|
served from the panel's own origin, so the Content-Security-Policy is
|
||||||
|
unchanged (`default-src 'self'`).
|
||||||
- panel: the send log's **status is a badge**, in the same ok/warn/error/unknown
|
- panel: the send log's **status is a badge**, in the same ok/warn/error/unknown
|
||||||
colours the status page and the DNS checks use, instead of the one place in
|
colours the status page and the DNS checks use, instead of the one place in
|
||||||
the panel where a status was bare text. The mapping is the one the delivery
|
the panel where a status was bare text. The mapping is the one the delivery
|
||||||
page already applied — `sent` is ok, `deferred` a warning, `bounced` and
|
page already applied — `sent` is ok, `deferred` a warning, `bounced` and
|
||||||
`rejected` errors, `queued` unknown because nothing has gone wrong yet.
|
`rejected` errors, `queued` unknown because nothing has gone wrong yet.
|
||||||
The three
|
|
||||||
WOFF2 files add ~76 KB to the image and are served from the panel's own origin,
|
|
||||||
so the Content-Security-Policy is unchanged (`default-src 'self'`).
|
|
||||||
- docs: [roadmap.md](docs/roadmap.md) and [product.md](docs/product.md) no
|
- docs: [roadmap.md](docs/roadmap.md) and [product.md](docs/product.md) no
|
||||||
longer list domain-admin or visual-style as open work — both ship in this line.
|
longer list domain-admin or visual-style as open work — both ship in this line.
|
||||||
Completed plan files (`domain-admin`, `visual-style`, `web-split`,
|
Completed plan files (`domain-admin`, `visual-style`, `web-split`,
|
||||||
|
|||||||
@@ -95,7 +95,7 @@ docker run --rm -d --name selfpost-try \
|
|||||||
-e SELFPOST_HOSTNAME=mail.local.test \
|
-e SELFPOST_HOSTNAME=mail.local.test \
|
||||||
-e PANEL_COOKIE_SECURE=false \
|
-e PANEL_COOKIE_SECURE=false \
|
||||||
-v selfpost-try-data:/data \
|
-v selfpost-try-data:/data \
|
||||||
ghcr.io/mixeme/selfpost:1.1.0
|
ghcr.io/mixeme/selfpost:1.2.0
|
||||||
```
|
```
|
||||||
|
|
||||||
**Get the setup URL** (pick one):
|
**Get the setup URL** (pick one):
|
||||||
|
|||||||
@@ -22,7 +22,7 @@
|
|||||||
|
|
||||||
services:
|
services:
|
||||||
selfpost:
|
selfpost:
|
||||||
image: ghcr.io/mixeme/selfpost:1.1.0
|
image: ghcr.io/mixeme/selfpost:1.2.0
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
environment:
|
environment:
|
||||||
SELFPOST_HOSTNAME: "${SELFPOST_HOSTNAME:?set the mail/panel hostname, e.g. mail.example.com}"
|
SELFPOST_HOSTNAME: "${SELFPOST_HOSTNAME:?set the mail/panel hostname, e.g. mail.example.com}"
|
||||||
|
|||||||
+1
-1
@@ -141,7 +141,7 @@ Requires Go 1.26+ and `CGO_ENABLED=0`.
|
|||||||
|
|
||||||
```sh
|
```sh
|
||||||
make build # bin/panel, bin/selfpost-backup (VERSION=dev by default)
|
make build # bin/panel, bin/selfpost-backup (VERSION=dev by default)
|
||||||
make build VERSION=1.1.0
|
make build VERSION=1.2.0
|
||||||
```
|
```
|
||||||
|
|
||||||
Or directly:
|
Or directly:
|
||||||
|
|||||||
+1
-1
@@ -381,7 +381,7 @@ but it can look like an open port in external scans.
|
|||||||
## Fixed image tag
|
## Fixed image tag
|
||||||
|
|
||||||
`deploy/docker-compose.yml` pins an explicit version (`ghcr.io/mixeme/selfpost:X.Y.Z`),
|
`deploy/docker-compose.yml` pins an explicit version (`ghcr.io/mixeme/selfpost:X.Y.Z`),
|
||||||
deliberately never `:latest`. The current pin is `1.1.0`. Intermediate
|
deliberately never `:latest`. The current pin is `1.2.0`. Intermediate
|
||||||
CHANGELOG sections (`0.2.0`…`0.6.0`) record development cuts from before that
|
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 above:
|
image was published. Pinning matters because of the backup version check above:
|
||||||
the panel binary's embedded version and the image tag that produced it are the
|
the panel binary's embedded version and the image tag that produced it are the
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
the implementation lands (do not fix a major in advance).
|
the implementation lands (do not fix a major in advance).
|
||||||
**Order:** recommended next among agreed 1.x+ items (after `internal/web` split
|
**Order:** recommended next among agreed 1.x+ items (after `internal/web` split
|
||||||
and the domain-admin role, both shipped — see [CHANGELOG](../CHANGELOG.md)
|
and the domain-admin role, both shipped — see [CHANGELOG](../CHANGELOG.md)
|
||||||
`[1.1.0]` and `[Unreleased]`).
|
`[1.2.0]`).
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user