Changelog

All notable changes to the htmlcapsule project — spec, reference implementation, landing page, voices archive, and research record. The full-spec version (e.g. v0.3.4) is the load-bearing identifier; the Core spec version (v0.3.0) bumps only for normative rule changes; landing / notes / voices versions move independently and are tracked here only at major revs or when they coincide with spec work.

Format follows Keep a Changelog loosely. Commit IDs in parentheses for cross-reference.


[Unreleased]

Nothing pending right now. v13 landing-cleanup queue from earlier was largely satisfied by the v13.1 framing recovery + v13.2 on-site rendering work. Idea queue (spec/DOMAIN_CAPSULES.md) and voices queue (voices/README.md) hold candidates that haven't met the empirical-pressure bar.


[Spec v0.3.8] — 2026-05-22

Second documentation patch in 24 hours — no normative schema changes, no validator changes, no compat surface added. Lands the technical thesis under the format: a capsule is a document first, an app second. Apps when alive. Documents when dormant. Plus the conceptual elevation of Rule 2 from constraintive (a rule capsules follow) to definitional (the line where capsules end and a different category of artifact begins). Plus the reader-side floor declaration pattern that closes the loop on the 5-tier framework. The slogan is the compression; the five-tier framework, the capsule boundary, and the floor declaration are the engineering substance underneath it.

Landed in two commits. Part 1 (ddda6fc): document-first thesis, 5-tier framework, §2.3.3 reorganization, "Document-first artifact" glossary entry, landing-page touch, version bumps. Part 2 (this commit): capsule boundary (§1.5), floor declaration pattern (§2.3.3 sub-section), Core Rule 2 reframe, "Capsule boundary" + "Floor declaration" glossary entries. Both commits land v0.3.8.

Why now

Three pieces of pressure converged in the same conversation.

(1) Producer-side framing pressure: the four-producer family (Mintel, capsule-midi, Shasta, capsule-photo) kept arriving at the same crossroads — should this capsule be a runtime app, or a static document? — and the existing §2.3 / §2.3.1 framing answered "both" without naming the design vocabulary that lets producers stack deliberately.

(2) Consumer-side misreading pressure: external commentary on the project periodically over-rotates in either direction ("Capsule forbids interactivity" / "Capsule is a sealed mini-app"). The 5-tier framework is the vocabulary that makes the actual design space legible without either misread.

(3) Boundary-clarity pressure: a related conversation surfaced that Rule 2 (no network) had been operating as a quiet technical constraint rather than as a definitional commitment, leaving room for "but what if a capsule just fetched a little live data" misreads. Elevating Rule 2 from constraintive to definitional language — "network requests are outside the capsule boundary; an artifact that crosses it is a different category, not a degraded capsule" — removes the negotiation surface entirely. The seal is what makes the floor possible; without the seal the entire interactivity stack collapses because there's no guaranteed substance at any tier.

The slogan landed alongside two alternatives ("The capsule is a document first, an app second." / "Progressive enhancement for AI-era artifacts.") and was chosen because it compresses the temporal dimension that matters most to the format's preservation case: a capsule may live for an hour next to its producer, then sit dormant for years; the dormant case is when the document-first property earns its keep.

Added — spec (documentation only; no normative changes)

Plus compounding logic (a well-built capsule stacks tiers; substance lives at the lowest tier that can carry it; higher tiers are progressive enhancement), a worked stack for domain.exploration_map (tier 0–4 inventory), and where this lands in the four-producer family mapping each producer's typical tier residence (photo at 0–2, song at 1, music_stems at 4-with-1-fallback, exploration_map at 4-with-0-3-substance).

Added — spec (the capsule boundary, part 2)

Changed — Core (part 2; clarification, not a rule change — Core stays at v0.3.0)

Added — glossary

Changed — landing page (v13.2.1)

Changed — infrastructure

Numbering note

The user's approved plan named the framework subsection §2.3.0 (a zero-numbered subsection that would have lived before §2.3.1). The actual landed numbering is §2.3.2 (new framework) + §2.3.3 (renumbered technique inventory), which reads rule (§2.3) → principle (§2.3.1) → framework (§2.3.2) → techniques (§2.3.3). The deviation is editorial — narrative ordering benefits from reading the framework after the principle that sets up why tier separation matters, and most readers won't expect a 2.3.0 subsection. The substance (slogan + 5-tier framework + glossary entry + landing touch) is exactly as approved.

Cross-project notes

No FEEDBACK harvest required for v0.3.8 (no items in producer-side queues). The 5-tier framework is reference material that all four producer projects (Mintel, capsule-midi, Shasta, capsule-photo) can cite when documenting their own tier residence. Suggested follow-on: each producer project adds a brief "Tier residence" note to its README naming which tiers it ships at, which makes the multi-producer interop story legible across the family.


[Spec v0.3.7] — 2026-05-22

Documentation patch on top of v0.3.6 — no normative schema changes, no validator changes, no compat surface added. Lands a documented inventory of no-JS interactivity techniques + parks one new candidate manifest extension.

Added — spec (documentation only; no normative changes)

