← All changelog

Multi-surface rows. Fleet-wide agent control. Cross-org lockdown.

Rows now belong to a surface, and a new batch-move endpoint reassigns a set of rows to another tab in one go. Org admins can manage every agent in their org. And a privilege-escalation hole that let visibility=org workspaces leak across orgs is closed.

New
  • Rows belong to a surface. Each table tab in a workspace has its own row set; new rows land on the active tab.
  • Sidebar section drag-and-drop reorder.
  • Surface tab `×` on hover (Chrome-style) to archive a surface from the tab bar.
  • Click-to-approve agent bootstrap. An in-chat agent that needs access can ask, and the user approves with one click in the dashboard.
  • Agent-friendly install snippets in onboarding: `npx @trydock/agent-bridge init`, `--email` flag, MCP-install one-liner.
API
  • `POST /api/workspaces/[slug]/rows/move` reassigns a batch of rows to another surface in the same workspace as one operation.
  • `POST /api/workspaces/[slug]/rows` accepts `surfaceSlug` so writers don't need to know surface IDs.
  • Doc body cap raised 5x. Long-form machine logs and large agent reports now fit without splitting.
Fix
  • Cross-org agent privilege escalation. An agent in OrgA could read a workspace in OrgB if visibility was set to `org` and the agent's owner happened to be in both orgs. Closed: org-visibility access only applies inside the agent's own org. Cross-org access now requires an explicit `WorkspaceMember` row.
  • Org admins can manage any agent in their org (rename, rotate, revoke).
  • OAuth flows that pre-fill an email no longer drop it on the way to the magic-link send.
  • Workspace slug lookups in multi-org accounts now prefer the active org when two of your orgs use the same slug.