What's new in Workroom
New modules, features, and improvements. Shipped fast, never in a vacuum.
- Improvedv0.56·May 26, 2026
Refactor wave — DocumentTreePage extraction, CSP, healthchecks
Internal cleanup pass — kills ~1400 lines of duplicated code in the docs pages, adds a real CSP policy, wires Railway healthchecks, and pins JWT algorithms for WS tickets.
- DocumentTreePage component — /documents and /projects/:id/docs collapsed from 728+742 to 6+8 line wrappers
- CSP policy in production (default-src self + Sentry + API + ws/wss, no inline objects)
- Cross-Origin-Opener-Policy + Cross-Origin-Resource-Policy headers
- Railway healthcheck (/health/ready, 30s timeout) — no more half-booted traffic
- WS ticket JWT pinned to HS256 (alg-confusion defence)
- Document.fileUrl + fileStorageKey schema fields — forward-compat for S3/R2
- IssueAttachment table dropped — superseded by Document.linkedIssueId (backfill ran clean, no rows)
- Fixedv0.55·May 26, 2026
Full audit pass — security, notifications, infra
Closed every CRITICAL/HIGH in a top-to-bottom audit: IDOR in resolveWorkspaceId, stored XSS via file download MIME, SSRF in webhook URLs, OAuth state check, fail-fast on missing prod env vars. Plus a cascade rule sweep so deleting users no longer throws FK violations across the app.
- resolveWorkspaceId now verifies membership (was an IDOR)
- File downloads MIME-allow-list inline (was a stored-XSS vector)
- Webhooks reject private / loopback / link-local URLs (SSRF defence)
- API fails fast on missing BETTER_AUTH_SECRET / CORS_ORIGINS / DATABASE_URL
- trust proxy enabled — rate limiter sees the real client IP
- getProfile uses explicit select (no future Better-Auth column leaks)
- Per-user iCal token with one-click rotation (was a static HMAC)
- Cascade: SetNull on Issue.reporter, Activity.user/project/issue, etc.
- GitHub Actions CI — lint + typecheck + build on every PR
- Newv0.54·May 26, 2026
Email backend for notifications + polished template
Notifications used to land in the in-app inbox and nowhere else. Now ASSIGNED / MENTIONED / DUE_DATE_APPROACHING auto-dispatch via Brevo with a smarter HTML template — gradient brand strip, preheader text, deep-link buttons.
- NotificationsService dispatches email for high-signal types
- Deep links built from notification.metadata (issue / meeting / document)
- Brand strip with gradient W logo + preheader text
- No images / tracking pixels — deliverability stays high
- Newv0.53·May 26, 2026
Webhooks + notifications wired across modules
Both pipelines existed but were dead until now. Issues, sprints, meetings, and documents now fire webhook events on the right state transitions and create in-app notifications for the people who care.
- Issues: ISSUE_CREATED / UPDATED / STATUS_CHANGED / DELETED + COMMENT_ADDED
- @mention parser on comments — fires MENTIONED notification per match
- Sprints: SPRINT_STARTED / COMPLETED + activity rows on every mutation
- Meetings: MEETING_CREATED + invitation notifications to attendees
- Documents: activity rows on wiki + file uploads
- Improvedv0.52·May 26, 2026
Onboarding empty state + settings mobile drawer
First-time users with no workspace used to land on a dashboard of zeros with no obvious next step. Settings on mobile pushed the form below a 224px sidebar. Both fixed.
- Dashboard shows a focused welcome card when you have no workspaces
- Settings sidebar collapses to a dropdown toggle on mobile
- Billing "Upgrade" opens an in-app contact modal (was leaving the app)
- Improvedv0.51·May 26, 2026
Project-scoped timer + accessibility passes
Live timer picker now asks for a project first then narrows the issue list to that project. Modals across the app got real focus traps + aria-labelledby so keyboard + screen-reader navigation works properly.
- Project → Issue cascade picker for the live timer + manual log form
- useFocusTrap hook on ConfirmDialog, FilePreviewModal, UploadDialog, StartTimerDialog, CreateMeetingModal
- useConfirm() promise-based replacement for window.confirm — applied across CRM
- Improvedv0.50·May 26, 2026
/issues unified + pagination + sidebar fixes
/issues and /my-issues merged into one page with an All / Assigned-to-me scope toggle + rich filter / sort / group controls. Added a real "Load more" pagination instead of the previous one-shot limit=500 dump.
- Scope toggle persists in the URL (?scope=mine)
- Filter dropdowns: Status / Priority / Project with counts
- Sort + Group controls (status / priority / project)
- New issue button with inline project picker submenu
- Sidebar collapsed state realigned + fixed substring active-state bug
- Newv0.47·May 26, 2026
File uploads with metadata + activity log
Uploads now carry real metadata — title, markdown description, link-to-issue — and write an entry to the workspace activity feed so nothing happens silently.
- Document.description + Document.linkedIssueId added to schema
- /documents/upload accepts title, description, linkedIssueId
- Activity row written on every upload (DOCUMENT_UPLOADED / DOCUMENT_ATTACHED)
- Cross-project guardrail: linked issue must match the project scope
- Improvedv0.46·May 26, 2026
Real meetings calendar — time-grid week view
Week view rebuilt as a Google-Calendar-style time grid: hour rail, day columns, event blocks sized to duration, side-by-side packing for overlaps, live red "now" line on today's column.
- Hour rail 7am – 10pm with proportional event blocks
- Greedy column-packing for overlapping meetings on the same day
- Live "now" indicator on today's column, refreshed every minute
- Month chips use project.color with a left-border accent
- Weekend tinting + today pill on month cells
- Improvedv0.45·May 26, 2026
Documents page redesign — workspace + per-project
Both the workspace /documents page and per-project Docs page rebuilt with a polished card grid, stats strip, drag-anywhere upload overlay, and a Linear-style status badge.
- 4-stat strip: Total / Wiki / Files / Updated this week
- Cards with file-type icon, author avatar, file size, timestamp
- Drag-anywhere upload overlay — no permanent dropzone hogging space
- Reveal-on-click "New page" inline form (Esc to cancel)
- Fixed: project tree was leaking workspace-wide docs
- Status badge: dot + label tonal chip (was shouty all-caps)
- Fixedv0.44·May 26, 2026
Auth fixes — login loop + password visibility
Sign-in could enter a loop where the freshly-set session cookie was missed by middleware on the next request. Also added the standard eye toggle on password fields.
- Login + signup use window.location.assign so the new cookie is sent on the next request
- Eye toggle to show/hide password on login and signup (Tab-skipped)
- Newv0.43·May 26, 2026
Settings overhaul — Profile / Billing / Notifications / Security
Sidebar reorganized into Account / Workspace / Admin sections. Four new pages with sticky save bars, danger zones, and "soon" badges for what's queued next.
- /settings/profile — avatar, display name, locked email, timezone, sticky save
- /settings/billing — current plan card, Pro feature ladder
- /settings/notifications — channel + per-event preview
- /settings/security — password, 2FA, sessions, delete account danger zone
- General page rebuilt with Identity section + slug pill + sticky save
- Improvedv0.42·May 26, 2026
Marketing site — sticky header + heavy animations
Landing got real motion (drifting grid, mouse-tracked spotlight, headline word rotation, infinite module marquee, parallax mockup with floating chips). Auth split-screen flipped so the form lands on the right.
- Animated drifting grid + mouse spotlight on hero
- Headline rotates: "product builders → startup teams → remote crews → fast movers"
- Trust-strip counts up from 0 on scroll
- Module marquee (12 pills, infinite horizontal scroll, edge-faded)
- Mockup gets parallax + scroll-rotate + live pulsing dot + third floating chip
- Sticky header fix: html overflow-x: clip (was hidden — broke sticky)
- Disappearing orbs fix: removed redundant shell wrapper bg painting over -z-10 orbs
- Newv0.41·May 26, 2026
New landing site + marketing pages
Marketing site rebuilt with proper pages — Features, Pricing, Changelog — animated, scroll-revealed, and tied together by a shared shell.
- Animated hero with gradient typography
- Per-module landing cards with hover glow
- Real Pricing page with monthly / annual toggle + FAQ
- Features deep-dive page per module
- This changelog page
- Improvedv0.40·May 26, 2026
Dashboard rebuilt as a Today view
The dashboard used to be 3 stat cards and a list. Now it's a real landing page that actually helps you start the day.
- Personalized greeting with first name
- 4 stat cards including hours-this-week
- Quick action chip row (New issue / Schedule meeting / Upload file / Log time)
- Today's meetings widget
- Coming-up meetings rail
- Newv0.39·May 26, 2026
File uploads on documents
Documents are no longer wiki-only. Drag-and-drop PDFs, Word, Excel, images — anything up to 10 MB — alongside wiki pages.
- Drag-and-drop zone + click-to-browse
- Per-file-type icons (PDF red, Word blue, Excel green, etc.)
- File size display, inline preview, force-download button
- Stored in Postgres bytea — survives deploys, swap to S3 when wired
- Newv0.37·May 26, 2026
Time-tracking reports + CSV export
A real reports tab on time-tracking with breakdowns by project, by day, and billable totals. CSV export for invoicing.
- Date-range presets (This week / Last week / This month / Last 30 days)
- By-project ranked bars with billable subtotals
- By-day stacked bars (billable + total)
- CSV export with paste-ready columns
- Billable flag per time entry
- Newv0.35·May 26, 2026
Per-user integrations + iCal feed
Each user can connect their own Google Calendar / Outlook / Zoom / Teams / Toggl / Harvest / Clockify. Workspace integrations stay separate.
- My Connections page (Settings → My Connections)
- Provider OAuth init / callback / revoke endpoints
- Signed iCal feed every workspace gets (no OAuth required)
- Paste the iCal URL into Google / Outlook / Apple Calendar
- Newv0.34·May 26, 2026
Meetings module
Full meetings — schedule, attendees with RSVP, agenda items, markdown notes, action items linked to issues.
- Month / week / list calendar views
- Create meeting modal with recurrence presets
- RSVP per attendee + organizer marking
- Agenda items with optional per-item duration
- Action items that link to real Issues
- iCal sync per workspace
- Improvedv0.31·May 25, 2026
Command palette searches everything
⌘K used to be navigation-only. Now it live-searches issues, documents, and projects across your workspace.
- Type "SOS-42" to jump straight to an issue
- Type a doc title to open it
- Type a project name to land on its overview
- Newv0.27—29·May 22, 2026
CRM detail pages — leads, contacts, deals
CRM entities now have proper detail pages with inline editing, linked relations, and status workflows.
- Lead detail with status workflow + notes + source
- Contact detail with linked leads + deals
- Deal detail with value / probability / stage + delete
- Improvedv0.20—26·May 22, 2026
Pro list view + project overview rebuild
Project list got search + group-by + sort + filter chips + bulk select. Project overview rebuilt into a real dashboard.
- Bulk-change status / priority via action toolbar
- Group by status / priority / assignee
- Project overview with active sprint, recent issues, members, activity
- Improvedv0.17·May 22, 2026
Navigation foundation
Breadcrumbs on every nested page. Issue detail rebuilt with sticky header + prev/next + J/K nav + copy-link + more-menu.
- Breadcrumb component on every project sub-page
- J / K to navigate siblings inside a project
- Inline title + description editing on issues
- Activity timeline in the issue sidebar
Want to try the latest?
Get started — free