v2026.08.7
このコンテンツはまだ日本語訳がありません。
Released 2026-08-29.
Features
Section titled “Features”- Manage content in more than one language. A site now declares the languages it serves, and each entry is kept as a set of per-language translations bound together, so a page can go live in Japanese while its English version is still a draft. Publishing pins a version, so holding every language inside one version would have made “ja published, en still being written” impossible to express. Facts that do not change with the language — an event date, a flag, a classification — are declared once as shared fields rather than being re-entered with every translation; they are edited on the default language and shown, filled but not editable, everywhere else, so the screen itself says the value is decided elsewhere. Choice labels can carry a translation per language, and missing ones are only refused when a draft is promoted to a version, never while you are still writing. Which languages a site serves is edited by owners and editors, alongside fields and choices: adding one obliges the front end to grow a route, translated chrome and hreflang, so it is a contract with the implementation rather than a piece of content.
- A locale path in the published JSON. Entries are now written to
{site}/api/{locale}/..., and the default language is additionally written to the path it has always used, so public identifiers already in production keep working. A site with no languages declared emits exactly the bytes it did before. - Share a draft through a link that expires. Showing an unpublished entry to a reviewer meant handing over the site-wide draft key, which unlocks every unpublished entry on the site. A share link now carries a signed, expiring token that opens one story and nothing else. It is scoped to the translation group rather than a single entry, because a piece of copy is approved once rather than once per language — otherwise the reviewer who checked the Japanese could not open the English. The signing key is the site’s existing preview token, so regenerating it, which already existed to cut off preview access, invalidates every link handed out in one go. Reference expansion resolves published versions only, so a shared draft never leaks the other drafts it points at.
Improvements
Section titled “Improvements”- A ticket you raise on the board is assigned to you by default. A card quick-added to a column had no assignee, so it vanished from the assignee filter the moment it was created. Tickets you want to leave unassigned are created and then cleared from the drawer. Tickets a minion raises are untouched: a PM raising work for an engineer would otherwise assign all of it to itself and start working on it.
- A preview receiver you can read. The sandbox site gained a
/draftroute implementing the contract HQ hands a front end, rendering through the same component the published page uses — a separate implementation would let a page look right in preview and break in production, which is the whole premise of previewing this way. The integration guide gained the three rules for handling a draft key: forward it without interpreting it, never render it into the page, and mark the page noindex.
- Language tabs on the entry list now filter. Middleware was stripping
?locale=from API requests while redirecting for the interface language, so the tabs did nothing — published Japanese entries were listed under the English tab as published — and the read API always answered with the default language. Because the redirect preserves method and body, a write addressed to one language could land on the default language’s row. Document templates were losing the same parameter. - Reference fields no longer offer candidates from other languages. The picker listed every language’s entries, so an English page could be pointed at a Japanese one by hand.
- Declaring a site’s first language republishes it. The public files were only rewritten when the default language changed, so the index kept describing the site as it was before any language was declared and consumers could not discover the new one.
- Duplicating a multilingual site works. The copy did not carry the language over, so its entries collided with each other on the uniqueness of their slugs.
- An entry whose slug repeats across languages loads. Reading one by key failed outright as soon as the same slug existed in two languages.
Includes @geekbeer/minion 5.7.4, Media Home 0.24.1, Video Studio 0.36.4.