2026-04-24
Dock Desktop for macOS (beta)
A native Mac app for Dock. Same workspace, its own window, menu-bar presence. Click a workspace link anywhere and it opens in the app via the trydock:// URL scheme. Phase 1 is the container. The agent connector that lets your local Claude Code or Cursor receive cues from teammates lands next.
2026-04-24
Agents can read docs as markdown
Before, reading a doc from an agent returned a TipTap node tree and the agent had to re-serialize it. Now GET /doc?format=markdown returns clean CommonMark + GFM, and the get_doc MCP tool returns markdown and plain text alongside the structured JSON. One call, three formats, pick what your model wants.
2026-04-24
Add columns via the API
POST /api/workspaces/[slug]/columns appends a new column. Auto-computes position, returns 409 on duplicate key. A new add_column MCP tool is wired up too, so agents can extend a table schema inline while writing rows.
2026-04-24
Public workspace links work when signed out
A public or unlisted workspace opened in an incognito window used to bounce to /login. It now redirects to the read-only /p/ view, which is the URL those visitors were always meant to land on. Private workspaces still send anon visitors to login.
2026-04-24
Scrollbars auto-hide, Linear-style
Transparent by default, fade in while you're scrolling or hovering a scroll region, fade back out 1.5 seconds after you stop. Applies everywhere: table, doc, sidebars, activity panel. Less chrome, more content.
2026-04-24
Doc mode: quieter opens, clearer authorship
Opening a doc no longer flashes the Start writing placeholder for a frame when the doc already has content, the editor now fades in over 400ms instead of paint-snap, and the top-right of the shell shows Edited by, relative time, matching the signal we already show on table rows.
2026-04-24
Logging in on one device no longer signs you out of others
Sessions are now per-device. Sign in on your laptop and your phone session stays alive. DELETE /api/auth/session logs out just the current device. DELETE /api/me/sessions still nukes every session if you want a full clean slate.
2026-04-24
Doc edits no longer cross wires when switching workspaces fast
Under the old write path, flipping quickly between two doc-mode workspaces could flush a pending edit from workspace A into workspace B. The persistence layer now resets cleanly on workspace switch, with snapshot semantics so an in-flight keystroke can't land in the wrong doc.
2026-04-23
Workspace pages feel like an SPA
The workspace detail page now renders on the server with everything ready: rows, columns, members, and the doc body are all hydrated on first paint. Same-org navigation feels like a swap, not a page load. No more loading skeleton between workspaces.
2026-04-25T19:18:22Z
Replace hook line with "AI is on the team now."
Replace hook line with "AI is on the team now."
## Summary
The hook on `/blog` was about us, not the reader. Replace with a single-sentence manifesto:
2026-04-25T18:45:12Z
Replace Newsroom hook + clickable mosaic cards
Replace Newsroom hook + clickable mosaic cards
## Summary
Two small fixes founder flagged on the live `/blog`:
2026-04-25T17:25:27Z
Rotate API keys + webhook secrets from the dashboard
Rotate API keys + webhook secrets from the dashboard
## Summary
2026-04-25T16:44:59Z
API key + webhook tools — list/rotate/revoke + webhook CRUD
API key + webhook tools — list/rotate/revoke + webhook CRUD
## Summary
2026-04-25T08:01:03Z
Workspace-management tools (PR-B subset)
Workspace-management tools (PR-B subset)
## Summary
2026-04-25T02:02:29Z
Backmerge for auto-PR #232
Backmerge for auto-PR #232
Unblocks #232 — DIRTY conflict in src/app/globals.css where staging added the OrgGridSwitcher CSS block and main added .cl-arch + .arch-stamp-* changelog hero blocks at the same end-of-file region.
2026-04-25T00:59:09Z
Trim public log to 16 entries + home polish
Trim public log to 16 entries + home polish
## Summary
2026-04-25T01:50:15Z
Arc-style glass org switcher (2×2 grid icon + popover)
Arc-style glass org switcher (2×2 grid icon + popover)
## Summary
2026-04-25T17:54:03Z
3-theme image system, dynamic OG, JSON-LD, post UX
3-theme image system, dynamic OG, JSON-LD, post UX
## Summary
- 22-post canonical blog at `/blog` and `/blog/[slug]` with the 3-theme image system (Dreamscape · E1 Editorial Flat · E2 Architectural Blueprint).
- Per-slug theme resolution + 6 mapped E1/E2 illustrations; remaining 16 posts on Dreamscape.
- New post UX: ReadingProgress bar, sticky h2 TOC sidebar, PostActions row (Copy prompt / Copy link / Share on X / Open in workspace), real `.cursor-orb` byline avatars.
- Theme-aware `blog-canvas` tokens (warm cream in light, deep navy in dark) replace hardcoded colors across index + post pages.
- Per-post dynamic OG card at `/blog/[slug]/opengraph-image` (text-only, brand-glow background, Fraunces title auto-sized by length, agent-orb byline).
- Full SEO: `BlogPosting` + `Blog` JSON-LD, OG + Twitter `summary_large_image` with `@trydock_ai`, sitemap entries, RSS, explicit robots.ts.
2026-04-24T23:22:16Z
Real-time update push (CF Worker DO + GitHub release webhook)
Real-time update push (CF Worker DO + GitHub release webhook)
## Summary
2026-04-24T21:54:11Z
Splash orb, app routing, update proxy, in-window banner
Splash orb, app routing, update proxy, in-window banner
## Summary
2026-04-24T20:55:31Z
Editable slug + auto-alias on rename
Editable slug + auto-alias on rename
## Summary
2026-04-24T20:53:11Z
Disconnect SSE subscribers on workspace flip
Disconnect SSE subscribers on workspace flip
## Summary
2026-04-24T20:49:30Z
Fail-closed on missing secret (email + cron)
Fail-closed on missing secret (email + cron)
## Summary
2026-04-24T20:47:30Z
DELETE /api/agents/[id] revokes OAuth tokens too
DELETE /api/agents/[id] revokes OAuth tokens too
## Summary
2026-04-24T19:04:31Z
Dock brand strip on /p/* public pages
Dock brand strip on /p/* public pages
## Summary
2026-04-24T20:42:30Z
Home-mockup: architecture bento + ecosystem marquee + signing chain
Home-mockup: architecture bento + ecosystem marquee + signing chain
## Summary
2026-04-24T18:13:43Z
Dock brand strip on /p/* public pages
Dock brand strip on /p/* public pages
## Summary
2026-04-24T18:13:26Z
Allow signed agents to create workspaces
Allow signed agents to create workspaces
## Summary
2026-04-24T17:08:32Z
Signed agents inherit owner's workspace access
Signed agents inherit owner's workspace access
## Summary
2026-04-24T19:01:56Z
Validate redirect_uris at DCR registration + authorize
Validate redirect_uris at DCR registration + authorize
## Summary
2026-04-24T17:38:54Z
Allow signed agents to create workspaces
Allow signed agents to create workspaces
## Summary
2026-04-24T16:17:49Z
Direct DMG download + /desktop redesign + Desktop nav link
Direct DMG download + /desktop redesign + Desktop nav link
## What's in this PR
2026-04-24T16:27:44Z
/p/* mounts the real dashboard workspace view
/p/* mounts the real dashboard workspace view
## Summary
2026-04-24T03:49:42Z
// scheme — dock:// collides with macOS Dock.app
// scheme — dock:// collides with macOS Dock.app
## Summary
2026-04-24T02:10:06Z
Backmerge #171 public-anon test fix
Backmerge #171 public-anon test fix
Backmerge main→staging to bring over PR #171's fix for the public-workspace-anon test (Next.js 16 RSC redirect form). Staging was behind main on this test fix and every staging-targeting PR was inheriting the failure.
2026-04-24T01:15:55Z
#160 scrollbar auto-hide + doc pill reposition → staging
#160 scrollbar auto-hide + doc pill reposition → staging
Cherry-picks of 72f39fe + 53bca64 + 4f969af + 398ad09 onto staging to keep branches aligned with main (#160 landed via hotfix/*).
2026-04-24T02:04:07Z
POST /columns append + MCP add_column tool (closes support#60)
POST /columns append + MCP add_column tool (closes support#60)
## Summary
2026-04-24T01:28:10Z
Redirect anon visitors to /p/ for public+unlisted workspaces (closes support#61)
Redirect anon visitors to /p/ for public+unlisted workspaces (closes support#61)
## Summary
2026-04-24T02:12:26Z
Agent-friendly reads — ?format=markdown|text on GET /doc
Agent-friendly reads — ?format=markdown|text on GET /doc
## Summary
2026-04-24T01:10:03Z
Auto-hide scrollbars (Linear-style fade on hover)
Auto-hide scrollbars (Linear-style fade on hover)
## Summary
2026-04-23T23:59:46Z
Nested inherited agents + search + inline role control
Nested inherited agents + search + inline role control
## Summary
2026-04-23T23:33:29Z
#156 four UX fixes + test update → staging
#156 four UX fixes + test update → staging
Cherry-picks of 6cf6f7d + 8cb6114 onto staging to keep branches aligned.
2026-04-23T23:28:16Z
Agent-name resolution, per-device sessions, doc last-edit, footer spacing
Agent-name resolution, per-device sessions, doc last-edit, footer spacing
## Summary
2026-04-23T23:17:21Z
Signed Agents — creator stamp + filter in Settings → Agents
Signed Agents — creator stamp + filter in Settings → Agents
## Summary
- Every agent in Dock is signed to exactly one human (`Agent.ownerUserId`, permanent). The Agents tab now makes that creator visible + filterable.
- **API:** `/api/agents/overview` returns a `creator: { id, name, avatarUrl }` block per agent. Falls back to email localpart when the creator has no displayName set.
- **UI:** Creator chip (small Avatar + first name, tooltip "Created by <full name>") top-right on each card. Creator filter dropdown next to "Invite agent" — `All creators` default, `Me` shortcut (only if the viewer owns at least one agent), then every distinct creator alphabetical. Hidden when the org has one creator. Empty-filter state shows a "Clear filter" CTA.
- **Docs:** `/docs/guides/agents` opens with a new Signed Agents section (accountability, access inheritance, filtering, anti-spoof claim).
- **Changelog:** `2026-04-29-signed-agents`.
2026-04-23T22:45:22Z
#151 placeholder delay + 400ms fade-in → staging
#151 placeholder delay + 400ms fade-in → staging
Cherry-picks of 9b7e864 + a2548ff onto staging. Keeps branches aligned with main (#151 landed via hotfix/* path).
2026-04-23T22:40:18Z
Delay placeholder + soften initial fade-in
Delay placeholder + soften initial fade-in
## Summary
2026-04-23T22:24:03Z
Remove loading.tsx skeleton (from #148 hotfix)
Remove loading.tsx skeleton (from #148 hotfix)
## Summary
2026-04-23T22:18:18Z
Remove loading.tsx — UX regression from C2 migration
Remove loading.tsx — UX regression from C2 migration
## Summary
2026-04-23T21:45:17Z
Staging → main: C2 RSC + phase-3 + public pages + RUM + 2 hotfixes
Staging → main: C2 RSC + phase-3 + public pages + RUM + 2 hotfixes
## Promote staging to main
2026-04-23T21:28:49Z
Main → staging (resolve #135 squash divergence)
Main → staging (resolve #135 squash divergence)
## Summary
2026-04-23T21:38:09Z
Real-user Web Vitals capture + /api/vitals sink
Real-user Web Vitals capture + /api/vitals sink
## Summary
2026-04-23T21:21:19Z
Doc-content-wipe hotfix → staging
Doc-content-wipe hotfix → staging
## Summary
2026-04-23T21:15:54Z
Normalize ProseMirror snake_case → TipTap camelCase — fix blank-editor bug
Normalize ProseMirror snake_case → TipTap camelCase — fix blank-editor bug
## TL;DR
2026-04-23T21:08:56Z
Reset pending edit state on workspace switch — stop silent doc-body corruption
Reset pending edit state on workspace switch — stop silent doc-body corruption
## TL;DR
2026-04-23T20:55:23Z
C2 RSC migration — all 3 phases
C2 RSC migration — all 3 phases
## Summary
2026-04-23T18:42:16Z
Phase-3 — C1 virtualize, C3 full memo, C2 plan
Phase-3 — C1 virtualize, C3 full memo, C2 plan
## Plan-vs-shipped audit
2026-04-23T17:42:34Z
Per-capability health probes for status.trydock.ai
Per-capability health probes for status.trydock.ai
## Why
2026-04-23T16:43:06Z
Highlights stay legible in dark mode (<mark> inherit color)
Highlights stay legible in dark mode (<mark> inherit color)
## The bug
2026-04-23T15:56:11Z
Drop the accept step — adding = inviting
Drop the accept step — adding = inviting
## Summary
2026-04-23T16:03:05Z
Swap "Sign in" → "Open Dock" for authed visitors
Swap "Sign in" → "Open Dock" for authed visitors
## Why
2026-04-23T06:59:27Z
Dashboard speed + mode-swap precision (Tier A+B+C)
Dashboard speed + mode-swap precision (Tier A+B+C)
## Summary
2026-04-23T05:56:42Z
MCP v2 — doc tools, schema, members, delete_workspace
MCP v2 — doc tools, schema, members, delete_workspace
## Summary
2026-04-23T05:43:33Z
Live "who's writing here" indicators
Live "who's writing here" indicators
## Summary
2026-04-23T04:25:07Z
[manual] staging → main: land #114 sidebar footer padding
[manual] staging → main: land #114 sidebar footer padding
## Summary
2026-04-23T04:15:44Z
Sidebar footer — true 6px padding on all sides
Sidebar footer — true 6px padding on all sides
## Summary
2026-04-23T05:48:51Z
Zero-leak closed card for private + org workspaces
Zero-leak closed card for private + org workspaces
## What changed
2026-04-23T05:28:53Z
Marketing cascade + subprocessors list + ShareModal portal + via-org chip
Marketing cascade + subprocessors list + ShareModal portal + via-org chip
## Summary
2026-04-23T01:43:14Z
Docked tiles switcher, chip-bar filter, live last-edit chip
Docked tiles switcher, chip-bar filter, live last-edit chip
## Summary
Overhauls the workspace header and sheet toolbar:
2026-04-23T02:36:13Z
Oauth-as-agent visuals + small UX fixes
Oauth-as-agent visuals + small UX fixes
## Summary
2026-04-23T01:01:08Z
Orb clusters on the visibility picker
Orb clusters on the visibility picker
## Summary
2026-04-23T00:13:26Z
Changelog + /docs/mcp for today's shipped features
Changelog + /docs/mcp for today's shipped features
Three new changelog entries (all 2026-04-22) covering work from today's session that didn't have changelog coverage, plus a new "Agent identity" section on `/docs/mcp`.
2026-04-22T23:57:44Z
Dynamic workspace OG: Linear-style data preview in link unfurls
Dynamic workspace OG: Linear-style data preview in link unfurls
## Summary
2026-04-22T22:52:45Z
Align Report issue modal with support page style (orbs, same inputs, btn-primary)
Align Report issue modal with support page style (orbs, same inputs, btn-primary)
## Summary
The quick-report modal (workspace FAB) looked nothing like \`/settings/support\` — different labels, plain \`<select>\` for kind, no orbs. Ports the support-page visual language into the modal so both surfaces feel like the same product.
2026-04-22T22:23:52Z
Move Report issue FAB to bottom-right
Move Report issue FAB to bottom-right
## Summary
Report issue button shipped at bottom-left. Should be bottom-right (standard FAB convention, right corner is empty for 99% of workspace visits because MadeWithDockBadge only renders on public Free-plan workspaces).
2026-04-22T23:16:10Z
Email orb PNG actually matches the web logo (closes Mike's icon mismatch)
Email orb PNG actually matches the web logo (closes Mike's icon mismatch)
Govind flagged: "the icon you are using in the mail for Dock icon is not our actual icon, check our icon from web page home top logo."
2026-04-22T22:04:55Z
Revert #70: mode-switcher mockup shouldn't have been on staging
Revert #70: mode-switcher mockup shouldn't have been on staging
## Summary
Reverts the mockup page PR #70. It was exploratory scratch work and had no business landing on staging — staging is a production candidate, not a mockups playground. Will iterate on mockups locally or behind a preview deploy instead.
2026-04-22T21:59:25Z
Add /mode-switcher-mockups — explore Table/Doc switcher treatments
Add /mode-switcher-mockups — explore Table/Doc switcher treatments
## Summary
- Live workspace page renders Table/Doc as two unstyled text buttons separated by a slash. Users don't realize it's clickable.
- Adds internal mockup page at \`/mode-switcher-mockups\` with six alternative treatments rendered in a faithful workspace-header shell.
- Each variant is live-interactive and swaps between a table and doc preview.
- No impact on the real workspace page — exploration only.
2026-04-22T21:48:19Z
Staging → main: sidebar Log out button
Staging → main: sidebar Log out button
## Summary
- Ships the Log out button added in #68 to production.
- Nav v5 rewrite dropped logout; restores it in both the chevron popover (expanded rail) and the collapsed rail icon column.
- Wires to existing \`DELETE /api/me/sessions\` which clears the current cookie + revokes all sessions, then redirects to /login.
2026-04-22T21:47:29Z
Add Log out to sidebar footer
Add Log out to sidebar footer
## Summary
- Nav v5 rewrite silently dropped the logout affordance — user noticed it missing.
- Adds a **Log out** item to the chevron popover (below a divider after Settings) and a door-exit icon in the collapsed rail between Settings and the avatar.
- Wires to the existing \`DELETE /api/me/sessions\` endpoint (which already clears the current cookie + revokes every session for the user), then \`router.push('/login')\` + \`router.refresh()\`.
2026-04-22T21:31:08Z
Staging → main · sidebar sticky-footer + prior staging
Staging → main · sidebar sticky-footer + prior staging
Admin fast-path promotion of staging to prod. Includes #65 sidebar sticky-footer and everything on staging since last promotion. Merge conflict resolved in Sidebar.tsx by keeping staging's layout (the #65 split).
2026-04-22T21:27:34Z
Lock footer to the bottom, scroll only the workspaces list
Lock footer to the bottom, scroll only the workspaces list
## Summary
2026-04-22T21:28:22Z
Close the ticket loop (filed email + GH webhook + detail page)
Close the ticket loop (filed email + GH webhook + detail page)
Mike flagged that after filing a ticket, he never heard back. No signal whether we saw it, acted on it, or closed it. Silence erodes trust with the users who care enough to file.
2026-04-22T21:28:18Z
FileTicketFab — quick "Report issue" widget on every workspace
FileTicketFab — quick "Report issue" widget on every workspace
Mike flagged: "Add a 'File a ticket' widget option on the actual workspace pages." The support API + MCP tool have always accepted filings, but from inside a workspace there was no UI surface.
2026-04-22T21:28:14Z
Mousedown-drag range selection (closes Mike ticket)
Mousedown-drag range selection (closes Mike ticket)
Mike flagged: "In tables, can't select multiple cells at once" (shift+click and TSV paste worked; mousedown-drag didn't).
2026-04-22T21:28:10Z
Version the orb PNG endpoint as /api/brand/orb/v1 (cache-bust handle)
Version the orb PNG endpoint as /api/brand/orb/v1 (cache-bust handle)
Addresses PR #36 review item #5: the orb PNG served `cache-control: immutable, max-age=1y`. Inline comment said "rename the route to bust" but nothing enforced the convention — so any recipe change would have been stuck in every email-client CDN for a year.
2026-04-22T18:21:29Z
Sheet + sidebar polish: close three of Mike's tickets
Sheet + sidebar polish: close three of Mike's tickets
## Summary
2026-04-22T16:10:43Z
Rotating agent-builder icon in the subtitle
Rotating agent-builder icon in the subtitle
## Summary
- Small inline icon tile just before the word \"agent\" in the hero subtitle, cycling through five flagship builders: **Claude → ChatGPT → Gemini → OpenClaw → LangChain**, every 1.2s with a 380ms fade+scale-in per swap.
- Conveys Dock's \"bring any agent you already use\" positioning at a glance.
2026-04-22T15:43:22Z
PR #36 review — drop passport.com + bump token refresh lead
PR #36 review — drop passport.com + bump token refresh lead
## Summary
2026-04-22T03:43:27Z
Cloudflare Workers + Durable Objects transport
Cloudflare Workers + Durable Objects transport
## Summary
Replaces Vercel-hosted SSE + polling with a Cloudflare Workers + Durable Objects pipeline purpose-built for reliable sub-100ms cross-region real-time delivery. Dual-run during rollout — every existing code path still works.
2026-04-22T15:43:54Z
Staging → main: Cloudflare realtime pipeline + Open Gmail/Outlook buttons
Staging → main: Cloudflare realtime pipeline + Open Gmail/Outlook buttons
## Scope — READ BEFORE APPROVING
2026-04-27T06:01:54Z
Signed-agent inheritance + cascade across teams
Signed-agent inheritance + cascade across teams
## What