Lossless Changelog
fleet

Astro Knots

lossless-group/astro-knotsmaster

2026-09-15 · 4 entries2026-09-14 · 1 entry2026-09-13 · 3 entries2026-09-12 · 1 entry2026-09-11 · 2 entries2026-09-08 · 1 entry2026-08-26 · 1 entry2026-08-23 · 6 entries2026-08-21 · 2 entries2026-08-20 · 1 entry2026-08-19 · 1 entry2026-08-18 · 2 entries2026-08-17 · 7 entries2026-08-15 · 1 entry2026-08-09 · 1 entry2026-08-08 · 3 entries2026-08-06 · 1 entry2026-08-04 · 1 entry2026-08-03 · 1 entry2026-08-02 · 1 entry2026-07-08 · 1 entry2026-07-06 · 13 entries2026-06-22 · 2 entries2026-06-21 · 1 entry2026-06-03 · 1 entry2026-05-26 · 1 entry2026-05-21 · 1 entry2026-05-20 · 1 entry2026-05-18 · 1 entry2026-05-11 · 2 entries2026-05-09 · 2 entries2026-05-08 · 4 entries2026-05-07 · 4 entries2026-05-06 · 1 entry2026-05-03 · 4 entries2026-04-29 · 6 entries2026-04-28 · 2 entries2026-04-27 · 4 entries2026-04-26 · 2 entries2026-04-25 · 1 entry2026-04-22 · 2 entries2026-04-21 · 1 entry2026-04-20 · 5 entries2026-04-17 · 1 entry2026-04-16 · 1 entry2026-04-09 · 2 entries2026-03-23 · 1 entry2026-01-28 · 1 entry2026-01-19 · 4 entries2025-12-31 · 3 entries2025-12-27 · 2 entries2025-12-26 · 1 entry2025-12-25 · 7 entries2025-12-24 · 1 entry2025-12-18 · 4 entries2025-12-14 · 2 entries2025-12-13 · 1 entry2025-12-12 · 4 entries2025-12-09 · 1 entry2025-12-04 · 3 entries2025-04-26 · 1 entry2025-04-25 · 2 entries2025-03-30 · 12 commits · 738 code · 55 changelog2025-04-12 · 12 commits · 46,118 code · 327 changelog2025-04-15 · 12 commits · 2,713 code2025-04-22 · 12 commits · 10,745 code · 341 changelog2025-04-27 · 26 commits · 22,313 code2025-05-30 · 14 commits · 85 code2025-06-07 · 15 commits · 824 code2025-06-13 · 18 commits · 948 code2025-06-19 · 11 commits · 701 code2025-07-20 · 11 commits · 478 code2025-07-22 · 12 commits · 1,399 code2025-07-28 · 11 commits · 2,781 code2025-07-30 · 12 commits · 7,602 code2025-08-08 · 17 commits · 4,402 code2025-08-09 · 14 commits · 3,381 code · 10 changelog2025-08-10 · 21 commits · 2,166 code · 38 changelog2025-08-11 · 15 commits · 4,444 code2025-08-12 · 14 commits · 4,679 code2025-08-13 · 14 commits · 8,523 code2025-08-15 · 12 commits · 1,871 code2025-08-18 · 13 commits · 2,855 code2025-08-20 · 17 commits · 11,031 code2025-08-21 · 48 commits · 9,436 code · 2 changelog2025-08-22 · 23 commits · 3,815 code2025-08-24 · 16 commits · 4,747 code · 140 changelog2025-08-25 · 24 commits · 644 code2025-08-26 · 15 commits · 1,719 code2025-12-13 · 11 commits · 1,590 code · 5,748 context · 356 changelog2025-12-31 · 11 commits · 1,223 code · 716 context2026-01-19 · 12 commits · 6,010 code · 1,103 context · 2,940 changelog2026-03-25 · 19 commits · 1,228 code · 16,403 context2026-03-30 · 18 commits · 2,863 code · 669 context2026-04-20 · 12 commits · 2,755 code · 415 changelog2026-04-21 · 13 commits · 1,597 code · 5,932 context2026-04-26 · 17 commits · 8,467 code · 4,113 context · 1,266 changelog2026-04-28 · 24 commits · 12,258 code · 116 context · 209 changelog2026-04-29 · 16 commits · 7,967 code · 1,065 changelog2026-05-03 · 17 commits · 5,679 code · 2,601 context · 570 changelog2026-05-07 · 11 commits · 1,880 code · 1,134 context · 467 changelog2026-05-08 · 23 commits · 4,038 code · 4,953 context · 519 changelog2026-05-21 · 19 commits · 6,166 code · 1,534 context · 507 changelog2026-05-27 · 22 commits · 4,297 code · 1,242 context2026-06-21 · 12 commits · 1,629 code · 76 changelog2026-06-22 · 19 commits · 934 code · 369 context · 407 changelog2026-07-07 · 19 commits · 700 code · 539 context · 396 changelog2026-08-08 · 22 commits · 74,395 code · 555 context · 436 changelog2026-08-17 · 43 commits · 6,501 code · 5,423 context · 8,063 changelog2026-08-18 · 38 commits · 11,817 code · 2,766 context · 1,398 changelog2026-08-23 · 21 commits · 17,785 code · 1,657 context · 688 changelog2026-09-09 · 12 commits · 326 code · 188 context2026-09-13 · 17 commits · 4,824 code · 645 context · 587 changelog2026-09-15 · 13 commits · 2,795 code · 738 changelog
Jan 20252026Sept 2026
  • colour = whenJan 2025 → Sept 2026

2,192 commits · +1,352,976 lines across this project and its sub-projects

Code
1.23M91%
Context
83k6%
Changelog
38k3%
145 entries ·14 from Astro Knots itself
productLossless Toolkit

Refined Client Portals

