Skip to content

Releases: mx-space/core

v13.26.0

Choose a tag to compare

@github-actions github-actions released this 09 Aug 07:15
cd0eedc

TL;DR

Google Vertex AI is now available as a first-class AI provider across text, image, and TTS.

Highlights

This release adds Google Cloud's Vertex AI as a unified provider option in the admin AI settings, complementing the existing OpenAI-compatible providers. Operators can now route text generation, image generation, and text-to-speech through Vertex's Gemini model family from a single configured provider, without standing up a separate OpenAI-compatible proxy.

Behind the scenes, text providers were reorganized behind the same shared protocol registry that image and TTS already use. Aligning all three modalities on one extensibility model lets new backends be added consistently and keeps existing adapters maintainable.

Changes

Features

  • Add Google Vertex provider adapters for AI text, image, and TTS (#2794)

Full Changelog: v13.25.3...v13.26.0

v13.25.3

Choose a tag to compare

@github-actions github-actions released this 09 Aug 06:28
165ce22

TL;DR

Repairs a schema migrator flaw that let a migration be recorded as applied without running, breaking article translations.

Changes

  • A migration whose journal timestamp is not strictly increasing is no longer mistaken for already-applied history and skipped without executing its SQL (33d2a43)
  • Servers upgraded to v13.25.2 automatically regain the missing ai_translations.updated_at column on deploy, so post, note, and category listings return translated content again (33d2a43)
  • The startup schema guard now verifies every bundled migration by hash rather than trusting the newest recorded timestamp, so an unapplied migration blocks the deploy instead of surfacing later as runtime query failures (33d2a43)
  • Failed translation lookups now log the underlying database error instead of only the SQL statement that failed (33d2a43)

Full Changelog: v13.25.2...v13.25.3

v13.25.2

Choose a tag to compare

@github-actions github-actions released this 08 Aug 19:33
d48dbc9

TL;DR

Fixes TTS narration staleness detection after re-translation, and compiles Zod validation schemas ahead of time for lower request overhead.

Changes

Bug Fixes

  • AI narrations voiced from a translated article are now correctly flagged as stale when the translation is regenerated or hand-edited without touching the original article — readers see the "content edited" hint instead of silently hearing outdated audio (dbcbb21)

Other

  • Request-validation Zod schemas are now compiled at build time instead of per process, reducing validation overhead on every request (6f40b9a)

Full Changelog: v13.25.1...v13.25.2

v13.25.1

Choose a tag to compare

@github-actions github-actions released this 08 Aug 17:23
5cc833f

TL;DR

Fixes Gemini text-to-speech language steering and refreshes core dependencies across five major version upgrades.

Changes

Bug Fixes

  • Gemini TTS now respects the requested output language instead of defaulting to the model's detection (3c6b476)

Other

  • Dependency refresh spanning 102 specs, including five major bumps: ioredis 6 (RESP3 by default, with legacy reply mapping preserved), maplibre-gl 6 (ESM-only, dedicated worker URL), motion 13, @antfu/install-pkg 2, and dotenv-expand 1000 (#2785). All upgrades verified via typecheck, admin build, and a Redis pub/sub cross-pod test under RESP3.

Full Changelog: v13.25.0...v13.25.1

v13.25.0

Choose a tag to compare

@github-actions github-actions released this 08 Aug 13:30
224a51a

TL;DR

AI generation now records per-request metrics — tokens, cost, and latency — across insights, summary, translation, and narration, and the admin gains richer provider configuration.

Highlights

Every AI operation — insights, summary, translation, and TTS narration — now logs a generation record capturing the model, token counts, estimated cost, and latency into a new persistent ledger (migration 0029, applied automatically). The admin surfaces these metrics in each task's detail drawer with localized labels, so operators can finally see what each AI pass actually cost and how long it took, per article and per task type.

Provider configuration in the admin is more robust: built-in provider presets speed up onboarding, the model-assignment and TTS-voice fields validate against the live catalog, and per-model pricing feeds cost estimates back into the metrics ledger. A new TTS language strategy picks the right voice and script per language automatically. The test suite gains a database-safety helper so it can no longer mutate shared state.

Changes

Features

  • AI generation metrics ledger records tokens, cost, and latency across insights, summary, translation, and TTS (e47f4b7)
  • Smarter AI provider settings: presets, live-validated model/voice assignment, per-model pricing, and a TTS language strategy (24530fe)

Full Changelog: v13.24.0...v13.25.0

v13.24.0

Choose a tag to compare

@github-actions github-actions released this 08 Aug 09:47
bd71a28

TL;DR

AI provider configuration now unifies text, image, and speech capabilities while adding automatic text-to-speech voice discovery in Admin.

Highlights

AI providers can now declare text, image, and speech capabilities through one shared configuration. Image generation and text-to-speech assignments use the same provider model as writing, summaries, reviews, translation, and insights, reducing duplicated credentials and preventing providers from being removed while they remain assigned.

The Admin interface now exposes image-generation defaults and complete text-to-speech controls in the unified AI settings. Supported OpenAI speech models provide a built-in voice catalog, while compatible providers can supply a remote catalog; manual voice entry remains available when discovery is unavailable.

Changes

Features

  • Configure text, image, and speech workloads through capability-aware AI providers. (cbb73df)
  • Discover built-in or provider-hosted text-to-speech voices directly from Admin. (cbb73df)
  • Automatically normalize existing image-generation and text-to-speech settings into the unified configuration. (cbb73df)

Full Changelog: v13.23.0...v13.24.0

v13.23.0

Choose a tag to compare

@github-actions github-actions released this 08 Aug 05:00
601e60d

TL;DR

Articles can now be narrated block-by-block with AI-generated audio, complete with an admin management surface and entitlement-aware public playback.

Highlights

AI Text-to-Speech turns any post, note, or page into a spoken version, synthesized one content block at a time through any OpenAI-compatible speech endpoint. Each block is stored as a content-addressed audio object, so unchanged text is reused across regenerations and only stale segments are re-synthesized — keeping repeat runs fast and cheap. Narration availability is advertised on every article detail response via a tts meta flag, so frontends can surface a play control only when audio actually exists.

Reader access mirrors the existing paywall exactly. The public narration endpoint runs the same membership and password checks as article visibility, so premium content is gated consistently whether a reader is hitting text or audio. Site owners, active members, and entitled readers get playback; everyone else sees narration as unavailable, with no leak through the shared cache.

On the admin side, a generation panel inside the editor and a dedicated fleet management page cover the full lifecycle: enqueue or force-regenerate per article or in bulk, inspect segments on a timeline, resolve titles across the whole list, and delete with storage cleanup. AI quick-action entries are also added to the Note and Post context menus alongside summary, insights, and translation.

Changes

Features

  • ai-tts: per-block AI narration for articles (#2781) — configurable OpenAI-compatible speech provider, content-addressed reuse, public entitlement-aware playback, tts article meta, and a full admin generation/management surface.

Bug Fixes

  • migration: corrected an out-of-order timestamp on the 0028_ai_tts migration so the boot-time schema-currency check detects drift correctly (c3ff266)

Upgrade Notes

No manual operator action required. The 0028_ai_tts migration applies automatically via the normal migrate.mjs release step; its timestamp correction only affects the recorded created_at on fresh applies and does not change SQL execution order or any migration hash.


Full Changelog: v13.22.0...v13.23.0

v13.22.0

Choose a tag to compare

@github-actions github-actions released this 07 Aug 16:10
8cf9db9

TL;DR

Space gains a native iOS administration app and secure push delivery through a separately deployable relay.

Highlights

Administration from iPhone. The native Space app now supports device-authorization pairing, dashboard statistics, comment review, quick note and say publishing, and file-library access. Mobile-specific API views provide the data needed by these workflows without requiring the full web administration interface, while the checked-in OpenAPI contract keeps the Swift packages and server routes aligned.

Privacy-preserving push delivery. mx-core can register devices and queue notification events through an independently deployed Push Relay. The relay receives only the minimum comment resource identifier instead of comment text, author details, email addresses, IP addresses, or user-agent data. Delivery credentials are encrypted at rest, and relay requests are limited to explicit server-controlled HTTPS origins.

Repeatable TestFlight delivery. The repository now includes a GitHub Actions workflow for signed iOS archives and TestFlight uploads. It runs automatically only when mobile-related files change, remains available for manual dispatch, and uses read-only repository permissions. This keeps routine server changes from consuming Apple build capacity while preserving an auditable release path for the mobile application.

Changes

Features

  • Manage a Space instance from the native iOS application, including pairing, dashboard, moderation, publishing, and file workflows (#2783)
  • Register mobile installations and deliver privacy-minimized comment notifications through the standalone Push Relay (#2783)
  • Export and verify the mobile OpenAPI contract so server and Swift models remain synchronized (#2783)
  • Build and upload signed iOS archives through a mobile-scoped or manually dispatched TestFlight workflow (#2783)

Bug Fixes

  • Reject untrusted or malformed Push Relay destinations before activation, deactivation, and event delivery (#2783)

Upgrade Notes

  • Existing deployments remain unaffected when push delivery is unused. To enable it, deploy and migrate the standalone Push Relay, enable mx-core encryption with a stable MX_ENCRYPT_KEY, and set MX_PUSH_RELAY_ORIGINS to the exact trusted HTTPS relay origins. The mx-core 0027_clean_vindicator migration creates the new push source, binding, and delivery tables during the normal database migration process.

Full Changelog: v13.21.0...v13.22.0

v13.20.1

Choose a tag to compare

@github-actions github-actions released this 02 Aug 16:06
ea35808

TL;DR

Fixes S3 storage settings being dropped on save, restores serving of files in nested upload folders, and cuts cold-start time by roughly 20%.

Changes

  • S3 storage credentials and options now survive a settings save instead of being reset to defaults, so object-storage uploads keep working after any configuration change (#2780)
  • Files stored inside nested directories under the upload root are served correctly again instead of returning a not-found error (#2780)
  • Server startup is noticeably faster — a fresh container now reaches ready in about 430ms, down from ~530ms, thanks to a shipped V8 compile cache and deferring heavy dependencies until they are actually used (2afacbb)

Full Changelog: v13.20.0...v13.20.1

v13.20.0

Choose a tag to compare

@github-actions github-actions released this 29 Jul 16:58
89e024b

TL;DR

Progressive Markdown→Lexical migration for posts, notes, and pages, plus Dependabot security dependency patches.

Highlights

Admin no longer blocks format switching as soon as a Markdown document has content. Eligible Markdown posts, notes, and pages can convert to Lexical per document: conversion is gated on supported syntax, opens diagnostics when unsupported constructs remain, and only becomes published when you save—so drafts can stage Lexical without forcing a live switch.

The server dry-runs conversion (including coupled AI translations), then commits Markdown→Lexical atomically on save for the source document and its translations. Historical Markdown draft snapshots stay as an immutable audit trail; Lexical still owns content with a writer-owned Markdown text projection.

Changes

Features

  • Progressive Markdown-to-Lexical migration for posts, notes, and pages, with dry-run eligibility, source-located diagnostics, and atomic save-time commit (including AI translations) (#2777)

Other

  • Patched Dependabot-reported direct and transitive dependency vulnerabilities (@fastify/static, js-yaml, react-router, fast-xml-parser, and related overrides) (eb78fe2)

Full Changelog: v13.19.0...v13.20.0