From 652f1fe438da22875276309c35f3082355c1821f Mon Sep 17 00:00:00 2001 From: Mikhail Yenuchenko Date: Tue, 11 Aug 2026 00:24:17 +0300 Subject: [PATCH] panel: restyle on the mark's own palette and type MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The stamp was approved on its own sheet and the panel kept the blue-on-cool-grey it shipped with, so the mark read as pasted onto someone else's page. Brick becomes the accent, the greys warm to paper, and the corners square up towards the stamp's own edge. Brick is two tokens rather than one. #7A3B2E under white text is 8.4:1, but as text on the dark scheme's background it is about 2:1 — a link nobody can read. So --accent-fill carries controls and --accent-text carries links and the active navigation entry; in the light scheme they coincide, in the dark one they do not. IBM Plex ships with the panel instead of being named and hoped for. The mark is Plex converted to outlines, so a system stack left the panel's own name as the only Plex on the page — and ui-monospace resolves to Consolas, SF Mono or DejaVu Sans Mono depending on the machine, which laid the send log and mail.log tables out differently for every operator. Three WOFF2 files, 76 KB, served from the panel's own origin so default-src 'self' still covers them. Two things changed shape rather than colour. Links had no rule at all and ran on the browser's blue, invisible while the accent was blue and wrong the moment it was not. And the column-narrowing that login and setup had by name now keys off the narrow card itself, so Settings and the user form stop splitting their heading from the card it belongs to. Co-Authored-By: Claude Opus 5 --- CHANGELOG.md | 9 + NOTICE | 17 +- .../web/view/static/ibm-plex-mono-400.woff2 | Bin 0 -> 14812 bytes .../web/view/static/ibm-plex-mono-600.woff2 | Bin 0 -> 15704 bytes internal/web/view/static/ibm-plex-sans.woff2 | Bin 0 -> 45712 bytes internal/web/view/static/panel.css | 236 ++++++++++++------ internal/web/view/static_test.go | 7 +- 7 files changed, 188 insertions(+), 81 deletions(-) create mode 100644 internal/web/view/static/ibm-plex-mono-400.woff2 create mode 100644 internal/web/view/static/ibm-plex-mono-600.woff2 create mode 100644 internal/web/view/static/ibm-plex-sans.woff2 diff --git a/CHANGELOG.md b/CHANGELOG.md index fd2f209..e001c27 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,15 @@ Format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/); version - panel: `/` redirects domain administrators to `/domains`; global users still land on `/status`. Navigation hides global-only sections for domain administrators. +- 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 + 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 + schemes both keep their contrast; no page, control or workflow changed. A page + whose only card is the narrow one now takes its heading and footer down to the + card's width instead of splitting them across the wider measure. 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'`). ## [1.1.0] - 2026-08-10 diff --git a/NOTICE b/NOTICE index a38602b..ca4c34c 100644 --- a/NOTICE +++ b/NOTICE @@ -11,21 +11,28 @@ Corresponding Source for the published releases is at: If you modify SelfPost and let users interact with it over a network, AGPL-3.0 §13 requires you to offer them the Corresponding Source of your modified version. Update the Source link in the panel footer -(internal/web/templates/layout.html) so it points at your sources. +(internal/web/view/templates/layout.html) so it points at your sources. Third-party software included in this distribution ---------------------------------------------------- -htmx 2.0.4 (internal/web/static/htmx.min.js) +htmx 2.0.4 (internal/web/view/static/htmx.min.js) Copyright (c) Big Sky Software Licence: Zero-Clause BSD (0BSD) https://github.com/bigskysoftware/htmx -IBM Plex Sans / IBM Plex Mono (wordmarks in SVG logos only) +IBM Plex Sans / IBM Plex Mono Copyright © 2017 IBM Corp., with Reserved Font Name "Plex" Licence: SIL Open Font License 1.1 - The shipped SVGs use outlined paths derived from these fonts; the - font files themselves are not distributed. + https://github.com/IBM/plex + Distributed unmodified as three latin-subset WOFF2 files served by the + control panel: + internal/web/view/static/ibm-plex-sans.woff2 (variable, 100-700) + internal/web/view/static/ibm-plex-mono-400.woff2 + internal/web/view/static/ibm-plex-mono-600.woff2 + Subsetting and WOFF2 packaging by Fontsource (fontsource.org), from + the Google Fonts distribution. The wordmarks in the shipped SVG logos + are outlined paths derived from the same fonts. Go module dependencies are listed with their licences in docs/development.md § External libraries. Debian packages in the diff --git a/internal/web/view/static/ibm-plex-mono-400.woff2 b/internal/web/view/static/ibm-plex-mono-400.woff2 new file mode 100644 index 0000000000000000000000000000000000000000..a6c77d653d2e5a0692433d058a8dd2238b94aaec GIT binary patch literal 14812 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