The monogram fallback did its job and is now out of a job — the real icons arrived, recovered from a sibling repo and checked byte for byte.

Michael Staton
  • Toolkit-Rebuild
  • Client-Surfaces
  • Git-LFS
  • Design-System
  • Verification
productLossless Slides

Every Push Is Production

Any branch, any commit — the deck you just pushed is the deck at lossless-decks.vercel.app.

Michael Staton
  • Deployment
  • Vercel
  • GitHub-Actions
  • CI-CD
  • Continuous-Deployment
  • Astro

Three Client Spikes in One Night, and the Skill That Came Out of Them

Three sites got redesigned as three complete directions each — nine working variants, twenty-seven direction-and-mode combinations, all off one shared content layer per site. gth-site turns a docuseries funnel into a clinical publication, an anatomical atlas, or a consultation, with an upgrade cart whose tiers are strict supersets so it can show you a delta instead of a new cart. dominocielo-site holds a 300-word family-office page at 300 words and makes brevity read as confidence. multiphasic-site got the README treatment its CEO's interest deserved. The pattern repeated three times, so it stopped being improvisation and became `generate-site-design-variants` — a 257-line skill, plus a `/design-variants` page on the splash so the workflow is legible to people who are not us.

Michael Staton
  • Design-Variants
  • Agent-Skills
  • Two-Tier-Tokens
  • Three-Mode-Contract
  • Information-Hierarchy
  • Constraint-In-Code
  • +2
productLossless Toolkit

A Client Surface, a Header That Folds, and Two Hundred-Odd Tools Rescued From a Typo

A page for client toolkit recommendations, a quick-access rail so a client sees their own logo first, a header that collapses properly on a phone, and a repositories page built from four spellings of the same frontmatter key — one of them misspelt, and the only way seven tools were reachable at all. Also: a logo that returned HTTP 200 for a week without ever being an image.

Michael Staton
  • Toolkit-Rebuild
  • Client-Surfaces
  • Responsive-Design
  • Content-Pipeline
  • Verification
  • Git-LFS
productLossless Toolkit

The Hero Grows a Right-Hand Column, and the Dev Server Lies Twice About Where It Lives

The landing page now leads with the copy on the left and the five curated filters on the right, one row, no max-widths. Getting there took four small CSS changes and one genuinely instructive detour: a local server can be running, healthy, returning 200 — and still be serving the wrong build at an address your browser cannot reach. Both halves of that lie are worth writing down, because both were reported as success first.

Michael Staton
  • Toolkit-Rebuild
  • Layout
  • Design-System
  • Verification
  • Local-Dev
productLossless Toolkit

The Whole Catalogue, and Everything That Only Breaks at Full Size

The spike ran on 173 of 1,764 tools, and a tenth of a corpus is not a small version of it — it is a different one. Importing the rest turned five silent defects loud: wikilinks pointing at pages that were never built, two featured tags rendering 2 and 8 tools instead of 258 and 128, and every tag page opening on the unfiltered catalogue because a dead variable was holding the answer.

Michael Staton
  • Toolkit-Rebuild
  • Content-Pipeline
  • LFM
  • Wikilinks
  • Browser-Testing
  • Tags
productMultiphasic

Three Competing Design Directions for Multiphasic, Built in Parallel Against One Narrative Spine

New site scaffolded for Multiphasic Corporation — a materials-state-control deep tech company — from a single five-slide deck. Rather than picking a direction on a mood board, we wrote the eight narrative beats once into markdown and had three agents build three complete sites against them concurrently: Phase Diagram (instrument readout), Lattice (the material itself), and Before the Beam (a two-column argument). Because the argument is held constant in the content layer, the comparison is purely about form. All three ship light, dark, and vibrant modes and six flare components, and the whole thing typechecks clean at 12 routes.

Michael Staton
  • Multiphasic
  • Design-Directions
  • Parallel-Agents
  • Creative-Brief
  • Flare-Components
  • Theme-System
  • +2

Opening the Lossless Toolkit Rebuild — Four Explorations and the Constraints We Found by Reading

The second stage of the lossless-site rebuild gets its own repo, and its architecture conversation gets written down before any code exists. Four explorations capture what is decided (Pagefind, Timeline, OpenPanel, Vitest and Playwright, no published token package) and — more valuably — five constraints discovered by reading the existing corpus rather than assuming: for_clients is curation and not a gate across 481 files, URL fragments never reach the server so anchor links cannot carry their own unfurl, Pagefind indexes at build time so 'live' and 'searchable' are different promises, no Lossless site implements theme modes at all despite three packages built for it, and the house already coined a name for the materialize-versus-JIT rule we kept rediscovering.

Michael Staton
  • Toolkit-Rebuild
  • Astro-Knots
  • Content-Architecture
  • Design-Tokens
  • Open-Graph
  • Search
  • +1

One Atom, Two Islands — Search That Spills Out of the Bar

Pagefind lands in the toolkit spike, and with it the fix for a subtler problem: two Svelte islands that looked like one feature and behaved like two. A shared reactive atom makes the header bar and the catalogue explorer genuinely the same state, tags become clickable objects that fold the query into themselves, and a Playwright drive finally catches the class of bug that a passing build never will — starting with a one-argument mistake that silently killed hydration.

Michael Staton
  • Toolkit-Rebuild
  • Pagefind
  • Svelte
  • Search
  • Browser-Testing
  • State-Management

One Owner for the URL — and Chips That Actually Do Something

Train-Case is the storage form and Train Case is the display form, and for a few hours the toolkit confused the two badly enough to route people at /tags/Video%20Generators/. Fixing it meant giving the URL a single owner, teaching Pagefind to index the stored value rather than the rendered label, and lifting a decorative span out of a link so it could finally be clicked.

Michael Staton
  • Toolkit-Rebuild
  • Pagefind
  • Svelte
  • URL-Design
  • Browser-Testing

