Watch the AI work

This is the change history of the Tonvin Collection website itself, one line per change, newest first. It is read from the site's own git history, so it shows what was changed and when, in the words written at the time.

TVC repository only, version 1. Source: git only; deployments are not included. Measured , covering the 60 days from .

296
changes listed
2113
file changes across them
13
name a verifier review
59
merge commits not listed

How the loop works

Work here goes plan, build, verify. A plan says what should change and what would show it worked. An AI model makes the change on a branch and writes the commit. A second AI model, the verifier, is then asked to find what is wrong with it before it reaches the main branch. This explainer was itself written by an AI model.

The log below is only the part of that loop that git keeps. It does not show the plans or what a verifier found. An entry carries the “verifier named” mark only when its own commit message mentions a verifier review; an entry without the mark is not claimed to be unverified, it is simply not recorded here. 292 of the 296 commits carry a co-author trailer that names an AI model. The kind labels (feature, fix, test, content, infra) come from cautious keyword rules on the subject line, and anything the rules do not recognise is labelled other.

By kind

  • Feature 48
  • Fix 42
  • Test 1
  • Content 57
  • Infra 56
  • Other 92

Changes per week

  1. Week of 73
  2. Week of 157
  3. Week of 40
  4. Week of 8
  5. Week of 12
  6. Week of 1
  7. Week of 3
  8. Week of 0
  9. Week of 2

The log

104 entries withheld because they name private sites or infrastructure, or give technical detail. Their date, kind and file count are kept; the wording is not.

2 changes

  • Content(withheld)0fefcea · 1 file
  • FixVincony flagship: re-verifier fixes 1-7verifier named2f1a496 · 10 files

