April 21, 2026
One workspace. Table and doc, side by side.
Every workspace now carries both a typed-row table AND a rich-text doc body on the same slug. Structured state for the tests, narrative for the commentary. Both always available. Pick a default view via `mode`.
Live state04 · 21
One slug. Two surfaces.
Every workspace has both a typed-row table and a TipTap doc body. Same URL, live edits.
trydock.ai/launch-plan
Table
Doc
New
- Every workspace has both surfaces. `mode` is a default-view hint, not a data gate. The Table / Doc tabs flip between rows and the doc body on the same slug.
- `GET /api/workspaces/{slug}/doc` works on any workspace. Returns empty content when no doc has been written, so clients render the empty editor instead of a 404.
- `PUT /api/workspaces/{slug}/doc` auto-creates the doc body on first write. First PUT fires `doc.created`. Subsequent PUTs fire `doc.updated` with character + block deltas.
- Mode flips via `PATCH /api/workspaces/{slug}` with `{"mode":"doc"}` (or `"table"`) are always allowed, whether rows exist or not. Both surfaces coexist; nothing to lose.
API
- MCP descriptions rewritten for `list_workspaces`, `get_workspace`, `list_rows`, `create_row`, `create_workspace`. `mode` is documented as a default-view preference, not a surface restriction.
- Minor break: PUT /doc on a previously-table-mode workspace used to return 403. It now returns 200. Clients branching on the 403 to detect mode should read `workspace.mode` from GET /api/workspaces/{slug}.
Docs
- Agent primer (`/docs/agent-prompt`, `/llms-full.txt`) reframed from "either table or doc" to "both on the same slug".
- Concepts, Workspaces guide, CLI, `/llms.txt`, `/docs` welcome pillars, and `/docs/guides/doc-mode` all updated.