Archilyzer · Source

archilyzer

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

commit 9bc1d42e8f9efac3afe4f95beb21832facce7cc3
parent c68f007e1f3e28fb95de068b1f43a0aaa15a3764
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Sun, 27 Sep 2026 00:50:05 -0400

plans, changelogs: the hue-matched chart — each site's layer is its accent's hue family; validator numbers in both orders

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

Diffstat:
Meditor/CHANGELOG.md | 2+-
Mhomepage/CHANGELOG.md | 13++++++++-----
Mplans/FACTS.md | 8++++++--
Mplans/release-10.md | 57+++++++++++++++++++++++++++++++++++++++------------------
4 files changed, 54 insertions(+), 26 deletions(-)

diff --git a/editor/CHANGELOG.md b/editor/CHANGELOG.md @@ -1,7 +1,7 @@ # Changelog ## [Unreleased] -- **The homepage's Official Instances cards, and the hub's official instances, wear each site's own accent on every ground.** A card's left stripe is the accent set on the site's form, at that accent's value for the reader's ground (Light, Sepia or Dark) rather than its dark value everywhere. A site with a custom hex wears the hex, and a site with none keeps the chart colour it wore. On the hub the same colour marks the card, the scope chip, the result cards' left edge and the channel group. The homepage's growth chart keeps its own colours and its legend, because the seven accents cannot tell five sites apart on a chart: Brass and Vermilion look alike to a red-green colour-blind reader, and Blue and Violet to nearly everyone. So a card's stripe matches its chart layer only when the site has no accent. `homepage-summary.json` and `hub-summary.json` gain an optional `accentId` per site beside the published hex (still versions 5 and 1). Needs the sites' accents set, then a rebuild and deploy of the homepage and the hub. +- **The homepage's Official Instances cards, and the hub's official instances, wear each site's own accent on every ground.** A card's left stripe is the accent set on the site's form, at that accent's value for the reader's ground (Light, Sepia or Dark) rather than its dark value everywhere. A site with a custom hex wears the hex, and a site with none keeps the chart colour it wore. On the hub the same colour marks the card, the scope chip, the result cards' left edge and the channel group. The homepage's growth chart, its legend and the `/stats` charts and cards draw each site in the chart colour of its accent's hue family: Brass in the chart's amber, Blue in its blue, Violet in its violet, Green in its green and Sakura in its magenta. They do not use the accents themselves, because the seven accents cannot tell five sites apart on a chart: Brass and Vermilion look alike to a red-green colour-blind reader, and Blue and Violet to nearly everyone. So a card and its chart layer are the same hue. A site with no accent keeps its chart colour on both. Vermilion, Signal or a custom hex have no chart family, so such a site gets a chart colour no other site wears. On `/stats` the By-site leaderboard now keeps each site's colour instead of colouring by rank. `homepage-summary.json` and `hub-summary.json` gain an optional `accentId` per site beside the published hex (still versions 5 and 1). Needs the sites' accents set, then a rebuild and deploy of the homepage and the hub. ## [0.9.1] - 2026-09-26 - **umtool's report videos can wear the Archilyzer Media brand, and the channel's YouTube picture, watermark and banner are generated.** A report video whose manifest says `"render": { "brand": "archilyzer-media" }` (umtool's **new project** form now has a brand choice, and `umtool new` takes `--brand archilyzer-media`) is drawn in the channel's slate-and-teal palette and its three faces, with a title card that carries the Archilyzer Media lockup and the found line, the mark at the head of every clip's citation line, a 20-second end card whose right half is left empty for YouTube's end-screen videos (`render.endCard` changes its length or, with `false`, drops it), and a 1280 × 720 thumbnail from a clip still and a headline (`thumbnail` in the manifest; `build-video.mjs --thumbnail` makes it alone). A manifest without the key renders exactly as before, byte for byte. `pnpm --filter yt-dlp-transcript-common exec tsx bin/brand-media.ts` writes the channel picture, the video watermark, the banner and a preview of its phone crop to `~/reports/archilyzer-media/brand/`, with an `INDEX.html` that walks through the YouTube Studio upload. The fonts (Archivo, IBM Plex Sans, IBM Plex Mono) ship in `umtool/report-to-video/fonts/` under the SIL Open Font License; nothing is installed system-wide. diff --git a/homepage/CHANGELOG.md b/homepage/CHANGELOG.md @@ -18,11 +18,14 @@ `<head>` gains `icon-32.png`. The OG image is still `/icons/icon-512.png`. - **The footer no longer links to Ko-fi.** The "Elsewhere" column is the operator's social icons again, and a homepage with none shows no column. -- **The Official Instances cards wear each site's accent.** A card's left stripe is its - site's accent at that accent's value for the reader's ground; a custom hex is shown as - is, and a site with no accent keeps its chart colour. The growth chart keeps its own - palette and legend (the accents fail as a chart palette: `common/lib/siteColor.ts`), so - a card is no longer the chart's legend. The e2e reads a copy of the summary with fixture +- **The Official Instances cards wear each site's accent, and the chart wears its hue.** A + card's left stripe is its site's accent at that accent's value for the reader's ground; a + custom hex is shown as is, and a site with no accent keeps its chart colour. The growth + chart, its legend and `/stats` draw each site in the validated chart colour of its accent's + hue family (`siteChartColors`, `common/lib/siteColor.ts`: Brass → amber, Blue → blue, + Violet → violet, Green → green, Sakura → magenta), since the accents themselves fail as a + chart palette. No two sites share a colour. The `/stats` By-site leaderboard keeps each + site's colour instead of colouring by rank. The e2e reads a copy of the summary with fixture accents (`HOMEPAGE_SUMMARY_FILE`, `e2e/fixture-accents.ts`). ## 2026-08-12 diff --git a/plans/FACTS.md b/plans/FACTS.md @@ -6705,8 +6705,12 @@ S4, as shipped"; `release-10.md` "Slice L2 / L1, as shipped". Every anchor below it goes through `siteColor` (`common/lib/siteColor.ts`): a NAMED accent is `var(--swatch-<id>)` (per base) from the summary's `accentId`, used only when `hub-sites.json`'s hex (on-dark only) is absent or equal to the summary's; the homepage's `ArchiveCards` use the - same helper. The growth chart, its legend and `/stats` (`SiteGrid`, `homepageChartData`) stay on - `seriesColor`: no five accents with Brass and Blue pass the dataviz validator as a chart palette. `useHubSites` lists the official + same helper. With no accent the fallback is the site's CHART colour, `siteChartColors(sites)`: + the `--chart-N` of its accent's hue family (blue 1, green 2, violet 3, brass 4, sakura 5), else + `seriesColor(i)` when free, else the lowest free slot — never two sites in one colour. The growth + chart, its legend and `/stats` (`SiteGrid`, `homepageChartData`, the By-site leaderboard) wear + it; the accents themselves fail the dataviz validator as a chart palette (no five with Brass + and Blue pass). `useHubSites` lists the official instances only once `/hub-summary.json` has SETTLED (found, missing or unreadable; `useHubSummary.ts:45`, `networkMode: "always"`), so they never reorder a moment later. The order is applied in the browser: `hub-sites.json` on disk is unchanged. diff --git a/plans/release-10.md b/plans/release-10.md @@ -1858,7 +1858,7 @@ homepage's official-instance cards show each site's accent in their left stripe. `r10/accent-colors` off `main` `154817f6`, worktree `/home/user/Projects/r10-accent-colors` (block #11), one Opus implementer. Scratch files `ac-*` in the job's `tmp/brand`. -**The palette: no assignment passes, so the chart keeps its palette.** Validated first with the +**The palette: no assignment of the accents passes, so the chart wears their hue families.** Validated first with the dataviz skill's `validate_palette.js`, `--pairs all` (the homepage order moves with transcript counts), each base's own swatch values against its `--chart-surface`, contrast also against the page ground; all ten sets {Brass, Blue} + three of {Vermilion, Violet, Sakura, Green, Signal}. @@ -1868,7 +1868,7 @@ with both, so no passing set has more than three colours. On dark every accent i validator's band (L 0.70–0.79 > 0.67): they are text colours, not a categorical palette. The least-bad set is {Brass, Blue, Sakura, Violet, Green}: three failing pairs (Brass–Green, Blue–Violet, Violet–Sakura on dark only) and one floor pair (Sakura–Green). The proposed mapping, which the -parent sets through the site form: +coordinator took (2026-09-27) and sets through the site form: ``` jeralyzer=brass @@ -1883,14 +1883,23 @@ The planned Rekietalyzer = Vermilion with Bonnellyzer = Green passes every ADJAC today's order, but fails Brass–Vermilion and Vermilion–Green over all pairs and goes red if Hasanalyzer and Rekietalyzer (3,048 vs 2,855 transcripts) swap places. -Per the slice's fallback, the growth chart and its legend stay on `seriesColor`, and only the cards -and the hint change, so **a card no longer matches its chart layer** unless its site has no accent. -With the mapping above that is visible: Jeralyzer's card is gold and its layer blue, Hasanalyzer's -card blue and its layer amber. **A follow-up option, not implemented:** the proposed set is exactly -the chart palette's five hues (blue, green, violet, amber, magenta), so the chart could draw each -site in the `--chart-N` whose hue matches its accent and keep the validated values. In today's -order that passes every adjacent pair on every base (CVD ≥ 11.1, normal ≥ 15.3), and over all pairs -it is `--chart-1..5`'s own result in any order (CVD WARN 6.1–6.9, normal ≥ 15.3). +The slice's fallback first kept the growth chart on `seriesColor`. That made a card disagree with +its layer: Jeralyzer's card was gold and its layer blue, Hasanalyzer's card blue and its layer amber +(`ac-cards-*.png`, `ac-chart-*.png`). **Hue-matched chart (the coordinator's follow-up, same day):** +the proposed set is exactly the chart palette's five hues, so `siteChartColors` draws each site in +the `--chart-N` of its accent's hue family (blue 1, green 2, violet 3, brass → amber 4, sakura → +magenta 5) and keeps the validated values. Each accent is 1–21° of hue from its slot, and ≥ 31° from +any other slot. The validator on the layer colours the code resolves (`ac-layers.log`): + +| order | adjacent (the stack), light / sepia / dark | all pairs | +|---|---|---| +| today (Jer, Ani, Bon, Has, Rek) | PASS; CVD 12.3 / 11.1 / 11.8, normal 17.7 / 15.3 / 16.6 | CVD WARN 6.2 / 6.1 / 6.9, normal ≥ 15.3 | +| Has and Rek swapped | PASS; CVD 12.3 / 11.3 / 13.7, normal 19.6 / 19.7 / 16.6 | the same set | + +The all-pairs WARN (6–8 floor band) is `--chart-1..5`'s own borderline in any order, legal with the +legend, the surface-gap edges and the table. A site with Vermilion, Signal, a custom hex or no +accent takes `seriesColor(i)` when no one holds it, else the lowest free slot: never two sites in +one colour. **What shipped** - **The hint** (`common/components/SearchBar.tsx`) is `text-brand`: the site's accent, or the @@ -1899,11 +1908,14 @@ it is `--chart-1..5`'s own result in any order (CVD WARN 6.1–6.9, normal ≥ 1 - **`accentIdOf`** (`common/lib/accent.ts`) and an optional per-site **`accentId`** in `homepage-summary.json` (still v5) and `hub-summary.json` (still v1; `parseHubSummary` keeps only a known id). The published hex is unchanged. -- **`siteColor(site, i)`** (`common/lib/siteColor.ts`): a named accent → `var(--swatch-<id>)`, a - custom hex → that hex, neither → `seriesColor(i)`. -- **Homepage:** `ArchiveCards` stripes use it; `ArchiveGrowthChart` (layers, legend, `STACK_ORDER`) - is unchanged, and both header comments state the rule and the validation. `/stats`' `SiteGrid` is - its chart's legend, so it stays on `seriesColor` too. +- **`siteChartColors(sites)`** and **`siteColor(site, chart)`** (`common/lib/siteColor.ts`): the chart + colour above; the mark colour is a named accent → `var(--swatch-<id>)`, a custom hex → that hex, + neither → its chart colour. So a family accent's card and layer share a hue, and a card with no + accent equals its layer. +- **Homepage:** `ArchiveCards` stripes use `siteColor`; `ArchiveGrowthChart`'s layers and legend, + `/stats`' site series (`homepageChartData`) and its `SiteGrid` cards use `siteChartColors` + (`STACK_ORDER` unchanged). The By-site leaderboard keeps each site's colour instead of re-keying by + rank; channels are still rank-keyed. The header comments state the rule and the numbers. - **Hub:** `officialInstances` colours through `siteColor`, so the card, chip, result edge and channel group wear a named accent per base. `hub-sites.json` carries only the on-dark hex, so the summary's id is used when the two name the same colour; a site's own different hex still wins. @@ -1919,7 +1931,10 @@ it is `--chart-1..5`'s own result in any order (CVD WARN 6.1–6.9, normal ≥ 1 | `7667e8d5` | `homepage:` `ArchiveCards` stripes through `siteColor`; header comments; the fixture summary; `instance-colours.spec` | | `152ade49` | `hub:` comments; `official-instances.spec` checks a Brass member on dark, light and sepia | | `e39eb7ea` | `changelogs:` export, editor and homepage `[Unreleased]` (new sections above `[0.9.1]` in export and editor) | -| _this_ | `plans:` this record; `FACTS.md`'s official-instance colour line | +| `7b1e109b` | `plans:` this record; `FACTS.md`'s official-instance colour line | +| `4719b333` | `common:` `siteChartColors`; `siteColor` falls back to the chart colour; `ArchiveCards` and the hub pass it; 7 unit tests (the message says 8) | +| `0ce35eab` | `homepage:` the growth chart, its legend and `/stats` wear `siteChartColors`; `instance-colours.spec` checks legend = slot, Brass card within 25° of hue of its layer | +| _this_ | `changelogs, plans:` the `[Unreleased]` bullets, this record and FACTS for the hue-matched chart | **Gates** (logs `ac-*.log`): - **tsc** clean on the code tree (33 s) before the four code commits, which were staged from it @@ -1937,10 +1952,16 @@ it is `--chart-1..5`'s own result in any order (CVD WARN 6.1–6.9, normal ≥ 1 - **Visual:** the homepage built with the five real sites carrying the proposed accents, on dark, light and sepia at 1280 (`ac-cards-*.png`, `ac-chart-*.png`): each stripe is the accent's value for its base, and the chart is unchanged. +- **Hue-matched chart, on `0ce35eab`:** tsc clean (66 s); common **2,028/2,028** (+7); homepage build + ok (15 s); homepage e2e full **28 passed** (54.7 s); `e2e:hub` **25 passed** (57.8 s; the hub's + fallback now reads the chart colours). `instance-colours.spec` bites: with `ArchiveGrowthChart` at + `7b1e109b` the legend's first swatch is `--chart-1` (`rgb(53, 97, 200)`), not the amber slot. + Screenshots `ac2-cards-*.png`, `ac2-chart-*.png`: every card and its layer are one hue on dark, + light and sepia. **Left.** The accents themselves are the parent's (site form); until they are set, every stripe is -its chart colour, as today. The chart follow-up above is the parent's call. Rollout: every export -site and the hub rebuilt for the hint; the homepage and the hub rebuilt after the accents are set. +its chart colour, as today. Rollout: every export site and the hub rebuilt for the hint; the +homepage and the hub rebuilt after the accents are set. ## Rollout