Three worked snippets: radio-button tabs, checkbox layer-toggles, :target navigation. Honest "what still requires JS" list (live MIDI synthesis, stem mixing with continuous volume control, file parsing, search/filter/sort, save state, map pan/zoom, AI interaction, network). Two real caveats for producers: (1) size budget — pre-rendered alternates count against the 20 MB cap; for media, plan ~3-4 MB per alt at reasonable quality; (2) information-architecture cost — radio-button tabs and :target navigation require the full content of every view in the static HTML, so 5 views = 5× the body content.

Added — Appendix E (parked, not adopted)

Changed — infrastructure

Why a same-day patch rather than rolling into v0.3.6

v0.3.6 shipped earlier today as a normative spec release (graduated derived_from[], formalized media.* family, added export.fragment_provenance, named graceful-degradation principle). v0.3.7 is a same-day documentation pass on top: no schema changes, no validator changes, just adds the technique inventory + parks one new candidate. Keeping them separate preserves the v0.3.6 release entry's clarity (normative changes there) while letting the v0.3.7 entry stay focused on the technique documentation. Future readers can see at a glance which release introduced normative changes vs which was a docs-only refinement.

Cross-project notes

No FEEDBACK harvest required for v0.3.7 (no items in producer-side queues). The techniques in §2.3.2 are useful for capsule-photo (suggested as the first demonstration) and capsule-midi (whose Tier 2 work to bundle a rendered audio mix can adopt the radio-button-tabs alt-mix pattern). Neither producer is blocked by this release; both gain documented reference material.


[Spec v0.3.6] — 2026-05-22

First spec release driven by the upstream feedback discipline (named in F28) — every change in v0.3.6 has empirical pressure from a downstream producer project, none are speculative. The producer family that surfaced the pressure: capsule-midi (MIDI / DAW capsules, v0.2.0), Shasta (audio songs, in progress), capsule-photo (single-image artifacts with metadata, new), alongside the existing Mintel (geospatial maps, production at v0.3.4 since F20/F21). MinDev remains the registry / delivery host (separate concern).

Added — spec (normative)

Changed — Core (clarification, not a rule change — Core stays at v0.3.0)

Changed — validator

Added — research record

Added — domain idea-queue entries

Changed — infrastructure

Cross-project annotations (capsule-midi/FEEDBACK.md)

Resolved upstream in this release: Q1 (domain.midi_stem parking), Q2 (media.stems.* namespace), Q3 (export.fragment_provenance capability), Q4 (derived_from[] graduation). The capsule-midi project's FEEDBACK.md should be updated in a coordinated commit to mark these as resolved and move them to its "Resolved" section. F-A was filed as F28 in this release.


[Landing decision — v13.0.0] — 2026-05-22