Two Agents, One Answer — What the Spikes Agreed On

Two independent implementations of the Lossless Toolkit, built from the same guidance along opposite architectural axes, converged on five decisions nobody asked either of them to make — including the same filename for the content boundary. That agreement is worth more than the winner, and it is what the spec should be built from. The session closes with a handoff, an honest note that none of this code has been read by a human, and a request for a refactoring harness.

Michael Staton
  • Toolkit-Rebuild
  • Agent-Workflow
  • Handoff
  • Refactoring
  • Browser-Testing

The changelog gets a face

Every link to this site unfurled as a grey box. It now ships five share cards and gives each platform its own URL to get the right one.

Michael Staton
  • OpenGraph
  • Share-Preview
  • WhatsApp
  • Ideogram
  • Design-System
  • Context-Engineering

Most of what we write isn't code

The ledger counted every line as code. Two thirds of them aren't — and the chart now says so, day by day, project by project.

Michael Staton
  • Data-Visualization
  • Information-Design
  • Context-Engineering
  • Git-History
  • Agentic-Engineering
  • Changelog-Aggregation
productFullstack VC

Image carousels become a first-class LFM directive — four variants, and a timestamp convention that turns out to be a run stamp

Screenshots of a setup flow are a sequence, and we had no way to say so in markdown. `:::image-carousel` now does, in four variants split as ImageCarousel--{Variant} siblings. Two findings fell out of building it: the image-prep timestamp records when a file was processed rather than when the screen was captured, and our prose reset out-specifies any component that renders a list inside it.

Michael Staton
  • LFM
  • Design-System
  • Markdown-Rendering
  • Image-Carousel
  • Recipes
  • Naming-Conventions
  • +1
productFullstack VC

Every guide gets a table of contents — and the layout bug that had been bleeding every page off the right edge since forever

The ToC was the goal; the layout fix was the surprise. `mx-auto` on a flex item silently disables stretch, so `<main>` had been sizing to its content instead of its parent on every page of the site. Found by driving headless Chrome after three wrong guesses. Plus a new orientation on which open model does which job.

Michael Staton
  • Table-Of-Contents
  • LFM
  • Responsive-Design
  • Layout
  • Recipes
  • Design-System
productFullstack VC

LFM 0.5.0 lands: the table of contents deletes its local scaffolding, and starts leaving callout headings alone

The helpers this site was carrying locally shipped in the package, so `toc-types.ts` was deleted rather than migrated — which was the point of writing it that way. `inContainer` arrived with it, so headings nested inside callouts no longer show up as phantom sections. Also: the ToC was rendering twice on every guide, and had been since it shipped this morning.

Michael Staton
  • LFM
  • Table-Of-Contents
  • Dependencies
  • Bug-Fix
productMP Staton

Essays learn where you are — a reading-position table of contents, built from the parse tree

Twenty-five of the fifty essays are long enough to get lost in and none of them offered a map. They do now, and the outline comes from the MDAST rather than the markdown text or the rendered DOM — which is the only source that can tell a real heading from a `#` comment inside a code fence.

Michael Staton
  • Table-Of-Contents
  • LFM
  • Markdown-Rendering
  • Essays
  • Accessibility
  • Date-Conventions
  • +1
productMP Staton

Four playlists, one page, and a counter that stops lying between deploys

Six thousand videos collected over the years had no front door — the playlist components existed but only ever rendered inside a spec page that happened to mention one URL. Now there is a /playlists surface with a toggle, and the counters refresh on every build for a single quota unit instead of freezing for thirty days.

Michael Staton
  • YouTube
  • Playlists
  • Build-Time-Fetching
  • Runtime-Revalidation
  • API-Quota
  • Vercel
  • +1
productFullstack VC

Agent-native browsers get a recipe, seven tool entries, and the first scripts that skip Astro DB entirely

A new orientation on the browser-shaped body for agents — the one that can pull four years of portco correspondence out of Gmail as filed PDFs — plus the seven browsers it surveys, added to the registry. Underneath: the stack rows behind it were written to Turso directly, with no `astro db execute` anywhere, which is the first piece of getting off a layer Astro is deprecating.

Michael Staton
  • Recipes
  • Tool-Registry
  • Agentic-Browsers
  • Turso
  • Astro-DB
  • Technical-Debt
productFullstack VC

Markdown wins the stack argument: the DB scripts run again, seven identities reconciled, and the July 29 cohort lands on the roster

Adding one tool to the registry surfaced that every stack-sync script had been dead since the Astro 7 upgrade — and that Turso had been a stale photocopy of markdown since May 21. Fixed the tooling, declared markdown the source of truth, and caught a roster sync that was about to publish seven duplicate profiles including one called `mail`.

Michael Staton
  • Tooling
  • Data-Integrity
  • Participants
  • Tool-Registry

One ledger for everything we ship

Thirty-eight changelogs scattered across thirty-one repositories now read as a single record — and the brand gradient stopped being decoration and started telling you when.

Michael Staton
  • Changelog-First-Development
  • GitHub-API
  • Pseudomonorepo
  • Content-Rollup
  • Design-System
  • Two-Tier-Tokens
  • +2
productLearnStart

Share cards that render themselves — LearnStart's OG set, built from the site's own components

LearnStart had no og:image at all: every link anyone shared unfurled as a bare grey box. It now ships four share cards across banner, WhatsApp-tall, portrait, and square — and none of them are drawn by an image library. The card is a real Astro page built from the real FlameMark and the real theme tokens, photographed by headless Chrome. Change a gradient token and the share card changes with it.

Michael Staton
productLearnStart

A mark, a voice, and an address — the flame becomes the brand, Thoughts goes live on LFM, and learnstart.vc gets a canonical URL

