Ship log
Changelog
What landed across the workspace, and when. Each entry links back to the spec or blueprint that asked for it. Entries from sibling sites are tagged with their slug.
-
Confidential Access v2 — Signed-Link Sessions + Telemetry for Client-Content Workspaces
Resolved the long-standing problem that bit us hardest on calmstorm-decks last week: a busy primary stakeholder couldn't get into the gated site, the gate had no server-side telemetry to debug it, and there was no way to attribute downstream sharing. The new pattern — exploration + spec at the cross-cutting level, working implementation in calmstorm-decks — replaces client-side localStorage gates with a DB-backed session model on Astro DB / Turso. Tier 1 is a signed pre-authed link (WhatsApp-deliverable, identity-bound) for direct stakeholders; Tier 3 is a two-role universal passcode (admin / viewer) with a downstream-sharing attribution hack via passcode suffix. Every verify attempt writes an AuthEvent row; every gated page view writes a PageView row; an /admin/activity dashboard surfaces both in real time. Now the lineage of any client interaction is recoverable in a 30-second DB query instead of a multi-hour forensic exercise.
-
Accurate Screenshots to Per-Variant PDF Decks via a Dev-Only Capture Surface
calmstorm-decks now exports the live HTML/CSS/Tailwind slide tier to pixel-perfect PNGs and three per-variant PDFs (v1/v2/v3, 17 pages each) in one `pnpm export:decks` call. The unlock was a tiny dev-only un-gated route — `/dev/shot/{slot}/{variant}` — that renders exactly one SlideCanvas filling the viewport, with no chrome, no auth, no aria-hidden juggling. Screenshot infrastructure shouldn't traverse production auth; once we accepted that, the export script collapsed to a five-line URL loop and we got a runnable PDF deck for every design variant on the fund.
-
Sweep: llms.txt + sitemap + robots.txt across every site and splash
The day after the analytics + LFM sweep, we shipped the discoverability layer. Every actively-maintained site and splash in the astro-knots ecosystem got an llms.txt / llms-full.txt pair (per llmstxt.org), an XML sitemap auto-generated by @astrojs/sitemap, a robots.txt pointing crawlers at it, and a pair of <link> hints in BaseLayout announcing both surfaces from every rendered page. SEO + GEO discoverability, parallel-patterned across eight repos in one motion.
-
Sweep: LFM 0.3.0, Astro 6.3.1, and OpenPanel layered across the fleet
A chore commit dressed up as a milestone. We landed @lossless-group/lfm v0.3.0 on JSR, brought every actively-maintained site to Astro 6.3.1, and layered OpenPanel.dev alongside Umami and Fathom across eight Analytics components. The interesting part isn't any single change — it's that the discipline of one parallel pattern in eight repos stayed intact long enough to do all three at once.
-
Paste a playlist link, get a real playlist component
A YouTube playlist URL on its own line used to render as a frame indistinguishable from a single video. Now it pulls 1,899 items from the Data API at build time, server-renders a sidebar, and lets the reader click any video to play it in place — all from a bare URL or a `:::youtube-playlist` directive. First pass; UI tweaks pending; pattern is reusable across every Astro Knots site.
-
aside-escape: sidebars that pop out of the article column
The empty space to the right of a centered article column has been doing nothing useful for decades. Today it earned a job. The playlist component's sidebar now floats out of the reading column into that margin track, with the player still anchored in the prose flow. Same trick generalizes to any LFM component that wants to be supplementary, not stacked.
-
v1 ship: YouTube playlist embed family functional
Started the day fixing how a single-line YouTube Short renders inside a memo's prose flow. Ended it with a build-time-fetched playlist UI that escape-positions itself in the article's right margin, with a 1,899-item scroller wired to the iframe via the YouTube IFrame Player API. Six commits, three changelogs, two specs touched, one new cross-cutting `MobileFeaturePlaceholder` pattern.
-
Telemetry for traction: Umami + Fathom across the splash fleet
Eight sites can finally tell us if anyone's reading. Two analytics platforms, one tiny component pattern, and a production-only gate that keeps localhost out of the dashboard.
-
Dual-provider auth — sign in with GitHub or LinkedIn, link both, get a green dot
-
People as first-class subjects — one PersonCard, one resolver, one truth
-
Propose a project or working group from the site itself
-
Interactive live polling — Svelte SSR + Turso, five templates, audit log, end-to-end in one evening
-
Web-native slides — Reveal.js + Astro components-as-slides + GSAP, all mode-aware via tier-2 tokens
-
Get-Involved icon row — three-tap commitment signal on every project, working-group, and proposal card
-
Webinar pre-event polish — registrant survey viz, presenter cards, Kauffman partner mark
-
Stacks v0.5 — interactive stack builder, GitHub App write path, full registry browse
-
Long-Form Reader Chrome — Triptych, Reading Progress, ChapterMeta, and the LFM Pipeline Everywhere
-
Projects, the surface — gallery, detail, header popdown, and the working-group content collection
-
Working Groups, alongside Projects — disambiguating the surface, codifying the relationship
-
Mobile-responsive header — hamburger drawer, anchored spacing
-
Dojo Page, Reusable Hero/CTA/Grid Components, TextLinkSpan, and a Long-Form Content Scaffold
-
Project Scaffold — Astro 6, Svelte 5, Tailwind 4, Sveltia CMS
-
Flag Pixel Spacing Variants
-
Wobble Rings Flare Component
-
Vibrant Mode, Brand Mark Wrapper, and Animated Grain Overlay
-
OpenGraph Meta Tags and Share Banner
-
Vibrant Mode Token Refactor, Snippet Sanitization, and Department Filters
-
New Flare Components & Simplified Homepage
-
Jobs Page & Pinpoint API Integration
-
Emblem Theme System Implementation
-
Changelog System Implementation
-
Design System Documentation Hub
-
Flare: Three.js Visual Effects System
-
Hand-Rolled OAuth (GitHub + LinkedIn), Privacy Policy, and the /stack/me Scaffold
-
Site Scaffold from Astro Knots Conventions — Skeleton Right on First Try
-
Webinars Collection — Calendar-Style Cards, Index Page, and Detail Pages
-
astro-knots/2025-12-12_03
-
astro-knots/2026-04-22_01
-
astro-knots/2026-04-26_01
-
astro-knots/2026-05-03_01
-
Variant-Cycling HTML Slideshow — Slides 1–4 with Header, Nav, and Keyboard Shortcuts
First playable scaffolding for the Calm/Storm Fund III teaser deck. A 16:9 letterboxed slide canvas with thin Calm/Storm header, prev/next chrome, keyboard navigation, and four-slide compositional variants for compositional review.
-
Foundation Day — DESIGN.md Spec, Brand-Sourced Color Palette, and Per-Slide Narratives
A change in direction. Stopped iterating on slide wireframes; started building the design system and content layer that should have come first. DESIGN.md scaffolded, 44 named colors imported (24 from the design tool + 19 from the live calmstorm.vc site CSS), 17 slide narratives written with structured YAML data and interpretive commentary.
-
Deck-as-Page at /thesis — Full 17-Slide Teaser Composed from Narratives, DESIGN.md, and Reference Implementation
The whole deck rendered as a single scrollable page with section-per-slide scroll-snap, design tokens flowing from DESIGN.md into a real theme.css, and 17 section components composed from the upstream narratives. Same content, same brand, dramatically better visual outcome on the first build — directly attributable to the foundation work shipped the day before.
-
Scroll Deck Variant 2 + First-Class Navigation Chrome (Header Toggle, Variant Registry, Reusable Nav Primitives)
Promoted full-deck scroll variants to a first-class deliverable alongside the slide-by-slide variant chooser. Shipped a second 17-slide composition (`/thesis/version-2`) with substantially different layout choices per slide, then built the navigation chrome that lets the work be discovered: a CTA on the index page, a header that surfaces both surfaces (TOC + Scroll), an inline variant toggle that appears only when a scroll deck is loaded, and a registry-driven `DeckNav` component reused by both surfaces.
-
Privacy Gate v1 — A Shared Secret in Front of Every Page
Every page that contains deck material now sits behind a code that must be entered before any content is shown. The same code unlocks the entire site for the session. Crawlers are explicitly disallowed at the protocol level. We are deliberately conservative about what reaches the public web — this is the first iteration of the access posture the deck workspace will carry forward, set in place well before the site is widely shared.
-
Scroll Deck Variant 3 — The Editorial Print Magazine
A third full-deck composition rendered in the voice of a printed quarterly: plate marks at the top of every spread, drop caps on lead paragraphs, marginal sidenotes, hairline rules, and a colophon close. Same source content as v1 and v2, same theme tokens, same data files — only the layout vocabulary changes. The third deck went from blank slate to shipped in a single session, registry-driven nav and the index-page CTA both pick it up automatically, and the slate of stakeholder-facing options is now three real choices instead of two.
-
Variant Chrome — Keeping the Scroll-Deck Pill Lean as the Menu Grows
Adding the third scroll deck pushed the header's variant-toggle pill onto two lines: the label and the counter were stacking. A two-attribute fix to the inline counter span keeps everything on one horizontal line, so the chrome stays lean vertically as the menu of full-deck variants continues to grow. Small change; durable principle: the navigation surface should scale with the catalog, not the other way around.
-
OpenGraph + SEO System — Per-Page Metadata, Comprehensive Social Preview, and the Single-Source Registry Behind It
Every user-facing page now emits a complete head-metadata block: title, description, canonical URL, full OpenGraph (image, dimensions, alt, type, secure URL), Twitter card, and noindex defaults. A single component reads from a per-page registry so each surface — cover, scroll-deck variants, slide choosers, draft variants, changelog index, and changelog detail — carries its own title and description while sharing one branded social-preview image. Custom overrides are a single prop away, and adding a new gated page is a one-entry change in the registry.
-
twf_site/2026-04-09_01
-
twf_site/2026-04-09_02
-
twf_site/2026-04-25_01