Not a spec change. The landing-page exploration arc that ran from v10.x through v12.0.0 (nine hero candidates, numbered Observation / Question / Answer editorial spine, devil's-advocate copy revision pass, the Claude Design design-system pass) is now closed. The maintainer has committed to the Linear/Stripe-style stripped landing direction — iterated through landing-sketch.html (v1, UUID 9bde04e1) and landing-sketch-v2.html (v2, UUID 2860450e) — as the production landing.

Changed — index.html (v12.0.0 → v13.0.0)

Added — exploration.html

Unchanged — sister sketches and notes

What this validates

Three independent reads converged on this commitment over the May 2026 exploration arc: the devil's-advocate critique pass identified the genre tension on the long-form hybrid; the landing-agent's hero pick selected "HTML you can keep." as the strongest single claim; the external ChatGPT Deep Research review framed the project as research that doesn't need a sales-y landing. Each pointed at a different exit from the hybrid; the maintainer's chosen exit is the Linear/Stripe-style stripped landing (the cleanest conversion shape) with the research narrative preserved live at /exploration.html for those who want it.

Added — research record (post-ship)


[Design system v1] — 2026-05-22

Not a spec change. First canonical visual design system for the project's landing pages. Received as a handoff bundle from Claude Design (claude.ai/design) after the maintainer asked it to "propose visual enhancements for all of these" (the seven landing-page sketches in flight). Claude Design produced two proposals; the maintainer rejected the first (editorial-archival, italic display serif, oxide accent) and accepted the second (modern-sans, weight contrast, semantic color taxonomy). The chat transcript captures the rejection language verbatim and the project preserves both proposals for record.

Added — design folder

The system in brief

Changed — landing page (index.html v11.19.0 → v12.0.0)

First page to adopt the canonical design system. Visual-layer-only pass — editorial copy unchanged from the v11.x devil's-advocate revision pass.

UUID 7d1a1ac8 preserved throughout (the page is the same capsule, restyled).

Changed — sister sketches (parallel design-system pass)

Four sister sketches updated in parallel to apply the same design system, each picking up its lead taxonomy color per the application table in design/README.md:

All sister sketches retain their existing UUIDs (capsules are restyled, not replaced); capsule_version bumps minor for each.

Provenance


[Spec v0.3.5] — 2026-05-21

Doc-only patch. No schema, validator, or behavior change. Records external-review-driven candidate manifest fields in spec Appendix E without adopting them, preserving the project's "no addition without empirical pressure" discipline while making the considered-but-not-adopted ideas discoverable to future readers (including future Claude / future-maintainer who might re-derive them from scratch otherwise).

Added — spec

Each is justified individually for why it's parked, not adopted (no real producer/consumer has hit the limitation yet for supersedes[] and change_summary; the Mintel producer has some real pressure for derived_from[] but no consumer has needed it programmatically yet).

Changed — infrastructure

Changed — infrastructure (freshness — surfaced by external strategic review)

Added — research record (post-ship additions)

Changed — Core spec (post-ship clarification, not a rule change)

Changed — landing page (devil's-advocate copy revision pass, v11.16.0 → v11.19.0)

Four-version sequential pass through the landing page's editorial spine — Observation 1, Question 1, Answers 1a/1b, Question 2, Answers 2a/2b/2c, Observation 2, Observation 3, Question 3, Answers 3a/3b/3c, Observation 4, Observation 5. All twelve sections tightened against a single set of devil's-advocate critiques: footnote-apologies → word swaps, redundant cross-references removed, walls-of-bold converted to real <ul>s, jargon ("empirical pressure", "anyone technical", "bring your own bucket") replaced with plain English, forward-pointer parentheticals stripped, weak hedges committed-or-cut, punchlines promoted from buried paragraphs to titles where they earned the slot.

Net effect across the four versions: visible prose 19,113 → 15,675 chars (~18% reduction), with section-level cuts in A1b / A2b / Obs 3 / A3c closer to 40%. UUID 7d1a1ac8 preserved throughout (the page is the same capsule, content-tightened — not a new derived capsule). All four versions validated 25/25 against the reference validator at ship.

Added — comparison sketches (parallel direction exploration)

Three sibling capsules built alongside index.html to test alternative genre commitments before deciding the page's direction. Each one is itself a valid Capsule (5 required blocks, 25/25 against the reference validator) and declares its position relative to index.html via the genre signal in its data block.

These sketches are exploratory artifacts, not landing-page replacements; the production landing remains index.html at v11.19.0 pending a maintainer commitment to one of the genres. (research-sketch-v2.html and positioning-sketch.html still in flight at time of writing.)


[Spec v0.3.4] — 2026-05-20

Interactive-archive category named; lifecycle decomposition (live-editing / format / hosting / discovery) made explicit across the project; voices archive grown from 0 to 2 archived + 2 queued; second convergence finding (F22) documented.

Added — spec

Added — research record

Added — infrastructure & citability

Added — voices archive

Changed — maintainer attribution

Changed — landing page (v10.2 through v11.0)

The landing went into hero framing exploration mode at v11.0.0 — the conventional hero/four-questions/voices/footer structure (v10.x) was replaced with eight numbered candidate hero variants stacked vertically, each with its own framing (discipline / outcome / substrate question / contract / max-short / PDF comparison / mark-first / problem question), its own layout (left-aligned, centered, dark inverted, mark-led), and its own background color. Numbering is for reference; the winning framing will become the page and the rest will be removed. The v10.15 landing structure is preserved in git at commit 94c3802.

Twelve incremental v10.x iterations preceded the v11.0 reset. Highlights:

Changed — PRECEDENTS.md

Changed — Notes essay

Fixed

Resolved (moved out of parked-items)


[Spec v0.3.3] — 2026-05-20

Size cap raised; image-fallback carve-out for visualization geometry shipped; first major external feedback signal (F19 Claude Design experiment, plus F20 Mintel validation) folded in.

Changed — spec

Changed — validator

Added — RESEARCH


[Spec v0.3.2] and earlier — 2026-05-19

Initial public release of bigfancygarden/htmlcapsule to the world. Project work had been ongoing privately before this; the May-19 commits are the cleanup-and-publish phase.

Initial release contents

Post-release v0.3.2-era patches (still pre-v0.3.3)


Notes essay

Parallel versioning. Tracked here only at major beats.


How this changelog is maintained

Updated when each spec version ships (v0.3.x patches; future v0.4+ minor releases). Landing version bumps tracked at major revs (v8, v9, v10); intermediate landing changes (e.g. v10.4 → v10.5 → v10.6) appear under the corresponding spec-version section. Notes essay versions tracked when they ship. Voices archive entries tracked when added. Idea-queue movements not tracked here unless something graduates to "Initial domains" or gets formally dismissed — the queue files (voices/README.md, spec/DOMAIN_CAPSULES.md) carry their own state.

When in doubt: a change earns a CHANGELOG entry if a future reader (including future-you) would want to find it without scrubbing git log. Internal copy-tweaks, small cleanups, and prose iterations don't necessarily.

About this page · manifest · exports

This is a sealed HTML Capsule per Core spec v0.3.0. Five required inline blocks, no network dependencies, integrity hash over data + manifest. The content above is rendered from CHANGELOG.md by the deterministic compiler/build_md_capsules.py at the time of the last source change.

Loading manifest…