Build Log · Oct 30, 2026

Living accepted, made default, and the builds stop depending on Google

Acceptance review of the Living Workshop on production, the switch to Living as default, the fixes daily use surfaced, website polish, and self-hosted fonts for every app.

  • alloy
  • website
  • acceptance
  • fonts
  • owner-loop
commits, all pushed
14

commits, all pushed

apps on self-hosted fonts
8

apps on self-hosted fonts

Home reads after an idle gap (local)
14.0s → 2.5s

Home reads after an idle gap (local)

owner approvals carried out (#9 merged + deployed, #19 unparked)
2

owner approvals carried out (#9 merged + deployed, #19 unparked)

Timeline

  1. Morning

    Acceptance review on production

    Five Living pages at desktop and phone, Command graph and Explore interaction, a write-free decision submit, anonymous and non-owner access

  2. Midday

    Release checks and the default switch

    Cold Home load fixed (24 h stale window, boot warm, self-refresh), stale health labelled last known, Command graph fills its canvas, Living made the owner's default

  3. Afternoon

    What daily use surfaced

    Answered items, Answer vs Approve verbs, a preselected Reply, approved work with nowhere to be seen; #9 merged and GODgle deployed, #19 unparked

  4. Afternoon

    Website polish

    About photo, hero and closing art regenerated sharp, one positive CTA, quotes closed, café photo centred, Research drops old links

  5. Late

    Builds stop fetching fonts

    next/font/google failed intermittently in Turbopack; every app now uses next/font/local

What shipped

  • products/alloy/lib/living/home.ts — lede counts today's decisions; readAt/readStale; per-source read timing log; In motion data

  • products/alloy/lib/command/read.ts + lib/cache/swr.ts + instrumentation.ts — 24 h stale window, globalThis cache, boot warm of readCommand

  • products/alloy/components/living/RefreshWhenStale.tsx — Home refreshes itself while showing an old reading

  • products/alloy/components/command/ArchitectureGraph.tsx + CommandCockpit.tsx — graph fills its canvas, mounts once visible, freshness dated from the reading, phone strip fade and one-line Show the map

  • products/alloy/app/w/[slug]/home/page.tsx + components/WorkbenchShell.tsx — Living is the owner's default, Classic stays one click away

  • products/alloy/lib/command/sources/flow.ts + decisions.ts + lib/home/board.ts — pendingWith, flowStatus, handedTo; verbs Approve/Merge/Answer; In motion rows

  • products/alloy/components/living/decide/item/DecidePanel.tsx + app/w/[slug]/living/item/[number]/page.tsx — preselect the acting decision; an awaiting task links to its pull request

  • forgekit-website/app/about/page.tsx, app/page.tsx, app/research/page.tsx, app/start/page.tsx, components/v2/Frame.tsx, components/Nav.tsx, components/Footer.tsx, next.config.ts — photo crops and sizes, CTA wording, closing quotes, Research links, /case-studies redirect

  • forgekit-website/public/v2/landscape.jpg + idea.jpg — regenerated at 1536x1024 and 1024x1536 from the existing art

  • forgekit-os/scripts/fonts/self-host-google-fonts.mjs — downloads latin woff2 and prints localFont entries

  • products/alloy, forgekit-website, experiments/godgle, experiments/arcade, experiments/canvas-1, experiments/canvas-2, experiments/reality-draft, experiments/windowseat — next/font/local with checked-in fonts

“we dont leave things broke”
— Zeb