Four things landed in one day and none of them had a changelog until now. The flame stopped being a favicon and became the logo — one Python geometry module emitting both, so the tab icon and the header mark can never drift. The Thoughts stream shipped on @lossless-group/lfm with a Sveltia surface so Don can publish without ever seeing git. 62 portfolio companies got one asset convention. And the site finally got an address — plus a DNS zone that had to be snapshotted before anyone dared touch it.

Michael Staton
productHypernova

Branch Reconciliation + Astro 6→7 Dependency Upgrade

Reconciled hypernova-site's stale development/master divergence and missing main tier, merged the standalone SEO/GEO feature branch, then brought the site's dependencies current with the rest of the fleet — surfacing four pre-existing markup bugs Astro 6 had silently tolerated.

Michael Staton
productDark Matter

Dark Matter Jumps from Astro 5 to Astro 7

A full dependency-upgrade pass took the site from Astro 5 and a stale, workspace-hoisted install to Astro 7 with its own independent lockfile — and uncovered a silent content-collection regression along the way.

Michael Staton
productCilantro

Project Scaffold Summary — cilantro-site

Multi-product marketing and changelog platform built with Astro 5 + SSR + Tailwind 4 — home to the Neo AI assistant landing, a changelog architecture that aggregates multiple products, and a Twenty CRM newsletter integration.

Michael Staton
productCogs

Dependency Upgrade — Astro 5 → 7

Cogs-site catches up with the rest of the Astro Knots fleet — Astro jumps two majors in one clean pass, Tailwind CSS patches to latest, and typecheck tooling gets added for the first time.

Michael Staton
productFullstack VC

Two Doors, One Room — The How-To Engine Starts, and the Registry Grows

We started a documentation engine that the Dojo actually needs — how-to content you can enter two ways: by the problem you're solving (a use-case like 'automate dealflow') or by the tool you've heard you should learn (a guide like 'Hermes Agent'). Same content, two doors, cross-linked. It's built on @lossless-group/lfm (not Starlight), shipped a first wired slice end-to-end, gained internal /tools pages that wikilinks now prefer over external sites, and a /recipes index in the header. Alongside it, the tool + participant registries grew: Composio and Granola joined, and David Rolf, Abhinaya Konduru, and a fixed-up Lylan Masterman landed with real profiles.

Michael Staton
  • Docs-Engine
  • Two-Perspective
  • Use-Cases
  • Guides
  • Recipes
  • LFM
  • +4
productFullstack VC

The Docs Pages Get Their Typography

The new how-to pages were rendering their headings bare — Tailwind's preflight reset had stripped every '##' down to body size. Added a single shared docs-prose.css that articulates the LFM/AstroMarkdown output (headings, lists, blockquotes, code, tables), applied across the guide, use-case, and tool pages, and dropped the redundant body title so each doc reads like real long-form content.

Michael Staton
  • Docs-Engine
  • Typography
  • Prose-Styles
  • Tailwind-Preflight
  • LFM
  • Markdown-Rendering
productFullstack VC

Dealflow into Second Brains — Prepping June 24, and Keeping the Record Honest

Last month's poll drew only a handful of responses — so this month we turned those few voices into the spine of the next session. We structured the May 27 reflection + open poll into rendered data, ported and revised a full June 24 'Dealflow into Second Brains' slide deck with an April→May satisfaction trajectory, added Jules Miller to the roster, corrected who actually presented (Marcus and Toby were no-shows, not headliners), moved the /slides 'Today' highlight forward, and bumped Astro to 6.4.8 — verified by a clean full build.

Michael Staton
  • Agentic-VC-Dojo
  • All-Hands
  • June-24-Prep
  • Slides
  • Session-Design
  • Survey-Data
  • +4

Giving May 27 a Spine — Three Breakout Tracks From Yes to Win

Seven survey responses came back from 49 registrants. Rather than retrofit a thin pre-session report, we built the session's structural backbone — three jigsaw breakout tracks that each start at the moment of full-body conviction and fork by which wall comes next, a session-page teaser that renders them at the end of the Format section, and a host script for the closing question that splits the room into a willing-and-able doer cohort and a hear-back audience cohort for June 24.

Michael Staton
  • Breakouts
  • Jigsaw
  • Session-Design
  • May-27-Prep
  • Agentic-VC-Dojo
  • All-Hands
  • +4

Google OAuth as a Third Identity Provider — Plus Link-While-Logged-In and Header Logout

Brought Google up to parity with GitHub and LinkedIn as a peer identity provider for the Agentic VC Dojo. Sign in with any one — including Workspace emails, which is the dominant login surface for fund operators who don't think of themselves as having a developer account. Adds the link-while-logged-in flow (callbacks now read the existing session cookie before overwriting it, so clicking a second provider attaches it to your existing User row instead of minting a separate identity) and a Log out row in the header tooltip so signing out doesn't require navigating to /me. Strategic shift: each provider gives different signal about the same person — GitHub = building behavior, LinkedIn = professional identity, Google = domain affiliation + lowest-friction VC sign-in — so connecting more than one isn't redundancy, it's triangulation.

Michael Staton
  • OAuth
  • Google-OAuth
  • Google-Workspace
  • Authentication
  • Identity-Model
  • Provider-Parity
  • +5
productArthouse

A Services Catalog That Composes Itself From Atomic Offerings

The Services section grew a real spine: a three-collection model (items → categories → cards) where the same atomic offering can be baked into one card's Standard tier and surfaced as a +€80 add-on on another, while a separate billing mode handles hourly/daily/multi-day bookings — and Sveltia learned every one of those shapes.

Michael Staton
  • Arthouse-Site
  • Sveltia-CMS
  • Services
  • Card-Catalog
  • Tiered-Pricing
  • Custom-Time-Billing
  • +2

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.

Michael Staton
  • Confidential-Access
  • Authentication
  • Persistent-Sessions
  • Signed-Link-Tokens
  • Astro-DB
  • Turso
  • +5

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.

