v0.21.1
Latest
Patch fixes
7 June 2026
-
-
Large scans no longer stall near the end - background job history is kept short so the database stays responsive and processing finishes reliably
v0.21.0
Deploy Safety, Recovery and Housekeeping
7 June 2026
-
-
Maintenance mode - processing can be paused safely before a deploy, with a banner shown to users and new scans temporarily blocked, then resumed automatically once the deploy is healthy
-
-
Interrupted scans recover on their own - a scan that was mid-enqueue when the app restarted picks up where it left off instead of stalling
-
-
Re-scan from the same upload - the original file is kept until a scan finishes, so a scan can be re-run without uploading again
-
-
Failure reports - when a scan fails, a detailed report is generated for support so problems can be diagnosed quickly
-
-
New Scan health area for operators - see scans in progress, recent failures and their reports at a glance
-
-
Smoother live timing - scan progress and speed now tick on a steady clock
v0.20.2
Patch fixes
7 June 2026
-
-
More stable verification under load - disposable-domain checks no longer funnel through a single process, removing the timeouts and stalls that could slow large scans
v0.20.1
Patch fixes
7 June 2026
-
-
Fixed large scans appearing stuck at 0 - progress now updates steadily from the start instead of waiting for a whole batch to finish
v0.20.0
Scan Reliability and Resilience
6 June 2026
-
-
Live scan progress is smoother - the bar advances steadily and the speed chart shows the real processing speed sampled every 10 seconds
-
-
Scans no longer get stuck - an interrupted scan is recovered automatically and only marked failed after repeated stalls with no progress
-
-
Your full list is kept - every row is preserved and counted, including rows that repeat the same email with different data
-
-
Repeated emails are verified once and the result reused, so lists with duplicates finish faster
-
-
More reliable under load - results and counters are saved together, so a crash or restart cannot lose progress or leave a scan hanging
-
-
Test coverage increased to 83.1%
v0.19.0
Batch Pipeline Cleanup
6 June 2026
-
-
Speed chart now shows per-period throughput instead of cumulative average - chart reacts to current processing speed rather than flattening over time
-
-
Legacy single-email verification worker removed - all verification runs through the batch pipeline
-
-
Test coverage increased to 80.9%
v0.18.1
Patch fixes
6 June 2026
-
-
Reduced verification concurrency from 20 to 5 - prevents DB connection pool exhaustion when 20 batch workers all save results simultaneously
v0.18.0
Batch Scan Processing
6 June 2026
-
-
Verification pipeline rebuilt around batch jobs - one Oban job now handles 1000 emails instead of one job per email, reducing queue size by 1000x for large scans
-
-
SMTP checks run concurrently within each batch using async streams - 10 parallel connections per batch worker
-
-
All scan counters updated in a single database query per batch - eliminates the thundering herd of individual counter increments
-
-
Scan resume on restart now re-queues incomplete batches instead of individual emails - faster recovery and less DB overhead
-
-
Verification concurrency restored to 20 batch workers - effectively 200 concurrent SMTP connections with far lower database pressure than before
v0.17.4
Patch fixes
6 June 2026
-
-
Reduced verification concurrency to 5 to prevent DB I/O saturation on large scans
v0.17.3
Patch fixes
6 June 2026
-
-
Fixed connection pool instability - pool increased to 60, Lifeline rescue timeout reduced from 30 to 5 minutes so stuck jobs after restart unblock faster
v0.17.2
Patch fixes
6 June 2026
-
-
Fixed connection pool exhaustion under load - verification concurrency reduced to 20, DB pool increased to 35
v0.17.1
Patch fixes
6 June 2026
-
-
Fixed production crash - scan resumer no longer loads all rows into memory at once, processes in batches of 1000
-
-
Fixed PostgreSQL parameter limit crash when resuming large scans with thousands of emails
-
-
Fixed duplicate job queueing on server restart - each email row now processed exactly once
-
-
Fixed stuck scan detector falsely failing large scans - now checks inactivity (2h with no progress) instead of total run time
-
-
Scan rows cleaned from database after scan finishes to keep storage lean
-
-
Verification concurrency increased to 50 workers for faster processing
v0.17.0
Scan Resilience
6 June 2026
-
-
Verification results now persisted to database - each email result stored in scan_rows table, no data lost on restart
-
-
Scans resume automatically on startup - any interrupted scan continues from where it left off without losing processed rows
-
-
Source CSV files stored on S3 instead of local disk - scans survive machine restarts and redeploys
-
-
Speed chart fits screen width on all devices - no more horizontal stretching on 2K, 4K or mobile
-
-
Scan status updates in real-time without page refresh when processing starts
v0.16.0
Scan History and Reliability
6 June 2026
-
-
Scan history improvements - status badges, scan meta cards, deliverability bar and pagination components refined
-
-
File upload limit reduced to 10MB for stability
-
-
Oban job cleanup - Pruner plugin added to automatically remove completed jobs older than 7 days
-
-
Oban resilience - Lifeline plugin added to rescue jobs stuck in executing state after restarts
-
-
Test coverage increased to 81.6%
v0.15.0
Stability and Quality
19 May 2026
-
-
Owner organisations page - search now persists in URL and survives page refresh, reset button clears filters, table column alignment fixed
-
-
Scan speed chart - real-time processing speed chart on scan show page, scrolls horizontally with latest data on the right
-
-
Scan speed sampling - ScanWriter records emails per minute every 10 seconds, samples cleaned up with exports
-
-
File upload error messages - clear human-readable errors for oversized or invalid files
-
-
Stripe webhook nil signature fix - missing Stripe-Signature header no longer crashes the webhook handler
-
-
Owner area tests - Stats module, dashboard, organisations list and Oban monitor covered
-
-
Test coverage increased to approximately 75%
v0.14.0
Owner Area
14 May 2026
-
-
Owner area added - super admin section accessible only to the platform owner
-
-
Owner dashboard with full platform statistics - revenue, scan activity, organisation growth, health indicators, top organisations and recent payments
-
-
Oban monitor - queue stats per queue, executing jobs with cancel action, failed jobs with retry action, auto-refreshes every 5 seconds
-
-
Organisations list - all organisations with user count, scan count, credits balance and join date, sortable columns and pagination
-
-
Active nav links in both admin and owner sidebars
-
-
Owner sidebar aligned to match admin sidebar in size and mobile support
v0.13.0
Streaming and Scan UI
12 May 2026
-
-
EnqueueScanWorker now streams CSV files instead of loading everything into RAM - prevents OOM kills on large lists
-
-
Oban batch inserts - jobs are now enqueued in batches of 1000 instead of one by one
-
-
Crash recovery - if EnqueueScanWorker fails mid-way it resumes from where it left off on retry
-
-
Estimated completion time on scan show page - updates in real-time as the scan progresses
-
-
Results breakdown chart after unlock - donut chart showing all 6 verification statuses
-
-
Test coverage increased from 70% to 75.8%
-
-
Fixed debug IO.inspect left in billing page
-
-
Dependencies updated including decimal 3.1.0 security patch
v0.12.0
Quality and Email
11 May 2026
-
-
Fixed white text on white background in form inputs on auth pages
-
-
Stuck scan recovery - scans stuck in processing for 2+ hours automatically marked as failed
-
-
Email templates redesigned with HTML and plain text versions matching dark Zoravel brand
-
-
Magic link and confirmation emails now use correct domain in all environments
-
-
Scan completion notifications no longer reveal results before unlock
-
-
S3 production storage verified - exports generated and downloadable correctly
-
-
Fly.io machine memory increased to 2048MB to prevent OOM kills on large scans
-
-
Processing time estimates added to scan page during verification
-
-
Large list warning added - explains SMTP rate limiting for lists over 100k
v0.11.0
Tests and Launch Prep
9 May 2026
-
-
Test coverage increased from 62.6% to 70.5% - scan export controller, invitation flow, settings pages and API keys settings covered
-
-
Legal pages updated with correct company address and dates - Privacy Policy, Terms & Conditions, Cookie Policy
-
-
Resend configured for zoravel.com - SPF, DKIM and DMARC records verified
-
-
Transactional emails now send from support@zoravel.com
-
-
Phoenix updated to 1.8.6 to patch long-poll memory allocation vulnerability
v0.10.0
Verification Quality
8 May 2026
-
-
Verification status system redesigned - 6 clear statuses: valid, invalid, accept_all, disposable, role_based, unknown
-
-
safe_to_send boolean field added to API response and CSV export
-
-
verification_reason field added explaining why each status was assigned
-
-
Spam trap detection using heuristics and curated domain list
-
-
Domain blacklist check for domains with poor sender reputation
-
-
Unique email and duplicate counts tracked per scan
-
-
Extended stats on scan results page - disposable, role-based, accept-all and duplicate counts
-
-
UI badges updated for all 6 verification statuses
v0.9.0
Docs, Billing & Quality
7 May 2026
-
-
API documentation page at /docs with endpoint reference, status values, check fields, error codes and code examples
-
-
Stripe Customer Portal - customers can view and download invoices from billing page
-
-
Invoice generation enabled on all purchases with billing address and tax ID collection
-
-
Scan history page at /scans with pagination, filters by status and paid state, sorting
-
-
Dashboard shows 5 most recent scans with link to full history
-
-
Reusable scan list components - scan_list, scan_list_row, scan_list_card, scan_pagination
-
-
AES256-GCM encryption for sensitive organisation settings using cloak_ecto
-
-
Integration tests for email verification pipeline, API endpoint and scan context
-
-
ExCoveralls configured for coverage reporting
v0.8.0
API, Legal & Storage
5 May 2026
-
-
Terms & Conditions, Privacy Policy and Cookie Policy pages added
-
-
S3 storage for production exports with gzip compression and AES256 encryption
-
-
Presigned URL downloads from S3 in production
-
-
Automated cleanup of orphaned and stale source CSV files every 6 hours
-
-
API keys per organisation - generate, list and revoke from settings
-
-
REST API endpoint POST /api/v1/verify for single email verification
-
-
API authentication via Bearer token
-
-
Rate limiting - 60 requests per minute per API key with 429 and Retry-After header
v0.7.0
App UI Polish & Billing
4 May 2026
-
-
Emerald colour scheme across all authenticated pages - consistent with landing page
-
-
Auth pages redesigned - dark background matching landing page design
-
-
Admin layout with slide-in mobile drawer navigation using Alpine.js
-
-
Dashboard scan list shows mobile cards on small screens with expiry info
-
-
Scan show page with timing metadata - queued at, started at, finished at, processing speed
-
-
Scan show page with deliverability bar and percentage breakdown after unlock
-
-
New scan page shows accurate total email count from full file
-
-
Reusable scan UI components extracted - scan_meta_card, scan_deliverability_bar, scan_unlock_gate, scan_downloads
-
-
Settings split into three tabs - Team, Invitations, Notifications - each with its own URL
-
-
Billing page redesigned with pack details, price per 1k, how credits work section
-
-
Payment history with mobile-friendly card layout
-
-
Global format_number helper available across all templates
-
-
Timing fields added to scans - queued_at, started_at, finished_at, error_message
v0.6.0
UI/Design & Landing Page
3 May 2026
-
-
Modern dark landing page with hero, terminal demo, features, pricing and FAQ sections
-
-
Zoravel logo designed - icon with pulse line symbol
-
-
Reusable public_nav and public_footer layout components
-
-
Public changelog page at /changelog with timeline layout
-
-
Admin layout redesigned - fixed sidebar with icons on desktop
-
-
Mobile slide-in drawer navigation with Alpine.js
-
-
Dashboard stats cards - credits, total scans, emails verified
-
-
Theme toggle repositioned to top right on desktop and mobile top bar
-
-
SEO meta tags and OG/Twitter card tags added to root layout
-
-
Sitemap at /sitemap.xml
v0.5.0
SMTP, Infrastructure & Organisation Settings
2 May 2026
-
-
SMTP handshake check - verifies whether a mailbox actually exists without sending email
-
-
Catch-all domain detection - flags domains that accept all addresses as risky
-
-
Plug.Static updated to use only_matching for correct digest file serving
-
-
Umami analytics added to production layout
-
-
Export files cleaned up automatically after 72 hours via hourly cron job
-
-
Payment history recorded on every successful Stripe checkout
-
-
Payment history table on billing page
-
-
Role-based access control - owner and member roles
-
-
Team invitation flow - invite by email with 7-day expiry token
-
-
Organisation settings page with team members and pending invitations
-
-
Scan completion notifications via email, Slack, Teams, and webhook
v0.4.0
Email Verification
2 May 2026
-
-
CSV upload with automatic email column detection and 10-row preview
-
-
Full email verification pipeline - syntax, DNS/MX, disposable and role-based detection
-
-
Real-time scan progress via PubSub - no page refresh needed
-
-
Results written directly to disk, not database - scales to millions of emails
-
-
Global DNS cache shared across all scans - 4x speedup on repeated domains
-
-
Unlock flow - scan is free, credits deducted only when downloading results
-
-
Export files contain all original CSV columns plus verification status columns
-
-
Admin dashboard shows live scan progress and status
v0.3.0
Billing
30 April 2026
-
-
Credit balance added to organisations
-
-
Stripe Checkout integration for one-time credit pack purchases
-
-
Stripe webhook handler with signature verification
-
-
Billing page with credit balance and pack selection
v0.2.0
Auth & Organizations
30 April 2026
-
-
User authentication - register, log in, log out, reset password
-
-
Organisations with key-value settings table
-
-
Onboarding flow for new users
-
-
App and admin layouts
v0.1.0
Project Setup
29 April 2026
-
-
Phoenix project initialised with PostgreSQL and binary IDs
-
-
Fly.io deployment configured with GitLab CI/CD pipeline
-
-
Coming soon page live on zoravel.com