2026-W19

May 4–10, 2026

20 releases

Platform automation improvements include local summary generation using Ollama, enhanced webhook error handling and signature verification, and the addition of changelog stats. The canvas theme received new button styles, a purple primary color, and SCSS design tokens alongside a migration to theme.json and WordPress tokens. The nexus plugin expanded its capabilities with an AI Page Builder module, a Background Image block, and updated Gutenberg best practices. Infrastructure updates involved aligning build processes for the AI server, upgrading development containers to PHP 8.3, and fixing jQuery AJAX crashes.

airfleet-platform-changelog

Release 0.12.2

Added error handling for webhooks and guards for GitHub secrets.

GitHub
View full changelog

Fixed

  • Worker uncaught exception handling: Wrapped the fetch handler's handleWebhook call in a top-level try/catch so any unhandled exception returns a 500 response instead of crashing the Worker with a Cloudflare 1101 error. GitHub retries on 500, so no webhook deliveries are permanently lost.
  • Missing secret guards: Added explicit configuration guards for GITHUB_PRIVATE_KEY (in importPrivateKey) and PAGES_BUILD_HOOK_URL (in maybeTriggerBuild), throwing descriptive errors when either secret is not set rather than a cryptic TypeError.
airfleet-platform-changelog

Release 0.12.1

Fixed GitHub App webhook signature verification to handle empty secrets and ignore draft releases.

GitHub
View full changelog

Fixed

  • GitHub App webhook signature verification: Guarded verifySignature against an undefined or empty GITHUB_WEBHOOK_SECRET, which previously caused crypto.subtle.importKey to throw a DataError (empty HMAC key material) and return a 500 instead of processing the webhook. The worker now throws a descriptive error that is caught and logged clearly. Also added a missing draft release check so draft releases are ignored alongside prereleases.
airfleet-platform-changelog

Release 0.12.0

Introduced local summary generation, changelog stats, and Slack automation while refining UI polish and summary workflows.

GitHub
View full changelog

Added

  • Local summary generation: Added scripts/summarize-local.ts and npm run summarize:local to generate release, weekly, and monthly summaries using a local Ollama model instead of Cloudflare Workers AI. Supports the same --year/--month/--week/--release selectors and --existing/--only modes as the cloud seeding script. An optional --upload flag pushes generated summaries directly to Cloudflare KV. OLLAMA_HOST and OLLAMA_DEFAULT_MODEL env vars configure the Ollama endpoint and default model.
  • Changelog stats: Added a Stats page with all-time repository and release totals, monthly release activity, and per-repository release counts.
  • Seeded previews: Added a preview:seed script to seed live KV data, build the site, and start the local preview server in one command.
  • Selective summary seeding: Added --only flag to npm run data:seed-summaries to control which summary types are regenerated. Accepts a comma-separated list of releases, weekly, and monthly — e.g. --month 2026-04 --only monthly regenerates only the monthly summary without touching release or weekly summaries.
  • Repository exclusion config: Added src/data/excluded-repos.json to exclude repositories from all changelog views. Entries are full repo names (owner/name). airfleet/airfleet-elements-test is excluded by default. Filtering is applied centrally in the data layer across all pages.

Changed

  • Changelog page polish: Refined release-card disclosure controls, simplified the project filter, tightened weekly/monthly summary layouts, added month summaries to archive cards, aligned weekly/monthly archive labels and cards, and added previous/next navigation to archive detail pages.
  • Layout and archive polish: Made the site brand in the header link back to the homepage, refreshed the footer copy to use the product name, surfaced the all-time release count, and aligned archive week pages around the YYYY-Www label plus a clearer week range.
  • Weekly and monthly summaries: Added a Monthly page, promoted summary-aware weekly cards, introduced separate monthly and summary KV paths, and wired the Worker plus a manual backfill workflow to generate Cloudflare-native release/weekly/monthly summaries for closed periods.
  • Summary backfill controls and prompts: Expanded the manual summary seeding workflow and CLI to target a full year, one month, one week, or one release; added explicit refresh/skip/overwrite behavior plus model overrides; switched the shared default model to @cf/zai-org/glm-4.7-flash; and upgraded monthly summaries to use a more narrative grouped prompt.
  • Summary presentation: Tightened release, weekly, and monthly summary prompts to avoid redundant project/version/count phrasing and generic openings; stopped generating unused expanded release summaries; promoted compact summaries on week/month cards; and aligned weekly/monthly landing pages with the archive detail layouts.
  • Monthly summary prompts: Upgraded monthly compact summaries to avoid opening with the month name, year, or any time-period reference — the summary must start with the work itself. Upgraded monthly expanded summaries to produce a richer structured narrative with 2–4 ##-headed sections by capability theme, starting with a one-sentence overview. Prompt version bumped to monthly-v6 with increased token budget.
  • Release card repo label: The repository label on release cards is now a link to the repository's release history page (/repo/{owner}/{name}).
  • Slack digest automation: Added weekly and monthly GitHub Actions workflows plus CLI helpers that post stored summaries to Slack through a Slack app bot, with manual period overrides for reruns.
  • Docs and workflow guidance: Updated README.md and AGENTS.md for the summaries workflow, release checklist, and changelog expectations.