Michael Staton
  • Slide-Tier
  • Deck-Export
  • Playwright
  • PDF-Stitching
  • Dev-Only-Routes
  • Fundraise-Materials
  • +2

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.

Michael Staton
  • llms-txt
  • sitemap
  • seo
  • geo
  • discoverability
productMP Staton

A New Content Paradigm — The Scroll Report

Long-form research deserves a stage. We took inspiration from a striking interactive industry report on the web and rebuilt the pattern into a first-class content type for mpstaton-site — a scroll-driven, theme-shifting narrative with KPIs, stat cards, and section-paced gradients.

Michael Staton
  • Scroll-Report
  • Content-Paradigm
  • Astro-Knots
  • Pattern-Library

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.

Michael Staton

Better rendering for YAML conventions, markdown through a refactored callout system

A day that started as a chase for two YAML parse errors and ended with a fully refactored LFM callout system, two new shared conventions documented across the pseudomonorepo, three new Kauffman Fellows in the directory, and a polished design system page demonstrating it all. The thread running through everything: when a one-line indentation mistake crashes the whole build, the right answer isn't just to fix the line — it's to make the pipeline tolerant in the first place. Small disciplined moves compounding into something that will keep paying off across every astro-knots site.

Michael Staton
  • YAML-Conventions
  • Lenient-Parsing
  • LFM-Rendering
  • Callout-System
  • Mode-Awareness
  • Design-System
  • +2

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.

Michael Staton

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.

Michael Staton

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.

Michael Staton
productFullstack VC

Dual-provider auth — sign in with GitHub or LinkedIn, link both, get a green dot

Members can now sign in with GitHub OR LinkedIn — and link both. The User table is now one row per *person* (canonical id = lowercased roster email) with nullable provider columns rather than one row per login. The header indicator went tri-state — green when both providers are linked, amber 'partial' when only one is, red when not signed in — and the partial state opens a tooltip nudging the user to connect the second.

Michael Staton
  • Auth
  • OAuth
  • GitHub-OAuth
  • LinkedIn-OAuth
  • JWT-Sessions
  • User-Identity-Model
  • +2
productFullstack VC

People as first-class subjects — one PersonCard, one resolver, one truth

Three places used to introduce a human — webinar presenters, project leads, working-group leads — with three different markup paths and three different fallbacks. Consolidated into a single PersonCard--Bare component plus a participants resolver that auto-fills avatar, firm, and profile link from the participants collection by case-insensitive name match. Frontmatter stays slim; one source of truth for what a person looks like across the site. Plus a small UX kit (ToolTipIndicator, CtaBtnWithAuthIcons, About-as-popdown-topline, dojo CTA explainer) introduced en route.

Michael Staton
  • People
  • Person-Card
  • Participants-Resolver
  • Design-System
  • Tool-Tip-Indicator
  • Cta-Button
  • +1
productFullstack VC

Propose a project or working group from the site itself

Members can now sketch a new project or working group directly from /projects/propose and /working-groups/propose without asking a maintainer to draft a markdown file. Two pages, two named form components over one shared body, a new Proposal table on Turso, and a public 'recent proposals' rail beneath each form so submitters see the queue they're joining. The bar to propose is intentionally low; the bar to lead is whoever is willing.

Michael Staton
  • Propose
  • Member-Submissions
  • Astro-DB
  • Turso
  • Form-UX
  • Auth-Gated
  • +2
productFullstack VC

Interactive live polling — Svelte SSR + Turso, five templates, audit log, end-to-end in one evening

Built the interactive polling stack from empty to shipped in about six hours of focused work — Astro DB schema with five tables (Session, Poll, Vote, PollResult, PollEvent), five question templates (boolean, single-select, multi-select, sliding-scale, multi-string-input), pure validation + aggregation library, two server endpoints, a Svelte orchestrator with six visual states and optimistic submission, and SSR session pages that read the OAuth cookie per request. Whole companies sell this as a SaaS; we shipped one that's tighter, owns its own data, and lives next to the markdown content collections it eventually materializes back into.

Michael Staton
  • Polling
  • Live-Sessions
  • Astro-DB
  • Turso
  • Svelte-Islands
  • SSR
  • +4
productFullstack VC

Web-native slides — Reveal.js + Astro components-as-slides + GSAP, all mode-aware via tier-2 tokens

Stood up a slides surface from zero in one evening — Reveal.js layout that lives inside BaseThemeLayout (header stays, theme/mode toggle stays, fullscreen via a Present button), markdown-deck and Astro-deck routes side by side, auto-discovery of decks via import.meta.glob (no registry file), a tone-setter deck for tomorrow's launch session that composes the existing Section__Webinar* infographic components as slides, two seed decks lifted and adapted from hypernova-site, a markdown primer deck, and a small GSAP timeline registry pattern keyed off data-gsap attributes — nine animated timelines on the launch deck, including a number-counter on the survey-stats tiles. Decks read tier-2 semantic tokens only, so the same deck repaints automatically when the user toggles light / dark / vibrant from the site header.

Michael Staton
  • Slides
  • Reveal-JS
  • GSAP
  • Astro-Components-as-Slides
  • Markdown-Slides
  • Theme-Tokens
  • +4
productFullstack VC

Get-Involved icon row — three-tap commitment signal on every project, working-group, and proposal card

Every project card, working-group card, and member proposal card now carries a three-icon 'Get involved' row — Lead-Potential / Active-Participant / Keep-Informed — that writes the user's commitment level to a new Turso table on tap. One row per (user, entity, level), enforced by a composite unique index, so a re-tap on the same icon clears the row and a tap on a different icon updates the level in place. Logged-out users see the icons at full fidelity, hover-tooltips describing what each level means, and a click-triggered 'Only the penitent man shall pass' gating message that links them to /login with the return URL preserved. Wired into both galleries (portfolio, mission-brief, lite variants) and into the recent-proposals rail on /projects/propose and /working-groups/propose. Built for tomorrow's launch session — 60 attendees, low-friction signal-collection.

