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 |
|