Every product on CommsLink is designed and shipped to production by an AI — live, most days. This is the raw record, generated straight from the commit history. No hand-picking, no polish: 2,358 ships and counting.
Ships feed: fix 'AI only sees 100' — a render-everything HTML page is ~5MB and fetchers truncate it. (1) NEW /changelog.txt: the COMPLETE record (all 2354 ships) as one compact plain-text line each, 304KB — fits a single fetch (the AI-readable complete feed). (2) /changelog HTML is now PAGINATED (?page=N, 100/page, Prev/Next + page indicator) instead of the ?all=1 truncation-trap. (3) Prominent in-page note + llms.txt point AIs to /changelog.txt (complete) / .json (structured). gen-changelog writes changelog.txt; /changelog.txt on no-store list. 728 tests green
Ships /changelog hardening for AI fetchers: (1) lighten the default server-rendered view 300->100 ships (~702KB->~250KB HTML) so fetchers with size caps don't truncate it — ?all=1 still renders everything, /changelog.json has the full record; (2) override the layout's generic OG/Twitter tags with the Ships title/description (AI fetchers were reporting the site-wide 'Talk to AI' default); (3) add /changelog to sitemap.xml. Origin already verified fixed (nginx-only, no CDN, no-store, old client-shell strings gone) — remaining staleness was the AI fetcher's own cache; a fresh URL (?fresh=1) returns the server-rendered ships
Ships feed: make /changelog AI-readable + fix classification. (1) CRITICAL: /changelog was 'use client' — the ships loaded via a browser fetch, so any AI/crawler reading the URL got an empty 'Loading…' shell. Rewrote it as a SERVER COMPONENT (plain SSR HTML, inline styles, no client JS): ships are now in the initial HTML, filtering is server-side via ?project= (chips are links), + page metadata + a ?all=1 to render the full set. (2) Classification now uses each commit's CHANGED FILES (classifyByFiles + PATH_RULES) not subject keywords — fixes the self-referential bug where the Ships-feed commit filed itself under Carrier00 for naming it (now correctly Landing). Chat 310->686, carrier00 612->581 as false-positives clear. gen-changelog.mjs reads --numstat. 728 tests green (+ file-based classify tests)
Ships feed: serve the full notable history (2351) not just newest-400, so every project (markets, ai-npc, office, sounds, research...) is actually filterable — a small cap dropped older projects and filtering them showed empty. Chip counts now computed over served entries so they always match. changelog.json ~834KB (no-store, dedicated page; landing still uses tiny changelog-latest.json)
Ships feed: an honest, git-derived changelog of what the AI ships to prod across every CommsLink project. New /changelog page (timeline, per-project filter chips, version tags, load-more) + machine-readable /changelog.json for agents (linked from llms.txt) + a compact 'Recently Shipped' strip on the landing's living-lab monitor (under the code-activity graph). Data: scripts/gen-changelog.mjs reads git log across CommsLink2+Carrier00, classifies each commit to a project + extracts version via the pure, unit-tested scripts/changelogParse.mjs (7 tests); writes public/changelog.json (400 newest of 2350 notable ships) + a tiny changelog-latest.json for the landing. Wired into deploy.sh Step 0 (regenerates every web deploy, fails soft) and next.config no-store list. 725 tests green
Atlas: regenerate served /atlas-graph.json with meta.loc so the live demo's module/page buildings vary by lines of code (270/301 nodes stamped)
Atlas ext 0.0.63 city polish (#20): LOC building heights + inspector, 4x datastores/S3 footprints, real 10x clouds, glowing gated container walls, thinner packages, half-depth pipes, crisp Mac terminal
Client->web bullet-trains (directional traffic on client routes) (PR #17)
In-map file explorer + popup editor (edit/lint/save, workspace-sandboxed host fs) (PR #16)
Improve button behind a setting + non-default themes tint the window chrome (opt-out) (PR #15)
Atlas: theme-aware Source Control colors + resizable diff inspector (ext 0.0.57) (PR #14)
CommsLink Sounds: /sounds sampler + 20 CC0 wavs + landing card (PR #12)
Remove SlackAnimals entirely — app, OAuth endpoints, landing page, home card, download, docs (privacy: no server in the Slack path)
Setup hint (connect via ⚙, quit via tray/✕)
SlackAnimals: Download-for-Windows button (68MB portable exe on S3) + unsigned SmartScreen note
SlackAnimals: home card + /slack-animals landing (PR #10 — read-only Slack dock pet)
Atlas: x-ray pipes (Cursor approach) v0.0.28
Atlas: pipes always-on-top (no cover, no flip) — sync viewer
Atlas: consistent pipe depth (no angle flip) — sync viewer
Atlas: pipe riser-before-door + softer container opacity — sync viewer
Atlas: pipe emergence + camera/WASD + clouds — sync viewer
Atlas: pipe-to-door + suburb crowding — sync viewer
Atlas: pipe polish (no-overlap-glow, page path highlight, buried depth) — sync viewer
Atlas: shared electric pipes (deduped, deep) — sync viewer
Atlas: subway rides the grid — sync viewer
Atlas: subway tracks for client links — sync viewer
Atlas: line-click + houses + client roads — sync viewer
Atlas: roof-member fix + cloud scatter — sync viewer
Atlas: camera orbit fallback + diff panel + guide — sync viewer
Atlas: routing v3 — nearest-road on-ramps, road-width lanes — sync viewer
Atlas: FIX per-grid edge routing on real roads — sync viewer
Atlas: full corner-turning edge routing — sync viewer
Atlas: street-routed edges (Manhattan lanes) — sync viewer
Atlas: bloom glow + street curbs/dashed center + taller buildings — sync viewer
Atlas: neon streets + degree-scaled modules/datastores — sync shared viewer
Atlas: sync shared viewer — gold borders, celebrations, Tron neon edges
Atlas activity: district glow + cycle pill + Changes panel — keep shared viewer in sync
Atlas: activity-layer scene/viewer (glow + camera orbit) — keep shared component in sync
Atlas: ship Medusa (Shopify) + Medplum (FHIR healthtech) gallery examples
Atlas: ship tRPC gallery examples (Documenso + Cal.com) — rebuild with SCP'd files
Atlas: tRPC parser + Documenso (DocuSign) tRPC gallery example
Atlas: chat model picker (shared AtlasViewer models dropdown)
Exclude ~300MB of models from web image via .dockerignore (served from S3) — lighter/faster web builds
Serve avatar/room models (~300MB) from S3 (commslink-assets) via redirect — shrinks web build, faster deploys, no re-SCP
Verify fixed deploy pipeline (LF scripts + synchronous build)
Fix deploy.sh: synchronous EC2 build (detached nohup trigger silently failed to run the build)
Atlas CITY-1g + README lab-suite update
Refresh code-activity graph through 2026-07-07 (r72-r82 session work)
Fix code-activity graph windowing at 1m/1w — bucketize now drops buckets before the window start (the code JSON isn't pre-windowed like the traffic API, so it was drawing full history back to March)
Landing code-activity: add AI-era band (backfill = one Opus 4.8 era; auto-appends a new segment when CURRENT_MODEL changes in gen-code-activity.mjs). + ai-eras.json
Add 2nd 'Code Activity' graph under Site Activity — git churn (lines added/removed) across CommsLink2 + Carrier00, backfilled from full history, filtered to hand-written source (excludes bundles/locks). Shares the same time-frame buttons. + gen-code-activity.mjs + code-activity.json
Landing card graphs: weekly buckets -> DAILY over the last 90 days — the cards were mode=week/365d (a year of daily points is unreadable at sparkline size), but weekly bucketing made mid-week graphs read as stale ('Week of Jun 29' on a Friday) and a card's real question is 'is this app alive lately?'; daily/90d answers it with honest per-day points (today's point labeled 'Today'); the overview graph keeps its adaptive bucketing
Landing graphs: label the current partial bucket as live ('This week (so far)' / 'This month (so far)' / 'Today') — weekly buckets are Monday-based, so on a Friday every card's last point read 'Week of Jun 29' while silently accumulating this week's views inside it, which looked exactly like 'the graphs stopped updating on June 29'; the data pipeline was verified healthy end-to-end (page_view rows through today, series endpoints current — the chat card's 'stale' bucket contained 110 views from Jul 2)
Ai-npc gets its canonical about page (same living-doc pattern as /chat/about): NEW /ai-npc/about rendered from services/web/content/ai-npc.md — what it is, quickstart, the real component API (AiNpc props from the shipped types), pluggable Brain/Voice interfaces (streaming, BYO provider, webspeech), surface affordances (sit/lie/stand/climb auto-scan + rescanAffordances), imperative handle (say/chat/walkTo/goTo), lineage to CommsLink Chat, and integration notes addressed to AI coding assistants; landing card gains a Learn More button; llms.txt now points agents at the overview as the conceptual entry with the repo as the code entry; /ai-npc/about added to no-store
Ai-npc card + llms.txt accuracy: the landing card claimed 'the same engine powers the avatar in CommsLink Chat' — true at extraction time, drifted false as the chat engine evolved (touch/schemas/senses are XR-specific and not in the SDK); reframed as lineage ('the engine CommsLink Chat grew from, in its simplest embeddable form') + positioned for agent developers ('built to be integrated by AI coding assistants as much as by humans'); llms.txt gains a For-developers section pointing agents at the GitHub repo
Remove the FFXIV Plugins project card
Add Virtual Office (Phase 1): walkable 3D office shell + landing card
Landing graphs: zero-fill buckets across the window + client mounted-gate so sparse/zero-traffic cards (carrier00, ai-browser, elevenvoicereader, ai-npc) render a line instead of vanishing
Site-wide activity monitor (combined views+time, All Time/1y/6m/1m/1w ranges); interactive graphs (hover tooltip w/ date+value, month-year axis ticks, 2nd time-on-page line); 4-up wider grid; Carrier00 ship icon; new page_time tracking (table + PageTimeTracker + /page-time API); recover orphaned PageViewTracker/Watchlist/MarketChatWidget into VCS
Landing sparkline fix: normalize series dates to YYYY-MM-DD so weekly buckets parse (was Invalid Date → empty graphs)
Landing page: add Carrier00, per-app view/click counters + 1-year growth sparklines (new /page-view/series API)
Add ai-npc showcase card (open-source 3D AI NPC; links to GitHub)
Security: rate-limit open AI-browser Grok endpoint, fail-closed agentic token, harden terminal safe-list, untrack .deploy.env; landing: rewrite Chat description
Remove AI Kingdoms - Dark Ages card
Stop hijacking root URL — / always goes to /landing now, never auto-bounces logged-in users to /chat
Add AI Browser: Electron app with Claude as pair user
Fix: import npcStates in army.ts for step/rotate commands
Add AI Fight Club to landing page products with download button
Landing page: remove Voice API product (we don't offer that)
Landing page: add ElevenVoiceReader Chrome extension, adjust product grid to 4 columns
Landing page: update FFXIVoices to live with accurate description, fix credit count, add ElevenLabs to tech stack
Company landing page: portfolio of products (Chat, FFXIVoices, Voice API), tech stack, stats
Terms of Service, live stats on landing, Google Search Console verification, footer links
Add SEO: meta tags, OG image, robots.txt, sitemap.xml, landing page metadata
Add landing page for new visitors
Add landing page with CTA, update register features, redirect home to landing
Task 4: Replace public chat with about page (features/CTA), home redirect for non-logged-in, About nav icon. No public chat button
Generated 2026-07-16 from git across all CommsLink repos · page 1/1, showing 1–77 of 77 Landing ships · complete record: /changelog.txt · /changelog.json.