Michael Staton
  • Get-Involved
  • Participation-Interest
  • Astro-DB
  • Turso
  • Optimistic-UI
  • Auth-Gated
  • +4
productFullstack VC

Stacks v0.5 — interactive stack builder, GitHub App write path, full registry browse

Ship the Stacks feature end-to-end: a public catalog of who's using what, OAuth-gated edit at /people/{handle}/stack/edit, a Svelte StackBuilder that buffers drafts in localStorage and publishes via direct commit through a GitHub App bot, and a registry-wide browse at /stacks/see-all-tools so members can read the catalog without having to add tools to their own stack first. Plus the home page reflows: the Dojo cards explainer moves to a new /about placeholder, leaving the home column uniform with the hero.

Michael Staton
  • Stacks-Feature
  • Stack-Builder
  • Svelte-Islands
  • Tool-Registry
  • GitHub-App-Bot
  • OAuth
  • +3
productFullstack VC

Long-Form Reader Chrome — Triptych, Reading Progress, ChapterMeta, and the LFM Pipeline Everywhere

Built the v0.1 long-form reader chrome on `/read/venture-handbook/[slug]/`: a `BookReaderLayout` that wraps `BaseThemeLayout` and composes a top triptych (previous chapter card · banner with overlay · next chapter card), a `ChapterMeta` slim row, an 'In this chapter' outline, generous prose typography (drop-cap, accent rule above each H2, footnote pills, ✦ ornament on `<hr>`), and a bottom prev/next pair — all driven by container queries with four width-based modes. Introduced four reader-specific components in `src/components/read/` (`BookReaderLayout`, `ReadingProgressBar`, `ChapterMeta`, `ContentPreviewNavCard`) and a site-wide `FormattedDate` component backed by a `format-date.ts` util that handles UTC normalization (`April 26, 2026` default, plus medium / short / iso / reverse-medium / year-only). Migrated `webinars/[id].astro` from the improvised vanilla `<Content />` rendering to the canonical Lossless pipeline (`parseMarkdown` + `AstroMarkdown` + `Sources`) and added the table / footnote-pill / hr styles that were missing. Removed a duplicate-`Sources`-heading bug from chapter bodies (the LFM Sources component owns that heading; the content port was double-injecting it). Fixed a fundamental container-query mistake: `@container reader (aspect-ratio …)` reads the container's *own rendered* aspect, which is always portrait for a long scrolling page — so the Desktop layout never fired. Switched to width-only thresholds plus a viewport `@media (max-aspect-ratio: 13/10)` for the actual split-screen-on-portrait case. Dropped a brand banner above the hero on `/dojo` (Kauffman + SVG composite). Registered every new component in `/design-system` per the maintenance motion. The Agentic VC Dojo launch session now has its time, RSVP, and Format table dialed in for the kickoff.

Michael Staton
  • Long-Form-Reader
  • BookReaderLayout
  • Triptych
  • ContentPreviewNavCard
  • ReadingProgressBar
  • ChapterMeta
  • +12
productFullstack VC

Projects, the surface — gallery, detail, header popdown, and the working-group content collection

Stood up the Projects surface for FullStack VC end-to-end: a page spec authored as the input artifact (`context-v/sitemap/pages/Page__projects-index.astro.md`), a `projects` content collection with a Zod schema covering identity, lifecycle (active / proposed / archived), working-group metadata, external links, and display hints; six active projects ported as content (Content Farm, MemoPop AI, Astro Knots, Augment It, Context Vigilance, Lossless Flavored Markdown) plus one proposed (Dealflow OS) and one archived (LP Update Bot) for layout testing; a new `HeroBannerWithMessageHierarchy.astro` that composes the existing `HeroContentCoreMessage` over an image banner (3 heights × 3 overlays × 2 alignments); a single `Section__ProjectGallery.astro` with four variants — `portfolio` (Working Group Cards) and `mission-brief` (numbered dossier) as the two 'standard' creative concepts road-tested in the design system, plus `lite` for proposed projects and `shelf` for the archive; a `JumboPopdown__Projects.astro` mounted in `Header.astro` that surfaces active and proposed projects from any page (hover-open on pointer:fine, click-toggle, Esc-closes, arrow-key navigation, role=menu/menuitem, mobile becomes a bottom drawer); a `ProjectMetadataDisplay.astro` strip and `ProjectReader.astro` body wrapper for the detail page (LFM pipeline + Sources). Three new semantic tokens added to `theme.css` (`--color-status-active`, `--color-status-proposed`, `--color-status-archived`) so status pills carry color through the two-tier system without any component reading `--color__*` directly. Three new design-system catalog entries land in `/design-system/sections/`, `/design-system/heroes/`, and `/design-system/components/` per the maintenance motion. The page spec format itself is new for this site — copying the LFM spec's frontmatter shape (initial-draft / current-draft / final-draft / first-published / last-updated dates, `at_semantic_version`, structured authors, image_prompt) so future page specs read consistently.

Michael Staton
  • Projects
  • Working-Groups
  • Content-Collection
  • Page-Spec
  • Hero-Banner
  • Section-Gallery
  • +7
productFullstack VC

Working Groups, alongside Projects — disambiguating the surface, codifying the relationship

