What's new
User-visible changes from the last 90 days, newest first; the full history is on the product timeline
Features added and bugs fixed in Exponential over the last 90 days, grouped by month. Each line links the change on GitHub. For every commit, including internal work, see the live product timeline.
September 2026
New
- docs — Generate llms.txt and llms-full.txt from the docs (#769)
- docs — Help & docs in the user menu and contextual ? links (#767)
- docs — /go/<route> resolver and workspace-agnostic doc links (#766)
- ceremonies — Add the Shutdown routine template (#764)
- seo — Add og-image.png for link previews (#752)
- crm — Merge selected contacts with a reviewable smart-merge proposal (#731)
- crm — Create an organization inline from the contact edit drawer (#730)
- Seed the occurrence notes page from the agenda and append the capture summary (#729)
- Link a notes Page to each ceremony occurrence and render it inline (#728)
- projects — Tickets-style filter popover with My projects, visibility and ETA facets (#724)
- voice — Give zoe the user's local clock on ask_exponential (#706)
- tickets — Highlight-to-comment on ticket bodies (ADR-0024 parity) (#699)
- workspace-settings — Set a workspace as your default from its settings page (#697)
- voice — Get_todays_plan returns the Daily summary Markdown for display (#695)
- goals — Features tab and Key results accordion on the Objective page (#694)
- voice — Get_todays_plan speaks the Daily summary digest, with focus + timezone (#691)
- meetings — Rename a meeting in place from its title (#689)
- meetings — Project Meetings tab uses shared meeting cards and opens /recording page (#687)
- meetings — Ceremony icons and tidier meeting cards (#685)
- meetings — Project, ceremony and feature pickers on Add Meeting; link meetings to features (#684)
- meetings — Collapse AI summary on listing cards and drop transcript peek (#682)
- meetings — Drag images onto Add Meeting and the Screenshots tab (#678)
- decisions — Open Decision Log rows in a peek drawer (#676)
- decisions — Link actions from the log modal and the decision page (#672)
- V4: one create payload from the client (#670)
- V3: agent and voice callers delegate to the module (#669)
- V2: applyActionUpdate and one deriveActionPatch (#668)
- V1: createAction behind the four create paths (#666)
- V4: assign unassigned time and remember the choice (#665)
- V3: day view on /time and the Daily summary line (#664)
- V2: reconcile proposed time against manual time and confirm a day (#662)
- V1: log proposed time into Exponential (#660)
- Draft ADR — render the ADR file an accepted decision would become (#659)
- notifications — Let users set when the Daily summary is sent (#652)
- Ceremonies V3 — async-first standup and skip proposal (#654)
- decisions — Draw Decisions beside ADRs in the graph, and add a Timeline view (#650)
- goals — Move the Mine and Timeline toggles into each dashboard's header (#648)
- decisions — Classify open questions, bullet bodies, and a Decisions tab (#645)
- Decisions V2: extraction drafts and review (#637)
- Ceremonies V2: generated agenda, circulated ahead (#635)
- goals — Replace the My Goals tab with Mine + Timeline toggles (#638)
- Decisions V1: entity, manual create and one Decision Log (#633)
- Ceremonies V1: definitions, occurrences and the meeting link (#631)
- okr — Mark linked pipelines with a Pipeline chip in executing work (#628)
- V1: redesigned Daily summary (structured digest, Matrix markdown) (#626)
- decisions — Redesign the Decisions index per handoff (#622)
- pages — Flat row listing with visibility tabs, sort, filters, and row actions (#621)
- decisions — Bring product decisions lens to parity with workspace page (#619)
- projects — Remember filters and view tab, hide finished work by default (#620)
Fixed
- plugins — New workspace members inherit plugins enabled by an owner/admin (#763)
- assistant — Unblock Matrix/Telegram connect and resolve the assistant settings page to the gateway assistant's workspace (#762)
- ci — Stop the migration guard crashing when main moves mid-run (#758)
- email — Escape user text in the generic notification email HTML (#753)
- public — Restore 9 images truncated by e60d55c46 (#754)
- email — Escape user text in assignment and mention notification HTML (#748)
- landing — Remove invented testimonials and placeholder stats (#745)
- today — Light-mode palette for the Today shell (#732)
- projects — Print the next action's text, not its legacy HTML, in project brief lines (#727)
- projects — Close the update modal on save and align row action icons (#725)
- crm — Skip retired pipelines when resolving the default pipeline (#723)
- mastra — Zoe's meeting list sees every Meeting the user can, dated by when it happened (#702)
- comments — Don't persist a comment highlight until its first comment posts (#700)
- day — Scope getByDate notes/exercises to caller (#698)
- today — Tomorrow and Upcoming keep the /today layout and agenda rail (#693)
- actions — Scope searchForDependencies to actions the caller can read (#690)
- time — Show action names as text, not raw HTML markup (#673)
- decisions — Extraction drops open questions (#681)
- notifications — Stop Slack digest links pointing at localhost in prod (#680)
- invites — Build copy-invite links server-side instead of a localhost fallback (#677)
- dates — One shared DateTimeField so the calendar reads as a panel (#674)
- theme — One calendar look for every @mantine/dates component (#671)
- time — One-line themed chart tooltips that never grow the page (#667)
- time — Upsert assignee shape and owner-scoped list under an agent key (#663)
- actions — UpsertBySource under an agent key assigns the agent's owner (#661)
- actions — Stop the create-action modals dropping tags and sprint (#656)
- ceremonies — Reachable reopen and per-skip notice key (V3 review Highs) (#658)
- actions — QuickCreate accepts any project the caller can edit (#655)
- products — Make the product pages usable on a phone (#651)
- nav — Align lists Decisions instead of Alignment, and the decisions source filter keeps its own row (#649)
- tickets — A view switch no longer drops filter changes on the backlog (#647)
- decisions — Fold draft evidence behind a toggle; one pass finds questions too (#646)
- theme — Keep themed input colours when a call site overrides styles (#643)
- decisions — Extraction blew the transaction budget, and a coverage note posed as an error (#644)
- ceremonies — CLEAR inventory owners must match a member record (#641)
- decisions — Verify evidence quotes against the transcript, and resolve a D-label server-side (#640)
- crm — Search contacts and organizations server-side in every picker (#634)
- okr — Unnest the row action buttons on the OKR dashboard (#632)
- home — Render prose fields as text instead of raw markup (#624)
- meetings — Render markdown in the AI summary (#623)
August 2026
New
- decisions — Make the decision graph full-screen (#618)
- crm — Contacts total count, search/filter/sort toolbar, infinite scroll (#616)
- crm — CSV contact import with column mapping and revenue-to-deal (#614)
- goals — Port the projects search/filter toolbar to the Goals tab (#613)
- goals — OKR dashboard icon controls + DRI in Goals Owner column (#612)
- goals — Nest connected projects under goals with collapsible rows (#611)
- email — Split sign-in code email from post-first-login welcome email (#608)
- pipeline — Redesign deal drawer to match contact page, add contact/org pickers (#601)
- meetings — Extract action items from meeting notes, not just transcript (#600)
- Scheduling window, day-spread slots, availability grid (#598)
- V3 workspace meeting scheduling (#597)
- V2 unified busy-time sync (Google + Microsoft into CalendarEvent) (#596)
- V1 ICS calendar feeds end-to-end (#594)
- V4 Decision Log graph view & push webhook (#593)
- V3 Decision Log cron sync, rate-limit short-circuit & ticket linking (#592)
- V2 Decision Log detail page, supersession & cross-repo mentions (#591)
- V1 Decision Log projection core (#590)
- mastra — Let agents set the do-date (scheduledStart) on created actions (#588)
- home — Tiered daily workspace home on the Activity layout (#582)
- Rebuild /auth/verify-request on the shared auth-surface design (#581)
- Deprecate Outcomes and remove them from the product (#562)
- metrics — All-cycles roll-up and per-cycle trend chart (#561)
- Match ticket fun IDs word-order-insensitively in search (#577)
- Show priority and sort by it on the product roadmap board (#578)
- Invite-aware welcome variant (#576)
- Mentions inbox reading the existing notification pipeline (#573)
- matrix — Create an unencrypted room from the picker (#563)
- Your work panel on the workspace home (#571)
- Content-Security-Policy — enforce safe subset, report-only full policy (#568)
- matrix — Bind a room to a project and post a meeting summary (#557)
- insights — Unify insight activity on the shared timeline (#555)
- V1: OKR events in the workspace activity feed (#551)
- comments — One shared comment system for tickets, features, scopes and pages (#552)
- activity — Render feature events with real names in the feed (#549)
- auth — Sign-in codes replace magic links (#544)
- matrix — Register a workspace Matrix server and browse its rooms (#546)
- product — Scope epics to a product and give them a detail page (#541)
- product — Read a feature's key result links from the feature side (#540)
- google — Gate Calendar/Contacts/Gmail behind a tester allowlist (#539)
- notion-sync — Explain what Dry run and Sync now actually do (#538)
- search — Add an All workspaces toggle to the command palette (#531)
- tickets — Add prev/next ticket navigation arrows and hotkeys (#529)
- Add external agent avatars (#524)
- Lane layout for genuinely colliding agenda blocks (#520)
- Scheduled / unscheduled indicator on task rows (#519)
- goals — Nest sub-goals in the project goal listing (#514)
- api — Expose the workspace member roster so agents can @mention (#501)
- voice — Give the voice router the chat thread it's sitting in (#504)
- wiki — Browse and edit the local wiki in the desktop app (#500)
- Grant agents access to multiple workspaces at once (#497)
- desktop — Native macOS window tabs in the Tauri shell (ADR-0053) (#490)
- Label Sentry/GlitchTip bugs with the service they came from (#488)
- Accept GlitchTip generic webhooks on the Sentry bug endpoints (#472)
- Server-side global search (search.global) — Cmd+K coverage over the API (#478)
- Create the local wiki from a button, not a side effect (#475)
- Label Sentry bugs ai-fixable for allowlisted projects (#469)
- Agent visual testing - sessions without OAuth, seeded fixture, Playwright (#468)
- Ingest and lint for the local wiki (#466)
- Announce new Sentry bugs in Matrix (#465)
- Tickets accordion on the feature detail page and peek (#464)
- Wire up Sentry error reporting end-to-end (#462)
- Local wiki + librarian (query + write-back) (#459)
- Tauri shell at sign-in parity (macOS) (#457)
- Near-real-time inbound Notion ticket sync via webhook (#456)
- Live sandbox Notion sync smoke test + nightly workflow (#453)
- HtmlToMarkdown + migrate Goal description editor to MarkdownInput (#445)
- V5: Key rotation (#444)
Fixed
- crm — Use app surface tokens for edit-contact drawer and pipeline deal cards (#617)
- crm — Process CSV imports in client-driven chunks (serverless-safe) (#615)
- auth — Align Google OAuth scopes with Cloud Console for verification (#607)
- transcriptions — Keep screenshot refs paired to the right actions when a create fails mid-list (#603)
- meetings — Show Schedule meeting button only on workspace meetings page (#606)
- chat — Report agent-stream errors to Sentry and Exponential Bug tickets (#604)
- crm — Edit-contact drawer opens bottom-left instead of docked right (#605)
- crm — Show uploaded contact image as avatar on detail and list pages (#602)
- recordings — Move Keywords section below Topics Discussed (#599)
- cycles — Scope cycle date-overlap validation per product (#595)
- ticket-sync — Make the Notion badge deep-link for adoption-era sync records (#589)
- Serve the public docs to anonymous visitors instead of /signin (#587)
- metrics — Natural cycle order, cycle-date and merged-PR backfill scripts, Week in Review below the fold (#586)
- home — Persist mention reads and stop kanban-done actions returning as overdue (#584)
- Send invited existing users straight to their new workspace, with a joined banner (#585)
- Land the member-added email on the invite page, not a signin wall (#575)
- Render meeting-summary markdown properly in app and Matrix posts (#580)
- Stop the auth middleware redirecting /public assets (#579)
- Default-deny middleware route gating — /w/ workspace routes were unprotected (#569)
- GitHub webhook fails closed; shared constant-time signature compare (#566)
- activity — Derive sparkline isToday from the week's local calendar (#558)
- activity — Hide Notion ticket-sync runs from the feed (#553)
- comments — Show mentions as @Name in composers instead of raw markup (#556)
- comments — Mentions in anchored-thread composers + discardable highlights (#554)
- activity — Record the feature name on meeting-promoted feature events (#550)
- goals — Render Markdown in goal updates, comments and OKR drawer (#548)
- calendar — Show the connection toast after a successful OAuth return (#547)
- auth — Give the iOS/Mac app its own native-auth redirect scheme (#542)
- goals — Partial updateGoal, workspace-scoped okr.getAll, mount setParent (#533)
- assistant — Scope assistants to their owner (odd.iris) (#536)
- ticketSync — Identify pages by back-link, not by title (#537)
- ticketSync — Stop the mirror duplicating rows Notion already has (#534)
- Quick-reschedule stops stamping a wall-clock time into scheduledStart (#513)
- ci — Make a green PR-Agent check mean a review actually happened (#532)
- projects — Stop the search box navigating on every keystroke (#530)
- ticketSync — Gate content rewrites on Notion's own created_by (#528)
- ticketSync — Stop the body-repair pass deleting human Notion content (#527)
- Finish agenda rail hardening and light-mode rich docs (#525)
- Cursor-batch the body-repair mutation (serverless timeout) (#522)
- Render ticket bodies as real Notion blocks + repair pass for created pages (#521)
- okr — Show linked features under the KR accordion (#474)
- Short agenda blocks stay legible (#515)
- Rail blocks use the task's real length, not a 60-minute default (#507)
- settings — Stop the agent-key modal from scrolling (#506)
- topbar — Link the section crumb to its own index (#493)
- topbar — Link the workspace crumb back to the workspace root (#492)
- Gate action create/update writes on workspace membership (#487)
- Gate assignee writes on workspace membership (#484)
- ui — Let the workspace crumb clear the sidebar re-open button (#485)
- desktop — Stamp the titlebar marker from the shell, not a head script (#482)
- Gate epic reads on workspace membership (#481)
- today — Keep the Today title clear of the re-open button (#477)
- Keep the window controls off the sidebar in the desktop shells (#476)
- Read Matrix token from MATRIX_ACCESS_TOKEN (#467)
- Stop logging JWT payload PII on authenticated requests (#463)
- Own the local-wiki turn loop — the librarian could not write (#461)
- Accept the signed Notion webhook handshake during bootstrap (#460)
- Surface unreadable cycle-relation pages instead of silently dropping them (#454)
- Snapshot-aware echo suppression — stop stranding pending human edits (#452)
- V4: Encryption becomes mandatory (#443)
- GitHub connect flow wipes the stored access token (#442)
- V3: Every credential read decrypts (#441)
- V2: Slack webhook fails closed (#440)
- V1: Close credential exposure (#439)
July 2026
New
- ai-worker — Run Claude Code directly against OpenRouter, add ai-buildable (#438)
- Meeting provenance + duplicate warning on accept (#434)
- Ideate features from chat (conversational path) (#433)
- sentry — Allow supplying a custom webhook signing secret in the UI (#432)
- Workspace-scoped Sentry webhooks (#431)
- Ideate features from a meeting, review, and accept into the backlog (#429)
- notifications — Include action deep link in Matrix reminders (#426)
- Auto-link PRs to Tickets by number (unblocks CLEAR merge hooks) (#425)
- Metrics page — cycle selector (view any cycle) (#423)
- V4 daily/weekly summaries on the unified notification pipeline (#420)
- Merged-PR turnaround metric (#419)
- Velocity trend across recent completed cycles (#418)
- V3 due-date reminders on the unified notification pipeline (#416)
- Metrics page tracer bullet — nav + route + active-cycle velocity (#417)
- Notify meeting participants when notes are ready (#415)
- Notify team members added as meeting participants (#414)
- product — Add per-product logo (#410)
- V2 Mention on the unified notification pipeline (#408)
- V1 unified notification dispatch (Foundation + Assignment) (#406)
- Outbound creation full mirror + open-ticket backfill + outbound archive (#407)
- Enable-push toggle + outbound property push on ticket mutation (#405)
- Add team members as meeting participants (shared picker) (#404)
- electron — Working macOS desktop app + system-browser sign-in (#403)
- Matrix notification opt-in + scheduled-summary delivery (V2) (#399)
- MatrixNotificationService — outbound notifications via the gateway (V2) (#398)
- Derive Action.source from the caller's JWT token type (Matrix provenance) (#394)
- Matrix settings surface — matrixGateway tRPC router + MatrixGatewayCard (#393)
- V3: /welcome sole gate — retire the onboarding wizard (#392)
- Matrix gateway app seam — JWT type, refresh-token route, mappings routes (#391)
- V2: Work hours + editable profile in Settings (#389)
- welcome — Assistant-guided Getting Started page (Chat + Checklist views) (#385)
- pages — Comment feed on Knowledge Pages via shared CommentSection base (#384)
- prd — @-mention workspace members in feature/scope comments (#380)
- First-sync dry-run preview gate on Sync now (#379)
- Sync revert — revert a sync run with guardrail and preview (#378)
- tickets — Notion sync Phase 1 completion — cron, cycles/assignees, archive, badge, agent repoint (#374)
- Sync run history table on product Notion sync settings (#376)
- Soft disconnect: sync provenance survives disconnect and integration deletion (#375)
- tickets — Notion ticket sync — schema foundation + product connection settings (#373)
- features — Registry V2 - Areas, Live/Deprecated lifecycle, EARS requirements, spec-page links (#370)
- crm — Choose pipeline on deal create + edit, default stage to Lead (#371)
- insights — Detail page, decision-based triage, board publishing, duplicates + activity (#369)
- okr — Add comment composer to the drawer Overview tab (#367)
- agent — Let the assistant link projects to Key Results (#366)
- cycles — Back-to-cycles nav + cycle-name favourite label (#364)
- tickets — Wire up the Filter button on the tickets backlog (#363)
- agent — Read tickets/cycles + link dependencies from the assistant (#362)
- Drawer-canvas handoff, collision rules, and navigate-away abort (#361)
- Stamp Zoe canvas turns web-canvas in interaction history (#360)
- products — Mission-control redesign of the product Overview tab (#358)
- Zoe canvas MVP on /home behind ?canvas=1 (#359)
- cycles — Edit cycle name and dates from the cycle detail page (#356)
- pages — Favourite knowledge pages from the page header (#351)
- integrations — Per-workspace Postmark email sender (#347)
- pages — Sub-page tree, public breadcrumb, duplicate-with-subpages (#349)
- tickets — One-call Notion cycle import + labels on bulkCreateTickets (#350)
- editor — Tables in the Pages/PRD editor (slash command + round-trip) (#348)
- pages — Resolve page links on public pages + publish linked pages (#346)
- today — Split /today into Overdue, Today, and Completed sections (#344)
- pages — /page slash command creates and links a sub-page (#343)
- pages — Publish pages to the web + duplicate (ADR-0038) (#341)
- nav — Add Pages link under Deliver in the sidebar (#339)
- forms — Share a form via QR code from the editor (#338)
- forms — Checkbox groups, field placeholders, submit label + footnote (#337)
- forms — Per-form applicant-account offer toggle + custom prompt (#336)
- forms — Rename a form's public slug from the editor (#335)
- forms — Create_insight destination — forms feed product Insights (#333)
- insights — Fold Problem into Insight — schema, router, unified /insights UI (B1–B5) (#332)
- crm — "Enrich" button with AI-source provenance (ADR-0036) (#327)
- crm — Explicit "enrich now" trigger for existing contacts (#325)
- crm — Organization API surface + event-driven contact enrichment (#323)
- okr — Toggle to show/hide the OKR overview hero cards (#324)
- Time-trap on the public form intake (#313)
Fixed
- ai-bug-fixer — Use the metered API key, not the capped subscription token (#436)
- pages — Restore list markers on published pages (#437)
- Agents page unusable on mobile (ticket #229) (#435)
- ai-bug-fixer — Restore push credential, stop committing scratch, never strand — and work any ticket type (#430)
- ai-bug-fixer — Support API-key auth and add opt-in agent debug output (#428)
- ai-bug-fixer — Grant id-token: write so the coding agent can authenticate (#427)
- GitHub PR/push webhooks dropped — matcher ignores WorkspaceRepository (#424)
- ci — Stop Exponential merge hook dying on PRs with no #-refs (#422)
- Metrics page — compute cycle metrics from Tickets, not Actions (#421)
- migration — Dedupe notification-prefs backfill (unblocks prod migrations) (#411)
- products — Add page padding to New product screen (#409)
- nav — Open Goals tab by default instead of OKRs (#401)
- Wire Matrix notification opt-in into the live /settings/notifications page (#400)
- prd — Surface non-conflict autosave failures instead of failing silently (#396)
- prd — Sync descriptionDoc when feature description is updated via API (#383)
- tickets — Show time alongside date on ticket activity comments (#382)
- chat — Render AI message links and paragraph breaks in ManyChat (#381)
- content — Collapse whitespace-only soft-break runs into a single <br> (#372)
- okr — Make "My Goals" a strictly DRI-scoped view (#368)
- cycles — Cancelled cycles no longer block dates; allow deleting them (#357)
- Agent tools 405 on tRPC query procedures — enable method override (#353)
- editor — Serialize autosaves so a tab cannot conflict with itself (#345)
- theme — Make Mantine the single source of truth for color scheme (#342)
- pages — Fill full available width instead of narrow centered container (#340)
- forms — Active switch persists immediately via dedicated form.setActive (#334)
How it connects
- Product timeline — every commit, as it lands: product timeline.
- Introduction — what Exponential is, if you are new: Introduction.
Was this page helpful?
Last updated Edit this page on GitHub