Commit Graph
1681 Commits
Author SHA1 Message Date
Matthew Meszaros 339e3495b2 feat: add eleven 1200x600 webp blog cover images (29-59KB each) under public/blog for post grid thumbnails and social share cards 2026-07-07 07:15:06 +02:00
Matthew Meszaros d1ec6206e7 feat: full schedule-send control - the schedule sheet gains Gmail-style one-tap presets (later today, tomorrow morning/afternoon, Monday morning) with their concrete times shown, a month calendar, a dedicated hour-and-minute time row that was previously clipped at the medium detent, and a will-send summary line, all clamped to the server's scheduling bounds 2026-07-07 06:48:40 +02:00
Matthew Meszaros 2370c6e637 feat: selection-aware AI in the composer - highlighting text in the draft switches the AI dropdown to a Selected text section (rephrase, shorten, expand, more formal, fix grammar) that rewrites only that range via the editor selection binding, guarded against concurrent draft edits and covered by the same one-tap undo 2026-07-07 06:42:21 +02:00
Matthew Meszaros 1633c6274f feat: fix the blank-message-until-tap bug - the email webview now starts from a realistic frame instead of .zero, retries a first load that never committed (dropped mid navigation transition) on any SwiftUI update, and re-measures content height after layout settles 2026-07-07 06:42:21 +02:00
Matthew Meszaros d2613a01fe feat: composer power features - Bcc joins Cc behind a Gmail-style chevron on the To row and rides the reply request, the full-screen AI sheet is replaced by an inline prompt bar above the keyboard plus a rewrite dropdown (improve/shorten/formal/casual/grammar) with one-tap undo, and templates become an instant-insert dropdown with a searchable server-side browser for large libraries 2026-07-07 06:17:16 +02:00
Matthew Meszaros cc01ce900f feat: rebuild the reply composer Gmail-style - borderless full-width From/To/Cc/Subject rows separated only by hairlines, the draft editor fills the whole sheet, send moves to a toolbar paperplane with a when-to-send menu (now/smart/schedule with a graphical date sheet and an inline schedule banner), and AI/templates sit in a quiet helper bar above the keyboard 2026-07-07 06:07:58 +02:00
Matthew Meszaros 2961b4e120 feat: fix thread view bugs - message expansion and measured body heights move into the thread store so LazyVStack row recycling can no longer collapse an open message or blank its body, and the connector rail is drawn as segments that stop at the avatar edges instead of running through the translucent avatar fill 2026-07-07 06:07:58 +02:00
Matthew Meszaros fb7397e26a feat: iOS developer docs - README with project layout and DEVELOPMENT.md covering simulator setup, local backend wiring, and build/run workflow 2026-07-07 05:57:59 +02:00
Matthew Meszaros b4fde65a7d feat: iOS environment wiring - AppConfig backend/websocket endpoints, the observable AppEnvironment composing API/session/realtime/badges, and app entitlements for Sign in with Apple 2026-07-07 05:57:59 +02:00
Matthew Meszaros 29276fe056 feat: iOS analytics and settings - account analytics with charts and audit log, plus the more tab (profile, team, notifications, billing, security) in the air language 2026-07-07 05:57:44 +02:00
Matthew Meszaros eefa88adff feat: iOS mailboxes - account list with health/warmup state, connect sheet, and mailbox detail with settings, limits and deliverability tabs 2026-07-07 05:57:43 +02:00
Matthew Meszaros 553a2844a5 feat: iOS contacts and CRM - contacts browser with category picker and bulk selection, contact detail with edit drawer, plus CRM deals, meetings, tasks and template views on the shared air scaffold 2026-07-07 05:57:43 +02:00
Matthew Meszaros 7afa5d997e feat: iOS campaigns - list with status rows, create sheet, and campaign detail with air hero, sticky tabs, sequence/schedule/recipient views and live send stats 2026-07-07 05:57:43 +02:00
Matthew Meszaros f3cb7b114b feat: iOS unibox - Gmail-style browser with sidebar drawer (sky hero badges, sliding pill selection, red unread counts, labels + uncategorized), search pill with operator hints and result counts, multi-select with swipe actions and infinite scroll, flat thread view with connector rail, replying-to references, per-message reply/copy/read tools, and an air-styled reply composer with smart scheduling 2026-07-07 05:57:31 +02:00
Matthew Meszaros 07b319b2d6 feat: iOS home tab - workspace pulse with air hero, live health/send stats, and shortcuts into mailboxes and analytics 2026-07-07 05:57:31 +02:00
Matthew Meszaros 4dc32e6ccb feat: iOS auth flow - welcome screen, multi-step email login/register with OTP code field, native Sign in with Apple and Google buttons against the new token endpoints, org picker, and the post-signup onboarding questionnaire 2026-07-07 05:57:31 +02:00
Matthew Meszaros 5041c285ca feat: iOS navigation shell - session-gated root with a breathing-logo sky launch view and a permission-aware tab bar carrying the unibox unread badge 2026-07-07 05:57:11 +02:00
Matthew Meszaros a434e0c070 feat: iOS design system - air theme (sky wash heroes, tone palettes, stat chips, eyebrow labels), shared components (avatars, skeleton shimmer rows, empty/error states, tap-scale style), and the Warmbly logo/wordmark shapes 2026-07-07 05:57:11 +02:00
Matthew Meszaros 4f55903165 feat: iOS realtime layer - Phoenix channels websocket client with heartbeats and rejoin backoff, org/user channel subscriptions, presence state sync, and per-feature event pulses driving live query invalidation 2026-07-07 05:57:11 +02:00
Matthew Meszaros 5710c86d9e feat: iOS core layer - async APIClient with idempotency keys and typed errors, Codable models mirroring the backend wire contracts (including the Group title key), session store with permission checks, and a keychain-backed token store 2026-07-07 05:57:01 +02:00
Matthew Meszaros 734955b490 feat: scaffold the Warmbly iOS app - Xcode project with synchronized folder references, app entry point wiring the environment, Info.plist with a LaunchBackground sky launch screen, and the asset catalog (app icon, accent, clouds, launch color) 2026-07-07 05:57:01 +02:00
Matthew Meszaros 15088a6f64 feat: pin cowboy >= 2.16 in the realtime service so CR/LF response header values are rejected before the wire (EEF-CVE-2026-43966/43969 has no patched cowlib release) 2026-07-07 05:56:47 +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 08699b1c88 feat: include the referral_reward_percent column in plan row scans so plan lookups stop failing after the referral rewards migration 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 cef5e019e6 feat: ignore Xcode per-user state (xcuserdata) and .DS_Store so the iOS project tree stays free of machine-local files 2026-07-07 05:56:24 +02:00
Matthew Meszaros 6df48f626e chore: update the README top banner to the new Figma branding export (1600x533 JPG, ~108KB, smaller than the previous banner) 2026-07-06 06:28:11 +02:00
Matthew Meszaros f6a6a310ac feat: enrich blog structured data with BreadcrumbList, wordCount, keywords, inLanguage, articleSection, and a per-post share image on BlogPosting 2026-07-06 06:28:11 +02:00
Matthew Meszaros 721aced30f feat: replace the social OG card with the Figma export as an optimized 52KB mozjpeg JPG (1200x600) and switch every og:image reference from PNG to JPG 2026-07-06 06:28:11 +02:00
Matthew Meszaros 1f38604fcd feat: cross-link the three existing blog posts into the new warmup, sending, and deliverability topic clusters with contextual internal links 2026-07-06 06:28:11 +02:00
Matthew Meszaros 074f484c43 feat: add eight SEO blog posts on cold email sending limits, warmup mechanics, delivery vs inbox placement, DMARC alignment, reputation recovery, and self-hosting 2026-07-06 06:28:11 +02:00
Matthew Meszaros 5809247980 style: replace an em dash with a colon in the terms usage-limits clause to match the no-em-dash copy rule 2026-07-06 06:28:11 +02:00
Matthew Meszaros 7aa1390f21 feat: add FAQPage JSON-LD to /faq, correct the per-user to per-organization DEK claim, and drop em dashes from two answers 2026-07-06 06:28:11 +02:00
Matthew Meszaros 534f6eb263 fix: correct the encryption claim from per-user to per-organization DEKs on the about, trust, and integrations pages to match the envelope-encryption model 2026-07-06 06:27:43 +02:00
Matthew Meszaros dcf50cb99a feat: change the trial to three mailboxes everywhere and add free-tier limitation copy (unfilled warmup pool, for evaluation not production) on the homepage and pricing page 2026-07-06 06:27:43 +02:00
Matthew Meszaros a9384ca72c feat: add reciprocal Deep dives blog link blocks to the warmup, sending, and deliverability pillar pages so clusters link both directions 2026-07-06 06:27:43 +02:00
Matthew Meszaros 71a4275e59 feat: surface the self-host warmup pool notice on the warmup page and sharpen the open-source section caveat that the pool needs the cloud 2026-07-06 06:27:43 +02:00
Matthew Meszaros d9c8d3c9bd feat: add a reusable PillarPosts component for a 'Deep dives' blog link block on pillar pages 2026-07-06 06:27:43 +02:00
Matthew Meszaros e37a340bb4 feat: add a reusable WarmupPoolNotice component explaining the shared warmup pool is a cloud feature a single self-hosted instance cannot replicate 2026-07-06 06:27:43 +02:00
Matthew Meszaros 1d4357e4af feat: add a site-wide coming-soon launch banner (LaunchBanner) announcing Warmbly Cloud and the shared warmup pool with a waitlist CTA, rendered above the header in Layout 2026-07-06 06:27:43 +02:00
Matthew Meszaros 99dfd261d4 Merge pull request #62 from warmbly/feature/gmail-imap-sync-fixes
Feature/gmail imap sync fixes
2026-07-04 13:19:15 +02:00
Matthew Meszaros 27487a3279 Merge pull request #59 from warmbly/feature/human-send-behavior
Human-like send + warmup engagement timing (no metronome, round-mark, or 3am-read fingerprints)
2026-07-04 13:12:29 +02:00
Matthew Meszaros f38a939f2e Merge pull request #60 from warmbly/feature/inbound-bounce-and-behavior
Inbound NDR bounce suppression (permanent-only, idempotent) + warmup volume variation + reconciler throttle
2026-07-04 13:12:15 +02:00
Matthew Meszaros 87a877bd95 Merge pull request #61 from warmbly/fix/realtime-multiarch-publish
Fix realtime image publish: native multi-arch runners instead of 6h QEMU hang
2026-07-04 12:09:32 +02:00
Matthew Meszaros 4c714c471f Merge pull request #58 from warmbly/feature/gmail-imap-sync-fixes
Fix Gmail and SMTP/IMAP sync/send bugs; bring both to parity with the Graph path
2026-07-04 12:09:30 +02:00
Matthew Meszaros b11cf3fa27 Merge pull request #57 from warmbly/feature/mailbox-graph-api
Microsoft mailboxes on Graph + working account load/send/sync + warmup categorization
2026-07-04 12:02:05 +02:00
Matthew Meszaros a2e35a1c02 fix: build the realtime image on native amd64 and arm64 runners and merge the digests into one manifest so the elixir release stops hanging for hours under qemu emulation 2026-07-04 11:59:35 +02:00
Matthew Meszaros ad1d40fd2b test: cover the gmail/graph message mapping (read-state inversion, spam/category labels, unpadded base64url bodies, warmup and classification header surfacing), the imap header-flag parser, the graph MIME builder, and the human-behavior timing (sub-minute randomisation, daily volume factor, night-deferred and heavy-tailed engagement) 2026-07-04 11:45:01 +02:00
Matthew Meszaros f9142345ca feat: occasionally skip all positive warmup engagement on a message so a mailbox files but never opens some mail, avoiding a perfect every-message-engagement pattern while keeping spam-rescue and foldering 2026-07-04 11:38:23 +02:00
Matthew Meszaros 4ea9611510 feat: vary each mailbox's daily warmup volume by a stable per-day factor with occasional lighter days so a mailbox never sends an identical count every day 2026-07-04 11:36:47 +02:00