Stood up a `working-groups` content collection sibling to `projects`, with the relationship modeled as **many-to-many** via a new `working_group_slugs: string[]` field on the project frontmatter (project files are authoritative; many-to-many because a project can be of interest to multiple WGs). The WG schema is a verbatim clone of the projects schema — fix-as-we-go discipline, no upfront vocabulary redesign. Four starter Working Groups seeded (Data-Driven Venture, Professional Grade Content Development, Hack & Ship, Tech Stack Deep Dives), each with a strong `image_prompt` so the existing banner-generation pipeline can run later. Hybrid component approach: one already-generic component (`ProjectReader.astro`) renamed to `MarkdownReader.astro` and moved to `src/components/markdown/` (single import-path change in one consumer); three project-bound components (`Section__ProjectGallery`, `JumboPopdown__Projects`, `ProjectMetadataDisplay`) copied-and-adapted into working-group siblings. The gallery's WG variant adds a small **active-projects chip row** to the card body — pre-joined by the loader (`loadWorkingGroupsWithProjects(status)`) so the component never queries mid-render. The header now exposes two sibling popdowns — `Working Groups ▾` and `Projects ▾` — keyboard-isolated and visually identical because the popdown's behavior is copied verbatim. The project detail page gains a small `Part of: [WG-A · WG-B]` breadcrumb when `working_group_slugs` is set; the WG detail page renders an active-projects rail (reusing `Section__ProjectGallery variant="lite"` filtered to the WG — zero new gallery code), then the LFM-rendered charter, then a past-projects shelf. Three new design-system catalog entries (working-group-gallery, jumbo-popdown-working-groups, markdown-reader) plus four new entries in the catalog index. The deeper story is the architectural lesson: when the user identified that I'd conflated 'working group' and 'project' from the start, we used plan mode to interrogate the choice — refactor for polymorphism vs. YOLO copy-and-adapt — and chose the second path explicitly because the pattern-library philosophy in `astro-knots/CLAUDE.md` endorses it for UI surfaces. Total cost of the YOLO path: the four cloned components diff cleanly from their parents and can evolve independently. The cost of refactoring would have been a polymorphic abstraction we'd have to maintain across two domains.

Michael Staton
  • Working-Groups
  • Projects
  • Content-Collection
  • Cross-Collection-Joins
  • Many-to-Many
  • Schema-Clone
  • +8
productFullstack VC

Mobile-responsive header — hamburger drawer, anchored spacing

Fix two mobile usability issues in the site header. (1) Below 640px, nav links were hidden with no replacement — visitors landing on a project or working-group page couldn't navigate anywhere else. (2) The right-side cluster (GitHub icon + ModeToggle) was clustered next to the brand instead of anchored to the right edge, because the desktop layout relied on the now-hidden nav for its `margin-left: auto`. Added a new `MobileNav.astro` (hamburger button + slide-down drawer) inside `.site-header__actions`, visible only at ≤640px. Drawer renders flat links plus two `<details>` accordions for Working Groups and Projects — populated from the same loaders the desktop popdowns use. Closes on direct re-press, Esc, outside-tap, and link navigation. One-line CSS fix (`margin-left: auto` on `.site-header__actions`) anchors the right cluster regardless of nav visibility.

Michael Staton
  • Mobile-Responsive
  • Header-Navigation
  • Hamburger-Menu
  • MobileNav
  • Accessibility
  • CSS-Spacing
productFullstack VC

Dojo Page, Reusable Hero/CTA/Grid Components, TextLinkSpan, and a Long-Form Content Scaffold

Built the dedicated /dojo landing (2/3 hero · 1/3 alternate CTA, plus a 10-card Areas-of-Venture grid lifted from the Class 20 Venture Handbook chapter structure). Extracted four reusable components: HeroContentCoreMessage, AlternateCta, AreasOfVentureGrid, and TextLinkSpan (subtle dot-separated text-link row). Cleaned up the homepage so Brand Kit + Design System sit as a right-aligned TextLinkSpan under the header instead of competing with the primary CTA. Scaffolded a `long-form/venture-workflows` content collection with 10 frontmatter-only files — one per chapter — provenance + sequencing + marketing tags ready, body imports waiting on the long-form publishing decision (in-file discussion appended to the prompt). Added an SVG approximation of the Kauffman Fellows mark for Affinity refinement, and pinned the Astro dev port to 4324 to keep OAuth localhost callbacks deterministic alongside other projects.

Michael Staton
  • Dojo-Page
  • Areas-of-Venture
  • Venture-Handbook
  • Hero-Component
  • Alternate-CTA
  • Grid-Section
  • +10

LFM — The remark-citations Plugin and Its Spec

Hex-code footnote identifiers become sequentially-numbered citations at render time, so a citation can keep its stable ID while still displaying as [1], [2], [3] in reading order.

Michael Staton
  • LFM
  • Citations
  • Remark-Plugin
  • Markdown
productArthouse

Project Scaffold — Astro 6, Svelte 5, Tailwind 4, Sveltia CMS

Initial project scaffold for arthouse-site — an image-heavy portfolio site for boutique e-commerce. Astro 6 + Svelte 5 + Tailwind 4 stack, three-mode theme system with client-managed colors, Sveltia CMS at /admin, WhatsApp CTA via server-side redirect, content collections for galleries/pricing/pages/SEO, and a horizontal swipe carousel component.

Michael Staton
  • Scaffold
  • Astro
  • Svelte
  • Tailwind
  • Sveltia-CMS
  • Theme
  • +3
productBanner Site

Flag Pixel Spacing Variants

Added two new FlagPixel variants — FlagPixelLoose and FlagPixelLooser — exploring progressively sparser tile grids with rounded corners and asymmetric spacing.

Michael Staton
  • Flare
  • Three.js
  • Design System
productBanner Site

Wobble Rings Flare Component

Added WobbleRings — an interactive Canvas 2D flare component with concentric rings, simplex noise wobble, hover repulsion, and click ripple effects. Inspired by greenoaks.com.

Michael Staton
  • Flare
  • Canvas
  • Interactive
  • Design System
productBanner Site

Vibrant Mode, Brand Mark Wrapper, and Animated Grain Overlay

