Externa Core 1.2.0 — editorial and integrations
18 October 2026 — Externa Core v1.2.0 (29 closed milestone items). New capabilities are opt-in: off until you enable them. GitHub Release v1.2.0 · Changelog.
Who should upgrade
- Teams that need approvals, a locale-aware translation workspace on the item form, or kanban/calendar list layouts.
- Operators adding SSO, Slack/Telegram notifiers, Meilisearch, or git export.
- Anyone starting a Nuxt frontend — the official starter ships with this cut.
Stay on 1.1.x only if you do not need these features yet; there are no required breaking API changes called out for this minor.
What matters
Editorial
- Approvals on versioned collections —
approvals_required, submit/approve/reject, promote gate, webhooksitem.submitted/item.approved/item.rejected, permissionscan-submit-collections/can-approve-collections. Docs: Editorial approvals. - Translation workspace — item-form locale dropdown with filled/total completeness, Apply to all locales / Apply to empty locales, and per-field Copy from {{locale}} (Translation workspace). See also Multilingual landing with Nuxt.
- AI field translation on the item form (local AI provider).
- Collection layouts — optional kanban (
board_sort) and calendar; table remains default (Collection layouts). - Presence + soft lock via Echo — avatars, whisper lock, stale-save with
expected_updated_at(Collaborative editing).
Integrations & auth
- Slack / Telegram notifiers with per-project event mute list (
notifier_event_types). - Optional Meilisearch sync of published items (Meilisearch sync); optional git export (JSON/Markdown, deploy-key SSH, dry-run) (Git export sync).
- CMS import profiles
directusandwordpressforImportRemoteJson. - Optional OIDC/SSO (Socialite + issuer discovery); JIT provisioning off by default; secrets stored encrypted (SSO / OIDC).
Starters
Official Nuxt starter: qiick-io/externa-nuxt-starter (Headless starter).
Notable fixes in the same cut
Meilisearch indexes with primaryKey=id (previously documents could silently fail to index); git export sandbox/bootstrap fixes; OIDC callback errors redirect to login; TipTap/markdown AI translate remount; Telegram test is synchronous with BotFather-format validation.
Upgrade steps (from 1.1.x)
From the release notes and Upgrade:
- Back up the database.
- Move code to
v1.2.0. - Install dependencies and build:
composer install # adds laravel/socialite ^5.31
npm ci && npm run build
php artisan externa:upgrade
# or: migrate --force && permissions:sync && optimize:clear
Migrations add approvals columns, board_sort / related item fields, OIDC/users.oidc_sub, and related settings. users.password becomes nullable for SSO-only accounts.
- Run
permissions:sync(included inexterna:upgrade) and assigncan-submit-collections/can-approve-collectionsbefore enabling approvals. - Restart Horizon (or queue workers) and Reverb — presence and Meilisearch/git-export jobs depend on them.
- Docker: pin
ghcr.io/qiick-io/externa-core:1.2.0. - Optional: enable Compose profiles for Meilisearch / OIDC QA (
compose.oidc.yaml), then configure features in Project settings.
Breaking changes
Release notes: none expected. New integrations stay off until configured.
Security (public notes)
OIDC client secret and Telegram bot token are stored encrypted. npm lockfile bumps so npm audit --omit=dev --audit-level=high passes.
Sources
- GitHub Release v1.2.0
- Changelog · Upgrade · companion docs linked above
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.