Archilyzer · Source

archilyzer

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

commit 9abcbcbd0a5de86ee2eee3975ed8cf0f47d9dd4b
parent 041ebe5c0c738dfd2047e83c8b0ac15e527ad23f
Author: I Mean I'm Just Saying <imeanimjustsaying@kiwifarms.st>
Date:   Tue, 29 Sep 2026 21:37:14 -0400

plans: FACTS' naming hazards gain `listed`/`unlisted` (a video's visibility, the hub's loaded list, a site the family lists); release 14's slices table and Order carry HS; the Rollout names HS, counts public LISTED sites at the hub check, and checks the new box (review L4, L6)

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>

Diffstat:
Mplans/FACTS.md | 10++++++++++
Mplans/release-14.md | 21+++++++++++++--------
2 files changed, 23 insertions(+), 8 deletions(-)

diff --git a/plans/FACTS.md b/plans/FACTS.md @@ -153,6 +153,16 @@ THROWS at declaration — module load — on a name `SUB_FILE_RE` matches; Never name the curated field `tags`. Never assume a `tags.json` is the keyword list: `transcripts/tags.json` and `sites/<id>/tags.json` are curated tags. +**`listed` / `unlisted` mean three unrelated things** (release 14, slice HS): + +| Which | Where | What it is | +| --- | --- | --- | +| A video's visibility | `common/lib/availability.ts` (the `"unlisted"` state, `isUnlisted`), `common/lib/transcripts{,-server}.ts`, `common/components/shareUrl.ts`, `common/controller/buildIndex.ts` | The platform's own "unlisted" (reachable by link, not listed on the channel). | +| The hub's list has loaded | `export/app/components/hub/useHubSites.ts` — `listed` | `/hub-sites.json` has been answered and `/hub-summary.json` has settled. | +| **A site the family lists** | `site.json` `listed` (`common/lib/siteSchema.ts` — `isListedSite`, `channelsOnlyOnUnlistedSites`) | Absent = listed; `false` keeps the site off the homepage, the hub and the other sites' footers, and out of the public totals. | + +A grep for either word finds all three; read the file before assuming which. + **Never publish a path segment named `.git`.** wrangler's Pages upload drops `**/.git` (and `**/node_modules`) SILENTLY, and Cloudflare's managed rules block `/.git/` requests. The source mirror is `/source/archilyzer.git/` for that reason (release 12, below). A mirror named `.git` would diff --git a/plans/release-14.md b/plans/release-14.md @@ -20,10 +20,11 @@ slice HP added to it on the operator's ruling of the same day. Rules: |---|---|---|---| | HP | `homepage/social-visible` | The homepage's social row and one theme toggle in the header at every width, the wordmark's text dropped first on a very small screen and the row scrolling only as the last resort, one shared `SocialLinks` component, larger keys with a focus ring; Changelog in the footer only; the instance cards' names as the site's wordmark; the social icon checked by an allowlist on save and at render; a sized SVG with no viewBox gets one; `featured` ("Show in header") on a social link | `common/components/{SocialLinks,SocialScroll,ThemeRadios,ThemeToggle,ThemeScript,ThemeProvider,Wordmark}.tsx` + `themeConfig.ts`, `common/bin/doctor.ts`, the growth chart, `common/lib/{socialSvg,socialLinks}.ts` + tests, `common/lib/settingsSchema.ts` (the social-link type, parser, docs; the normalizer moved to `socialSvg.ts`), `common/lib/normalizeSocialSvg.test.ts`, `common/lib/{settings,site,homepage}.ts` (the save errors), `common/lib/{homepageSummary,siteColor}.ts`, `homepage/app/components/{Header,Footer,ArchiveCards}.tsx`, `homepage/app/lib/{nav,summary}.ts`, `homepage/app/not-found.tsx`, `homepage/e2e/**` (the fixtures, `helpers.ts`, the new and the rewritten specs), `homepage/playwright.config.ts`, `export/app/components/{MobileMenu,Footer}.tsx` (the `ThemeRadios` swap; the footer's read path), `editor/app/components/SocialLinksField.tsx` + `socialLinksJson{,.test}.ts`, `editor/app/{settings,sites}/actions.ts` (the save errors), `editor/e2e/settings.spec.ts`, `SETTINGS.md`, `SITE.md` | | Lows, chart gap, T1, H1 (H3 folded in), H2 | `r14/two-grounds-headers` | The final review's Lows; the charts' surface gap; two grounds and each site in its own accent; the export and hub headers carry the social row and the toggle as one group, with an Archilyzer link to the homepage's `#instances` in place of the sites dropdown and the hub link; Changelog to the footer; after its review, the narrow header keeps the name and shows only the marked links (every header) | `common/components/{ThemeProvider,ThemeScript,ThemeToggle,SocialScroll}.tsx` + `themeConfig.ts` (and the deleted `ThemeMenu`, `ThemeRadios`), `common/components/charts/{ChartView,CrossSiteChart,surfaceGap}`, `common/styles/tokens.css`, `common/lib/{brand,accent,siteColor,paths,project,socialSvg,siteSchema,settingsSchema}.ts` + tests, `scripts/next-build-trace.test.mjs`, `export/app/components/{Header,MobileMenu,Footer}.tsx` (and the deleted `SiblingSwitcher`), `export/app/{layout.tsx,globals.css,changelog/page.tsx,lib/brand.ts}`, `export/e2e{,-hub}/**` (the theme, header and branding specs), `export/playwright.config.ts`, `editor/app/{layout.tsx,globals.css,sites/components/SiteForm.tsx}`, `editor/e2e/theme.spec.ts`, `homepage/app/{page.tsx,layout.tsx,globals.css,lib/*,changelog/page.tsx,components/{Header,ArchiveGrowthChart,ArchiveCards}.tsx}`, `homepage/e2e/**`, `homepage/content/docs/operate.md`, `SETTINGS.md`, `SITE.md` | +| HS | `r14/hidden-sites` | Hidden sites: `site.json` `listed` (absent = listed). An unlisted site builds and deploys as before, and is left off the homepage (cards, chart, `/stats`), the hub (members, federated search, `corpus.json`, `llms.txt`), every other site's footer and the published id lists (`channel-sites.json`, the pooled `stats/`); the channels only it exposes count in no public total. One checkbox in the site form | `common/lib/{siteSchema,site,homepageSummary}.ts` + tests, `common/controller/{poolSummary,buildStats}.ts` + tests, `common/bin/{compose-homepage,compose-hub}.ts` + `compose-hub.test.ts`, `editor/app/sites/{actions.ts,components/SiteForm.tsx}`, `editor/e2e/{helpers.ts,sites-crud.spec.ts}`, `homepage/e2e/{fixture-summary.ts,unlisted-site.spec.ts}`, `SITE.md`, `plans/FACTS.md` (Naming hazards) | | S1 | per the plan | per the plan | per the plan | -**Order:** HP → `r14/two-grounds-headers` → S1. The shared files are the three changelogs' -`[Unreleased]` sections and this record. +**Order:** HP → `r14/two-grounds-headers` → HS (`r14/hidden-sites`) and S1 (`r14/first-search`), +siblings. The shared files are the three changelogs' `[Unreleased]` sections and this record. ## Record @@ -1170,8 +1171,8 @@ Counts (files holding the string / occurrences, `grep -rF`): - **`listed` has another meaning nearby:** `useHubSites`' `listed` flag (`export/app/components/hub/useHubSites.ts`) says the hub's list has been answered. A grep for the key finds both. -- **The Rollout's hub check** ("`hub-summary.json covers N official instance(s)`, where N is the - number of public sites") now counts public LISTED sites. +- **The Rollout's hub check** ("`hub-summary.json covers N official instance(s)`") counts public + LISTED sites; the Rollout says so since the review. - **Unlisting takes effect at the next builds.** The homepage, the hub and every other site are static: until each is rebuilt and deployed, it still lists the site. - **The editor's `/sites` list** shows no marker for an unlisted site; the form's checkbox is the @@ -1192,8 +1193,8 @@ Counts (files holding the string / occurrences, `grep -rF`): ## Rollout -Release 14 is slice HP (merged, `bfa1ff3c`) and `r14/two-grounds-headers` (after the parent's -merge). Every command below is typed **from the primary checkout's root**. There is no +Release 14 is slice HP (merged, `bfa1ff3c`), `r14/two-grounds-headers` and slice HS +(`r14/hidden-sites`), each after the parent's merge. Every command below is typed **from the primary checkout's root**. There is no `archilyzer` on PATH, so it is `pnpm archilyzer …`. The command forms are the ones verified in `plans/stats-cache-key.md`'s rollout. @@ -1224,8 +1225,9 @@ hub goes before the sites, because in basic mode they share `export/out`. The si - `pnpm ops build-hub --wait`, then `pnpm ops deploy-hub --wait`. **Between the two,** the build's `compose-hub: …` line must end with `hub-summary.json covers - N official instance(s)`, where N is the number of public sites. If it says `hub-summary.json - skipped: …`, stop and fix what it names. + N official instance(s)`, where N is the number of public LISTED sites (a site whose + **List on the Archilyzer homepage and hub** is unticked is not counted). If it says + `hub-summary.json skipped: …`, stop and fix what it names. 4. **The six sites:** `pnpm ops build-deploy --json '{"all":true}' --wait`. **Live checks.** @@ -1243,3 +1245,6 @@ hub goes before the sites, because in basic mode they share `export/out`. The si and `localStorage.getItem("ytdlp-tb:base")` now reads `"light"`. - The homepage's growth chart has no slash in the page colour through any band. `/stats` in Area mode has coloured top lines. +- Every site's settings in the editor show **List on the Archilyzer homepage and hub**, ticked. With + none unticked, the homepage, the hub and every footer list the same sites as before, and + `https://archilyzer.pages.dev/homepage-summary.json` reads `"version":6`.