Archilyzer · Source

archilyzer

Archilyzer
git clone https://archilyzer.pages.dev/source/archilyzer.git
Log | Files | Refs | README | LICENSE

commit a1e278aab30dbea579de10cd833a07e50dfed5f1
parent 0671eb8c2c5628d22d39af4bc76090906f327725
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Mon, 28 Sep 2026 00:28:28 -0400

plans: slice MR as shipped — a 1px ring outside the mark's tile on dark, in the palette's dim (#6b5d47 3.09:1, #586977 3.48:1 on ink); full dim chosen over 60% and an inside ring; brand-and-themes' mark section notes it, dated

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>

Diffstat:
Mplans/brand-and-themes.md | 7+++++++
Mplans/release-10.md | 74++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 81 insertions(+), 0 deletions(-)

diff --git a/plans/brand-and-themes.md b/plans/brand-and-themes.md @@ -62,6 +62,13 @@ saturation and sit just over 3:1 (3.09, 3.06), because the two rules multiply to the darkest lit values leave little room: Vermilion is 2.28:1 over the child dim, and Signal on the Media slate 2.05:1. +**On the dark base the in-page mark's tile has a 1px ring** (2026-09-28, release 10, slice MR; +`release-10.md`): the operator asked for "a thin outline to the tile on dark", because the child's +ink tile is the dark page itself and the slate is 1.14:1 on it. `BrandMark` draws it outside the +tile, following its corner (`border-radius` 21.875% = rx 112 of 512), in the palette's own dim +(`#6b5d47`, `#586977`: 3.09:1 and 3.48:1 on the ink page), as a box-shadow under `.dark` only, so no +layout moves and light and sepia are unchanged. The icon files carry no ring. + Icon variants: - `any`: `rx=112`. - `maskable`: full-bleed ground, the mark scaled 0.8 about (256,256). diff --git a/plans/release-10.md b/plans/release-10.md @@ -2076,6 +2076,80 @@ also had adjacent in the other order. No chart change is owed. rebuilt for the swap. The regenerated YouTube picture, watermark and banner are the operator's to upload in Studio (`INDEX.html` has the steps). +### Slice MR, as shipped — mark ring on dark (2026-09-28) + +The operator's ask (2026-09-28): **"Add a thin outline to the tile on dark."** Slice MC left it as +found: on the dark base a site's ink tile is the ink page itself (`#0c0a08` on `#0c0a08`) and the +parent's slate `#151b20` is 1.14:1 on it, so the mark read as four lines with no tile. Branch +`r10/mark-ring` off `main` `6db8fcda`, worktree `/home/user/Projects/r10-mark-ring`, one Opus +implementer. Scratch files `mr-*` in the job's `tmp/brand`. + +**What shipped.** `BrandMark` (`common/components/BrandMark.tsx`) draws a **1 CSS px ring outside +the tile, only when `.dark` is on `<html>`** (tokens.css's `@custom-variant dark`), in the palette's +own **dim**: `--mark-ring` is set from `palette.dim` in the svg's `style`, so a site mark rings in +`#6b5d47` and the parent mark in `#586977`, and the ring reads as part of the mark. The classes are +one literal, `BRAND_MARK_RING_CLASS`: `rounded-[21.875%] overflow-visible +dark:shadow-[0_0_0_1px_var(--mark-ring)]`. +- A **box-shadow**, so it takes no layout: the mark is 28 × 28 (16 × 16 in a footer) on every base, + and the header does not move. +- `rounded-[21.875%]` is the ground's `rx` (112 of 512; the unit test holds the two equal), so the + ring follows the tile's corner. **`overflow-visible` is needed**: an `<svg>` clips its content by + default, and with a radius that clip is a second anti-aliased edge over the ground's own corner + (at 2×, 70 px of the site header and 84 px of the homepage's differed from main by up to 7 levels; + without the clip, 2 px by ≤ 2). +- Light and sepia render **pixel-identical to main** (0 px differ, site Brass and Blue, hub and + homepage, on both). +- Every `BrandMark` use draws the tile, so all five get the ring: the export header, the footer + credit, the hub header (and its footer), the homepage header, the editor sidebar. The icon files + (`markSvg`: favicons, app icons, the OG image, the YouTube assets) are untouched. + +**The variant, and why.** Screenshotted at 2× on dark from this branch's builds, the site (Brass) and +parent marks (`mr-variants-header.png`, `mr-variants-zoom.png`): the full dim outside (chosen); the +same at 60 % (`#453c2e` on ink, **1.82:1**, and `#3a434b` 1.96:1): it reads as a smudge rather than +an edge at 1 px; and a ring 1 px inside the edge (an `outline` at offset −1px): it eats a pixel of the +tile, so the tile looks smaller on dark than on light and the ring crowds the lines. The full dim is +**3.09:1** on the ink page (child) and **3.48:1** (parent; 3.06 on its own slate), the same WCAG +1.4.11 floor the dims meet, and at 1 px against the lines' ~2.4 px it reads as the tile's edge +without competing with them; the lit line stays the found line. Crisp at DPR 1, 2 and 3 +(`mr-dpr.png`: the straight edges are one, two and three full device pixels). + +| sha | what | +|---|---| +| `c5fc5bb3` | `common:` the ring — `BRAND_MARK_RING_CLASS`, `--mark-ring` from `palette.dim`; `BrandMark.test.ts` (4 tests) | +| `eb680a9c` | `e2e:` the export, hub and homepage `brand.spec`s and the editor's `branding.spec` read the computed box-shadow on dark, light and sepia | +| `14fd9f62` | `changelogs:` a new `[Unreleased]` above `[0.9.3]` in export and editor; a bullet in the homepage's | +| _this_ | `plans:` this record; a dated note in `brand-and-themes.md`'s mark section | + +**Gates** (logs `mr-*.log`): +- **tsc** clean (64 s) on the code tree of `eb680a9c`; the later commits are Markdown only. +- **common 2,038/2,038** (2,034 + 4), editor unit **85/85**, `test:scripts` **174 + 1 skipped**, mcp + **269/269**, homepage unit **2/2**. +- **They bite:** with the shadow class removed, 1 of the 4 unit tests fails, the export `brand.spec` + 1 failed / 5 passed and the homepage's 1 failed / 2 passed (`ring: []` where the dim was expected). +- **Builds:** editor ok (43 s), export site ok (29 s), export hub ok (26 s; `out/ask` present), + homepage ok (14 s). Each built stylesheet carries + `.dark\:shadow-\[0_0_0_1px_var\(--mark-ring\)\]:where(.dark,.dark *)` and + `.rounded-\[21\.875\%\]`; the site's `index.html` sets `--mark-ring:#6b5d47` (header) and + `#586977` (footer), the hub's `#586977` twice, the homepage's once. The primary's `export/public` + byte-identical before and after the builds and the e2e. +- **e2e** (no queue wait, nothing failed, so no re-runs): export `brand` + `site-branding` + `theme` + + `theme-accent` **20 passed** (55 s); `e2e:hub` **26 passed** (63 s); homepage full **21 passed, 8 + skipped** (39 s; no summary on disk in a fresh worktree, see below), then with the primary's + `homepage/public` data copied in **29 passed** (49 s); editor `branding.spec` **4 passed** (31 s). +- **Visual** (`mr-compare.png`): the site header in Brass and Blue, the hub and the homepage, on dark + and light at 2×, before (main's `<svg>` re-created: no radius, the default clip, no shadow) and + after; the footer credit on dark (site and hub); the two marks on dark at 3×. + +**Found and left** +- **A fresh worktree's homepage e2e skips 8 specs** (`stats.spec` ×7, `instance-colours.spec`) unless + `homepage/public`'s gitignored data (`homepage-summary.json`, `channel-sites.json`, `stats/`, + `downloads/`) is copied from the primary: the specs skip on "no summary on disk", so the run is + green but short. Copied here (not linked, so nothing can write through). +- **The ring is a box-shadow, which forced-colours mode (Windows High Contrast) removes**; the mark + then looks as it does on `main`. Not asked, not tested. +- **The live sites carry none of this until rebuilt:** every export site and the hub, the homepage, + and the editor on its next restart. + ## Rollout Nothing is rolled out, except that **Jeralyzer is already on the brand, in Signal** (a build-deploy