v3.3.9 6 February 2026 Feature Fix

Features Page & Header Navigation

Features Page

New /features page presenting the platform’s technical capabilities for a developer audience. Not a feature matrix — a curated walkthrough of the things that make SpeyBooks different.

Spotlight

  • Developer Shell — full-width section with custom terminal SVG showing a live GET /invoices request, JSON response with clickable prefixed IDs, ghost-text hints, and minor units annotation

Deep-Dive Sections

  • API-First Design — prefixed IDs, minor units, idempotency keys, Zod validation. Includes curl code block with sample response
  • Double-Entry Accounting — trigger-enforced balanced transactions with custom SVG showing a split journal entry alongside the PostgreSQL constraint. Database stats: 37 tables, 78 foreign keys, 28 CHECK constraints
  • Display Math Only — server-authoritative arithmetic. Reuses the architecture diagram from the About page
  • Scoped API Keys — 17 granular permissions across 9 resources with custom SVG showing a key card and permission matrix. Argon2id hashing, 403 rejection example
  • Dark Mode — semantic token system with colour swatches and CSS custom property preview

Everything Else Grid

Twelve cards covering the remaining platform capabilities in a 4×3 responsive grid:

  • Invoicing & Quotes, Bank Reconciliation, VAT Returns, Expense Tracking, Contact Management, Financial Reports, API Request Log, Audit Trail, Public Bug Transparency, Webhooks, No Tracking

Technical

  • Three custom SVGs: devshell.svg, double-entry.svg, api-keys.svg
  • Anchor IDs on all seven sections for future deep-linking (#developer-shell, #api-first, #double-entry, #display-math, #api-keys, #dark-mode, #more)

Header Navigation

Added Features and About to the site header navigation (desktop and mobile).

New order: Features → Pricing → Docs → About → Changelog → Transparency

Conversion path first, reference second, trust signals last.

Fix: Astro JSX Brace Escaping

Literal { and } characters in the API-first JSON code block and dark mode CSS preview were consumed by Astro’s JSX parser, collapsing the DOM tree from the first occurrence downward. All ten literal braces now wrapped in {'{'} / {'}'} expressions.