Externa Core 1.0.0 — first stable GA
On 21 September 2026 we cut Externa Core v1.0.0, the first stable (GA) release. It builds on the public betas (v1.0.0-beta.1 … beta.4) with install and Docker DX, webhook hardening, and admin polish. Full notes: GitHub Release v1.0.0 · docs Changelog.
Who this is for
- New operators starting a self-hosted Externa instance.
- Beta testers on
1.0.0-beta.4who need a clear path to stable.
If you already run a newer tag (1.1.x / 1.2.x), this post is historical — jump to the 1.1.0 or 1.2.0 notes instead.
What changed for users
Install path is Packagist-first
Stable install is:
composer create-project qiick/externa-core externa-core
cd externa-core
php artisan externa:install
create-project copies the app tree once. It is not the update channel — later releases come from Git tags / Docker image pins, then php artisan externa:upgrade (migrate / permissions / cache). See Upgrade and Quick Start.
Docker quick-deploy
GHCR multi-arch images on v* tags, compose.quick.yaml, gated RUN_SEED on first boot, and healthchecks landed for operators who prefer Compose over Herd. Docs: Deploy with Docker.
Webhook signing secrets are mandatory
Outbound webhooks refuse delivery when the signing secret is empty (no empty-key HMAC). Configure a secret on every webhook before you expect deliveries. This was deferred from beta.4 and is a behavior change vs earlier betas.
Opt-in upstream sync
php artisan externa:upgrade --sync-upstream=vX.Y.Z can merge the official tag into your tree when you choose to. Default externa:upgrade still only migrates, syncs permissions, and clears caches — it does not pull code.
Admin polish
Drag-and-drop reorder for M2A blocks and unified single-line field control heights shipped in the same cut.
Upgrade steps
Fresh install
Follow Quick Start: composer create-project → php artisan externa:install → open APP_URL.
From 1.0.0-beta.4
- Back up the database and
.env(Backup & restore). - Bring code to tag
v1.0.0(git checkout/merge or Docker imageghcr.io/qiick-io/externa-core:1.0.0). - Run:
composer install
npm ci && npm run build
php artisan externa:upgrade
# or: php artisan migrate --force && php artisan permissions:sync && php artisan optimize:clear
- Set a signing secret on every outbound webhook.
- Restart queue workers (and Reverb/Horizon if you use them).
Breaking / behavior notes
- Empty webhook signing secrets → no delivery until configured.
- Requirements at GA: PHP 8.4+ (composer
^8.4), Node 24 for the admin frontend build. Prefer patched PHP 8.4.27+ or 8.5.12+ on new hosts.
Sources
Related
- PHP emergency security releases — Oct 2026
PHP CVEs 2026-109618 and 2026-109619 (CVSS 9.2 RCE). Update to 8.4.27 or 8.5.12; what Externa users must do.
- Externa Core 1.2.1 — field rename drafts & deps
Patch for draft/revision field renames, npm audit clean-up, and the repair-renamed-field-drafts artisan command.
- Nuxt starter 1.1.1 — NuxtPage and Node 22.13+
Why 1.1.1 matters: NuxtPage instead of slot, h3 pin for getQuery, engines ≥22.13.0 — plus what 1.1.0 tooling bumps included.