v0.2.73
v0.2.73 — Code sandbox, projects, and mobile shell
Adds an isolated code-execution sandbox for runnable artifacts, project workspaces that bundle files/instructions/threads/agents, an installable PWA with a mobile-native shell, voice mode for streaming output, prompt template versioning, and a top-to-bottom marketing site rebuild. Also unifies org identity, hardens audit-log writes, and ships a new tale doctor CLI command.
🔒 Security
- Drop
orgSlugfrom the public action surface — all multi-tenant endpoints now key off org ID only, removing a class of slug-collision and impersonation footguns (#1734). - Allow audit-log chain writes through RLS so genesis + append rows commit under the same scope (#1726).
- Sandbox containers run on an
--internalbridge withNET_ADMIN-installed iptables rules that reject IMDS (169.254.169.254) and RFC1918 ranges, with a tinyproxy-based hostname allowlist (pypi, npmjs, GitHub package endpoints) gating all egress (#1727). - New
SANDBOX_TOKENHMAC secret between Convex and the sandbox spawner; auto-generated on first deploy and rotated headlessly on upgrade (#1727).
🚀 Features
- Code-execution sandbox + runnable artifacts — new ephemeral container-per-call spawner runs Python/JS code with package-registry-restricted egress and per-container memory/PID caps (#1727).
- Projects — shared workspaces that bundle files, custom instructions, threads, and agents under a single scoped surface, with archive, rename, sharing, and read-only viewer support (#1735).
- Agent skills + thread workspace + canvas pane + mobile shell — agents gain reusable skills, threads expose a workspace view, the canvas pane is reorganized, and the mobile experience gets a dedicated shell (#1737).
- PWA + mobile-native shell — platform is now installable as a Progressive Web App with a mobile-native shell, migrated onto the shared
@tale/uipackage (#1733). - Voice mode — streaming assistant output can now be played back as audio via TTS chunk tables and an opportunistic GC cursor (#1717).
- Prompt template versioning — prompt templates carry full revision history with diff view (#1705).
- Prompt categories — first-class scoped entities for organizing prompt templates, with member 2FA surfacing and settings polish landing alongside (#1721, #1722).
- In-app changelog viewer — surfaces release notes inside the app for cross-version upgrades (#1709).
- Paste-link video ingestion — paste a video URL into chat to ingest it via the new
videoLinkJobspipeline (#1724). - Assistant overlay on automation editor — open the AI chat directly over the automation editor for in-context edits (#1736).
- Provider detail drawer + API-key suffix masking — inspect provider configs with the last few characters of API keys visible for verification (#1729).
- AI providers search + pagination in the provider picker (#1728).
@tale/seopackage — unified SEO + LLM-artifact generation across services, with plugin-based build-time precompile (#1718, #1719).llms.txtacross services — every public service now publishes a discoverable LLM artifact (#1707).- PII detection — new governance PII detector with three modes, multi-language address detection, IBAN/credit-card validation, and NFC normalization (#1710).
- Shared AppShell unifies frontend provider stacks across services (#1716).
tale doctorCLI command for host preflight checks (sandbox-relevant items today; extensible) (#1727).- Hardware comparison gains a cables & network-equipment row, server-rack tier, and multi-node section.
- Globe icon on the language switcher trigger.
🛠 Improvements
- Marketing home rebuilt from
.pendesigns with new sections, dark mode, and animations (#1723, #1730). - Marketing site restructured into a clean folder layout with block-level dedup and polish (#1725).
- Automation metrics page redesigned (#1703); automation chat input reaches parity with the main chat (#1706).
- Provider drawer reorganized — headers outside the Card, ghost buttons, collapsible options guide (#1732).
- Docs pages and tone of voice rewritten end-to-end; agent-skills docs reorganized; i18n tone + terminology pass (#1708, #1713).
- Hardware page now derives every layout from a single catalog source.
- Form labels drop the trailing "(optional)" suffix in favor of the required-star convention.
🐛 Fixes
- Chat + dashboard no longer flash a wrong layout on initial load (#1720).
- Language picker changes apply without a page refresh (#1714).
BETTER_AUTH_SECRETgets a safe default in local dev so signup works on a fresh clone.- Pricing slider now spans 0 – 1,000+ with a 25-user default.
- Marketing site pinned to light mode; hash-scroll preload bug fixed; hardware spec values, AMD chip naming, and paren styling refreshed.
- Mermaid edge labels with parentheses now render in docs.
📝 Other
- Test files colocated next to source — all
__tests__/folders dropped (#1715). - Mintlify removed from docs; cluster-naming residue and
marketing-icons/RackKey/ unused rootclass-variance-authoritydependency cleaned up.
Upgrade
Run tale upgrade to update the CLI, then tale deploy to apply the new version.
The upgrade introduces two new lockstep services (sandbox and sandbox-egress) that ship and version with the platform image — both are pulled and started automatically by the default deploy path. A new SANDBOX_TOKEN secret is auto-generated on first deploy (headless deploys included). The personalization-toggle and other backfills run automatically inside migrations.runAll on deploy.
Note: the
artifactstable was removed in favor of the newthread_files+sandbox+projectsmodules. Deployments that already hold rows in this table will need to drop them beforetale deploysucceeds — for demo-stage installs this is typically a no-op.
Contributors
@yannickmonney, @larryro, @Israeltheminer, @Adeola-Adekoya
Full Changelog: v0.2.72...v0.2.73