View full changelog
Changed
- sync.yml: Added airfleet/structural-website-2026
No releases found for the selected project.
Adds a module to prevent data deletion during uninstallation or preview version switching.
disable-data-uninstalling: New module allowing site administrators to prevent plugin data from being deleted when the plugin is uninstalled or when switching between plugin preview versions in the Airfleet plugin manager. Module state is checked directly in the uninstall hook via ModuleManager to ensure data protection works correctly outside the normal plugin lifecycle.Unreleased changelog entries are now stored as separate markdown fragments.
changelog/unreleased/*.md fragments and consolidate them into CHANGELOG.md during plugin release via @airfleet/wordpress-dev.@airfleet/wordpress-dev to 4.11.1.Fixed changelog fragment consolidation to merge fragments before release-it and Keep a Changelog validation.
afwp release changelog fragment consolidation so fragments are merged before release-it and Keep a Changelog validate CHANGELOG.md.Added a changelog fragments command and updated release commands to consolidate fragments.
changelog-fragments command for validating and consolidating changelog/unreleased/*.md files into CHANGELOG.md.changelog-add --check now accepts either CHANGELOG.md Unreleased entries or valid changelog/unreleased/*.md fragments, with --skip-changelog-fragments available when fragments should be ignored.version-set now includes changelog fragments when auto-determining and checking .airfleet-release, with --skip-changelog-fragments to use only CHANGELOG.md entries.release github, release npm, release plugin, and release theme now consolidate changelog fragments before Keep a Changelog updates CHANGELOG.md, with --skip-changelog-fragments to bypass consolidation.Adds a new Accordion module and block with auto-close, icon system, and custom events, alongside a CSS color sanitization utility and documentation updates.
docs/guide/modules.md and docs/blocks/background-image.md.block-registration - added method to unregister blocks that depend on modules, when the modules are not active.accordion: New Accordion module — registers and manages the lifecycle of the accordion block. Enabled by default; disabling this module will unregister the accordion block and its related child blocks (accordion-item, accordion-item-heading, accordion-item-content).block-accordion: New Accordion block (airfleet-nexus/accordion) — a container block for collapsible content items with autoClose behavior and showIcon context. Toolbar "Add item" button for faster item creation. CSS modifier classes (.afnb-accordion--has-icon, .afnb-accordion--no-icon, .afnb-accordion--icon-left, .afnb-accordion--icon-right) for icon-aware heading padding. Tab color controls (Active/Inactive Background and Text) set via inline style attribute on the wrapper, cascading to all tabs via CSS custom properties. Auto-switch option with timed item cycling, configurable interval, manual click reset, viewport-aware pausing, and optional progress bar animation.block-accordion: Extensible icon system featuring SVG path-based animations (plus-minus and arrows), a filterable PHP configuration, and a server-side localized icon picker in the editor.block-accordion: Custom DOM events dispatched on the wrapper: afnx-accordion-load, afnx-accordion-open, and afnx-accordion-close.block-accordion: Vanilla JS frontend behavior (view.js) — handles expand/collapse toggling, autoClose logic, and deep linking via URL hash. No external dependencies or Interactivity API.block-accordion: Enhanced editor experience mimicking the native accordion block.block-accordion-item: New Accordion Item block (airfleet-nexus/accordion-item) — a wrapper for heading and content, supporting openByDefault for initial state control.block-accordion-item-heading: New Accordion Item Heading block (airfleet-nexus/accordion-item-heading) — locked inner block for accordion-item. Wraps a core/heading and a toggle button HTML element. The heading's native HTML anchor field enables URL deep-linking to that item.block-accordion-item-content: New Accordion Item Content block (airfleet-nexus/accordion-item-content) — locked inner block for accordion-item. Provides the collapsible panel body with CSS grid-based transitions.SanitizeCssColor: New utility for sanitizing CSS color values (hex, rgb/rgba, hsl/hsla, oklch, oklab, color, var, and CSS keywords). Includes comprehensive PHPUnit test suite covering all WordPress-produced color formats and injection attack prevention.Resolved open_basedir warnings by disabling AWS shared config file probing.
open_basedir warnings (is_readable(): open_basedir restriction in effect. File(~/.aws/config) is not within the allowed path(s)) when initializing the S3 client on hosts that restrict access to the home directory (e.g. Kinsta). The AWS SDK is now configured with use_aws_shared_config_files => false, so it no longer probes ~/.aws/config and ~/.aws/credentials since credentials are already supplied explicitly.Fixes spurious invalid grant errors caused by duplicate OAuth callback requests by redirecting already-authenticated users.
invalid_grant: Malformed auth code errors caused by duplicate OAuth callback requests (browser back/forward navigation, link prefetch, and bot replay) re-redeeming a single-use Google authorization code. The callback handler now guards against duplicate processing per state using an atomic object-cache lock with a transient fallback, redirecting already-authenticated users instead of re-exchanging the code.Moves auto-generated documentation to a generated folder and adds it to gitignore to prevent merge conflicts.
docs/api/, docs/release-notes.md) to docs/generated/ and add it to .gitignore to prevent merge conflicts across branches.Fixed a crash in the JobPosting JSON-LD schema when job location data is null.
Weekly Slack digests now list only the latest release per repository and show the total release count.
Enabled Cloudflare Worker observability, adjusted Slack digest schedules, and ensured static pages update after period rollovers.
worker/wrangler.toml and added explicit release-processing/build-hook logs so webhook deliveries, summary generation, and Pages build-trigger attempts can be traced in Cloudflare Workers logs.PAGES_BUILD_HOOK_URL GitHub Actions secret used to refresh the static site after Slack-triggered summary backfills.Automatically recompiles and retries rendering when compiled Blade cache files are missing.
error_log)Fixed worker exception handling to prevent crashes and added guards for missing secrets.
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.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.Webhook signature verification now handles empty secrets and ignores draft releases.
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.Added local summary generation, changelog statistics, and Slack automation alongside UI refinements and summary workflow improvements.
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.preview:seed script to seed live KV data, build the site, and start the local preview server in one command.--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.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.YYYY-Www label plus a clearer week range.@cf/zai-org/glm-4.7-flash; and upgraded monthly summaries to use a more narrative grouped prompt.##-headed sections by capability theme, starting with a one-sentence overview. Prompt version bumped to monthly-v6 with increased token budget./repo/{owner}/{name}).README.md and AGENTS.md for the summaries workflow, release checklist, and changelog expectations.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.YYYY-MM-DD so full ISO timestamps stored in monthly index items no longer cause boundary weeks to be incorrectly excluded.sanitizeUrl now explicitly rejects protocol-relative URLs (//example.com) instead of normalizing them to http: and passing the allowlist check.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.Updated color palettes, typography, and button styles to use theme.json tokens while adding block templates and global styles.
front-page and page block templates with header, post content, and footer template parts.theme.json..cursor/plans to ignored local tooling files.theme.json.theme.json core button variations, including shared transitions via theme custom tokens.--wp--custom--transition--* tokens instead of local --afs-trs-* variables.Adds a Background Image block for cover-style backgrounds with loading options and allows placement inside Media Background containers.
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.Adds environment settings and block documentation, updates module workflows and taxonomy, and fixes Dev Container and SVG sanitization issues.
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.premium tier value to the UI, and update current module metadata for forms, providers, components menu, and Allow Lottie.Core\Svg\SvgSanitizer utility for use outside the Allow SVG module.url(...) references while avoiding false positives for plain values that merely contain protocol-like substrings.Fixes the license badge fallback color for the Preview badge when the legacy Admin plugin is not installed
Preview badge when legacy Admin plugin is not installed