Matthew Meszaros
|
07a6777536
|
feat: email OAuth callback page gains a native-app fallback - when there is no web opener to postMessage (an ASWebAuthenticationSession has no popup parent) it redirects to warmbly://email-oauth with provider/code/state/error so the iOS app can finish the connect; web popup behavior is unchanged and the docs describe both delivery paths
|
2026-07-11 10:13:10 +02:00 |
|
Matthew Meszaros
|
cc0871d1b8
|
feat: contacts search gains an additive lead_status filter plus per-status lead_counts on the first page when exactly one campaign_id is set - the SQL predicates reproduce the read-time status derivation exactly (unsubscribed > bounced > replied > active > pending via LATERAL bool_or rollups), invalid lead_status or multi-campaign combinations return 400, and the web types/table pick up the new lead_counts shape
|
2026-07-11 10:11:36 +02:00 |
|
Matthew Meszaros
|
3acb51df6c
|
feat: add server-side status-bucket filtering to GET /campaigns (draft/active/paused/completed, paused matches every paused_* variant, invalid values 400) and a new GET /campaigns-overview endpoint returning status and per-folder counts, with the campaigns API reference and endpoint scope map updated
|
2026-07-07 09:40:27 +02:00 |
|
Matthew Meszaros
|
13f193d91e
|
feat: unibox list filters - from now matches sender addresses by case-insensitive substring as documented, and a new uncategorized=true param returns only threads with no labels, documented in the unibox API reference
|
2026-07-07 05:56:47 +02:00 |
|
Matthew Meszaros
|
a20ba926cb
|
feat: add native Apple/Google sign-in to the backend - POST /auth/apple and /auth/google exchange provider-signed ID tokens for sessions, GET /auth/providers exposes configured providers for app discovery, with a JWKS-verifying idtoken package, auth config, stable error codes, and API/security docs
|
2026-07-07 05:56:35 +02:00 |
|
Matthew Meszaros
|
041ae5afd5
|
feat: resolve inbound bounce events back to the original campaign send by message id and record them idempotently through the deliverability pipeline (suppression, campaign progress, breaker), and document permanent-only bounce detection
|
2026-07-04 11:36:47 +02:00 |
|
Matthew Meszaros
|
1e8236d685
|
feat: only reply to warmup messages received between 45 minutes and 7 days ago so replies follow a plausible read, and document the human-behavior timing model in the warmup guide
|
2026-07-04 11:27:36 +02:00 |
|
Matthew Meszaros
|
4fe0689d50
|
feat: document the Graph-backed Outlook connection and the recipient-side warmup folder categorization in the mailboxes and warmup guides
|
2026-07-04 08:07:50 +02:00 |
|
Matthew Meszaros
|
36bfaf2e71
|
Merge pull request #55 from warmbly/automation-realtime-editing
Dashboard-wide real-time collaboration: live cursors, collaborative canvases, sticky positions, and live CRM
|
2026-07-02 20:43:36 +02:00 |
|
Matthew Meszaros
|
76d7e09c29
|
feat: document the cursor-chat permission gate and the live:select keep-alive and expiry semantics in the realtime API reference and the collaboration guide
|
2026-07-02 20:33:44 +02:00 |
|
Matthew Meszaros
|
6d1944a19c
|
feat: mention live selection outlines and the / cursor chat in the automation builder and sequence editor guides so the builder docs match the shared-canvas behavior
|
2026-07-02 20:00:50 +02:00 |
|
Matthew Meszaros
|
b00e307d6a
|
feat: document cursor chat, the live:select selection event, and jump-to-teammate in the realtime API reference and the collaboration guide
|
2026-07-02 07:40:07 +02:00 |
|
Matthew Meszaros
|
d87ada8b92
|
feat: document end-to-end live CRM collaboration (deal moves, task changes, pipeline edits, in-progress drag highlight) in the collaboration guide
|
2026-06-30 19:18:55 +02:00 |
|
Matthew Meszaros
|
49ffcec432
|
feat: document the live:patch event, cursor avatars, and live CRM deal-board moves in the realtime reference and collaboration guide
|
2026-06-30 10:34:14 +02:00 |
|
Matthew Meszaros
|
7237a7500c
|
feat: document dashboard-wide live cursors, collaborative builder canvases, and sticky card positions across the collaboration, automations, and sequences guides
|
2026-06-30 10:06:58 +02:00 |
|
Matthew Meszaros
|
8ff5d173ba
|
feat: document the live-collaboration channel events and the automation/sequence layout endpoints in the realtime and endpoints API reference
|
2026-06-30 10:06:58 +02:00 |
|
Matthew Meszaros
|
cbd465eba0
|
feat: add the customer-facing Make integration guide (triggers, actions, searches) and register it in the guides navigation
|
2026-06-30 06:14:03 +02:00 |
|
Matthew Meszaros
|
d5bce77123
|
feat: document the resource-based layout and the full Zapier trigger/action/search catalog in the README and customer guide
|
2026-06-29 06:37:20 +02:00 |
|
Matthew Meszaros
|
f2f13e8a90
|
feat: document the new Zapier edit and delete actions, widened scopes, and destructive-action caution
|
2026-06-29 06:21:41 +02:00 |
|
Matthew Meszaros
|
f6d3ff600a
|
feat: document the GET /v1/me credential-verification endpoint in the API authentication guide
|
2026-06-28 19:28:04 +02:00 |
|
Matthew Meszaros
|
34fb2a77d6
|
feat: add customer-facing Zapier guide covering triggers, actions, searches and register it in the guides nav
|
2026-06-28 19:10:18 +02:00 |
|
Matthew Meszaros
|
90aab1acee
|
feat: document the GET /v1/me identity endpoint in the API endpoint scope map
|
2026-06-28 19:09:37 +02:00 |
|
Matthew Meszaros
|
0baa48991b
|
Publish development docs to docs.warmbly.com
|
2026-06-28 13:25:08 +02:00 |
|
Matthew Meszaros
|
7813d173b1
|
Move development docs to docs/development/
|
2026-06-28 12:25:08 +02:00 |
|
Matthew Meszaros
|
8e3445e4b8
|
Refresh README with mailboxes screenshot and warmup focus
|
2026-06-28 12:02:02 +02:00 |
|
Matthew Meszaros
|
a1cb25fc1d
|
Update README and assets with new banner and dashboard screenshots
|
2026-06-28 11:43:47 +02:00 |
|
Matthew Meszaros
|
4187d15dd0
|
feat: document the referral program guide and the referral and applied-discounts API endpoints in docs
|
2026-06-28 05:10:04 +00:00 |
|
Matthew Meszaros
|
ce45ba02d9
|
docs: document the webhook platform and OAuth app webhooks, add the webhooks guide, and update the endpoint scope map
|
2026-06-15 08:11:53 +02:00 |
|
Matthew Meszaros
|
2c910dcdeb
|
feat: make a campaign step's Original a first-class weighted A/B arm driven by a single draggable traffic-split bar, persisting the control share as an is_control variant row
|
2026-06-15 08:11:53 +02:00 |
|
Matthew Meszaros
|
c5dfa5e4e7
|
feat: remove the HTTP-request action from campaign steps and automations in favor of signed webhooks, keep fire_event for custom payloads, and drop the now-unused outbound quota plumbing
|
2026-06-15 08:11:35 +02:00 |
|
Matthew Meszaros
|
c1bd391ceb
|
docs: add a dependency-free realtime gateway reference client (connect, HELLO, heartbeat loop, seq resume, intents incl CUSTOM), a close-codes table, and OAuth-access-token auth
|
2026-06-14 11:02:12 +02:00 |
|
Matthew Meszaros
|
ab24d8bbc8
|
feat: add a 'Fire event' action and campaign step that publish custom events to the realtime gateway (no public URL), an HTTP-request campaign step, a configurable automation dry-run test with per-step toggles, and fix the false 'updated by a teammate' toast on your own save
|
2026-06-14 09:52:49 +02:00 |
|
Matthew Meszaros
|
fcdb31cda7
|
feat: OAuth apps always issue a client secret (drop the public/PKCE-only client type, secret required for the token exchange), add an app-logo upload endpoint, and align the docs to OAuth2 with optional PKCE
|
2026-06-14 09:52:49 +02:00 |
|
Matthew Meszaros
|
0fe1401f8b
|
feat: document the OAuth 2.1 authorization server (new api/oauth.mdx flow guide, authentication + permissions + endpoints scope-map updates, meta registration)
|
2026-06-13 14:10:11 +02:00 |
|
Matthew Meszaros
|
20935ef061
|
feat: add a nil-safe per-org daily outbound-action quota (Redis daily counter, anti-abuse ceiling on the HTTP-request automation node, wired in both backend and consumer, fail-open) to bound webhook relay abuse
|
2026-06-13 13:41:20 +02:00 |
|
Matthew Meszaros
|
1fa9c65ada
|
fix: harden every user-supplied-URL outbound path against SSRF with a shared dial-time guard (resolves the host, blocks private/loopback/link-local/metadata IPs, pins the validated IP to defeat DNS rebinding, re-validates redirects) and log automation HTTP requests + blocked attempts with org attribution
|
2026-06-13 13:34:19 +02:00 |
|
Matthew Meszaros
|
501b5009b4
|
feat: add an on-error branch to automation action nodes (try/catch routing, rose on-error handle, executor follows the error edge and treats the failure as handled instead of failing the run)
|
2026-06-13 13:15:41 +02:00 |
|
Matthew Meszaros
|
9aa3300f46
|
feat: capture per-action output in automation run history (HTTP status/ok, set-variables values, rendered channel/url/message) and render it under each action in the builder History panel
|
2026-06-13 13:11:58 +02:00 |
|
Matthew Meszaros
|
6f5f05c5a2
|
feat: document the inbound webhook automation trigger (unique per-automation URL, JSON body as event payload, token security and limits) in the automations guide
|
2026-06-13 13:08:37 +02:00 |
|
Matthew Meszaros
|
f1cf470121
|
feat: render Discord notifications as sky-themed rich embeds and Slack notifications as sky-accented attachment cards with contact and subject fields instead of plain text lines
|
2026-06-13 12:41:26 +02:00 |
|
Matthew Meszaros
|
96f19919ac
|
feat: document the HTTP request / webhook and Set variables automation actions in the automations guide
|
2026-06-13 12:20:20 +02:00 |
|
Matthew Meszaros
|
4e2fdec482
|
feat: document the resumable gateway (resume/replay, seq, resume_failed) in realtime.mdx and publish a machine-readable AsyncAPI 3.1 spec at docs/asyncapi.json describing the org channel, join/resume, HELLO, events, intents, and presence
|
2026-06-13 11:29:12 +02:00 |
|
Matthew Meszaros
|
3c7c0b6411
|
fix: finish the opaque-cursor doc sweep — change the offset query params to cursor on the CRM search operations in the OpenAPI spec, and drop the dead SearchContacts.Offset field and its docs (clamped but never used in SQL)
|
2026-06-13 11:00:59 +02:00 |
|
Matthew Meszaros
|
aed4a06190
|
feat: unify pagination by making the offset-based CRM deals/tasks search and meetings endpoints expose the same opaque next_cursor and {total, next_cursor, has_more} envelope as every keyset list (offset hidden inside the token), updating web clients, the OpenAPI spec, and the reference docs
|
2026-06-13 10:47:17 +02:00 |
|
Matthew Meszaros
|
013a73b9be
|
feat: publish a machine-readable OpenAPI 3.1 spec at docs/openapi.json covering 204 operations across the public API, with an OpenAPI docs page describing how to generate clients from it
|
2026-06-13 07:29:17 +02:00 |
|
Matthew Meszaros
|
587eae774e
|
feat: serve the entire customer API (auth + resources) only under /v1 with no unversioned alias, and repoint the web and admin clients to the versioned base accordingly
|
2026-06-13 07:18:23 +02:00 |
|
Matthew Meszaros
|
49b01c6b67
|
feat: version the public API under /v1 by mounting the customer surface under both /v1 and the bare paths, adding an API-Version response header and Deprecation/Sunset headers nudging API-key callers off the unversioned aliases
|
2026-06-13 06:27:01 +02:00 |
|
Matthew Meszaros
|
71abb12a38
|
feat: stop campaigns silently stalling on a transient scheduler error by retrying instead of completing the task, end past-end-date campaigns cleanly, record scheduler failures to the campaign log, add a campaign-chain reconciler, and surface failures live in the dashboard activity panel
|
2026-06-13 06:27:01 +02:00 |
|
Matthew Meszaros
|
92a74d9364
|
feat: document the label-email action in the steps and automations guides — reply-only, applies the shared category labels to the conversation the contact replied on, gated to the reply trigger
|
2026-06-12 16:44:29 +02:00 |
|
Matthew Meszaros
|
a7a43e0c4c
|
feat: rename the campaign sequences resource to steps across the API and URL (/campaigns/:id/steps), the JSON fields (target_step_id, step_id/step_name/step_index, analytics steps[], create body steps), the web client/models/route segment/labels, the audit step entity type, and the wire-contract docs; internal Go type names and the Kafka avro schema stay
|
2026-06-12 09:38:11 +02:00 |
|