Skip to content

· 8 min

Externa Core 1.2.0 — editorial and integrations

Approvals, translation workspace, kanban/calendar, SSO, Meilisearch, git export, Slack/Telegram, and the Nuxt starter — all opt-in.

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, webhooks item.submitted / item.approved / item.rejected, permissions can-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 directus and wordpress for ImportRemoteJson.
  • 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:

  1. Back up the database.
  2. Move code to v1.2.0.
  3. Install dependencies and build:
bash
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.

  1. Run permissions:sync (included in externa:upgrade) and assign can-submit-collections / can-approve-collections before enabling approvals.
  2. Restart Horizon (or queue workers) and Reverb — presence and Meilisearch/git-export jobs depend on them.
  3. Docker: pin ghcr.io/qiick-io/externa-core:1.2.0.
  4. 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