71 changes

  • FixVincony flagship: verifier fixes F1-F12verifier named2d1883c · 25 files
  • FeaturePin the flagship: facts, provider-name exception, order, deck, page, SQLde728a2 · 1 file
  • TestVincony leads: pinned first in the default order and the deck, Flagship badge, home card, site-page linka0e3c05 · 8 files
  • FeatureAdd the /flagship/vincony page, its OG image and its registry entryfc18bff · 3 files
  • ContentVincony flagship: dated content module, constants and the directory-row SQL72fa699 · 3 files
  • Other(withheld)96bddfe · 4 files
  • Other(withheld)705f19c · 5 files
  • Infra(withheld)96192b9 · 2 files
  • OtherDERELICT reach pill: wider on narrow phones, wraps at spaces, never takes focus5c847d7 · 1 file
  • Infra(withheld)563bb17 · 10 files
  • InfraMeasured: the optional 3D studio (B-SCENE): log-scale bars, plinths, voice-reactive orb, tiered qualitye47db03 · 9 files
  • ContentMeasured: the quiz copy (B-COPY): interface wording and 120 AI-host lines, with a test pinning digits, site names, honesty claims and arity21344ae · 2 files
  • InfraMeasured: the quiz client shell (B-UI): dialog, store, screens, host slot, placeholder soundb92cdc6 · 26 files
  • OtherDERELICT reach pill wraps instead of truncating on narrow phones00564c4 · 1 file
  • Otherderelict walking F4: the mouse-hover 'Examine X' label returns in ReachPrompt442a8e3 · 4 files
  • Otherderelict walking F6: no comfort vignette in step-movebd12d4c · 3 files
  • Otherderelict walking F5: auto-walk timeout scales with the distance5eb7c46 · 3 files
  • Otherderelict walking F3: leave the walk request in the store while input is off18ce03c · 3 files
  • Otherderelict walking F2: reach is recomputed on the first frame after input comes backcdbc022 · 3 files
  • Other(withheld)a26e3f3 · 3 files
  • InfraMeasured: the quiz engine (figures, 34 templates, distractors, bank, select, score, state, save) with R1-R8 pinnedab1458c · 24 files
  • Feature(withheld)cf0d881 · 1 file
  • Infra(withheld)fc76b1e · 5 files
  • Infra(withheld)0c2a345 · 1 file
  • OtherDERELICT walking W2 L7: hotspot-pick LOS test follows the merged one-LOS rule (hotspot on the near console face)870fc27 · 1 file
  • InfraDERELICT walking W3 tools: hook v2 contract, pw-smoke P10-P14, walk-sweep replaces yaw-sweep1087a3c · 13 files
  • OtherDERELICT walking W2 L7: serial wiring (Walker, taps, joystick, reach pill, E, door, hook v2, HotspotList walk-then-interact)0328f7a · 9 files
  • Fix(withheld)e37787c · 5 files
  • Other(withheld)6e76de1 · 3 files
  • OtherDERELICT walking W2 L5: floating Joystick, ReachPrompt, pure joystick core + tests1923f20 · 5 files
  • OtherDERELICT walking W2 L1: Walker (WASD + joystick ref, step-move, auto-walk with give-up relocation, edge-triggered door latch, reach) + pure walker-logic with tests9d2cb5e · 3 files
  • Other(withheld)5a4f373 · 4 files
  • Other(withheld)9176c24 · 3 files
  • Feature(withheld)3ceeb9a · 5 files
  • OtherMonthly ops tally holds the WordPress & forum group back the way the public join doesf2c1143 · 3 files
  • Feature(withheld)5751994 · 6 files
  • FeatureRegister /privacy as a public page; footer link next to Security3d7e8ac · 3 files
  • Fix(withheld)c94cff7 · 3 files
  • Content(withheld)bb58d72 · 2 files
  • InfraBundle: deck launcher reaches the store through GameShell, not a dynamic import of it2c6165d · 4 files
  • OtherDERELICT walking W1 integration: settings defaults for walking, parameter names the hotspot-field scan reads correctlya50ff5b · 3 files
  • ContentDERELICT walking W1b: world-space placement rules (approach-point pitch/size/separation/reach, rect pinch/narrow, spawn clearance, blockers/LOS, door thresholds) + content-check door-dataeb93f9c · 4 files
  • OtherDERELICT walking W1a: world-space contract (types.ts), pure walk engine (walk.ts) + tests, fixtures to new shapesdf2a950 · 7 files
  • OtherDERELICT walking W1c: Spine + stub rooms in world space (spawn, walk rects, pos/approach/reach, door thresholds); structure pins546ee0c · 2 files
  • FeatureDeck: games hub slide + DERELICT poster slide (Early build) whose Play opens the real game over the deck4f7f519 · 6 files
  • Infra(withheld)3943a10 · 6 files
  • Othertvc: no surface prints a date later than now; hold back WordPress group in the ops joinfce2ccc · 11 files
  • Fixtvc: AF2 audit fixes M2 M3 M4 L1 L3 L7 + future-dated lastmod (AF4-a)1f5fbf3 · 17 files
  • OtherDERELICT: panels taller than the viewport scroll from the top instead of clipping it (Settings Done unreachable at 1440x900)06a54d7 · 4 files
  • Content(withheld)9cd8c09 · 1 file
  • ContentAdd /privacy page: plain-English data practices, source-mapped copy, structure tests4a7c758 · 3 files
  • Other(withheld)fcf62c3 · 7 files
  • Infra(withheld)6bf5f94 · 11 files
  • Othergames: pure common layer (types, rng, save, prefs, subtitles, flicker, manifest, banned-phrases) + tests4872e1b · 16 files
  • Other(withheld)f2a28d1 · 9 files
  • Othercheck-visibility: parse generic accessors and fail when any exported async function goes unparsed9eccf86 · 2 files
  • OtherDERELICT: render the toast from the lazy GameRoot to keep it out of the first-load shellc478771 · 3 files
  • ContentDERELICT: verifier round 2 - hint a11y, title scroll, latent room guards, truthful door copy, lazy-only stringsverifier named0545f24 · 22 files
  • Content(withheld)77f6d83 · 4 files
  • FeatureCiteFiles tests: recount the file (no hard-coded counts), exactly one footnote per page, tag scanner robust to =>48c77f8 · 2 files
  • Othercheck-visibility: parse past a braced return type; fail loudly on a near-empty bodyfb089a9 · 3 files
  • OtherSearch index keeps the CiteFiles tag, so grid chips survive the swap to the loaded indexd352890 · 3 files
  • Content(withheld)1fe2fa9 · 1 file
  • ContentShow CiteFiles AI-SEO ratings: deck slides, site pages, directory cards, summary linesab76861 · 14 files
  • ContentCiteFiles ratings: pure module, server-only data accessor, tag on summaries and slides5e1d97e · 8 files
  • FeatureAdd the CiteFiles ratings importer (copy-trim of the fleet export; reproduces the snapshot byte for byte)4ee50fe · 2 files
  • OtherDERELICT: free look and audio edge casesfcdb1ea · 5 files
  • FixDERELICT: lit fallback room with a way back, toasts, early-build tag, hint cooldown, focus fixes08c7056 · 14 files
  • OtherDERELICT: seal the Power Core door, never enter or load into a room without a sceneb3c95da · 13 files
  • Other(withheld)3e7ade4 · 4 files
  • Content(withheld)a9a475c · 1 file

