web-v2.0.2
Latest[web-v2.0.2] - 2026-08-26
A large release (486 commits) built around three lines of work: the Studio webapp builder,
collaborative documents and whiteboards, and Agent Flows.
Added
Studio — webapp builder
- End-to-end WebApp preview on two runtimes: WebContainer (COOP/COEP scoped to the dedicated
/studio/webapproute) and the Daytona sandbox, with back/forward/home controls and a toolbar that can wake a sleeping sandbox. - A webapp iteration panel replacing the comments model, with author avatars, timestamps, run UI, and secrets hidden from prompts.
- Edit a selected element's properties directly in the preview, and anchor a comment to the code or the element you picked.
- Share a webapp preview by link, keep comments beside Live Sites in immersive mode, and retake a webapp's chat-card cover after edits.
- Code revision history, plus a source-sync failure notice when a project's sync doesn't land.
- Code projects read from the VFS instead of one whole-tree Yjs room; files open editable immediately and upgrade to collaborative editing in the background.
- Container project files cached in OPFS, and
workspace://{code_workspace_id}promoted to a real locator. - Live Sites wired to the webapp-builder API; a docx Download button in shell mode.
- Docs↔Studio Drive interop, TipTap TOC and tables, and a drive-share 910 card.
Documents, whiteboards and Drive
- Markdown collaborative editing with Drive favorites, a library rebuilt around views and row items, and origin filter chips.
- Excalidraw whiteboards: embeddable in TipTap documents, renamable from the chrome title row, exportable as a portable scene, with revisions drawn into the version history preview and entity cards sourced from the host's roster.
- A shared document gets its own page instead of the library; videos can be placed in a document; a multi-paragraph selection turns into a list from the bubble menu.
- Lark-style table grip strip, column/row toolbar and block menu, and a list/grid toggle with a full-bleed layout.
- A snapshot-backed
CrdtProviderfor solo (non-collab) docs, with a bounded unsaved window that flushes onpagehide.
Agent Flows
- Author a flow as one diagram of who hands work to whom — first-edit create, rich-text prompts, canvas feedback, re-pluggable connectors, per-side slots, and cards grown from a dot.
- A per-flow ACL model with drive-style defaults, edit rights split into policy/lease/manage, and an advisory edit lease with heartbeat, takeover and loss handoff.
- Flow publishing with landing verification, gated behind a backend permission check; trigger-by-mention offered on every agent where a live flow starts.
- Reachable from the chat header, the composer's create menu, and as a pushed page on phones; one flow per Swarm KV row.
Artifacts and Saves
- An artifact capability matrix, with every Studio entry gate routed through it.
- Save a completed card as the card itself, shelve saved items by kind with author attribution, and give uploaded files and composite messages their own save entry.
- Forward a saved row, an uploaded file, or a saved webapp as the message it came from; open each row with the viewer that matches it, including Word documents in Studio's docx editor.
- Save a shared cloud document or whiteboard straight from the message menu.
Agent surfaces
- Agent Workspace: a hub with account-scoped chat, full chat-tree reuse, channels, deliverables, agent-scoped user settings and Slack bridge labels.
- Agent APIs opened now that its backend is live, split into three surface cards, with the OpenAI-compatible mode documented and widget/MCP/REST share surfaces on mobile.
- Developers can manage which sites an agent's own credential may reach, and name the sites a key covers.
- Guest
/a/home unlocked with Hub publication badges; Slack channel and group conversations badged in Agent Hub.
Mobile
- Agent Hub P0/P1 parity ported from
test-v2.0.0, withConversationItemreused and custom previews aligned. - A Personal AI entry point for Meeting Minutes, native playback for non-Opus voice messages, and separate agent/friend tabs in the contact picker.
- Multi-account login and the account-addressed
*Asfacade in the React Native OpenIM SDK, plusfullSyncFriendsexposed to the app layer.
Desktop
- Deliverable previews served over
teamily-artifact://instead of localhost.
ChainOpera (chat-co-v2)
- A ChainOpera shell app with wallet-only login, the CoAI skin, the points centre, and on-chain contract subscription — all in the override layer.
Elsewhere
- A brand/mode theming layer with zero impact on Teamily.
- Skill Configuration for managing skill API keys, behind
VITE_SKILL_CONFIG_ENTRY_ENABLED. - Affiliate funnel attribution by code and inviter; scannable QR codes in the iOS and Android download menus; plan-family scope on the group leaderboard.
- Agent flows translated into every shipped locale, along with the webapp share dialog and shared-preview copy.
Changed
/docsrenamed to/artifacts, with the Saves entry points polished; the sidebar label later reverted to Artifacts.- Skill Configuration reachable only from the settings list.
- Brand name usage updated in
llms.txtwith attribution guidelines added. - Desktop bumped to 1.6.5 (Mac App Store build 76); mobile bumped to 1.6.4.
- OpenIM SDK binaries rebuilt several times over the release — see Fixed for the cold-sync sequence.
Performance
- IM message search now runs off an index instead of scanning every conversation, and the seed is one-time.
- The conversation list stops re-rendering on unrelated store changes, stops paging the sorted-conversation-list endpoint, and uses smaller local pages.
- The flow canvas hands its pan gesture to the browser up front.
- Studio installs container deps once and caches them in OPFS, and serves file bodies from what the preview already read.
- Streamed Swarm tool-call chunks are committed once per frame.
- Mobile forces the uniffi string decode onto the C++ helper.
Removed
- The Links shelf, which nothing could reach, and the placeholder storage-usage row in the artifacts sidebar.
- Open Studio links that had no destination, and the duplicate collaborator list on the whiteboard canvas.
- The details block from the TipTap block picker, and the create menu's flow section when it has nothing to offer.
- Studio props nothing reads any more.
Fixed
IM
- Cold sync reworked and then restored: lazy cold sync removed the 40k tables, the window gate's cold-start hole was closed with a hard budget, and the SDK binaries were finally reverted to the 9d88e1a full-write tree with matching wasm glue.
- Conversation-change events no longer grow the list past its loaded window, and the list scrolls past its first page.
- Agent cards stop reflowing the chat list on entry, stop re-deriving snapshots redundantly, and stop freezing on "Working on it".
- Identity handling: sender identity resolved live rather than from frozen snapshots, agent avatar caches refreshed after an identity change, friend identity refreshed after offline profile changes, and the stale-identity repair moved out of React so a zombie leader heals.
- Group membership stays in sync after leaving, being invited back, or a dismissal; REST-seeded rows are removed on delete; a group is never dismissed off a blind roster read.
- Media: a sent video no longer opens as a 320×240 stamp, cached thumbnails are no longer blurry, images copy and download at full resolution, and a voice clip whose length the server never declared now streams.
- The IM token is re-exchanged when the server rejects it; user-facing IM errors default-deny behind a
(source, code)allowlist. - A long list of Agent Flow canvas fixes: undo, room for a condition, readable refusals, one prompt document per surface, connector-dot hit testing by the originating pointer, and a prompt editor that stops closing itself.
Studio
- Preview reliability: the proxy reaches our OpenIM object route so HTML chat uploads preview, stops proxying markdown to a 403, loads docx bytes from hosts it will not serve, bounds the embedded server's upstream fetch, and stops showing the proxy's error JSON as the page.
- A dead tab's preview no longer shows another project's app; the adopted-preview failure is named and given a working restart; deps-cache misses are reported with a reason and WebContainer recovers from them.
- Code files keep syntax highlighting while read-only, stop spinning forever on a stalled room, send the project room ref on a ticket (4001 Invalid ticket), and are never mirrored from an unloaded doc.
- The element inspector reads a picked element's resting style rather than its hovered one, converts oklab/oklch swatches instead of showing black, shows border rows, and hides properties with no target.
- Code deliverables normalize to webapp on open instead of hitting Coming Soon; webapp deep links open on the isolated route; the header Share works on Drive-backed artifacts.
Documents and Artifacts
- A document is attributed to its owner rather than its reader, shows its real modification time, and says why it will not open instead of showing a blank page.
- Version history stays current while open and stops printing raw revision ids; a shared whiteboard is named instead of printing
excalidraw. - Saved rows are named accurately (markdown, spreadsheets, uploads), shelved by what they are rather than how they open, and render the way chat rendered them.
- A chat upload's bytes are read without our credentials; a webapp is saved by claiming the row its workspace already owns.
- Grid card crash repaired, completed-card star state fixed, and the star now persists.
Mobile
- Push: a real FCM token is uploaded for iOS offline push, the token is no longer cleared by a call the server rejects, and background state is reported only on settled app states.
- Task cards: the alert goes through the same rules as any other message, a failed jump retries as the list fills, and the notification no longer blanks the conversation it opens.
- Previews: card WebViews read the app cookie jar, the signed
tkrides every deliverable URL but never crosses origins, and already-fetched HTML renders when the WebView is refused. - Uploads stop being resampled down to the compressor's 1280px default.
Desktop
- Studio window size and close behaviour, artifact-page CORS, and a file-proxy fallback on any failed direct artifact fetch.
- The web-page preview's HEAD probe is bounded and its gating probe capped at 3s.
- Detected meetings are recorded into Personal AI rather than the open conversation; clicking a message banner reopens the chat.
- Client build identity stamped into desktop renderer builds.
Elsewhere
- Pricing renders every amount in the currency the payload priced it in, and hides App Store tiers with no store product on MAS builds; team purchase entry points close on Mac App Store builds.
- New team invites default to allowing workspace conversion; the settings page stops stacking a second scrollbar.
- A shared docx renders, and a share link never lands with nowhere to go.
- Meeting minutes recording cap raised to 4 hours.
- A username rejection now explains itself; the profile owner's agents are listed in "show all", not yours.
- Swarm stops retrying the mcp-oauth endpoints on a 404.
- The VFS code surface is translated instead of shipping in Chinese, and the Artifacts panel is called saved work rather than agent output.
Security
- A password-equivalent credential is no longer persisted in cookies — it never leaves memory, and that invariant is now recorded in the auth docs.