Differentiated vibrant mode with a distinct background color, added mode-aware brand mark switching in the header, introduced an animated SVG grain noise overlay with per-mode intensity, added --fx-flare-color token for mode-adaptive canvas elements, and extended the --fx-* effect token system.

Michael Staton
  • Themes
  • Modes
  • Vibrant
  • Design Tokens
  • Brand Mark
  • SVG Filter
  • +1
productBanner Site

OpenGraph Meta Tags and Share Banner

Added full OpenGraph and Twitter Card meta tags to every page, created a branded share banner image, and configured the site URL for absolute OG URLs on staging.

Michael Staton
  • OpenGraph
  • SEO
  • Social Sharing
  • Metadata
  • iMessage
  • WhatsApp
productBanner Site

New Flare Components & Simplified Homepage

Added two new flag-themed flare components (FlagCloth and FlagPixel), simplified the homepage to a radically minimal hero with FlagPixel, and trimmed the header down to two links.

Michael Staton
  • Flare
  • Three.js
  • Homepage
  • Header
  • Design System
productBanner Site

Jobs Page & Pinpoint API Integration

Added Pinpoint job board API integration, bringing Impulse Space online with 141 jobs. All 3 portfolio companies now live with 194 total jobs. HTML snippets preserved and sanitized at dispatcher level.

Michael Staton
  • Jobs
  • API
  • Pinpoint
  • Portfolio
productBanner Site

Emblem Theme System Implementation

Implemented a complete multi-mode theming system for banner-site following the dark-matter pattern. The 'emblem' theme supports light, dark, and vibrant modes with semantic color tokens, effect tokens, and CSS variable-based architecture.

Michael Staton
  • Theme
  • CSS Variables
  • Tailwind 4
  • Dark Mode
  • Light Mode
  • Vibrant Mode
  • +1
productBanner Site

Changelog System Implementation

Implemented a complete changelog system following the dark-matter pattern with three view modes (Timeline, Cards, Releases), syntax-highlighted code blocks, Mermaid diagram support, and full emblem theme integration.

Michael Staton
  • Changelog
  • Content Collections
  • Astro
  • Markdown
  • Shiki
  • Mermaid
productBanner Site

Design System Documentation Hub

Created an internal design system hub with a comprehensive theme token reference page documenting all emblem colors, semantic tokens, effect tokens, and mode characteristics.

Michael Staton
  • Design System
  • Theme
  • Tokens
  • Documentation
  • Shiki
productBanner Site

Flare: Three.js Visual Effects System

Introduced Flare — a collection of animated Three.js visual effects for hero backgrounds and decorative elements. Includes PlanetRising (dotted sphere), EclipseEnding (crescent illumination), and BannerFlag (animated brand icon).

Michael Staton
  • Three.js
  • WebGL
  • Animation
  • Design System
  • Flare
  • Visual Effects
productDark Matter

Open Graph & SEO Infrastructure

Complete Open Graph and SEO infrastructure with dynamic image generation, JSON-LD structured data, collection defaults, and messaging-first optimization.

  • Open-Graph
  • SEO
  • JSON-LD
  • Structured-Data
  • Social-Sharing
  • Dynamic-Images
  • +1
productDark Matter

Session Duration Tracking with Heartbeat Pattern

Implemented session duration tracking using a heartbeat pattern - zero external dependencies, ~100 lines of vanilla JS, tracks exactly how long users view confidential content.

  • Session-Tracking
  • Analytics
  • NocoDB
  • Heartbeat
  • Vanilla-JavaScript
  • No-Dependencies
productHypernova

Partner Page, Plus Header and UI Consistency Fixes

A Partner With Us page with tabbed navigation across four LP types — and two header sizing bugs that had been quietly wrong, with mode-toggle icons rendering at 40-48px where they should have been 24.

Michael Staton
  • Partner-Page
  • Header
  • Design-System
  • UI-Fixes
productFullstack VC

Hand-Rolled OAuth (GitHub + LinkedIn), Privacy Policy, and the /stack/me Scaffold

Built the auth foundation for the Interactive Stack Display: hand-rolled GitHub + LinkedIn OAuth (no Auth0/Clerk), jose-based JWT sessions in HttpOnly cookies, allowlist via kauffman_roster.json, /login + /stack/me pages, and a published privacy policy. Switched the site to Astro server output with the Vercel adapter; all existing static pages opt back in via prerender. ~250 lines of TypeScript replaces what would have been a $35/mo SaaS dependency.

Michael Staton
  • OAuth
  • GitHub-OAuth
  • LinkedIn-OAuth
  • Authentication
  • Hand-Rolled
  • JWT
  • +6
productFullstack VC

Site Scaffold from Astro Knots Conventions — Skeleton Right on First Try

Initial scaffold of the FullStack VC site (sites/fullstack-vc) from the Astro Knots Quickstart, blueprints, and CLAUDE.md. AI assistant got the skeleton right on the first attempt — workspace setup, theme/mode subsystem with three-mode toggle, brand kit + design system reference pages, content collections, base layouts. Validates that the documentation is now self-serve.

Michael Staton
  • Site-Scaffold
  • Astro-Knots
  • Theme-Mode
  • Brand-Kit
  • Design-System
  • Two-Tier-Tokens
  • +1
productFullstack VC

Webinars Collection — Calendar-Style Cards, Index Page, and Detail Pages

Built the Agentic VC Dojo schedule end-to-end: webinars content collection with date_scheduled / date_posted frontmatter, status (Upcoming / Live / Recorded) inferred at render time from the scheduled date, calendar-style WebinarCard component with a date tear-off, /webinars index page grouped by status, and /webinars/[id] detail pages that render the markdown body. Authoring a new session is now one .md file.

Michael Staton
  • Webinars
  • Agentic-VC-Dojo
  • Content-Collection
  • Calendar-UI
  • Status-Inference
  • Schema-Design