95 changes

  • ContentExplainer pins follow the map to nine slugs (the seven-slug pins went stale when the re-records joined)4cb571c · 1 file
  • ContentExplainers: vinony + awesome-websites join the slide map after their re-records (9 of 10 live; police-census held)2ba5050 · 1 file
  • OtherDERELICT: read the focus opener at first render (an Esc before WebKit flushed the passive effect cleared the slot)c32dd7a · 1 file
  • ContentShowcase: per-site explainer videos on the site slides (7 sites), print noted276b36 · 6 files
  • Feature(withheld)838ca41 · 10 files
  • OtherDERELICT: focus restore retries while focus has nowhere (WebKit refused focus() on ~1 in 4 first puzzle closes)7471f56 · 1 file
  • InfraDERELICT check-bundle: note the known looseness of the module-id comparator in its header27802f4 · 1 file
  • Other(withheld)77098ed · 2 files
  • Other(withheld)39b4f02 · 2 files
  • InfraDERELICT save: never delete the original when the backup failed, keep-first backups (3 slots), notice only claims a backup that was writtenebf6408 · 2 files
  • Content(withheld)154f6d8 · 1 file
  • FeatureDERELICT: focus returns to the opener of a lazily loaded panel on first open too (opener recorded at the open-action)162d872 · 7 files
  • Other(withheld)cda5b6c · 3 files
  • FeatureDERELICT: lazy panels fail inside the dialog (Retry + a way out) instead of taking the page down4929645 · 2 files
  • Other(withheld)e52c8eb · 5 files
  • Contenthide-overlays: hide the Newsletter-plugin subscribe modal by id (no consent wording, heuristics can't catch it)e11dd63 · 1 file
  • Othercapture.js: fail a first-capture whose body is blank instead of storing itce3711d · 1 file
  • Content(withheld)af7c050 · 4 files
  • Fix(withheld)15c50c0 · 10 files
  • ContentVideos: publish -v6 (measured per-shot lip-sync offsets; median residual 241->30ms; two cuts to b-roll; one chorus shot regenerated)f543703 · 2 files
  • ContentStack content: operator SEO line, proxy allowance label, WordPress group tile, free-courses band + measurer, Showcase pages guarde43f92a · 13 files
  • Other(withheld)bfe57a9 · 9 files
  • InfraDERELICT W1d: check-bundle A1 accepts pure Turbopack module-id renumbering, logged per chunk; anything else still fails56a9a11 · 1 file
  • Other(withheld)7383d9c · 1 file
  • InfraDERELICT W1d: pw-smoke P7 waits for the 1 s debounced autosave instead of racing it00cffe9 · 1 file
  • Contentshots: fail a render whose body is blank instead of storing itc9b1484 · 1 file
  • Other(withheld)69521a4 · 1 file
  • Othermoney-decisions-uk case: re-point 4 passages from the 404ing llms files to the homepagefdfd646 · 1 file
  • Infra(withheld)960f0f0 · 5 files
  • Other(withheld)3091ce6 · 2 files
  • InfraHero: full automation list in the strapline; 'Watch the showcase' CTA under the header (owner, 2026-10-26)58b29ce · 2 files
  • Infra(withheld)3d4fd9f · 17 files
  • Fix(withheld)verifier named29f459c · 9 files
  • FeatureDERELICT P1-UI: game shell, title/unlock/pause/settings, P2 panel, subtitles, Web Audio synthesisd5aa86f · 19 files
  • OtherDERELICT P1-SCENE: spine corridor, free look, hotspots, quality tiers, debug hook211f9d3 · 10 files
  • InfraDERELICT P1-TOOLS: check-bundle, pw-smoke, yaw-sweep + README (debug contract)7633bc7 · 4 files
  • ContentDERELICT P1-ENGINE: state machine, save/load, hints, placement validator, content checker, P2 spine-junction puzzle9810490 · 14 files
  • Infra(withheld)b688896 · 6 files
  • Other(withheld)31ee020 · 13 files
  • ContentDERELICT P1-CONTENT: games registry, spine room with 5 hotspots, P2 copy, placeholder lines, credits stub23eab60 · 5 files
  • FeatureShowcase title slide: count-only "N WordPress & forum sites run separately" item1ae3be8 · 7 files
  • Feature(withheld)c3fae41 · 2 files
  • OtherAI writers: reword the running-state claims to the live truth7acd306 · 3 files
  • Other(withheld)bc2016b · 6 files
  • Fix(withheld)3a795e2 · 10 files
  • FeatureSecurity sub-page: register /security/how-we-test in the page registry; /security review date 2026-10-25f58e624 · 4 files
  • FeatureSecurity: 'How we check our own security' section on /security and the /security/how-we-test page0b0ba85 · 7 files
  • InfraLadder strip: 'paid tiers come late in the ladder' (verifier: paid T6 precedes free T7, the :138 header is stale)verifier named9362f8d · 2 files
  • FeatureDeck verifier round: ladder claims only what fleet-scrape.sh does, uniform rungs, touch isolation, endpoints clampverifier named17d6297 · 6 files
  • FeatureScrape slide: proxy bandwidth is a 10,000 GB/month allowance, not usage18bbc4f · 3 files
  • ContentDeck pins: motion test counts the imported video slide; wording test follows the "websites in this slideshow" relabel0fcd937 · 2 files
  • ContentDeck: one slide per video, animated fetch ladder on the scrape slide, title breakdown line7539a81 · 8 files
  • Fixseo0 verifier fixes: /ai.txt joins leakcheck SURFACES; scoped-claims DERIVED covers the registry + per-site builderverifier named3fe4cdc · 2 files
  • FeatureSEO/AEO safe wave: every machine-readable surface derives from one page registryc0638f4 · 32 files
  • Content(withheld)79dbc29 · 2 files
  • Content(withheld)575af54 · 2 files
  • ContentVideos: -v4 = the lip-synced Neon Signal (94 edits, sung lines generated to the vocal); other files copied unchangedc3ff5cd · 2 files
  • Infra(withheld)7ddf169 · 2 files
  • Fixstack: verifier fixes (hand-check wording, clamp-safe description, caption dates, present zeros, behavioural tests)verifier nameda4726f9 · 3 files
  • FeatureDERELICT P1-CORE: add three/r3f/postprocessing deps and lib/derelict/types.ts contractsaab8832 · 4 files
  • ContentMusic: antvon sample is Forever In Motion (Pt. II)92a2cd0 · 1 file
  • ContentHeader: Videos and Music top-level, the rest in one accessible More menu325d9f4 · 3 files
  • OtherScope the root metadata, JSON-LD and ai.txt claims; scope the category sentence to listed sitesb5fa528 · 4 files
  • Otherstack: one number per figure, every typed figure dated, no printed zerosec7b88a · 2 files
  • Feature(withheld)929f99b · 6 files
  • OtherScope the best-resource aim to showcased sites (footer, feed, home meta, llms routes)3903d6e · 6 files
  • ContentMusic: the total distinct-songs tile says 'at most'00e68b1 · 3 files
  • ContentD4: /about expansion ported onto production (live figures, how the fleet and agents are built, FAQ, what we don't do)3e9b00a · 10 files
  • Other(withheld)f716ca8 · 17 files
  • Content(withheld)e9608a3 · 6 files
  • ContentW21-2 C: data-driven counts and copy for the WordPress & forum group (identical at 0 rows)6b270c5 · 8 files
  • Feature(withheld)9d1cb54 · 7 files
  • Other(withheld)ddde674 · 6 files
  • Other(withheld)ee03186 · 1 file
  • Other(withheld)6e1341f · 2 files
  • FixVideos: files -v3 (poster metadata stripped; two frame defects fixed)588bd32 · 2 files
  • FixVideos: verifier fixes — honest intro, no lengths in prose, -v2 files without metadata, regenerated captions, video sitemap, /videos in the leakcheck tests92b9d5b · 13 files
  • ContentVideos: durations from the published files (ffprobe), test pins themfc8eea4 · 2 files
  • Content(withheld)7a9e3b2 · 19 files
  • FeatureD3: /wordpress-fleet prints no tile or section without a valid run date (F5 residual)1b321c0 · 2 files
  • FixD3 verifier round 3 fixes: dated WordPress machine total, smoke requires live place data, leakcheck status on new surfaces, scoped observability copyverifier named6f4b439 · 14 files
  • FixD3 INT-3 fixes: scoped panel claims, music out of the self-hosted band, dated WordPress machine total, stricter smoke/leakcheck01bdcdf · 27 files
  • Fix(withheld)4eaa020 · 4 files
  • ContentD3 INT-3: place data, music and WordPress fleet wired into /stack, the deck, home, sitemap, footer, llms, leakcheck and smokeba92009 · 14 files
  • Other(withheld)10a681d · 3 files
  • FixW18 fixes round 2: sources named per directory from measured labels only; producer crash vs refusal35a937e · 8 files
  • ContentW19 U19: /music — AI-generated catalogues stated plainly, typed figures, one sample per showcased catalogue1a32028 · 7 files
  • FeatureW20-G: /wordpress-fleet page and shared builders; the WordPress fleet's servers join the machine total63c6436 · 6 files
  • Content(withheld)f606361 · 3 files
  • OtherW18 B18: "Built" sections on the four place-directory case pages; shared place figure buildersb5ba96f · 10 files
  • FixW18 fixes: "with an image" counts listings, not image rows; copy scoped to what is measured; producer exit codes605be61 · 10 files
  • Other(withheld)eae848e · 13 files
  • Feature(withheld)9c450c5 · 10 files
  • Fix(withheld)75e7e1c · 5 files
  • InfraNew TVC logo: violet-to-cyan gradient tile with geometric T V C, hinted 16/32 favicon, inline header/footer mark76669c3 · 8 files

39 changes

  • FixD1 final copy fixes: own-website rule scoped to the first system; no unverified grid-stopping claim97c892f · 5 files
  • Content(withheld)e9e967d · 4 files
  • FixD1 fixes: /outreach says only that the engine is built and tested; true address provenance; no "own hardware"c25c25a · 15 files
  • FeatureD1 INT-1: /stack mail subsection and outreach band, control-panel still, /outreach wired into the sitec5665e4 · 11 files
  • OtherD1 O17: /outreach says what was built and that nothing has been sent9b03332 · 6 files
  • OtherD1 M16: mail subsection builders and a read-only mailcow count (292 mailboxes, 129 domains)783ec32 · 6 files
  • FeatureD1 P: one control-panel still on /ai-seo-system; the rest wait for a structural re-redaction5daf697 · 5 files
  • OtherD1 S0 seams: four review dates and swept.places allowed as ISO dates only; lead slides can carry an image1957b95 · 5 files
  • Other(withheld)39b0eaf · 2 files
  • OtherW2 round 2: the showcase is curated, not largest-first; llms survive a stats hiccup; a11y and datesa3a645e · 12 files
  • FixW2 fixes: the showcase index is reachable (List view), and two pages' dates agree with the sitemapa72e92c · 13 files
  • Other(withheld)5498d3d · 7 files
  • InfraW15 lane G: server-rendered showcase index with CollectionPage LD; /badge says where its figures come fromdcb355a · 9 files
  • FeatureW15 lane F: llms.txt and llms-full.txt well-formed, with every site page and case study listed8dc749b · 9 files
  • Other(withheld)verifier named5541a4e · 7 files
  • Infra(withheld)6e2604d · 9 files
  • Featurecategory hub: 'Categories, most sites first' (sorted by site count, not size; a 997K-page category sits above a 46M one)c68c578 · 1 file
  • Fix(withheld)c5f82af · 20 files
  • ContentW15 lane D: headings, descriptions and row-derived intros on the hubs; Dataset JSON-LD on /measured12bcfd3 · 13 files
  • Feature(withheld)1e1a2a9 · 16 files
  • Contentcontact: description no longer promises reply handling; the delayed form state is headed 'Message received'568cd81 · 2 files
  • FeatureW15 A+C+E round 2: case dates never before the page existed; no unmeasured reply promisea10943d · 12 files
  • Fix(withheld)verifier named94c8929 · 13 files
  • Infra(withheld)ebaf719 · 22 files
  • Content(withheld)5008467 · 49 files
  • Other(withheld)31fd1d6 · 2 files
  • Fixwave 2 fixes: honest scrape-ladder copy, applied-in-30-days, per-figure review dates, zero guards, CF timeout13ba5b5 · 18 files
  • Infravinlingo: Built and Being built sections on its case page, measured nightly; curated showcase slot; collection row update script66b36a5 · 6 files
  • Featureshowcase: stats, AI SEO, scrape and observability slides lead the deck; a Workers slide closes it; footer names Vincony AI Ltda31c9b8 · 5 files
  • Infra(withheld)6efda39 · 12 files
  • Fixcase studies: apply review fixes — drop false or stale claims, fix tag-spacing, hold pre-launch sites1057478 · 85 files
  • Content(withheld)bdb553a · 108 files
  • Fixintegration fixes: explain the public total, hide empty SEO sections, date and wording fixese5f473e · 15 files
  • Fixai-seo-system: read the first-fix date from swept, where the sanitised fleet stats keep date strings82431fa · 2 files
  • Contentcase studies: richer pages, up to 10 verified passages, AI-SEO facts and a candidate harvesterc883cbc · 22 files
  • FixAI SEO system page: the measure-fix-verify loop, every figure read from measured keys6198077 · 4 files
  • FeatureCloudflare Workers page: 38 edge-hosted sites, counted in the public total, never in search or the sitemapf6a74d7 · 12 files
  • Content(withheld)970d24a · 3 files
  • Infrafigures: measure all 12 servers and the AI laptops; the home page counts every site3f7712d · 27 files

5 changes

  • Infra(withheld)d905247 · 1 file
  • Featureanalytics: queue gtag commands as Arguments objects, not Arrays; deck and gallery: no fade on a no-op targetverifier namedf1a20e6 · 4 files
  • Contenthygiene: /stack loses its nested <main>; the search index keeps 24 content samples per site; GridSite dates are typed as they arrived792c40 · 6 files
  • Featureanalytics: gtag.js loads on the first interaction or after 6 s, not with the pagea91f462 · 3 files
  • Infrashowcase deck and site gallery: CSS fades instead of framer-motion; the dependency leaves the repof455b17 · 6 files

18 changes

  • Featurehome hero: slide changes on CSS keyframes instead of framer-motion; the first slide renders static and complete without JavaScript910bcb8 · 4 files
  • Infra(withheld)55a9489 · 4 files
  • Infra(withheld)fa9d6c2 · 2 files
  • Otherhome: the Full Collection shows the 24 largest sites; search, category tabs and "Show all" fetch the public index once and work over all 105c08af3b · 7 files
  • Content(withheld)b6034d4 · 8 files
  • Contentperf: content-visibility on the grid cards and lazy-loaded analytics — the two things the mobile first paint was actually waiting for1fbfd72 · 2 files
  • Otherperf: keep the 828 image width — the three-step ladder made phones fetch 1080-wide hero images and cost /showcase its mobile score4a96766 · 2 files
  • Otherperf: the grid's client rows carry only what a card renders; the home's noscript link list goes39f46ee · 6 files
  • Otherperf: three image device widths instead of eight — a card's srcset drops from 10 candidates to 5, a 100vw image from 8 to 35474be1 · 2 files
  • Otherperf: one SVG sprite for the per-card icons — 343 inline lucide drawings on the home become <use> references to four <symbol>seac3278 · 6 files
  • Infra(withheld)26fdbcc · 2 files
  • Inframeasurements: a reading the sweep did not adopt is never compared, summed or dated as if it weredf52512 · 13 files
  • Othercases: eleven files revised after an in-context review of every passagef1dc9e6 · 11 files
  • Infra(withheld)9f98a03 · 5 files
  • Infra(withheld)6b3d526 · 5 files
  • Infrachanges: /changes — what moved, read from the collection's own measurements3ac86ef · 6 files
  • Infracategory hubs: a "What the collection measures here" strip — the category's page-count trend over the sites measured at least twice, the status tally from the public snapshot, and the four coverage counts the /stack sentence uses823080a · 5 files
  • Featurecases: sixteen more "How a site is built" studies, one for every remaining curated deck sitee5e8b10 · 16 files

4 changes

  • Content(withheld)a79ef40 · 4 files
  • Infra(withheld)30a132f · 11 files
  • Otherllms surfaces: the per-site card gains Publishes llms.txt, Feed and a dated Status line plus Features and Explore blocks; llms-full gains Features, Explore and Card lines; every index item carries ': ' after its link80c1c77 · 3 files
  • Featureopen data: /api/sites.json v2 — every public field per site, rank and page-count history from public-only queries, status and uptime from the public ops join58d9e13 · 6 files

22 changes

  • Infrasitemap: per-category lastmod filters by the mapped category name (the raw slug never matched, so every category fell back to the global max); stack drops a typed 99 that contradicted the measured sending-domain count; chart labels use full numbers74b69ef · 5 files
  • Featureperf: no viewport prefetch on any remaining link (deck, breadcrumbs, hero, detail, lists); hover prefetch stays32d0b1c · 24 files
  • Contentmeta: /showcase/case description 176 → 138 chars, clamped like the other static pages5b56b4f · 1 file
  • Feature(withheld)f6e5f87 · 15 files
  • Otheroperations: deploys in the last 30 days on the public table and the trust line; /operations.json emits the same per-site rows the table renders8a2783d · 7 files
  • Infrastack: every measured figure gets a dated sparkline and change text with its window (24 figures via a tested registry)ede32a4 · 3 files
  • Infradeck: measured strip on every site slide — rank among measured sites by size + the detail page's trend sentence69d0eff · 3 files
  • Infradetail: dated page-count history chart under the trend sentence (server SVG, sr-only table)490aa2e · 5 files
  • Infracrons: nightly case-study attestation inside the container + monthly feed discovery (scripts; box wiring follows)64a40dd · 4 files
  • Content(withheld)ecbebbe · 1 file
  • Other(withheld)9d38bd6 · 2 files
  • Otherlanguages: one row-derived sentence per language; dated CollectionPage + breadcrumbs on both routes7a0a7d1 · 2 files
  • Otherjson-ld: about, all-sites and recent pages gain WebPage nodes, breadcrumbs and data dates; hand-reviewed date shared from site-meta4760ab1 · 5 files
  • Otherjson-ld: category pages are dated CollectionPages with breadcrumbs534fbd5 · 2 files
  • Otherjson-ld: Organization + WebSite graph once in the layout; home is a dated CollectionPageef43822 · 3 files
  • Featurea11y: lift gray-500 to #8b95a7 so muted text meets AA on every dark surface; deck keyboard hint uses it too087d8eb · 2 files
  • Featurecases: a malformed case file no longer takes down the sitemap, the deck or every detail pageb473d41 · 6 files
  • Otherperf: no viewport prefetch on list-item, nav and footer links (hover prefetch stays)4465ae8 · 5 files
  • Infraai.txt: hourly revalidate with an explicit Cache-Control and a dated review constant; contact address split so Cloudflare cannot obfuscate it574c6a0 · 2 files
  • Contentmeta: every static description fits 158 chars; home and about rewritten to keep their meaningbffd42e · 5 files
  • Featurellms.txt: point every site line at its detail page; list the machine-readable surfacesc91ce32 · 1 file
  • Otherjson-ld: typed Organization, WebSite, WebPage and BreadcrumbList builders with @id referencesb0e420b · 2 files

13 changes

  • Othertests: cover lib/json-ld, lib/site-meta and lib/formatf04d784 · 3 files
  • Infrafleet scripts: stop logging every line twice; skip the four empty-sitemap sites; alert on a no-op sweepf90a8ba · 5 files
  • Othercontact: say "received" rather than "sent" when the mail relay fails1ff9e8c · 2 files
  • Featureui: keep Date.now() out of the deck's render path; omit the category OG count on a DB error6d07ada · 2 files
  • Infra(withheld)eb28cba · 2 files
  • Featurecases: the panel report arrives once a day, not every six hours3a8c472 · 1 file
  • Content(withheld)afb32cb · 26 files
  • Othersitemap: lastmod from data, never from the clockd8c3cb2 · 2 files
  • Otherisr: on-demand ISR for /showcase/<slug> and /operations/<month>9377663 · 2 files
  • Otherrepo: .gitattributes pins LF line endings66cc147 · 1 file
  • Infra(withheld)653d9b9 · 1 file
  • Fix(withheld)9c390c6 · 1 file
  • Infra(withheld)2138ae6 · 2 files

1 change

  • Contentops feed: daily cadence - stale after 36 h, wording and watchdog thresholds followe8e8835 · 10 files

5 changes

  • Infrafeat: measured figures become trends, and /operations gets a machine-readable twin4444b16 · 14 files
  • Fixfix(db): cap the pool during next build — three deploys died of "too many clients"fb3d1c3 · 1 file
  • Other(withheld)964d3d4 · 10 files
  • Infradocs(ops): the future-timestamp window is 1 hour, not 24fb1715c · 2 files
  • Fix(withheld)bd47b29 · 3 files

3 changes

  • Content(withheld)1cfaa6b · 5 files
  • Fix(withheld)fe78070 · 26 files
  • Featurefeat(operations): public /operations transparency page fed by a signed panel push8560e93 · 47 files

10 changes

  • Otherseo: batch footer for tonvincollection.com7d1d1b0 · 0 files
  • Othersite titles: use the whole sentence or the category, never a cut clausec287014 · 2 files
  • Fixfix(seo): site detail pages answer their own questions, for AEO extractionf0bd23c · 1 file
  • Fixfix(seo): site detail titles carry a real per-site differentiator, not just the bare namebad35cf · 4 files
  • Fix(withheld)verifier namedeb80ee9 · 1 file
  • Fixfix(fleet): grep -q under pipefail made every large sitemap read as "not XML"2057936 · 1 file
  • Infrafeat(fleet): weekly per-site size measurement, so page counts become history not a frozen numbera9f6108 · 1 file
  • Fix(withheld)f42d0b6 · 1 file
  • Otherfeat: machine-readable surfaces, and "related sites" that means somethingb277a17 · 5 files
  • Infra(withheld)3520953 · 1 file

1 change

  • Fixfix(seo): every page ships an og:image, snippet-length descriptions, no thin language pages3299e5f · 16 files

1 change

  • Fix(withheld)888e7ad · 9 files

1 change

  • Other(withheld)2fb4e49 · 1 file

2 changes

  • Infrafeat(seo): A-Z, language and recency indexes, measured rank, visible breadcrumbsa86d46b · 14 files
  • Fixfix(seo): static /search, feed links on every page, guarded against regression97f08f9 · 25 files

1 change

  • Fixfix(sitemap): regenerate hourly instead of freezing at build time524a578 · 1 file

1 change

  • Featurechore: add AI-discovery files (ai.txt / llms) — fleet rollout 2026-09-05d05ace1 · 1 file

1 change

  • Infra(withheld)ddc58fc · 3 files