-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 literal 0 HcmV?d00001 diff --git a/internal/web/view/static/panel.css b/internal/web/view/static/panel.css index e2e155c..722819e 100644 --- a/internal/web/view/static/panel.css +++ b/internal/web/view/static/panel.css @@ -2,7 +2,36 @@ layout so the panel's Content-Security-Policy can be a plain "default-src 'self'" with no inline-style exemption. Any rule added here must therefore stay here: an inline style="..." attribute in a - template is blocked by that policy and silently does nothing. */ + template is blocked by that policy and silently does nothing. + + The palette and the type below come from the mark's own approval sheet + (docs/assets/selfpost-proof.html) — brick, warm paper, IBM Plex. Before it + the panel was a default blue-on-cool-grey admin theme with the stamp pasted + onto it, and the two read as different pieces of work. */ + +/* The fonts ship with the panel rather than being asked for by name. Two + reasons, and the second is the one that matters. A named family resolves to + whatever the operator's machine has, so the mark — Plex converted to + outlines — would be the only Plex on the page. And ui-monospace is Consolas, + SF Mono or DejaVu Sans Mono depending on that machine, each with its own + advance width: the six-column send log and the mail.log tables would lay out + differently for every operator. Served from the panel's own origin, so the + policy above already covers them and needs no font-src of its own. + One variable file for the sans (100–700 in 46 KB, less than the four static + weights it replaces); mono has no variable release, so it is two files. + swap, so a cold load shows the system stack for a frame instead of nothing. */ +@font-face { + font-family: "IBM Plex Sans"; font-style: normal; font-weight: 100 700; + font-display: swap; src: url("/static/ibm-plex-sans.woff2") format("woff2"); +} +@font-face { + font-family: "IBM Plex Mono"; font-style: normal; font-weight: 400; + font-display: swap; src: url("/static/ibm-plex-mono-400.woff2") format("woff2"); +} +@font-face { + font-family: "IBM Plex Mono"; font-style: normal; font-weight: 600; + font-display: swap; src: url("/static/ibm-plex-mono-600.woff2") format("woff2"); +} /* Colour tokens. Light values live on :root; the dark media query below reassigns the same names rather than re-declaring every rule that uses @@ -10,39 +39,57 @@ property already carries the right value for the active scheme. */ :root { color-scheme: light dark; - --bg: #f6f7f9; --fg: #1b1f24; + --font-sans: "IBM Plex Sans", system-ui, -apple-system, Segoe UI, Roboto, sans-serif; + --font-mono: "IBM Plex Mono", ui-monospace, SFMono-Regular, Menlo, monospace; + --bg: #f4f2ed; --fg: #12161c; + --muted: #6b7684; /* secondary text: .muted, th, timestamps, footers */ --card-bg: #fff; - --border: #e2e5e9; /* dividers: card, table, app, nav, code, encrypt-fields */ - --control-border: #cfd4da; /* input, select, textarea, action buttons */ + --border: #dedcd7; /* dividers: card, table, app, nav, code, encrypt-fields */ + --control-border: #cbc8c1; /* input, select, textarea, action buttons */ --input-bg: #fff; - --code-bg: #f0f2f4; - --surface-bg: #eef1f5; --surface-bg-hover: #e2e7ee; --surface-open-bg: #dde3ec; - --nav-active-bg: #e6ebf5; - --flash-bg: #ecfdf3; --flash-border: #abefc6; --flash-fg: #067647; - --credential-bg: #fffbeb; --credential-border: #f5c518; - --danger-bg: #fef3f2; --danger-border: #fecdca; --danger-fg: #b42318; --danger-bg-hover: #fee4e2; - --st-ok-bg: #ecfdf3; --st-ok-fg: #067647; --st-ok-border: #abefc6; - --st-warn-bg: #fffaeb; --st-warn-fg: #b54708; --st-warn-border: #fedf89; - --st-error-bg: #fef3f2; --st-error-fg: #b42318; --st-error-border: #fecdca; - --st-unknown-bg: #f0f2f4; --st-unknown-fg: #6b7280; --st-unknown-border: #e2e5e9; + --code-bg: #efede9; + --surface-bg: #eae7e0; --surface-bg-hover: #e0dcd3; --surface-open-bg: #d8d3c8; + --nav-active-bg: #ede4de; + /* Brick, the mark's own colour, is the panel's accent — but as two values, + not one. A filled control carries --accent-fill with white on it; a link or + an active entry carries --accent-text, because the fill on a page + background is a colour to sit behind text, not to be text. In the light + scheme the two coincide. */ + --accent-fill: #7a3b2e; --accent-fill-hover: #632f25; --accent-text: #7a3b2e; + --on-accent: #fff; + --flash-bg: #edf6ef; --flash-border: #c2e0cc; --flash-fg: #2c6b43; + --credential-bg: #fcf6e4; --credential-border: #e0c874; + --danger-fill: #b42318; --danger-fill-hover: #912018; + --danger-bg: #fbedea; --danger-border: #efccc4; --danger-fg: #b42318; --danger-bg-hover: #f7dfda; + --st-ok-bg: #edf6ef; --st-ok-fg: #2c6b43; --st-ok-border: #c2e0cc; + --st-warn-bg: #fbf2e2; --st-warn-fg: #8a5510; --st-warn-border: #ebd5a6; + --st-error-bg: #fbedea; --st-error-fg: #b42318; --st-error-border: #efccc4; + --st-unknown-bg: #efede9; --st-unknown-fg: #6b7684; --st-unknown-border: #dedcd7; } @media (prefers-color-scheme: dark) { :root { - --bg: #14171a; --fg: #e6e8eb; - --card-bg: #1d2125; - --border: #2b3138; - --control-border: #2b3138; - --input-bg: #14171a; - --code-bg: #14171a; - --surface-bg: #22262b; --surface-bg-hover: #2b3138; --surface-open-bg: #313841; - --nav-active-bg: #22303f; - --flash-bg: #0d2818; --flash-border: #1a5336; --flash-fg: #75d99b; - --credential-bg: #2a2408; --credential-border: #6b5a10; - --danger-bg: #2d1211; --danger-border: #6b201a; --danger-fg: #f5a29b; --danger-bg-hover: #3d1a18; - --st-ok-bg: #0d2818; --st-ok-fg: #75d99b; --st-ok-border: #1a5336; - --st-warn-bg: #2e2308; --st-warn-fg: #f5c86b; --st-warn-border: #6b5210; - --st-error-bg: #2d1211; --st-error-fg: #f5a29b; --st-error-border: #6b201a; - --st-unknown-bg: #22262b; --st-unknown-fg: #9aa3ad; --st-unknown-border: #2b3138; + --bg: #16181b; --fg: #e9e6e0; + --muted: #9aa1a9; + --card-bg: #1d2024; + --border: #2c2f34; + --control-border: #3a3e44; + --input-bg: #14161a; + --code-bg: #14161a; + --surface-bg: #23262b; --surface-bg-hover: #2c3036; --surface-open-bg: #343941; + --nav-active-bg: #2a1f1b; + /* Brick as drawn is about 2:1 against this background — a link nobody can + read. The fill lightens just enough to keep white on it above 4.5:1 + (6.9:1 as set), and the text value lightens further to clear the same bar + as text on the page. This is where the two values earn their keep. */ + --accent-fill: #8e4535; --accent-fill-hover: #a0503e; --accent-text: #ce7b66; + --flash-bg: #132318; --flash-border: #22452f; --flash-fg: #7fcb9b; + --credential-bg: #26210d; --credential-border: #5e5013; + --danger-fill: #9b2c22; --danger-fill-hover: #b0342a; + --danger-bg: #2a1412; --danger-border: #5e2721; --danger-fg: #eb9b92; --danger-bg-hover: #381a17; + --st-ok-bg: #132318; --st-ok-fg: #7fcb9b; --st-ok-border: #22452f; + --st-warn-bg: #2a2109; --st-warn-fg: #e5be72; --st-warn-border: #5e4b12; + --st-error-bg: #2a1412; --st-error-fg: #eb9b92; --st-error-border: #5e2721; + --st-unknown-bg: #23262b; --st-unknown-fg: #9aa1a9; --st-unknown-border: #2c2f34; } } * { box-sizing: border-box; } @@ -54,7 +101,7 @@ read as the layout jumping. */ html { scrollbar-gutter: stable; } body { - font: 15px/1.5 system-ui, -apple-system, Segoe UI, Roboto, sans-serif; + font: 400 15px/1.5 var(--font-sans); margin: 0; padding: 2rem 1rem; background: var(--bg); color: var(--fg); } /* The two columns — navigation on the left, page on the right — centred as a @@ -93,7 +140,11 @@ main.wide > * { max-width: none; } /* Longhands, not the margin shorthand: the shorthand would re-zero the auto side margins above and pin the heading to the column's edge, a measure's worth to the left of the card under it. */ -h1 { font-size: 1.4rem; margin-top: 0; margin-bottom: 1rem; } +/* Light rather than bold, which is the sheet's own setting for the name and + the one thing a variable font makes free. It is the page's title, not an + alarm: the size already says which line is the heading, and at 700 it shouted + over the card under it. */ +h1 { font-size: 1.5rem; font-weight: 300; letter-spacing: -0.01em; margin-top: 0; margin-bottom: 1rem; } /* The full mark, on the two pages that have no navigation bar to carry the compact one. It takes the column's width so its edges line up with the card below it, capped at that column's own 24rem; height stays automatic because @@ -101,15 +152,19 @@ h1 { font-size: 1.4rem; margin-top: 0; margin-bottom: 1rem; } The subtitle stops resolving below 280px, which a 320px viewport still clears once the body's padding is taken off. */ .mark { display: block; width: 100%; max-width: 24rem; height: auto; margin-bottom: 1.4rem; } +/* The radius comes down from 10px across the panel: the mark is a stamp with a + square edge and a hairline, and a card rounded like a phone widget sat in + front of it as a different kind of object. 6px on the containers, 5px on the + controls inside them. */ .card { - background: var(--card-bg); border: 1px solid var(--border); border-radius: 10px; + background: var(--card-bg); border: 1px solid var(--border); border-radius: 6px; padding: 1.5rem; margin: 0 auto; } .card.narrow { max-width: 24rem; } label { display: block; font-weight: 600; margin: 0.9rem 0 0.3rem; } input { - width: 100%; padding: 0.55rem 0.7rem; font-size: 1rem; - border: 1px solid var(--control-border); border-radius: 6px; background: var(--input-bg); color: inherit; + width: 100%; padding: 0.55rem 0.7rem; font-family: inherit; font-size: 1rem; + border: 1px solid var(--control-border); border-radius: 5px; background: var(--input-bg); color: inherit; } /* One vocabulary for actions. Anything that performs an action looks like a button: a