Commit Graph

  • 4440613d94 feat: sidebar shows a lock on features the member can't access and pops an explanatory access dialog on click, so a locked feature reads as unavailable instead of an empty page mistaken for 'no data'; align Accounts gate on Manage mailboxes Matthew Meszaros 2026-06-11 17:17:48 +02:00
  • 70064e9e1d fix: define OrgChannel.handle_out/3 so presence_diff broadcasts are pushed to clients instead of crashing the channel — the missing callback was terminating the org channel and dropping every websocket connection in a reconnect loop Matthew Meszaros 2026-06-11 13:47:11 +02:00
  • babde3397c feat: apply the explicit no-access message to campaigns, contacts, analytics, and API keys pages too, so every permission-gated tab says which permission is missing instead of showing nothing Matthew Meszaros 2026-06-11 13:21:34 +02:00
  • 72d2af2c3d feat: inbox and email-accounts pages now show an explicit 'you don't have access' message (with the missing permission) instead of a blank or misleading-empty screen when the member lacks unibox/campaign-view access Matthew Meszaros 2026-06-11 13:19:25 +02:00
  • b07d21b907 feat: add usePermission hook + a NoAccess surface that explains which permission a member is missing instead of rendering a blank page Matthew Meszaros 2026-06-11 13:19:24 +02:00
  • 3654ca0809 feat: profile and workspace name fields auto-save ~700ms after typing stops (empty names stay unsaved), replacing manual Discard/Save with the live status indicator Matthew Meszaros 2026-06-11 13:00:27 +02:00
  • 01e23c7596 feat: notifications settings auto-save instantly on toggle with a Saving/Saved header indicator, replacing the manual Discard/Save buttons Matthew Meszaros 2026-06-11 13:00:27 +02:00
  • 14837ed959 feat: guard settings tab switches — block in-app navigation (and warn on reload) when a tab has unsaved or failed auto-save changes, with a Stay/Discard/Save-changes dialog Matthew Meszaros 2026-06-11 13:00:27 +02:00
  • aa9273fe06 feat: add autosave primitives — useAutosave hook (instant for toggles, debounced for text, with dirty/flush/retry status), an unsaved-changes registry context, and a Saving/Saved/retry header indicator Matthew Meszaros 2026-06-11 13:00:18 +02:00
  • 709b77cdc6 fix: notification email links use the configured APP_URL instead of a hardcoded app.warmbly.com, so dev and self-hosted deployments link to the right host Matthew Meszaros 2026-06-11 12:43:17 +02:00
  • 4f6837b395 fix: refresh the active-sessions list and confirm other devices were signed out after a password change, so revoked sessions disappear live Matthew Meszaros 2026-06-11 12:42:44 +02:00
  • 3c6de16321 fix: forgotten-password reset now revokes all existing sessions, so a reset done because access was lost or compromised fully cuts off prior devices Matthew Meszaros 2026-06-11 12:41:55 +02:00
  • f209eca9ad fix: Slack notification delivery now resolves a real channel (connection config, then the org's configured Slack automation channel) instead of an always-empty connect-time field that silently dropped every message; docs and UI corrected to match Matthew Meszaros 2026-06-11 12:40:31 +02:00
  • 3c040649c0 fix: changing your password now revokes every other session (keeping the current device), matching the security promise in the sign-in alert and docs Matthew Meszaros 2026-06-11 12:39:24 +02:00
  • 2d53f4f819 fix: rate-limit POST /me/password so a hijacked session can't brute-force the current password unthrottled Matthew Meszaros 2026-06-11 12:38:07 +02:00
  • 5bcc2baaa8 feat: implement the coming-soon security features — logged-in change-password (verify current, policy-checked, POST /me/password) with a real dialog, and new-device sign-in alerts (security notification category fired from the token service on an unrecognized OS+browser, delivered in-app and by email), removing the comingSoon stub helper and updating docs Matthew Meszaros 2026-06-11 12:30:44 +02:00
  • 160dc0bc76 feat: implement the coming-soon notification delivery channels — Email (SES/SMTP to the account email) and Slack (posts to the org's connected workspace via a new integration NotifySlack), wired in both backend and consumer with per-channel gating, real toggles replacing the coming-soon labels, and updated docs Matthew Meszaros 2026-06-11 12:21:48 +02:00
  • 39a9752d63 feat: real tokenized invite-accept link — public /invite landing page with safe preview (org, inviter, roles), accept-by-token plus the previously-broken accept-by-invitation-id, public preview + admin copy-link endpoints, login next-param redirect, and a Copy button that yields a working /invite?token link Matthew Meszaros 2026-06-11 11:57:45 +02:00
  • 19f66507b4 feat: fix multi-role review findings — atomic member+roles insert on invite accept (no partial-failure stranding), gate role deletion on the actor holding the role's permissions (blocks team-managers de-privileging admins), and hydrate+chip pending-invitation role sets Matthew Meszaros 2026-06-11 11:32:57 +02:00
  • 8540f7db15 feat: members can hold multiple roles — join tables for member/invitation role sets (migration 000044) with effective permissions as the bitwise OR recomputed on every assignment and role edit/delete, role_ids in invite/update APIs, multi-select checkbox role picker with colored chips in roster and invite flow, freely deletable roles Matthew Meszaros 2026-06-11 11:24:19 +02:00
  • 80d080b982 feat: fix realtime UUID param encoding crashing org-channel joins, remove the permission matrix from Roles & access, compact the role dropdown, and drop the redundant Integrations tab from settings nav Matthew Meszaros 2026-06-11 11:16:13 +02:00
  • 3473d09bcc feat: fix review findings in the roles redesign — GetMembers role_id column (members endpoint 500), TransferOwnership role_id hygiene, accept-time role re-resolution, race-free in-use delete guard covering invitations, assignment anti-escalation with self-role-change block, canManage-gated members UI, colored RolePills, fresh currentOrganization on refetch, dev JWT_SECRET wiring for make realtime, docs corrections Matthew Meszaros 2026-06-11 10:45:21 +02:00
  • 2badeb7f50 feat: align team-roles docs with data-driven roles (seeded editable defaults, owner as status, color in the role editor) and drop dead accent maps from the members page Matthew Meszaros 2026-06-11 10:20:41 +02:00
  • 091b39f34e feat: roles become workspace data — seed editable Admin/Manager/Viewer rows per org (migration 000043 with member backfill), require role_id for invites and role changes, add role colors with a shared colored RoleSelect dropdown in the roster and invite flow, and rebuild Roles & access around real roles with an Owner reference column Matthew Meszaros 2026-06-11 10:18:45 +02:00
  • 0b253337fc feat: integrate custom roles across Roles & access settings (manager replaces the coming-soon placeholder, custom roles join the permission matrix and summary cards, permission-aware canManage gating via the org context bitmask) Matthew Meszaros 2026-06-11 10:08:46 +02:00
  • 9992eb65c4 feat: document custom roles in the team-roles guide (creation flow, start-from presets, propagation and anti-escalation rules, limits) Matthew Meszaros 2026-06-11 09:46:15 +02:00
  • 63b2b046f9 feat: custom roles dashboard UI (roles manager with built-in reference rows, permission-checkbox editor with start-from presets, custom roles in member role picker and invite flow, realtime spine refresh) Matthew Meszaros 2026-06-11 09:45:23 +02:00
  • edd4524007 feat: custom organization roles backend (organization_roles table with write-through member propagation, CRUD endpoints with anti-escalation and in-use guards, custom-role invites and assignment via role_id, audited as role entity) Matthew Meszaros 2026-06-11 09:39:52 +02:00
  • 8732805934 feat: replace signed click redirects with server-side link tickets (tracked_links store, internal resolver API, opaque /c/<id> URLs, layered anti-probe caches with miss budget and circuit breaker) removing TRACKING_LINK_SECRET entirely Matthew Meszaros 2026-06-11 09:30:21 +02:00
  • 2c5e8b2cbd feat: make TRACKING_LINK_SECRET a required boot-time secret on backend and tracking service with no unsigned mode and no rotation grace, so rotating the key revokes old links immediately Matthew Meszaros 2026-06-11 09:00:04 +02:00
  • 515efce991 feat: support TRACKING_LINK_SECRET_PREVIOUS rotation grace on the tracking service so rotating the click-signing key never breaks links in already-delivered emails Matthew Meszaros 2026-06-11 08:53:29 +02:00
  • 014cbe79fa feat: label machine opens (Apple MPP prefetch, UA-less fetchers) with human-open upgrade semantics, exclude them from open-triggered automations, and surface the auto-open count in workspace and campaign analytics (migration 000040) Matthew Meszaros 2026-06-11 08:33:09 +02:00
  • 8af2950d0b feat: reconcile missed realtime events by invalidating all queries when the websocket reconnects after a gap Matthew Meszaros 2026-06-11 08:25:00 +02:00
  • a365aa1605 feat: document realtime collaboration architecture (audit spine, presence conventions, org event gating) and tracking anti-abuse layer in agent notes Matthew Meszaros 2026-06-11 08:17:04 +02:00
  • 9cc9240dd5 feat: document TRACKING_LINK_SECRET and TRACKING_RATE_LIMIT_PER_MIN rollout knobs in the deploy env example Matthew Meszaros 2026-06-11 08:15:00 +02:00
  • 7079efe21a feat: document the developer realtime WebSocket (channels, presence, limits, close codes), add the live collaboration guide, and note bot filtering in analytics docs Matthew Meszaros 2026-06-11 08:13:56 +02:00
  • 8b9277dabf feat: harden tracking service against abuse with per-IP rate limiting, prefetch/scanner filtering, URL length caps, and HMAC-signed click redirects (TRACKING_LINK_SECRET) closing the open-redirect hole Matthew Meszaros 2026-06-11 08:11:05 +02:00
  • a06a525cf9 feat: live team presence across the dashboard (online avatar stack in header, viewing/replying indicators on unibox threads and rows, editing collaborators in the automation builder, campaign and contact viewers) plus audit-spine query invalidation Matthew Meszaros 2026-06-11 08:04:11 +02:00
  • 371fe0c0a3 feat: add Phoenix.Presence org collaboration layer (online members, viewing/editing/replying activity) with permission-gated org event fanout in the realtime service Matthew Meszaros 2026-06-11 07:51:34 +02:00
  • fe96eff7b4 feat: audit-log coverage for teams, automations (typed entity), lead-sync sources, and manual meetings so the org activity trail and its realtime spine see every mutation Matthew Meszaros 2026-06-11 07:47:29 +02:00
  • abdfd05c34 feat: org-scope realtime events (inbox, campaign, tracking, account health) and emit EMAIL_SENT/EMAIL_REPLIED/EMAIL_DELETED pulses so the whole team's dashboard updates live Matthew Meszaros 2026-06-11 07:43:57 +02:00
  • fa83e55763 Merge pull request #47 from warmbly/feature/redesign-developers-page Matthew Meszaros 2026-06-11 07:18:26 +02:00
  • 65455b907d feat: redesign developer page content Matthew Meszaros 2026-06-11 05:15:56 +00:00
  • 78b8a73fa8 feat: refactor developer page data model Matthew Meszaros 2026-06-11 05:15:34 +00:00
  • 5a2d62b030 Merge pull request #46 from warmbly/feature/marketing-automation Matthew Meszaros 2026-06-11 06:28:44 +02:00
  • dcc68f6eb4 feat: add automations navigation and featured product entry Matthew Meszaros 2026-06-11 06:11:42 +02:00
  • 79935060ef feat: add automations landing page and homepage showcase Matthew Meszaros 2026-06-11 06:11:33 +02:00
  • d540f2227d Merge pull request #45 from warmbly/feature/integrations-3 Matthew Meszaros 2026-06-10 19:02:45 +02:00
  • 15cf150f9e feat: remove the stale worker assignment operator doc from docs/, matching the earlier operator markdown cleanup Matthew Meszaros 2026-06-10 18:56:59 +02:00
  • bd7db069ba Merge origin/main into feature/integrations-3, resolving doc conflicts by accepting the docs-restructure deletions Matthew Meszaros 2026-06-10 18:56:47 +02:00
  • cc0c9a84ea Merge pull request #44 from warmbly/chore/update-docs Matthew Meszaros 2026-06-10 18:46:21 +02:00
  • 49a4e1e8ec feat: shorten verbose code comments in the docs app and add a one-line comment rule to the agent notes Matthew Meszaros 2026-06-10 18:36:29 +02:00
  • 1e4116ab0f Merge remote-tracking branch 'origin/main' into chore/update-docs Matthew Meszaros 2026-06-10 18:35:12 +02:00
  • 519aeacfc7 feat: require docs updates for user-visible changes and tighten commit message guidance in the agent notes Matthew Meszaros 2026-06-10 18:27:42 +02:00
  • 6a6ee42a23 feat: remove the operator markdown files from docs/ and drop their references from the root readme and contributing guide Matthew Meszaros 2026-06-10 18:27:42 +02:00
  • 5b735bb528 feat: replace ascii architecture diagrams in the realtime readme and resources docs with prose and tables Matthew Meszaros 2026-06-10 18:27:42 +02:00
  • 14a535701e feat: fix grammar in the forbidden api error message returned by the backend Matthew Meszaros 2026-06-10 18:27:42 +02:00
  • 9706458b10 feat: move the marketing site learn articles into a docs learn tab and point every site learn link at docs.warmbly.com Matthew Meszaros 2026-06-10 18:27:42 +02:00
  • d8a14ba14a feat: split docs content into guides and api sidebar tabs with per-page icons, remove duplicated h1 titles and em dashes, normalize reference-page copy, and add an api overview page Matthew Meszaros 2026-06-10 18:27:42 +02:00
  • 24079d9df6 feat: rebrand the docs app with the warmbly theme and nav, wire copy-markdown page actions, add a custom 404 and a root redirect to guides, and make the build a fully static export with trailing-slash urls Matthew Meszaros 2026-06-10 18:26:55 +02:00
  • c4628104ea Merge pull request #43 from warmbly/feature/blog Matthew Meszaros 2026-06-10 18:26:37 +02:00
  • fc33acc64d feat: document the per-organization DEK model Matthew Meszaros 2026-06-10 17:17:19 +02:00
  • 03134317ca feat: seal integration tokens and config with the organization DEK Matthew Meszaros 2026-06-10 17:17:03 +02:00
  • ae0c433084 feat: seal mailbox validation credentials with the organization DEK Matthew Meszaros 2026-06-10 17:16:56 +02:00
  • ac3c11bf9a feat: seal outbound email content with the organization DEK Matthew Meszaros 2026-06-10 17:16:42 +02:00
  • b9a5871308 feat: key the cipher service by organization ID Matthew Meszaros 2026-06-10 17:16:26 +02:00
  • 9cc42546a4 feat: align the deliverability handbook with the registry and real caps Matthew Meszaros 2026-06-10 17:16:07 +02:00
  • a6acb97dea feat: key the worker-facing internal DEK endpoint by organization Matthew Meszaros 2026-06-10 17:16:07 +02:00
  • 0f5fd64580 feat: give learn essays editorial headlines and repair broken copy Matthew Meszaros 2026-06-10 17:16:07 +02:00
  • c800081987 feat: store envelope-encryption DEKs per organization Matthew Meszaros 2026-06-10 17:15:47 +02:00
  • 9ebc776d1b feat: rework the learn article layout Matthew Meszaros 2026-06-10 17:15:43 +02:00
  • 7e6833cf0b feat: centralize the learn library registry Matthew Meszaros 2026-06-10 17:15:43 +02:00
  • 4839c93f4c feat: seed the blog with three launch posts Matthew Meszaros 2026-06-10 17:15:43 +02:00
  • e3355a0321 feat: link the blog from the site navigation Matthew Meszaros 2026-06-10 17:15:17 +02:00
  • 0edc1d4f67 feat: publish the blog RSS feed Matthew Meszaros 2026-06-10 17:15:17 +02:00
  • 67f773cced feat: add a newsroom-style blog index with search and topic pages Matthew Meszaros 2026-06-10 17:15:17 +02:00
  • bd51ef40ff feat: add the blog post page Matthew Meszaros 2026-06-10 17:14:57 +02:00
  • 8221c28cc3 feat: share one article typography between learn and the blog Matthew Meszaros 2026-06-10 17:14:57 +02:00
  • db832fa896 feat: add blog content collection on the Astro 5 content layer Matthew Meszaros 2026-06-10 17:14:57 +02:00
  • fb766a5196 Merge pull request #42 from warmbly/feature/mobile-compatibility Matthew Meszaros 2026-06-10 14:04:29 +02:00
  • 81c6c730de feat: animate the automation builder side panels Matthew Meszaros 2026-06-10 11:52:26 +02:00
  • 252be0911b feat: make the dashboard fully mobile compatible Matthew Meszaros 2026-06-10 11:37:15 +02:00
  • 0e23a6f8f8 Merge pull request #41 from warmbly/feature/remove-roadmap-page Matthew Meszaros 2026-06-09 18:05:12 +02:00
  • 9e7fc7f5e8 feat: source changelog from real merged pull requests at build time Matthew Meszaros 2026-06-09 15:58:57 +00:00
  • e9ef1ebfb8 feat: remove roadmap page and ground changelog in real history Matthew Meszaros 2026-06-09 10:03:18 +00:00
  • 0de56352db Merge pull request #40 from warmbly/feature/integration-implementation-thorugh-dashboard Matthew Meszaros 2026-06-09 11:05:08 +02:00
  • 59a0205e33 feat: surface automation delete conflicts Matthew Meszaros 2026-06-09 10:57:21 +02:00
  • 599e359381 feat: improve automation builder actions Matthew Meszaros 2026-06-09 10:57:16 +02:00
  • 9f90259a80 feat: add icons to select menus Matthew Meszaros 2026-06-09 10:57:11 +02:00
  • 0ee199e6ce feat: support team task assignment in campaigns Matthew Meszaros 2026-06-09 10:57:07 +02:00
  • b19a87c235 feat: add task assignee team picker Matthew Meszaros 2026-06-09 10:57:03 +02:00
  • 5954ac53c2 feat: add automation execution safeguards Matthew Meszaros 2026-06-09 10:56:56 +02:00
  • 0eaebbf963 Merge pull request #39 from warmbly/feature/integrations-page-redesign Matthew Meszaros 2026-06-09 10:31:24 +02:00
  • 7ea238c99a feat: redesign integrations page Matthew Meszaros 2026-06-09 08:05:26 +00:00
  • 5ada3a4164 Merge pull request #38 from warmbly/feature/crm-page-redesign Matthew Meszaros 2026-06-09 09:27:31 +02:00
  • a24771f0af feat: redesign CRM page Matthew Meszaros 2026-06-09 07:08:21 +00:00
  • 3236ffc459 feat: expand product docs and automation references Matthew Meszaros 2026-06-09 09:07:56 +02:00
  • 4ae68492de Merge pull request #36 from warmbly/feature/campaigns-redesign Matthew Meszaros 2026-06-09 08:18:09 +02:00
  • 85fd815c0a Merge pull request #37 from warmbly/feature/analytics-page-redesign Matthew Meszaros 2026-06-09 08:17:57 +02:00
  • a5c8a42a06 feat: redesign analytics page Matthew Meszaros 2026-06-09 05:13:23 +00:00