Invite-only.
← All changelog

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.