The Halloween Weekend Ship Log (v0.2.2): First-Run Onboarding, 1-Click Static Edge Deploys & Dual-Theme Daystudio
From Neopress to Daypress: Shipping v0.2.0, v0.2.1 & v0.2.2
We spent Halloween weekend completing our transition from Neopress to Daypress across every crate (daypress-server, daypress-ast, daypress-transpiler), REST namespace (/wp-json/daypress/v1/*), MCP tool prefix (daypress_*), and visual builder surface (Daystudio) without dropping a single post, revision, or media attachment on our live production database.
Along the way, we shipped the In-App Self-Updater (/d-admin/updates). When a new release is cut on GitHub, a running Daypress instance can verify the release payload, take an automatic pre-update SQLite snapshot via VACUUM INTO (pre_update_v*.sqlite), atomically replace its own Linux executable on disk, and hand off to systemd for a sub-second restart.
Upgrading a self-hosted CMS should never feel like defusing a bomb. Snapshot the single SQLite file, swap the single Rust binary, and restart in fifty milliseconds.
Zero-to-Published in 60 Seconds: The /setup Onboarding & AI Agent Wizard
Before v0.2.1, spinning up a fresh Daypress binary required knowing the default bootstrap credentials or seeding via CLI flags. Now, when Daypress boots against an uninitialized SQLite database, any request automatically redirects to /setup— four-step browser onboarding flow:
- Step 1 — Administrator Account & Site Identity: Hashes your initial administrator password with
Argon2idin-process and configures your site title, tagline, and timezone. - Step 2 — Starter Theme or 1-Click WordPress Import: Seeds your site with one of four native AST starter kits (Daypress Broadsheet, Minimalist Journal, Technical Documentation, or Blank Canvas), or takes you straight to
/d-admin/importto upload a WordPress WXR XML or JSON migration bundle. - Step 3 — Instant AI Agent Connection (
/mcp): Generates a ready-to-copymcp.jsonconfiguration snippet so Claude Code, Cursor, Windsurf, or Google Antigravity can immediately read and write native Daystudio AST layouts overPOST /mcp.
Static Edge Publisher (/d-admin/deploy): Rust Origin Meets Global CDN
Even though a single Daypress binary serves dynamic SSR pages from SQLite WAL in under a millisecond, some teams want to run Daypress privately on local hardware or a locked-down tailnet and publish pure static HTML to a global edge network.
In v0.2.2, we shipped the Static Edge Publisher (/d-admin/deploy). In a single pass, Daypress walks every published page, post, category/tag/author archive, RSS 2.0 & Atom 1.0 feed, sitemap.xml, robots.txt, and uploaded media file, compiles a self-contained static bundle, and pushes it directly to Cloudflare Pages, Netlify, or a downloadable .zip archive.
Exorcising a Halloween Ghost in Daystudio: CSS Custom Property Cycles & Dual-Theme Tokens
No Halloween weekend sprint is complete without a haunted bug. When we opened the daypress.dev homepage inside the Daystudio visual builder (/d-admin/builder?post=2), the warm newsprint background (#f3eee4) vanished into a transparent void over the dark studio dot grid.
Using our AST knowledge graph, we traced the culprit to a subtle W3C specification trap: in the page's global_styles.custom_colors, the paper token had been saved with a value of var(--paper). When Daystudio's live token synchronizer emitted --paper: var(--paper); onto #daystudio-artboard, the browser triggered W3C CSS Custom Properties §2.3 (Cyclic Dependencies), marking --paper as guaranteed-invalid and resolving background: var(--paper) to transparent.
To fix this permanently and make multi-theme design effortless in Daystudio, we shipped four studio upgrades:
- CSS Cycle Guard: Both
DaystudioKit::compile_to_css()in Rust andsyncGlobalTokensCss()in the builder now reject self-referencingvar(--<id>)cycles automatically. - Dual Daylight & Night Edition Color Swatches: Every color token in the
DaystudioKitDesign Tokens drawer now has side-by-side Light (color) and Dark (dark_color) pickers that compile directly to:rootand:root[data-theme="dark"](scoped cleanly to@scope (#daystudio-artboard)). - 1-Click Topbar Theme Preview Toggle: A new Light / Dark button in the Daystudio topbar lets you flip the canvas between Daylight and Night Edition in real time while editing.
- Template Artboard Isolation & Live Edit Protection: Editing a Site Header or Site Footer template in Daystudio now automatically hides the surrounding SSR chrome so headers never render twice on the artboard, and our MCP deployment pipeline now runs a mandatory pre-flight AST diff check so AI updates never overwrite manual edits made in the visual builder.