v0.2.71
v0.2.71 — Public status page and onboarding fix
This release adds an unauthenticated /status page with per-component health and trilingual copy, fixes an onboarding regression so fresh instances auto-seed a default org while multi-org deployments correctly route uninvited users to the create-organization form, and aligns the three service shells (platform, web, docs) on shared @tale/webui utilities. Also restores localized search placeholders on factory-driven tables.
🚀 Features
- Public
/statuspage with per-component health — unauthenticated, server-rendered, no JS. Reports overall up/down plus a per-subsystem breakdown using neutral product vocabulary (Application / Knowledge base / Web & document services) so stack names don't leak. Probes Convex/versionand RAG/Crawler/healthbehind a 5s single-flight cache; upstream response bodies are discarded so a misbehaving probe target can't push bytes into the public response. Copy negotiated viaAccept-Language(en/de/fr). A11y: status conveyed by text + colour (status dots arearia-hidden). Caddy routes/statusstraight to the platform via the defaultreverse_proxy— no Caddyfile change needed (#1699)
🐛 Fixes
- Auto-create
defaultorg only on truly fresh instances — restores the auto-seed flow for the first user on a brand-new instance (so the many hardcodedorgSlug: 'default'callsites in agents, chat, integrations, providers, and login policy keep resolving), while multi-org instances and uninvited users still get the create-organization form. Slug-conflict races (two tabs / two users creating simultaneously) fall back to the form branch with no orphan state (#1698, #1702) - Search placeholder on factory-driven tables — the
useTableConfigHookfactory callstEntity('searchPlaceholder')against a runtime namespace, so customers, products, vendors, and websites were rendering the raw key string instead of the localized placeholder. Added the missing top-levelsearchPlaceholderkey for each entity and listed them inkeys-dynamic.txtso the orphan-key scanner can see them (b98453a)
🛠 Improvements
- Service-shell alignment + shared
@tale/webuiutilities —services/platform,services/web, andservices/docsnow share a canonical shape: a one-lineglobals.cssre-export from@tale/ui, siblinglocals.cssfor service-specific styles, identicalmain.tsx/router.tsx/tailwind.config.ts/postcss.config.mjs/tsr.config.json/tsconfig.json, and aninitServiceI18nhelper that collapses the three near-duplicate i18n bootstraps.webanddocsnow share astartSimpleServerfrom@tale/webui/server(locale negotiation,/api/healthwith graceful-drain marker, security headers,extraRouteshook); platform's Hono server keeps its specifics but its/api/healthbody shape was aligned.@fontsource/interis bundled once at@tale/uirather than per-service. The plopreact-servicegenerator emits the new aligned shape (#1700) - Shared search test suite, theme-asset sync, and docs polish — bundled into the alignment PR: full Vitest suite for the
@tale/webuisearch dialog/build-index/client/highlight/snippets, a newrehype-preserve-code-metaplugin so fenced-code metadata survives the rehype pipeline, atheme-asset-synccomponent for platform theme assets, storybook cleanup, favicon rename (favicon-dark.png/favicon-light.png+ a proper multi-sizefavicon.ico), and translation edits indocs/{de,de-CH,fr}/(#1700)
Upgrade
No manual migration required. Run tale upgrade to update the CLI, then tale deploy to apply the new version.
Contributors
Full Changelog: v0.2.70...v0.2.71