Fixed

  • Homepage load-more page count: Capped getRequiredPageCount() by the total matching release count so filtering to a repo with fewer releases than the visible limit no longer requests non-existent pages and triggers 404 errors.
  • Monthly week overlap filter: Normalized both sides of the week/month overlap comparison to YYYY-MM-DD so full ISO timestamps stored in monthly index items no longer cause boundary weeks to be incorrectly excluded.
  • Markdown protocol-relative URL sanitization: sanitizeUrl now explicitly rejects protocol-relative URLs (//example.com) instead of normalizing them to http: and passing the allowlist check.
  • Weekly Slack digest formatting: Applied the same markdown-to-mrkdwn conversion used by the monthly digest so weekly summaries render bold text, headings, and links correctly in Slack instead of showing raw markdown syntax.
  • KV data download safety: downloadKvData now only deletes public/data after confirming the KV namespace contains keys, preventing an empty build when credentials point at a wrong or temporarily empty namespace.
airfleet-canvas-theme

Release 0.8.0

Updated styling to use theme.json and WordPress tokens, added page templates and global styles, and removed obsolete code.

GitHub
View full changelog

Added

  • Added front-page and page block templates with header, post content, and footer template parts.
  • Added a brand style variation partial with an alternate palette and Plus Jakarta Sans typography setup.
  • Added light fill and outline button style variation partials with theme.json hover states.
  • Added expanded theme presets for border radii, aspect ratios, shadows, semantic spacing sizes, fluid spacing sizes, and transition custom tokens.
  • Added global theme styles for core button, code, navigation, preformatted, pullquote, separator, and table blocks.
  • Added link default, hover, and visited styles in theme.json.
  • Added .cursor/plans to ignored local tooling files.

Changed

  • Updated the theme color palette and gradient definitions to the latest brand token slugs and values.
  • Updated font size, heading, paragraph, button, spacing, block gap, and root padding styles in theme.json.
  • Moved button fill and outline defaults into theme.json core button variations, including shared transitions via theme custom tokens.
  • Renamed button style variations from dark/light primary/secondary/link variants to fill, outline, and link-oriented variations.
  • Updated the button block SCSS to only cover styles that theme.json cannot express, including icon-only button support.
  • Updated transition mixins to use WordPress-emitted --wp--custom--transition--* tokens instead of local --afs-trs-* variables.
  • Updated block style documentation to reflect theme.json-first style variations and the current token names.
  • Updated the editor entry bundle to remove the example style registration side-effect import.
  • Updated the index template markup to the current block editor query template structure.

Removed

  • Removed JavaScript-based example block style registration and the unused heading/paragraph example stylesheets.
  • Removed heading and paragraph style variation JSON partials now handled by global theme typography styles.
  • Removed obsolete primary and secondary button style variation partials.
airfleet-nexus-plugin

Release 0.54.0

Adds a Background Image block for cover-style backgrounds and allows placement inside Media Background containers for responsive art direction.

GitHub
View full changelog

Added

  • block-background-image: Add a Background Image block for cover-style section and container backgrounds, with editor image selection and lazy or eager loading.
  • block-background-image: Allow Background Image blocks inside Media Background containers for responsive art direction alongside video and Lottie layers.
airfleet-nexus-plugin

Release 0.53.0

Added environment settings and block documentation, updated module taxonomy and manager logic, and fixed Dev Containers and SVG sanitization.

GitHub
View full changelog

Added

  • environment: Add a shared settings section for overriding the resolved environment while keeping auto-detect as the default.
  • block-lottie: Add dedicated block documentation covering attributes, playback modes, lazy loading, events, and poster behavior.

Changed

  • Module Manager: require enabled child modules to be disabled before parent dependencies, confirm before disabling critical modules, and link enabled modules directly to available settings tabs and sections.
  • Module Manager: remove the module card "More" details popover from the badge row.
  • Module taxonomy: clarify tier semantics, add the premium tier value to the UI, and update current module metadata for forms, providers, components menu, and Allow Lottie.
  • Admin pages: document that module settings should generally live in Airfleet → Settings rather than standalone submenus.
  • Internal: move SVG sanitization into the shared Core\Svg\SvgSanitizer utility for use outside the Allow SVG module.

Fixed

  • Dev Containers: Allow the WordPress container to open from Git worktrees by using dynamic workspace paths and preserving worktree Git metadata paths inside the container.
  • Dev Containers: Enable visible and logged PHP errors in the WordPress container with explicit WordPress debug constants and PHP ini settings.
  • SVG sanitizer: Reject non-fragment url(...) references while avoiding false positives for plain values that merely contain protocol-like substrings.
airfleet-plugin-manager-plugin

Release 1.12.1

Fixes the license badge fallback color for the Preview badge when the legacy Admin plugin is not installed.

GitHub
View full changelog

Fixed

  • Fixed license badge fallback color for Preview badge when legacy Admin plugin is not installed
airfleet-nexus-ai-server

Release 0.4.0

Adds page-spec v2 vocabulary and a section archetype catalog with auto-discovery, admin endpoints and SPA pages, upgrades the comparison spec, and fixes entrypoint detection for paths with spaces.

GitHub
View full changelog

Added

  • Page-spec v2 vocabulary on pageTypeSpecSchema: audience, voice, expectedCta, requiredProofTypes, formFriction, defaultSections, forbidsArchetypes, validationRubric, guidance. All optional or defaulted — v1-shape literals still parse.
  • Section archetype catalog with auto-discovery: Hero, ValueProps, SocialProof, FeatureDeepDive, Pricing, Faq, FinalCta, plus ComparisonTable, AwardBadgeRow, IconFeatureGrid, InlineLeadForm, IntegrationGrid synthesized from the swipe-file corpus. Filesystem-driven — drop a .ts under archetypes/ and restart.
  • Best-practice page specs (product, content, service, demo) authored from 89 per-page analyses across 5 categories of a 110-page landing-page swipe file.
  • Page-spec auto-discovery: drop a spec file under page-specs/specs/ and it's picked up at boot via readdirSync + dynamic import + top-level await.
  • SpecRepository interface + InMemorySpecRepository as migration insurance for an eventual code → DB swap.
  • Admin browse endpoints under /admin/api/{page-specs,section-archetypes,block-specs} with cross-reference counts and rendered-prompt previews (Zone 2 for blocks, Zone 3 for specs), gated by requireSession.
  • Admin SPA catalog pages (Page Specs / Section Archetypes / Block Specs + detail views) with cross-linking, debounced search, and source filters. Sidebar nav extended.
  • New CSS patterns for detail pages: .card, .kv, .breadcrumb, .prose-block, .block-id-list, .chip, .badge-custom/.badge-native, .empty-state, .id-cell, .num-cell.
  • Page-type research pipeline tooling under page-type-data/: extract-from-coda.js (DevTools snippet), fetch-images.mjs (parallel image fetcher with native-resolution URL cleanup), analyze-screenshot.md (per-screenshot analysis prompt), synthesize-best-practice.md (per-category synthesis prompt), README documenting the 5-step pipeline.
  • Prompt-rendering snapshot tests (prompts.snapshot.test.ts) covering all shipped specs.
  • pnpm dump-prompt CLI: dump the full assembled system prompt for a (spec, stage) pair to stdout, with optional fixture file for Zone 4. Useful for offline iteration without burning API credits.
  • Inline archetype definitions in Zone 3 of the system prompt for LLM grounding.
  • Universal page rules + canonical propose_plan example baked into BASE_PROMPT.
  • purchase and start-trial CtaAction enum values.

Changed

  • Existing comparison spec upgraded based on best-practice synthesis (13-sample corpus): ComparisonTable added as required default section, Faq moved from required to forbidsArchetypes, Pricing added to forbidsArchetypes, SocialProof split into trust-logo-belt + switcher-testimonial slots, FeatureDeepDive ×1 required + 1 optional added, requiredProofTypes expanded with logos and metric, validation rubric expanded from 5 to 9 testable assertions.
  • book-demo, comparison, resources specs re-authored with full v2 vocabulary content.
  • data-index.js renamed to data-index.json to reflect its actual content (pure JSON) and avoid ESLint parsing it as code.

Fixed

  • Entrypoint detection (isEntrypoint) now uses pathToFileURL so the boot block runs correctly on paths containing spaces (e.g. /Users/.../Local Sites/...); previously the check silently failed off-Railway.
  • pnpm dump-prompt script imports updated for the post-restructure monorepo layout (../plugins/page-ai/src/... for runtime modules, @airfleet/nexus-ai-server-wp-contracts for types).
airfleet-nexus-ai-server

Release 0.3.1

Root build now compiles packages to dist and points exports there to resolve modules correctly at runtime.

GitHub
View full changelog

Fixed

  • Build: Root pnpm run build now runs build:packages before apps/server, compiling platform-sdk, platform, wp-contracts, and page-ai to dist/ and pointing each package exports default entry at ./dist/index.js. Production previously only emitted apps/server/dist; Node still resolved workspace imports to TypeScript sources and failed at runtime (ERR_MODULE_NOT_FOUND for *.js siblings), breaking Railway health checks after the pnpm workspace migration.
  • Deploy: predb:migrate invokes build:packages so the migration script always resolves @airfleet/nexus-ai-server-platform from emitted dist output; pnpm test does the same so Vitest matches production resolution.
airfleet-acf-addons-plugin

Release 1.0.3

Fixes crashes in jQuery AJAX requests when the XHR body is null or non-string.

GitHub
View full changelog

Fixed

  • Fixed BlockPreviewDebounce crashing jQuery $.ajax GET requests in wp-admin (including author search and Quick Edit author dropdowns) when the XHR body is null or non-string. The XHR override now coerces non-string bodies before checking whether the request targets an ACF block fetch.
airfleet-nexus-plugin

Release 0.52.0

Adds an AI Page Builder module and removes the AI Block Generator module.

GitHub
View full changelog

Added

  • Add the ai-page-generator module (AI Page Generator): a wp-admin AI Page Builder screen with session management and a full-screen editor shell, REST and SSE proxying to the external AI server so the API key never reaches the browser, Airfleet → Settings → Content fields for api_key and optional server_url, and the airfleet/nexus/ai_page_generator/server_url filter for overriding the AI service origin.

Removed

  • Remove the ai-block-generator module (AI Block Generator): block editor toolbar integration, REST proxy to the external layout service, Airfleet Settings section, related options, and the airfleet/nexus/ai_block_generator/server_url filter.
airfleet-nexus-plugin

Release 0.51.1

Restored WordPress test workflow path filtering by checking out the repository before running the change detector.

GitHub
View full changelog

Fixed

  • CI: Restore WordPress test workflow path filtering by checking out the repository before running the change detector.
airfleet-nexus-plugin

Release 0.51.0

Updates internal models, replaces PR review workflows with GitHub Actions and Copilot CLI, and adds planning guardrails skills.

GitHub
View full changelog

Changed

  • Internal: Update oh-my-opencode-slim.json to latest recommended models and config
  • Internal: Replace the parked gh-aw PR review workflows with standard GitHub Actions + Copilot CLI review workflows and refresh the PR review automation guidance
  • Internal: Add plan-pressure-test and implementation-guardrails skills to reinforce the existing planning and implementation workflow without adding competing commands
airfleet-nexus-plugin

Release 0.50.0

Reorganized project scripts, updated development containers to PHP 8.3, and added changed-file filters to CI workflows.

GitHub
View full changelog

Changed

  • Tooling: Reorganize project scripts under scripts/docs/, scripts/docmd/, scripts/playground/, and scripts/webpack/.
  • Dev Containers: Move both containers to PHP 8.3, update the pinned OpenCode binary to 1.14.28, and let VS Code forward the WordPress service port while keeping WP_DEBUG and SCRIPT_DEBUG enabled.
  • CI: Add changed-file filters to the WordPress and block e2e test workflows so expensive checks run only for relevant source, dependency, tooling, test, or workflow changes.
  • CI: Update the docs workflow to actions/upload-pages-artifact@v5.
airfleet-nexus-plugin

Release 0.49.0

Added API references and documentation guidance, reworked navigation, and standardized DOM event naming.

GitHub
View full changelog

Added

  • Add generated API references for Blocks, CPTs, and JavaScript events, plus generated release notes sourced from CHANGELOG.md.
  • Add documentation guidance for block pages, optional block contributor notes, JS event doc blocks, content type references, generated references, release notes, and hook images.
  • Add naming guidance for JavaScript events, transient keys, and settings groups/keys.
  • Add custom docs styling for inline code and release notes layout.

Changed

  • Upgrade @docmd/core to 0.7.7.
  • Expand bun run docs:generate to orchestrate PHP API references, JavaScript event references, and release notes.
  • Rework docs navigation and API Reference labels/order, using Modules, Hooks, CPTs, Taxonomies when present, Blocks, and JS Events without the repeated "Reference" suffix.
  • Run docs deployment after the plugin release workflow so generated release notes build from the versioned release commit.
  • Rename the changelog/versioning guide to docs/getting-started/release-process.md.
  • Update generated references so hook and block headings omit project prefixes while preserving full slugs in metadata, block attributes/supports are collapsible, block rendering details are concise, JS events are grouped in cards, and empty taxonomy references are skipped.
  • Standardize form and modal DOM events on the afnx- naming convention.
  • Simplify block documentation pages so they focus on editor usage and link to generated references for attributes, supports, and metadata.

Removed

  • Remove old airfleet/nexus/form/* and airfleet/nexus/modal/* DOM event names in favor of afnx-form-* and afnx-modal-*.
airfleet-nexus-plugin

Release 0.48.0

Updated Gutenberg block best practices by adding role attributes, SCSS linter rules, and guardrails for experimental components.

GitHub
View full changelog

Changed

  • nexus-block-patterns skill: comprehensive Gutenberg block best practices update — add "role": "content" for primary content attributes, SCSS import linter rules for index.js/edit.js/save.js, dynamic block patterns (InnerBlocks save.js rules, omit save.js for standard blocks), experimental/unstable components guardrail with explicit permission requirements
airfleet-nexus-ai-server

Release 0.3.0

Aligned Railway start command and fixed GitHub Actions CI paths, while updating deployment documentation.

GitHub
View full changelog

Fixed

  • Deploy: Railway startCommand aligned with the pnpm workspace so production runs apps/server via pnpm start (avoids broken health checks after the composition root moved).
  • CI: GitHub Actions fixes for pull-request / release validation paths.

Changed

  • Docs: Deployment and release workflow documentation updates.
airfleet-canvas-theme

Release 0.7.0

Adds new button styles, a purple primary color, and SCSS design tokens while removing secondary color support and example files.

GitHub
View full changelog

Added

  • Six button block style variations with button- slug prefix to avoid is-style-{slug} collisions across block types: button-primary-dark/-light, button-secondary-dark/-light, button-link-dark/-light
  • Shared button geometry on styles.elements.button so variations inherit common chrome
  • Color palette and gradients aligned with the Figma style guide
  • Overused Grotesk and Area Variable font family registrations (Inter fallback; font files pending license)
  • SCSS design tokens at src/scss/base/_root.scss (--afs-trs-sm, --afs-trs-timing-function)
  • SCSS mixins: hover, hover-capable, transition
  • Per-block stylesheet src/scss/blocks/core-button.scss for variation hover states

Changed

  • --wp--preset--color--primary now resolves to the new brand purple
  • Lint: at-rule-empty-line-before granted the same first-nested exception as rule-empty-line-before
  • Block style variations grouped into per-block subfolders: styles/buttons/, styles/headings/, styles/paragraphs/ (WP scans /styles recursively, so registration is unchanged)

Removed

  • --wp--preset--color--secondary and the secondary / subtle gradient slugs (no analog in the new palette)
  • styles/example.json and styles/example-button-large.json placeholder examples (the authored variations are the reference now)
airfleet-nexus-plugin

Release 0.47.0

Adds a circular icon-only button style and a play icon to the default registry.

GitHub
View full changelog

Added

  • support-button-icon: register an is-style-icon-only block style on core/button for circular, label-hidden icon buttons. The label stays in markup as the button's accessible name; outer/icon sizing exposed as --afnm-button-icon-only-size and --afnm-button-icon-only-icon-size for theme overrides
  • support-button-icon: add a play icon to the default registry
airfleet-nexus-plugin

Release 0.46.0

Added a guide for extending third-party Gutenberg Blocks.

GitHub
View full changelog

Added

  • Added guide on extending 3rd party Gutenberg Blocks: docs/guide/extending-blocks.md