feat(editor, block-editor): comment UX — accordion cards, gutter avatars, paste fix — PR #228
Inline accordion expand replaces nested detail panel, gutter avatars show comment locations when panel is closed, paste no longer duplicates comment marks
feat(editor, api, block-editor): inline comments + threads system — PR #228
Add document-level inline comments with threaded replies, resolution, emoji reactions, and real-time sync via Hocuspocus broadcasts
8 REST endpoints, ProseMirror comment mark, Zustand store, CommentsPanel sidebar — #1 competitive gap closed
feat(editor): Vercel-style settings layout polish + URL scheme — PR #217
Org selector in sidebar, workspace selector in header, card-based workspace settings with overview stats
Clean URL scheme (
?view=workspace&tab=general), workspace domain management, member settings page
fix(editor, api): workspace & org switcher gap analysis — PR #214
Fixed 24 issues from product-level review: org selection dead-end, post-login race condition, lost org actions, workspace-only doc filtering, command palette ADMIN access, deep-linkable workspace URLs
Workspace filter is now sole authority — selecting a workspace shows only its docs, no personal merge
feat(editor, api): workspace & org switcher overhaul — PR #214
Replace sidebar OrgSwitcher with WorkspaceSwitcher, add OrgSelection dialogue for post-login multi-org resolution, refactor settings to section-based navigation with OWNER-gated org admin tabs, add command palette org actions
Editor
0.19.5 → 0.20.0 | API 1.8.1 → 1.8.2
feat(block-editor, editor): Find & Replace UX overhaul — PR #213
Fixed positioning (centered top, stays visible on scroll), larger touch targets, match sequence badges, mobile responsive, bubble menu suppression, and mobile menu integration
fix(block-editor): Find & replace UX fixes — PR #212
Fix Cmd+F browser intercept, search text retention, stale counter after Replace All
Add expand/collapse toggle, click-outside-to-close, Tab navigation, icon buttons
feat(block-editor): In-document find & replace with regex support — PR #211
ProseMirror-native Cmd+F/Cmd+H panel with case sensitivity, regex mode, and capture group replacement
Cached decorations and reference-based change detection for optimal performance
fix(block-editor, api): Callout block layout, spacing & content restrictions — PR #210
Fix horizontal overflow and tighten callout spacing using Notion/Outline margin reset pattern
Restrict callout content model to text-oriented blocks only; add MCP server instructions
Add
/dev skill for running dev server in worktrees
fix(editor): prevent DocumentMeta avatar disappearing on title edit — PR #209
Use stable
documentId instead of documentSlug for sidebar lookup so avatar persists across title/slug changesAdd optimistic
updatedAt for immediate "You updated just now" feedback on title edit
fix(editor): show document meta for public/unauthenticated users — PR #208
Public documents now display title, author avatar, and "updated X ago" for unauthenticated viewers by rendering DocumentMeta in static mode and falling back to HTTP API data when Y.js is unavailable
fix(editor, api): Show document header & author meta for public users — PR #207
Public/unauthenticated document views now display author avatar, name, and "updated X ago" in the document header
Backend adds
documentMeta field to slug API response; frontend DocumentMeta falls back to it when sidebar/participant data is unavailable
feat(editor, api): Multi-Workspace Phase 2 — Frontend Integration — PR #206
Connect frontend to workspace endpoints: sidebar WorkspaceSelector, Settings → Workspaces tab (create/edit/archive + member management), document creation assigns workspaceId, move-document-to-workspace endpoint
Remove feature flag — workspaces always-on; E2E data flow from aggregation
$project through API response to frontend SidebarDocument type
feat(api): multi-workspace foundation — models, feature flag, migration
Field | Value |
|---|---|
Type | Feature |
Scope | api |
PR | |
Merge Commit |
|
Date | 2026-03-31 |
Changes:
Add Workspace and UserWorkspaceMapping models for multi-workspace architecture
Add
workspaceId field to Document model (nullable, indexed)Add
WORKSPACE_ENABLED feature flag (default: false)Add workspace CRUD + member management TSOA endpoints with auth guards
Add migration script to bootstrap "General" workspace per org
Feature flag gates all endpoints — zero behavior change until enabled
feat(editor): 4-tier group pricing with expandable features — PR #203
Added pricing section: Free (1-3), Starter $2/user (1-10), Team $1.5/user (10-100), Organization (100+)
Monthly/yearly toggle with yearly discount, expandable 28-feature comparison table across 5 categories
feat(editor): redesign landing page with fluid wave canvas and expanded features — PR #203
Complete landing page overhaul: fluid cursor-reactive wave canvas (spring physics, velocity-aware wake), cursor spotlight glow, GlassCard shine effects
Expanded to 12 features (API-First, MCP Server, Blog CMS, Doc Sites) and 12 use cases with occupation tags (AI Agent Workspace, Developer Docs, Blog Publishing)
fix(editor): stuck-loading recovery with 3-tier watchdog + auth error recovery — PR #202
Eliminate all "stuck Loading document..." scenarios when JWT tokens expire mid-session with defense-in-depth: proactive token refresh, auth error recovery with
ensureActiveDocumentReady, and a 3-tier watchdog (10s cache restore → 18s WS retry → 25s HTTP fallback)
feat(api): multi-workspace foundation models and feature flag — PR #201
Add Workspace + UserWorkspaceMapping models, workspaceId on Document, WORKSPACE_ENABLED feature flag, and migration script (Phase 1 of Linear-style multi-workspace architecture)
fix(editor): Reposition favorite star with peer-based hover isolation — PR #200
Moved favorite star inside title container at pencil icon position; uses CSS
peer pattern so only title hover triggers pencil/border effects — star hover is isolated
fix(block-editor): Semantic spacing rhythm + backspace-to-paragraph — PR #199
Fix inconsistent spacing between document title, meta, and content — establish ~32px semantic gap with first-child margin normalization
Add backspace-to-paragraph plugin (Outline pattern) so empty headings can be converted/removed with Backspace
chore(skills,mcp): remove H1 from skill templates + add document meta to MCP instructions — PR #198
Remove redundant
# Title from all 5 skill content templates; add document meta header section to MCP server instructions
fix(block-editor): fix hooks violation, layout mismatch, and wire up DocumentMeta author info — PR #196
Fix React hooks order crash from #195 — moved
handleTitleEnter before conditional returnsAlign DocumentMeta width to match editor content; self-source author avatar with online status from stores
feat(document): Y.js document meta separation — PR #195
Added
Y.Map("meta") shared type for document metadata (title, subtitle, coverImage, tags, publishedAt) — separates metadata from content like Notion/OutlineNew
DocumentMeta component renders editable title + subtitle above the block editor with real-time Y.js sync
fix(domains): Use HTTP SSL validation for custom domains — PR #189
Switched Cloudflare for SaaS from TXT to HTTP validation method — custom domains now only need a single CNAME record instead of CNAME + TXT
Removed unnecessary TXT record extraction logic from domain setup flow
feat(admin): Add organizations CRUD + fix plan upgrade transaction — PR #194
Add 5 admin endpoints (get detail, update, suspend, reactivate, delete) with full frontend UI (dialogs, dropdown actions)
Fix plan upgrade approval by removing MongoDB transaction wrapper that fails on standalone MongoDB
feat(block-editor,subdomain): shared CodeBlock viewer — DRY read-only components — PR #193
Extract
CodeBlockView shared visual layer consumed by both ProseMirror editor and new SSR React island — replaces 3 vanilla JS Astro islands with single CodeBlockEnhancer componentSSR code blocks now have full toolbar chrome, syntax highlighting, mermaid zoom/pan/fullscreen, math rendering, and diff colorization
2026-03-22
feat(subdomain): replace Hono JSX worker with Astro 6 SSR — PR #192
Field | Details |
|---|---|
Type | Feature |
Scope |
|
Commits |
|
What changed:
New
apps/subdomain/ Astro 6 app replaces the Hono JSX worker for org subdomain SSR pages (*.colbin.com)Vanilla JS islands for mermaid diagrams (sandbox mode), code highlighting (shiki), copy buttons, dark mode toggle — zero framework JS shipped
Single CSS source of truth — imports directly from
@colbin/block-editor package exportsEnhanced SEO: canonical URLs, robots meta, og:image from org logo, JSON-LD with XSS protection
Per-org theming support via
--org-primary CSS custom property (with CSS color validation)Security hardening: mermaid sandbox + init-directive stripping, JSON-LD
</script> breakout prevention, CSS injection validationFix cache purge URLs from
/doc/:slug to /bin/:slugImport
RESERVED_SUBDOMAINS from @colbin/shared-utils (single source of truth)
Knowledge Doc: Astro Subdomain SSR — Setup & Architecture
fix(editor): eliminate skeleton flash on document switch + rename readerMode — PR #191
Fix effect race condition:
yjsConnect now atomically restores documentInitData from cache for pooled connections, eliminating null→data flash that caused skeleton flicker on back-navigationRename
readonlyMode → readerMode across editor to clarify user preference toggle vs permission-based read-only
refactor(editor): polish sidebar design — color system, spacing, typography — PR #190
Updated sidebar CSS variables to blue-tinted primaries (light + dark themes) and refined component styles across 7 sidebar components with branded selection states, improved spacing, and amber-tinted favorites
refactor(domains): make subdomains opt-in with claim flow — PR #189
Remove auto-provisioning of subdomains on org creation; add
POST {orgId}/domains/subdomain claim endpointReplace Workspace URL section in General Settings with opt-in "Claim Subdomain" card in Domains tab
feat(editor): add readonly mode toggle — PR #188
Global user preference toggle in sidebar dropdown to lock all documents into read-only state, with localStorage persistence and automatic cleanup on logout
refactor(editor): Move favorite star from sidebar to editor header — PR #187
Removed inline favorite star from sidebar document items; toggle now only via dropdown menu
Added favorite star icon next to document title in editor header with optimistic toggle and amber fill
feat(api,worker): Org subdomain SSR with Hono JSX + CF Cache — PR #186
Full server-side rendering for public documents on org subdomains using Hono JSX on CF Workers with CF Cache API edge caching and automatic purge on edit
New API endpoint
GET /document/public/:slug/html renders ProseMirror Y.js content to static HTML for SEO indexing and social sharing
feat(domains): Vercel-style domain settings UI + editable org subdomain — PR #185
Redesign domain settings page with unified domain list, inline add-domain input, editable subdomain, dropdown menus, and Vercel-style status badges
Backend: sync org slug changes with
defaultSubdomain, customDomains[] SUBDOMAIN entry, and Redis cache invalidation
refactor(skills): remove summary reports from pr-review and pr-resolve — PR #184
Strip verbose summary/report sections; PR reviews now post only line-level comments with full code context, PR resolve communicates only through thread replies
fix(auth): replace sessionStorage with OAuth state param for deterministic redirect — PR #183
Fix intermittent bug where users stayed on
auth.colbin.com after OAuth login due to sessionStorage being cleared during cross-site navigation (Safari ITP). Now uses OAuth state parameter for deterministic redirect back to the originating domain.
feat(block-editor): add keyboard shortcuts for Mermaid fullscreen mode — PR #182
Arrow keys to pan (Shift for faster), ⌘/Ctrl+=/- to zoom, ⌘/Ctrl+0 to reset — follows Figma/Miro conventions
fix(editor): mobile UX improvements — PR #181
Auto-hiding header on scroll, swipe-from-left gesture to open sidebar, responsive Share dialog, code block highlighting fix, Popover fallback for HoverCard on touch devices, block editor mobile controls
feat(document): Add user-specific document favorites — PR #180
Users can now star documents for quick access; favorited documents appear in a collapsible "Favorites" section at the top of the sidebar
New
user_favorite collection, toggle API endpoint, star icon on sidebar items, and optimistic UI updates with error rollback
fix(editor): Enable folder collapse toggle in sidebar — PR #179
Fixed sidebar folder documents only expanding but never collapsing on click — replaced one-way
expandDocument() with two-way toggleDocument() in click handler
feat(mcp): add language parameter to document create and update tools — PR #178
MCP
colbin_create_document and colbin_update_document_metadata now accept a language parameter for code documents, persisting to both MongoDB and Y.js so the frontend shows correct syntax highlighting
chore(infra): replace Vercel references with Cloudflare Pages — PR #177
Replaced all Vercel references with Cloudflare Pages across 14 files (docs, CI config, comments, skill files)
Deleted Vercel-dependent benchmark workflow and its documentation
fix(block-editor): restore dark mode syntax highlighting in code blocks — PR #176
Fixed two CSS specificity bugs that prevented Shiki syntax highlighting from rendering in dark mode code blocks
Replaced dead
.code-block-nodeview pre code selectors with proper prose style isolation for the NodeView DOM
chore(editor): remove broken panel system and execution engine — PR #175
Remove unused Notes, Questions, Terminal, Preview panels and execution engine (~11,700 lines of dead code)
Simplify editor layout — no more SplitView or side panels; future reimplementation tracked in backlog (BL-004, BL-005)
refactor(editor): Centralize domain config, remove hardcoded colbin.com — PR #174
Created
domain.config.ts with helpers (getAppUrl, getBaseDomain, getApiBaseUrl, getWsBaseUrl, isOwnDomain) replacing 7 hardcoded colbin.com references across subdomain detection, WebSocket, auth redirects, and UI linksFixed
AddCustomDomain validation to also reject exact base domain match
2026-03-20
fix(api,mcp): align Hocuspocus room names for real-time MCP sync — PR #172
MCP direct connections used full slug as room name, browser used slugId (last 8 chars) — two separate Y.Doc instances. Aligned all
openDirectConnection() to use slugId so MCP writes propagate to connected browsers in real-time.
fix(editor): hide footer on read-only subdomain views — PR #171
Hide editor footer entirely on subdomain read-only views instead of showing "View only" badge. Intercept at layout level, remove dead
readOnly prop.
feat(mcp): add prepend mode to document content updates — PR #170
Add
prepend mode to colbin_update_document_content for inserting content at document beginning. Fix append path perf: batch xmlFragment.push(children) instead of looping (N→1 Y.js transactions).
feat(editor,api): add document comments system — PR #169
Full-stack threaded comments with @mentions, per-comment resolve, real-time sync via Hocuspocus. Tiptap architecture: ProseMirror/Monaco decorations + external MongoDB storage. Feature-flag controlled, cascade delete on doc deletion.
feat(api): token-based fuzzy document search across title + slug — PR #168
Add token-based fuzzy search for documents across title and slug fields.
perf(editor,api,worker): org subdomain edge injection + cache headers — PR #167
CF Worker edge injection: parallel-fetches API data + HTML shell, injects
window.__COLBIN_BOOTSTRAP__ via HTMLRewriter for instant React render (3-4x FCP improvement). Dynamic og:title/description per org. Cache-Control headers on unauthenticated endpoints.
fix(auth,api): OAuth redirect for preview URLs, custom domains & subdomains — PR #166
3-layer async domain validation for returnTo URLs:
*.colbin.com → *.colbin.pages.dev → custom domains via resolve-domain API (fail-closed). Fix CORS regex, WS origin .includes() bug.
feat(editor): unified Command Palette (Cmd+K) — PR #165
Replace search-only DocumentSearch with full command palette using cmdk. Adds navigation, document ops, creation, appearance, and account action groups alongside document search.
feat(editor): add HTML export and print-optimized PDF export — PR #164
Add "As HTML" download (self-contained styled .html) and "Print as PDF" (A4 print-optimized window with searchable text, page breaks, book typography) to the document Download submenu.
refactor(editor): unify DocumentInfo participants with store data — PR #163
DocumentInfo dialogue now uses store's participantList via useParticipants() instead of its own fetch — single source of truth with Share dialogue.
feat(editor,api): add org subdomain public homepage — PR #162
Org subdomains now show a public document listing with read-only sidebar showing only PUBLIC-scoped documents. New backend GET /documents/public endpoint.
2026-03-19
refactor(editor): redesign domains settings page — PR #161
Overhaul domains settings page with sectioned layout, animated ping status indicators, numbered DNS verification stepper, and refined add-domain dialog.
fix(editor): prevent footer from overlapping editor content — PR #160
EditorPage used h-screen (100vh) which ignored parent flex layout reserving space for footer. Changed to h-full so editor respects flex-calculated height.
feat(editor): Figma-style follow cursor for real-time collaboration — PR #159
Click collaborator avatar to auto-scroll viewport to their cursor in real-time. Works for Monaco + ProseMirror. Auto-unfollow on local typing, Escape, or avatar toggle.
fix(auth): eliminate double-click OAuth login — PR #158
Fix OAuth login requiring double click.
feat(auth): route OAuth through auth.colbin.com for subdomain support — PR #157
Route OAuth flows through auth.colbin.com for subdomain cookie support.
chore(editor): remove Vercel config, complete Cloudflare Pages migration — PR #156
Remove Vercel configuration, complete migration to Cloudflare Pages.
2026-03-18
feat(api,editor): migrate frontend from Vercel to Cloudflare Pages + Worker — PR #155
Add Cloudflare Worker for *.colbin.com wildcard proxy, CF Pages static files, replace Vercel service with Cloudflare for SaaS Custom Hostnames.
fix(api,editor): increase MCP OAuth token TTLs to fix re-authorization loop — PR #154
Increase access token TTL from 15min to 7 days, refresh token from 30 to 90 days, SSE session timeout from 30min to 24h.
feat(api,editor): add custom domain support for organizations — PR #153
Full-stack custom domain management: Cloudflare Custom Hostnames integration, auto-provisioned subdomains, dynamic CORS, domain resolver middleware.
feat(api,editor): add approval-based plan upgrade flow + pricing page — PR #152
Backend: plan upgrade request model, service, email notifications, 5 TSOA endpoints. Frontend: redesigned billing with skeleton loading + usage meters, new pricing comparison page.
2026-03-17
fix(api): increase JWT access token expiration to 48 hours — PR #151
Increased accessExpirationMinutes from 60 to 2880 (48 hours) to fix MCP sessions requiring re-authentication every hour.
fix(api,editor): increase Free Plan team member limit to 25 — PR #150
Raised default included seats for FREE plan orgs from 5 to 25. Migrated all 7 existing FREE plan orgs in production.
2026-03-16
fix(editor): hide floating sidebar when cursor exits browser viewport — PR #149
Floating sidebar stayed visible when cursor quickly moved from one monitor to another. Added document.documentElement mouseleave listener.
fix(editor): add block-editor to Vercel build:packages script — PR #148
Vercel deployment failed with 7 TS errors because @colbin/block-editor was missing from build:packages.
2026-03-15
feat(editor): promote orphaned docs to root in scope-filtered sidebar — PR #147
Personal scope showed count of 7 but only rendered 3 documents. buildTransformedCache() now promotes orphaned docs to root in scope-specific caches.
fix(block-editor): add visible gap between adjacent highlight marks — PR #146
Add visible gap between adjacent inline highlight marks.
feat(auth,org): fix invited user landing on personal workspace — PR #145
Remove phantom personal org auto-creation at signup. Fix buildAuthResponse() to always re-derive org context when invitations are accepted.
fix(api,auth): set isEmailVerified on social OAuth login for auto-join org — PR #144
Social OAuth users were created with isEmailVerified=false, silently breaking domain-based auto-join org. Now maps OAuth emailVerified on creation.
fix(api): add Redis retry backoff to BullMQ workers — PR #143
Add Redis retry backoff configuration to BullMQ workers.
2026-03-14
fix(block-editor): replace window.prompt with inline bookmark URL input — PR #142
Replace browser-native window.prompt() in bookmark slash command with inline BookmarkInput panel matching the image input pattern.
feat(block-editor): Math/KaTeX block, Bookmark card, Callout & Toggle import — PR #141
Track 1 of Notion/Outline import evaluation: adds math block with KaTeX rendering, bookmark link preview card, GitHub alert/Outline callout import, and toggle import.
fix(block-editor): hide block handle on non-colorable blocks — PR #140
Block handle color picker now only appears on blocks that support color attrs. Previously appeared on all blocks including lists, code blocks, toggles, tables, images.
2026-03-12
fix(block-editor,api): harden image upload — storageKey fix & architecture cleanup — PR #139
Fix double-encoded storageKey causing images with special characters to fail loading. Server ignores client storageKey, uses its own.
feat(block-editor): image upload with R2 storage, drag-drop, paste & optimistic UI — PR #138
Complete frontend image upload layer: R2 presigned URL upload, drag-drop, clipboard paste, tabbed UI, Notion-style image block with hover toolbar, resize handles.
2026-03-11
feat(editor): resizable sidebar + /bins -> /bin route consolidation — PR #137
Add Notion/Outline-style drag-to-resize sidebar handle (200-480px, persisted). Consolidate /bins + /bin into single /bin namespace.
refactor(api): replace hagen-file HTTP calls with @colbin/files R2 package — PR #137
Create @colbin/files shared package with inline R2 presigned URL generation, eliminating 20-80ms inter-service HTTP round trips.
feat(editor,api): document color, move-to-folder & inline rename UX — PR #136
Document color picker (9 swatches), move-to-folder sub-menu with search + DFS folder list, inline rename with Finder/VS Code bottom-underline UX.
fix(api): harden MCP OAuth — fix silent blockers & add Sentry alerting — PR #135
Fix silent MCP OAuth blockers, add Sentry alerting for OAuth failures.
feat(editor): offline-first document support with IndexedDB persistence — PR #134
Wire network monitor to shared Hocuspocus socket, cache document:init in IndexedDB, load Y.js docs offline, add Workbox NetworkFirst for sidebar/document APIs.
2026-03-10
feat(block-editor): add block handle color picker + fix overflow — PR #133
Add block handle color picker and fix overflow issues.
2026-03-09
fix(block-editor,editor,api): BubbleMenu scroll-aware positioning, settings polish & org stats — PR #132
BubbleMenu scroll-aware positioning, settings polish, and org stats.
fix(editor): resolve white screen after deploy — stale SW cache — PR #131
Fix white screen after deploy caused by stale Service Worker cache.
feat(api,editor): real-time document deletion redirect via WebSocket — PR #130
Real-time document deletion redirect via WebSocket notification.
feat(editor): show child count badge on collapsed folder nodes — PR #129
Show child count badge on collapsed folder nodes in sidebar.
fix(block-editor): handle checkbox/radio toggle on mousedown to fix first-click — PR #128
Fix checkbox/radio toggle requiring two clicks by handling on mousedown.
feat(api,editor): consolidate email domain settings — auto-join & invite restriction — PR #127
Consolidate email domain settings for auto-join and invite restriction.
chore(editor): market-readiness cleanup — 404 page, error boundary, remove 4.8k lines dead code — PR #126
Market-readiness cleanup: 404 page, error boundary, remove 4.8k lines of dead code.
fix(editor): add navigateFallback to PWA for offline SPA routing — PR #125
Add navigateFallback to PWA config for offline SPA routing.
2026-03-06
feat(editor): offline-first support — persist docs, prevent logout, enable PWA — PR #124
Offline-first support: persist docs, prevent logout, enable PWA.
refactor(editor): clean DnD rewrite — DragOverlay + line indicator + optimistic settle — PR #123
Clean drag-and-drop rewrite with DragOverlay, line indicator, and optimistic settle.
2026-03-03
fix(block-editor): checkbox/radio first-click not toggling on unfocused editor — PR #122
Fix checkbox/radio first-click not toggling when editor is unfocused.
feat(editor,api): cross-parent drag & drop, 3-level nesting, inline rename — PR #121
Cross-parent drag & drop, 3-level nesting, inline rename in sidebar.
feat(block-editor): inline @ mention with type-ahead suggestions — PR #120
Inline @ mention with type-ahead suggestions for document and member search.
feat(api): add color/styling support to MCP markdown-to-Y.js converter — PR #119
Add color and styling support to MCP markdown-to-Y.js converter.
2026-03-02
cleanup(editor): remove dead auth pages, canvas type, and fix broken redirects — PR #118
Remove dead auth pages, canvas type, fix broken redirects.
fix(editor,api): prevent WebSocket stale token reconnection loop — PR #117
Prevent WebSocket stale token reconnection loop.
fix(api,editor): MCP org scope leak + remove dead room:* scopes — PR #116
Fix MCP org scope leak, remove dead room:* scopes.
feat(api,editor): add org selector to Create API Key dialog — PR #115
Add org selector to Create API Key dialog.
fix(editor): optimistic sidebar title sync while typing — PR #114
Optimistic sidebar title sync while typing.
2026-03-01
feat(editor): sidebar perf — memo, cached transforms, silent refresh — PR #113
Sidebar performance: memo, cached transforms, silent refresh.
chore(ship): add yarn install after version bumps to prevent stale lockfile — PR #112
Add yarn install after version bumps in /ship skill to prevent stale lockfile.
refactor(api,editor): rename documentSlug → slug, documentType → type on Document model & DTOs — PR #111
Rename documentSlug → slug, documentType → type on Document model and DTOs.
fix(editor): move document:init to slice — eliminate pool-reuse stalls — PR #110
Move document:init to slice to eliminate pool-reuse stalls.
fix(editor): add reorder error toast and preserve folder icon in drag overlay — PR #109
Add reorder error toast and preserve folder icon in drag overlay.
fix(api,editor): persist sidebar drag-and-drop order across refresh — PR #108
Persist sidebar drag-and-drop order across refresh.
feat(api,editor): server-pushed document access state with full-page UI — PR #107
Server-pushed document access state with full-page UI.
feat(api,editor): add permission inheritance for child documents — PR #106
Add permission inheritance for child documents.
feat(mcp): consolidate tools & add org-scoped API keys — PR #105
Consolidate MCP tools, add org-scoped API keys.
feat(editor): dynamic folder/document icons in sidebar — PR #104
Dynamic folder/document icons in sidebar.
feat(editor): add sub-page creation with /page slash command — PR #103
Add sub-page creation with /page slash command.
feat(block-editor): add @ trigger with combined document + member search — PR #102
Add @ trigger with combined document and member search.
feat(api,editor): persist document reorder via batch PATCH endpoint — PR #99
Persist document reorder via batch PATCH endpoint.
2026-02-28
feat(api,editor): implement user profile endpoints — password change, avatar upload — PR #100
Implement user profile endpoints: password change, avatar upload.
feat(block-editor): add documentEmbed node with /embed slash command — PR #101
Add documentEmbed node with /embed slash command.
fix(editor): make editor screen responsive — eliminate horizontal scrollbar — PR #98
Make editor screen responsive, eliminate horizontal scrollbar.
feat(sentry): close all 7 integration gaps for full observability — PR #97
Close all 7 Sentry integration gaps for full observability.
fix(editor): eliminate duplicate organization and my-documents API calls on pageload — PR #96
Eliminate duplicate organization and my-documents API calls on pageload.
fix(sentry): propagate user/org context across all 4 entry points — PR #95
Propagate user/org context across all 4 Sentry entry points.
fix(editor): fix TypeScript errors and sync Sentry user context from Zustand store — PR #94
Fix TypeScript errors and sync Sentry user context from Zustand store.
fix(mcp): resolve TypeScript error in participant tools — PR #93
Resolve TypeScript error in MCP participant tools.
fix(websocket): restore access control for WS-first document init — PR #92
Restore access control for WebSocket-first document init.
2026-02-27
feat(sentry): enrich events with user, org & document context + unmask replays — PR #91
Enrich Sentry events with user, org, and document context. Unmask replays.
feat(sentry): unified distributed tracing across WebSocket — PR #90
Unified distributed tracing across WebSocket connections.
refactor(mcp): use service layer as single source of truth for all access layers — PR #89
Use service layer as single source of truth for all MCP access layers.
fix(mcp): update accessLevels when moving documents between scopes — PR #88
Update accessLevels when moving documents between scopes via MCP.
fix(sentry): close observability gaps — forceTransaction + dev tracing — PR #87
Close Sentry observability gaps: forceTransaction and dev tracing.
fix(mcp): correct Mongoose model name for org tools — PR #86
Correct Mongoose model name for MCP org tools.
feat(mcp): add legacy SSE transport for mcp-remote compatibility — PR #85
Add legacy SSE transport for mcp-remote compatibility.
perf(sentry): add custom spans for document switch lifecycle — PR #84
Add custom Sentry spans for document switch lifecycle.
perf(sentry): increase tracing and replay sampling to 100% — PR #83
Increase Sentry tracing and replay sampling to 100%.
fix(websocket): reconnect on tab refocus via visibilitychange — PR #82
Reconnect WebSocket on tab refocus via visibilitychange event.
perf(websocket): send document:init via WebSocket to eliminate redundant HTTP calls — PR #81
Send document:init via WebSocket to eliminate redundant HTTP calls.
fix(editor): set WebSocket reconnect delay >= minDelay (1000ms) — PR #80
Set WebSocket reconnect delay >= minDelay (1000ms).
fix(api): readiness probe architecture for zero-downtime deployments — PR #79
Readiness probe architecture for zero-downtime deployments.
fix(editor): prevent floating sidebar from closing during dropdown interaction — PR #78
Prevent floating sidebar from closing during dropdown interaction.
fix(websocket): zero-downtime WebSocket deployment — PR #77
Zero-downtime WebSocket deployment.
2026-02-26
feat(skills): add auto-chaining shipping pipeline — PR #76
Add auto-chaining shipping pipeline (/ship → /pr-review → /pr-resolve → /pr-merge).
fix(web): show active org name in header and sync on rename — PR #75
Show active org name in header and sync on rename.
feat(block-editor, editor): add clickable hyperlinks — PR #74
Add clickable hyperlinks in block editor.
feat: Sentry full-stack observability — PR #65
Sentry full-stack observability integration.
fix(block-editor, editor): fix scroll breakage and header push on large paste — PR #73
Fix scroll breakage and header push on large paste operations.
fix(mcp, block-editor): rewrite markdown parser and fix editor paste — PR #72
Rewrite markdown parser and fix editor paste handling.
Updated automatically by /ship