CHANGELOG — rootdrifter platform

Changelog — rootdrifter Ghost theme

All notable changes to the rootdrifter theme and the rootdrifter.io platform.

v1.3.1 — 2026-08-23 — the gated panel leaves the public body

Access hardening — /deck/quill/

  • The token-gated Quill panel no longer ships any panel content in the public page body.

The template renders an empty container; content is fetched only after a gate session is established (session probe on load, token POST on submit). Any non-2xx response or network failure produces one generic refusal — no differentiation, fail-closed.

  • The baked panel snapshot moved out of the theme entirely, to a deploy artefact that is

installed at dispatch to the gated serving location. The bake's gate chain is unchanged: a violation still refuses the bake outright — nothing is ever silently redacted.

  • Gate endpoint consolidated to a single stable path under the deck namespace

(/deck/quill/gate/), replacing the theme custom-setting indirection.

v1.2.0 — 2026-08-21 — Signal Grid + the utilities deck

Signal Grid visual pass

A fresh look within the locked token system — no palette, font, or scanline change:

  • clamp()-based fluid type scale and section rhythm across every surface.
  • The two hero blocks merged into one hero component with a shared surface variant.
  • Card grids moved to auto-fit, so breakpoints derive from content, not media queries.
  • Homepage section labels gained two-digit counters; one IntersectionObserver reveal

system (reduced-motion aware, fail-open static); JS nav active-state for template routes.

  • /console/ reframed with the unified hero as a utilities surface.

DRIFTDECK joins the information architecture

  • DECK now sits in the primary nav and footer, and the homepage gained a Utilities strip

linking the deck, the Quill status panel, and the Console Suite — the portfolio and the utilities surface read as one site.

  • /deck/ became the utilities front door: a registry partial renders one line per drop

through a parameterised utility-card, with Quill and the Console Suite as the first two entries.

/deck/quill/ — token-gated status panel

  • New template-only route carrying a stage-time baked snapshot of the Quill pipeline's

strict status render, public projection only: counts, states, verdicts, class labels. The bake passes a fail-closed gate chain (strict-render marker, content scan, output scrub, post-write re-scan) and refuses — never redacts — on any violation.

  • Projection hardening: the panel footer no longer enumerates internal scan rule-class

names; it shows the rule count only.

Fixes

  • /portfolio/ was unreachable — a Ghost 6.x self-redirect loop caused by a data binding

whose canonical URL equalled the route itself. The binding is dropped and the route is template-only; all 14 theme routes now verify HTTP 200 over loopback.

Verification

  • Theme scrub gate passed 8/8 targets; gscan 0 errors.

Platform — 2026-08-17 — Console Suite + DRIFTDECK portal

Theme version was unchanged during this span (released with v1.2.0); these are platform additions:

  • /console/ — a read-only, cross-module status board. The page is a baked, escaped,

static snapshot: project names, verdicts, exit codes, and bare counts only. A built-in scrub gate refuses to write the page if anything operational-shaped survives the reduction.

  • /deck/ — the DRIFTDECK public landing: the suite comprises the Splice video module

and the Quill document module, local-first pipelines that run entirely on the user's own hardware. Gated download/docs pages behind the Ghost membership flow.

Platform — 2026-06-19 → 2026-07-25 — privacy firewall + accuracy pass

  • Repository split: a private source tree (blanket-gitignored, fail-closed, verified

with git check-ignore) separated from the public theme/content/deploy tree.

  • Emission-gate engineering series: the pre-push content gate moved to a

whitelist-inverted model; IPv4 findings adjudicated by range (private/reserved pass, global still caught); new finders for interface-name and tailnet-name shapes; a durable self-test runner that must fire on dirty fixtures and stay silent on clean ones.

  • Public-surface accuracy pass: vetting-status claims removed from all public surfaces

as inaccurate to the roles being sought; lab network values tokenised to TEST-NET-1 and the disk UUID to an all-zero placeholder, each marked as tokenised where it appears, with surrounding text reworded to stay accurate.

  • AI-use disclosure section added. The retired github.io hub marked as retired.

v1.1.1 — 2026-06-14 — nav consistency, portfolio SEO, polish

  • Renamed the Blog nav item to TRANSMISSION LOG (top nav + footer), matching the site's

"transmission" voice; the /blog/ route is unchanged. Updated the remaining visible "Blog" strings to match (hero CTA, 404 page, project-page footer link, empty-state labels).

  • Raised the nav's mobile-collapse breakpoint to 900px so the longer label can never overflow the

fixed-height nav bar on small-laptop widths.

Portfolio index SEO

  • /portfolio/ is a template route with no backing page, so it carried no social/SEO metadata.

Added a bound Ghost page (data: page.portfolio in routes.yaml) holding title/description/OG/ Twitter + the branded social card, so shared links render a proper card and /portfolio/ enters the sitemap.

Fixes

  • Removed a stray "← Blog" back-link hardcoded at the bottom of the portfolio index template.

v1.1.0 — 2026-06-13 — platform expansion

  • Civilian on-ramp (/start/) plus a homepage civilian lede and manifesto strip.
  • /support/ (transparent running costs) and /challenges/ (CTF index) pages, with matching

nav and footer entries.

  • CTF Challenge 0 (a view-source flag on the homepage).
  • JSON-LD author.url fix — re-enabled the author taxonomy so the author entity validates

instead of resolving to /404/.

v1.0.0 — 2026-06-12 — production launch

First production release. rootdrifter.io is live on Ghost 6.44.1 behind Cloudflare, serving the full portfolio, blog, and membership flow.

Platform go-live polish

  • Routed every PORTFOLIO link to rootdrifter.io/portfolio/ (nav, hero, footer, homepage

strip cards, error page, subscribe, about page) — previously pointed at the now-redirecting hub, causing an extra redirect hop.

  • Removed the pre-launch "platform status" banner and the placeholder text from the public

homepage; the Active-work board now reads "Live".

  • Removed the unused portfolio_url custom setting (the portfolio is now internal).

SEO & social

  • Replaced Ghost's default site description ("Thoughts, stories and ideas.") with a proper

SEO/social description; set og/twitter title, description, and image.

  • Added a branded 1200×630 social card; removed Ghost's stock cover image and the default

@ghost social handles. Brand accent colour set to #00e5ff.

Content

  • Restored the body content for all 12 blog posts (the production migration had carried

titles/excerpts but not bodies); the 3 published posts remain teaser-gated.

About page's project list clickable to the internal portfolio pages.

  • Removed Ghost's default "Coming soon" placeholder post.

Theme features

  • Dark/light theme toggle — dark remains the default; light mode is opt-in via a nav

control, persisted in localStorage, applied before first paint (no flash), with a theme-aware hero rain canvas. Token-based (html.light), so every component adapts.

  • Per-page <title>, SEO/OG/Twitter meta via {{ghost_head}}, JSON-LD Person.
  • Six self-mounting interactive components (ironveil checklist, nullbyte isolation matrix,

spectre attack timeline, oracle accuracy/F1 chart, mirage causal stepper, gauntlet radar).

  • Teaser gate for pending-review posts; membership/subscribe flow; code-copy buttons; TOC;

reading-progress bar; reduced-motion, print, and accessibility (skip link, ARIA) support.

Design system

  • Canonical structural tokens; Share Tech Mono + Barlow; scanline overlay; per-project

accent palettes.