Ciela/Changelog

What's changed.

A quiet record of every shipped version of Ciela, newest first, in plain language. No internal acronyms, no test counts, no celebration. Just what got better, and when.

23 RELEASES 102 UPDATES LATEST · v0.5.5 · 2026-05-27 FIRST · v0.1.0 · 2026-04-28 LAST UPDATED · MAY 27, 2026

Current Release v0.5.4 — v0.5.5 · May 2026

Clean Record.

The inbox list works correctly for large mailboxes. Stale sender records from old classification runs are pruned on upgrade and after every full scan. Trash operations now respect your manual reclassifications. Your active account choice survives a restart. The macOS build now runs natively on every Mac made in the last decade.

Download v0.5.5 for Windows Download v0.5.5 for Mac Download v0.5.5 for Linux
VirusTotal — Windows · 4 flags, 67 clean  ·  VirusTotal — Mac · 1 flag, 60 clean  ·  VirusTotal — Linux AppImage · 0 flags, 63 clean  ·  .deb · 0 flags, 61 clean  ·  .rpm · 0 flags, 61 clean
2 updates in this release

0.5.5

2026-05-27

Old data cleaned up, Trash does what you told it to, and the Mac installer now runs on every Mac made in the last decade.

  • Stale Unknown senders pruned. When the classifier improves and a sender moves from Unknown to the correct category, the old Unknown row used to persist indefinitely. A one-time migration on upgrade removes accumulated stale rows; a prune also runs after every full scan going forward. Unknown% dropped from ~14% to ~7% in testing.
  • Trash respects your reclassifications. If you manually reclassified a sender, clicking Trash now acts on your override instead of re-running the classifier — which would have silently ignored your decision and matched nothing.
  • Active account persists across restarts. Multi-account users now land on the last-selected inbox on startup instead of always defaulting to the first connected account.
  • Fixed a race condition where a simultaneous "Clean All" and per-sender Trash could interleave and produce incomplete results.
  • Universal macOS binary. The DMG now runs natively on both Intel and Apple Silicon — no Rosetta required on Intel.

0.5.4

2026-05-26

Large inboxes no longer show a blank sender detail — plus three targeted fixes from field testing.

  • Sender detail blank for large inboxes — fixed. Accounts with more than ~500 senders showed an empty email list when drilling into a sender. The message query now pages correctly regardless of inbox size.
  • Fixed several classifier domain rules that were mis-categorising senders from major providers.
  • Fixed oldest-email surfacing showing "1970" for messages where the Gmail API returned no date field.
  • Fixed the Dashboard "Browse" button not navigating back to the inbox when clicked from inside Sender Detail.
v0.5.0 — v0.5.3 · May 2026

Side by Side.

Ciela gets a dashboard, a cleaner codebase, and multi-account switching that actually works. Connect Gmail and Outlook accounts side by side, switch between them with one click, and always know which inbox you're in.

Download v0.5.3 for Windows Download v0.5.3 for Mac Download v0.5.3 for Linux
VirusTotal — Windows · 4 flags, 67 clean  ·  VirusTotal — Mac · 0 flags, 61 clean  ·  VirusTotal — Linux AppImage · 0 flags, 63 clean  ·  .rpm · 0 flags, 60 clean
4 updates in this release

0.5.3

2026-05-22

Account switching fixed, full email in the pill, and a + button to add accounts without leaving the inbox.

  • Account pill shows your full email. The initial-only circle is replaced with a pill showing your complete email address so you always know which account you're looking at.
  • + button for adding accounts. A dashed circle next to the pill opens the add-account flow directly — no longer buried inside a dropdown menu.
  • Account switching now works. Clicking an account in the switcher dropdown was displaying as interactive but not actually switching — fixed. The sender list now reloads immediately with the selected account's data.
  • When two or more accounts are connected, the scan timestamp shows the active account: LAST SCAN 31 min ago · dnclyon@gmail.com.
  • Fixed a false "Different account detected" warning that appeared when scanning a second registered account for the first time.
  • Error messages no longer say "Gmail" when you're signed in to an Outlook account. Several failure paths that were silently swallowed now surface a plain-language message to the user.

0.5.2

2026-05-21

Frontend structural cleanup — no user-facing changes.

  • Lifted the trash_progress event listener from two components into the parent shell; InsightsPanel now receives progress as a prop instead of registering its own listener.
  • Extracted the shared Modal shell that was duplicated in InboxView and InsightsPanel into src/components/ui/atoms.tsx.
  • Removed ScanProgress.senders — populated by Rust but never read by the frontend.
  • Moved all shared TypeScript types out of App.tsx into a dedicated src/types/ directory. All raw invoke() calls replaced with typed wrappers in src/api/commands.ts.

0.5.1

2026-05-21

Rust backend correctness and performance fixes — no user-facing changes.

  • Scan memory use capped: the message buffer now flushes to the database every 5,000 rows instead of accumulating unbounded (~20 MB for a 100k inbox).
  • Category count tracking during scan rewritten from an O(n) full-map scan per batch to an incremental counter updated at merge time.
  • db/mod.rs split from ~2,300 lines into five focused modules: senders, messages, stats, operations, accounts.
  • Fixed a transaction safety issue in record_trash_op.

0.5.0

2026-05-21

Dashboard — surface what your inbox data already knows.

  • Your Inbox at a Glance. Three stat pills at the top: total emails, unique senders, years of history.
  • Signal vs. Noise. A hero number showing what percentage of your inbox is marketing, subscriptions, and notifications.
  • Read Rate by Category. Horizontal bars showing the percentage of senders per category you've ever opened.
  • Senders You've Never Opened. Count with a Browse link to filter the inbox to that set.
  • Peak mail hours chart. Hourly histogram of when your email actually arrives (local time).
  • Oldest email surfacing. "Your oldest email arrived in [year], from a [category] sender."
  • Dashboard set as the default landing panel; previously labelled "Insights".
v0.4.8 — v0.4.10 · May 2026

Connected.

Ciela can now manage multiple inboxes at once. Connect a Gmail and an Outlook account, switch between them with one click, and remove either from Settings. Every scan, clean, and triage operation is scoped to the active account — data never leaks between them.

Download v0.4.10 for Windows Download v0.4.10 for Mac Download v0.4.10 for Linux
VirusTotal — Windows · 4 flags, 67 clean  ·  VirusTotal — Mac · 1 flag, 58 clean  ·  VirusTotal — Linux AppImage · 0 flags, 62 clean  ·  .deb · 0 flags, 60 clean  ·  .rpm · 0 flags, 61 clean
3 updates in this release

0.4.10

2026-05-20

Connect a second account without signing out.

  • Add Account flow. A new "Connect another email" option in the account switcher opens ConnectView in add-mode — the primary account stays signed in. After connecting, the app switches to the new account's inbox automatically.
  • Settings now lists every connected account with a Remove button. Removing an account signs it out and clears its local scan data; the primary account is unaffected.
  • All triage, trash, and stats commands are now scoped to the active account — unprotect, bulk clean, and reclassify cannot touch another account's data.
  • Clearing all data (Settings → Reset) now also removes all connected account records from the local database.
  • Minor UX fixes: ConnectView headline updated to "Another email" in add-mode; error messages use consistent plain-language formatting across both OAuth flows.

0.4.9

2026-05-20

Account switcher pill — see and switch accounts at a glance.

  • An account pill appears in the top-right chrome showing the active account's initial in a sage circle. Clicking it opens a dropdown listing all connected accounts with their provider label and a checkmark on the active one.
  • Accounts are persisted to the local database at the end of every scan so the pill populates immediately on next launch.
  • Switching accounts is instant — the inbox reloads with the selected account's cached data.

0.4.8

2026-05-20

Per-account data isolation — the foundation for multi-account support.

  • Schema upgraded to v15: every account-scoped table now carries an account_id column. Existing data is preserved as account_id = "default" on migration.
  • All 23 database functions accept an account_id parameter — senders, protected messages, scan checkpoints, and stats are all isolated per account.
  • Keyring keys are now namespaced per account (ciela-gmail-default, ciela-outlook-default) so tokens from different accounts never collide.
Technical notes
  • 259 Rust tests pass with the new per-account DB layer
  • Scan checkpoint keys changed from checkpoint_{field}checkpoint_{account_id}_{field} in scan_meta table
  • Old keyring keys are read on first launch and migrated transparently
v0.3.0 — v0.4.4 · May 2026

The Ruth Experience.

A full visual redesign of the inbox view — stat cards, a new tab strip, a wider category panel — plus the biggest classifier expansion yet. Ciela now recognizes 70+ more senders across healthcare, finance, travel, jobs, subscriptions, and more, so fewer emails land in the Unknown pile. Now available on Windows, Mac (Apple Silicon), and Linux.

Download v0.4.3 for Windows Download v0.4.3 for Mac Download v0.4.3 for Linux
VirusTotal — Windows · 3 flags, 68 clean  ·  VirusTotal — Mac · 1 flag, 60 clean  ·  VirusTotal — Linux · 0 flags, 63 clean
7 updates in this release

0.4.4

2026-05-20

Outlook support, UI polish, and reliability fixes.

  • Outlook / Hotmail / Microsoft 365 is now supported. Connect your Microsoft account from the Connect screen — scan, clean, triage, and undo all work the same as Gmail. OAuth2 PKCE, no password stored.
  • Stat cards now show context hints — "55% of inbox", "12% of senders", "8% of category" — so counts have meaning at a glance.
  • Settings gear icon fixed — displayed as a black square on some Windows installs due to a Unicode rendering gap.
  • The "Last scan" timestamp no longer uppercases the time string ("4 MIN AGO" → "4 min ago").
  • The bulk clean count now reflects your active search filter instead of the full category count.
  • Modal titles use Instrument Serif — consistent with the rest of the design system.
  • Four database transaction bugs fixed — partial writes on crash or force-quit are no longer possible.
  • Email domain matching is faster, with no heap allocations in the per-message hot path.

0.3.4

2026-05-19

Small UI fixes surfaced during internal review.

  • Active sender behavior labels ("quiet", "active") now refresh every 60 seconds so they don't go stale in long-running sessions.
  • The outlier count shown in the bulk clean modal now matches the sender list exactly.

0.3.3

2026-05-19

Rust reliability sprint — data integrity and performance.

  • Four database operations that previously wrote one row at a time are now wrapped in transactions — an interrupted scan or force-quit can no longer leave the database in a partial state.
  • Scan progress tracking is now lock-free, reducing contention during large inbox scans.
  • Per-message domain matching no longer allocates on the heap — measurable improvement on large inboxes.

0.3.2

2026-05-19

Another 30 senders named, one longstanding misclassification fixed.

  • 30 more domain rules added: Apple Card, Experian, Esurance, OneGuard (Finance); MelMed Center, Vagaro, Otto Vet (Healthcare); FlexMLS, Authentisign (Real Estate); Mercari, Children's Place, PODS, PSA Card, Goldin Auctions (Receipts); swim leagues, Edmentum, Scholastic (Education); Taco Bell (Food); Niantic (Gaming); and more.
  • Disney+ and Peacock now land in Subscriptions — they were previously sorting into Notifications.
  • LastPass, Dropbox, Discord, Shutterfly, CompTIA, and MLB.com added to Notifications.
  • 13 more staffing firm domains recognized in Jobs: XceedSearch, Insight Global, Talener, TalentBurst, and others.
  • Regional ISP email addresses (like socal.rr.com) now correctly match their provider — a bug caused addresses with ISP subdomains to land in Unknown instead of Personal.

0.3.1

2026-05-19

26 more senders recognized across 10 categories.

  • Healthcare: Anthem, SimonMed, Exact Sciences, VSP, Valley Sleep Center, and Guidance Autism added.
  • Finance: Citi, Equifax, Sallie Mae, Barclaycard, Nelnet, and proxy vote platforms added.
  • Travel: Frontier, Southwest, Holland America, Alamo, U-Haul, and Carrier added.
  • Jobs: Glassdoor and 12 staffing firm domains added.
  • Education, Utilities, Receipts, Food, Notifications, and Real Estate each received additional domain rules.

0.3.0

2026-05-19

A new look for your inbox, built around how you actually clean.

  • The inbox view has a new tab strip at the top — Inbox, Insights, and Trash History are one click away instead of buried in a sidebar.
  • Four stat cards now sit at the top of every category view: total senders, never-opened percentage, emails active in the last 90 days, and the single heaviest sender by email count.
  • The left category panel is wider and cleaner, with the Protected count visible at a glance.
  • The "Clean all" action is now styled in Ciela's sage color instead of red — intentional calm for a consequential action.
  • Keyboard navigation through the sender list now works with Arrow, Page Up/Down, Home, and End keys.
  • 13 additional domain rules: staffing firms, Zendesk, CVS Pharmacy, Naviance, Chewy, Tango, AYSO, and Shutterfly school notifications.
v0.2.57 · May 2026

Fewer Unknowns.

Ciela now recognizes more of your inbox. Retailers, staffing firms, healthcare providers, and notification platforms that previously landed in the Unknown pile are sorted correctly — so your category counts are more accurate and bulk-clean decisions are safer to make.

Download v0.2.58 for Windows
VirusTotal scan — v0.2.58 · 4 heuristic flags from unsigned binary, 67 clean
2 updates in this release

0.2.58

2026-05-19

Wait screen restored; more classifier improvements.

  • The scan waiting screen is back. Senders no longer appear while a scan is still in progress — the inbox reveals itself when the scan completes, so you're never cleaning on partial data.
  • 11 more domain rules added: Pinterest, Memrise, and Tapjoy → Notifications; Hand & Stone, Cobblestone Vet, and PTN → Healthcare; StartWire, RSR IT, JobSerious, Prosum, and Mondo → Jobs; Costco Photo Center → Receipts.

0.2.57

2026-05-18

More of your inbox recognized, less left as Unknown.

  • Walmart, Kohl's, eBay, and Audible emails now correctly sort into Receipts — order confirmations and purchase notices from these senders will no longer land in the Unknown pile.
  • Trading Card Database (tcdb.com) notifications now sort into Notifications.
  • Zion Partners recruiting emails now sort into Jobs.
v0.2.54 — v0.2.56 · May 2026

Open by Default.

Ciela now shows your inbox as it builds — senders appear live as each page of email is scanned, so you're never staring at a spinner waiting for results before you can act. Domain names appear on every sender row. And the Connect screen now says plainly what Ciela reads — and what it never touches.

Download v0.2.56 for Windows
VirusTotal scan — v0.2.56 · superseded by v0.2.57
3 updates in this release

0.2.56

2026-05-18

Your inbox builds in real time, page by page.

  • Senders appear in your inbox as Ciela scans — after the first 10% of your mailbox is processed, results start populating immediately. No more waiting for a fully complete scan before you see anything.
  • The "Scan complete" splash is gone. When the scan finishes, you're already looking at your inbox with the full results there.
  • If Ciela is closed or crashes mid-scan, the partial results already saved to your local database are not lost — they'll be there when you reopen.

0.2.55

2026-05-18

An honest first impression.

  • The Connect screen now states exactly what Ciela reads: sender addresses, subject lines, and the first ~150 characters Gmail already shows in your inbox list. Full email bodies and attachments are never downloaded.
  • The scan time estimate has been corrected — "5–20 minutes depending on inbox size" replaces an earlier estimate that alarmed first-time users.

0.2.54

2026-05-18

See where every sender comes from.

  • The domain of each sender now appears as a second line in the inbox list — "Amazon" becomes "Amazon · amazon.com." — making it easy to spot when two different display names are actually the same company.
  • The same domain label appears in the sender detail header.
v0.2.30 — v0.2.52 · May 2026

Categories & Control.

Twenty-one classifier categories — up from thirteen — and a Trash History panel that gives you 24 hours to undo any cleanup. Eight new categories cover Government, Utilities, Jobs, Faith, Dating, Real Estate, Gaming, and Gambling. A dedicated Trash History section in the left nav lists every cleanup from the last 24 hours, with an Undo button for each.

Download v0.2.52 for Windows
VirusTotal scan — v0.2.52 · 3 heuristic flags from unsigned binary, 68 clean
24 updates in this release

0.2.52

2026-05-18

Installer fix and category volume bars.

  • Uninstalling Ciela now cleans up its saved credentials from Windows. Previously, reinstalling after an uninstall would find the old token and skip the connect screen, landing on an empty inbox.
  • Each category in the left nav now shows a thin bar at the bottom of its row proportional to how much of your inbox it holds — the largest category gets a full bar, everything else scales relative to it.

0.2.51

2026-05-18

Trash History — a dedicated panel to review and undo every cleanup.

  • A new Trash History section appears in the left nav, below Insights. It lists every trash operation from the last 24 hours: sender (or category), email count, and time elapsed.
  • Each entry has an Undo button. Tapping it sends those emails back to your inbox and removes the entry from the list.
  • A slim banner at the top of the inbox list shows how many operations are available to undo and links directly to the history panel.
  • After a successful undo, Ciela notes that emails permanently deleted from Gmail outside the app cannot be recovered.
  • A failed undo stays in the list so you can retry. The error reason is shown alongside the entry.

0.2.50

2026-05-18

Undo now records every trash path — including Trash Unprotected in sender detail.

  • Trashing from the sender detail "Trash Unprotected" button was not recording the operation for undo. Any cleanup done from that view was invisible to the undo log. Now all trash paths write to the same record.

0.2.49

2026-05-18

Faith category refined — no longer catches job titles.

  • Faith keywords were matching senders with job titles containing words like "ministry" or "mission" that had nothing to do with religious organizations. The keyword list is now narrowed to reduce false positives.

0.2.48

2026-05-18

Classifier domain coverage expanded.

  • Four additional domain rules added across existing categories — catching known senders that were previously landing in Unknown despite fitting a clear category.

0.2.47

2026-05-18

Seven new classifier categories — Utilities, Jobs, Faith, Dating, Real Estate, Gaming, and Gambling.

  • Utilities covers electric, gas, water, internet, and phone providers.
  • Jobs covers job boards, recruiters, and career platforms like LinkedIn job alerts, Indeed, and ZipRecruiter.
  • Faith covers religious organizations, churches, temples, and faith-based communities.
  • Dating covers apps and relationship platforms.
  • Real Estate covers listing services, mortgage lenders, and rental platforms.
  • Gaming covers game studios, platforms, and esports.
  • Gambling covers casinos, sports betting apps, and lottery services.

0.2.46

2026-05-18

Government category added; Amazon order emails reclassified.

  • A new Government category catches federal, state, and local agency email — .gov domains, county offices, and government-adjacent nonprofits.
  • Amazon "Your order has shipped" and "Order placed" emails now land in Receipts & Orders instead of Notifications.

0.2.45

2026-05-17

The app now waits for you — and asks before it acts.

  • When a scan finishes, the results screen stays on screen until you choose to continue. Previously Ciela advanced automatically after a few seconds, which didn't leave much time to look at the summary.
  • The Disconnect button now asks you to confirm before logging you out. One extra click prevents an accidental disconnect mid-session.
  • When a search or category filter returns no senders, a "Clear filters" link appears alongside the empty state. No more hunting for which filter is active — one click and you're back to the full list.
  • Errors that previously vanished silently — a failed trash operation, a reclassify that didn't take — now surface as on-screen messages so you know something needs attention.
Technical notes
  • Credential store writes now fail hard. If the OS rejects a write to Windows Credential Manager, the OAuth refresh token or database encryption key is not stored at all — there is no silent plaintext fallback path.
  • Email address validation is now enforced inside trash_sender_inner as a defense-in-depth measure, independent of caller-side validation.
  • Sender list filtering in ScanView is memoized — eliminates recomputation on unrelated state changes for large inboxes.
  • TRASH_DATE_OPTIONS extracted to constants.ts. SenderDetailView detail state converted to a typed discriminated union; null and string sentinels removed. Subject clustering logic moved to src/utils/clustering.ts.

0.2.44

2026-05-17

Scan checkpoint moved to the encrypted database — mid-scan progress now survives an app restart.

  • Previously, closing Ciela mid-scan left a plain JSON checkpoint file on disk. The checkpoint is now written to the same encrypted database as all other data, so your scan position is protected by the same key that guards your inbox data. If the app is closed or crashes during a long scan, the next launch will resume from exactly where it left off.

0.2.43

2026-05-17

Silent failures now log warnings.

  • Six internal bookkeeping paths that previously swallowed errors silently now emit log warnings. The primary operation still completes — these are housekeeping calls that run after the fact — but failures are now visible rather than invisible.

0.2.42

2026-05-17

Food & Dining — a new classifier category.

  • Ciela now has thirteen categories. Food & Dining covers food delivery platforms (DoorDash, Uber Eats, Grubhub, Instacart), restaurant reservation services (OpenTable, Resy, Tock), meal kit subscriptions (HelloFresh, Blue Apron, Factor, Sunbasket), and major restaurant loyalty programs (Starbucks, Chipotle, Domino's, Pizza Hut, Chick-fil-A). A DoorDash order confirmation now lands in Food & Dining rather than Receipts.
  • Restaurant reservations from smaller restaurants not in the domain list are caught by subject keywords ("your table for", "table is confirmed") that don't overlap with hotel reservation subjects.

0.2.41

2026-05-17

Smarter classifier coverage.

  • Two new last-resort rules now fire when no domain list, keyword, or header rule matched. The domain keyword fallback catches senders like updates@unitedhealthcare.com or no-reply@chasemortgage.com that previously landed in Unknown. The display name fallback does the same for senders like "Chase Bank" or "Wellness Clinic". Both strip TLD suffixes first to avoid false positives.

0.2.40

2026-05-17

Scan progress bar now tells the truth.

  • The progress bar previously used your total Gmail message count as its denominator — which includes Sent, Drafts, Trash, and Spam. On large accounts this made it look stuck near the end for minutes. It now uses your inbox count only, so the percentage reflects what's actually being scanned.

0.2.39

2026-05-17

Changed your mind? Undo a cleanup.

  • A "Recently cleaned" drawer on the Dashboard lists every trash operation from the last 24 hours. Each entry shows the sender (or "All [Category]" for category-wide cleans), email count, and time elapsed.
  • Each entry has an Undo button. Tapping it restores those emails to your inbox, then shows a prompt to rescan so Ciela's local counts stay accurate.

0.2.38

2026-05-17

Scan ETA and lifetime impact panel.

  • The scanning screen now shows a time-remaining estimate alongside the elapsed time — "~3 min left", "~45s left", or "almost done". Appears after 30 seconds, on full scans only.
  • The dashboard now includes a "Since you started" section showing total emails moved to trash, confirmed unsubscribes, senders managed, and your first scan date — all drawn from the local database.

0.2.37

2026-05-17

Database safety and scan reliability improvements.

  • Schema migration is now fully atomic — all steps commit together or roll back entirely. A crash mid-migration can no longer leave the database in a half-migrated state.
  • Downgrades are now safe — if a newer version of Ciela created your database, an older version will show a clear message instead of silently dropping your data.
  • Token refresh during long scans is now proactive — the app refreshes your session before it expires rather than waiting for a failed request to trigger one.
Technical notes
  • Migration sequence wrapped in a single Immediate transaction. Schema version is only written after all steps succeed; partial completion previously left the DB at a new version number with tables missing.
  • Future-schema guard added: init_schema returns an explicit error when stored version exceeds the build version, rather than silently dropping the senders table.
  • seconds_to_year replaced with chrono::DateTime::from_timestamp; the hand-rolled arithmetic had an off-by-one near year-end leap seconds.
  • GmailClient::execute() now checks expires_at before each request and proactively refreshes within a 60-second window.

0.2.36

2026-05-16

Reliability and correctness fixes.

  • All commands — scan, trash, triage, sign-in — now share a single HTTP connection pool. Previously a new pool was created per command, paying handshake cost on every invocation.
  • Schema migration now fails safely if the database is in an unexpected state, instead of silently marking the migration complete and leaving the schema broken.
Technical notes
  • PRAGMA table_info('senders') checked before ALTER TABLE; column is only added if absent. Previously used let _ = ALTER TABLE to silently discard all errors including non-"column exists" failures.
  • 401 retry path now fails explicitly on non-retryable (streaming) bodies rather than defaulting to an empty body and silently sending a malformed request.
  • split_once('@').unwrap() in validate_sender_email replaced with .ok_or_else(|| ...)? — locally safe regardless of surrounding preconditions.
  • reqwest::Client constructed once in AppStateInner::default() and cloned into each GmailClient and OAuth exchange.

0.2.35

2026-05-16

Internal code quality pass — no user-facing changes.

  • Shared helpers for database access and Gmail client creation extracted into a common module, removing ~60 lines of repeated boilerplate. Insights panel extracted into its own self-contained component. Audit log now covers partial-protect trashes.

0.2.34

2026-05-16

Right-click menu removed; age filter values confirmed in sync.

  • The browser default right-click context menu is now suppressed throughout the app.
  • The "Older than" filter options in the UI are confirmed to exactly match the values the backend validates — the two now carry cross-reference comments to stay in step.

0.2.33

2026-05-16

Visual polish — consistent button colors, larger stats text, accessible charts.

  • Destructive action buttons are now a consistent red across all screens — previously five components each used a slightly different shade.
  • The stats grid in Sender Detail now uses a larger font size — easier to read at a glance.
  • Velocity and inbox history charts now carry accessible labels for screen readers.

0.2.32

2026-05-16

Housekeeping — no user-facing changes.

  • Category override logic refactored to a single call path. The "cached · N ago" age label is now computed from a single shared helper used across all panels.

0.2.31

2026-05-16

Scan performance — approximately 4× faster on large mailboxes.

  • Rate limiter corrected to 200 requests/second — the Gmail API charges 1 quota unit per message (not 5 as previously assumed), so prior versions were running at roughly 20% of available throughput.
  • Concurrent batch fetching increased from 5 to 10 parallel requests. Lock contention during scanning also reduced significantly.

0.2.30

2026-05-16

Security hardening — four meaningful improvements to how Ciela protects you.

  • Unsubscribe buttons now show the destination domain in a confirmation dialog before opening any external link. You see exactly where you're going before you go there.
  • Bulk-delete actions (Empty Trash, Clear Spam) now require typing DELETE in a text field before the button activates — prevents accidental mass deletion.
  • Activity log in Settings tracks every trash and clean operation with a timestamp and outcome. See exactly what Ciela has done.
  • Your OAuth sign-in token and database encryption key are now stored in Windows Credential Manager — the same secure store used by browsers and system apps. Existing installations migrate automatically on first launch.
Technical notes
  • Unsubscribe URL host extracted and shown in a modal before open::that() is called. RFC-1918 and loopback rejection already in place from v0.1.1; this adds user-visible confirmation.
  • Empty Trash / Clear Spam confirm modal requires the literal string DELETE typed by the user before the confirm button becomes active. Input compared with ===, not trimmed.
  • Audit log written to audit_log table (schema v11) on every trash_sender, trash_category, empty_label, and triage operation. Fields: timestamp, operation type, sender scope, outcome, email count.
  • OAuth refresh token and DB encryption key migrated from plain-text files (ciela.token, ciela.key) to keyring::Entry::new("ciela", …). Legacy files deleted after successful migration. Tauri Stronghold was evaluated and blocked on Windows 10 Home; OS keyring used instead.
v0.2.27 — v0.2.29 · May 2026

Sort & Rescue.

The triage update. Flag one email you want to keep, and Ciela surfaces the whole cluster — every similar subject from that sender — so you can rescue a group before trashing the rest. Plus a critical fix for a persistence bug that was wiping scan data on some Windows installations, and 33 new classifier rules that put more familiar senders in the right place.

Download v0.2.29 for Windows
3 updates in this release

0.2.29

2026-05-16

Category pill polish and navigation fixes.

  • Category pill now renders correctly for all thirteen categories — Personal, Security, Healthcare, Notifications, and Unknown were showing as plain text instead of a colored badge.
  • Clicking a category in the left rail while viewing a sender now navigates to that category correctly.
  • Category pill shows a permanent dropdown caret so the reclassify affordance is always visible, not just on hover.

0.2.28

2026-05-16

Sort & protect triage, smarter clustering, and 33 new classifier rules.

  • New Sort & protect mode in sender detail — flag one email to keep, Ciela surfaces the full cluster of similar subjects, you confirm what to protect, then trash everything else at once.
  • After protecting a cluster, Ciela checks for similar groups and asks if you want to keep those too.
  • Category reclassify dropdown now opens inline at the pill — no separate "Move to…" button.
  • Subject normalization: price-drop and shipping emails now cluster correctly — "5% price drop on Bag A" and "5% price drop on Bag B" map to the same group.
  • 33 new sender classification rules across Healthcare, Finance, Education, and Notifications.

0.2.27

2026-05-14

Persistence fix — no more rescans, no more re-authentication.

  • Your scan data and Gmail connection now persist correctly across app restarts. A Windows credential storage issue was causing the app to wipe its database and forget your Google account on every launch.
  • The inbox count in the storage breakdown now shows your actual scanned email count instead of Gmail's API estimate, which could underreport by 60–70% on large mailboxes.
  • Scans are now correctly scoped to your inbox only — previously, sent mail and archived mail could be included.
  • Clicking the category label on a sender's detail page now takes you directly to that category.
v0.2.19 — v0.2.26 · May 2026

Know Your Senders.

Tap any sender name to see everything: their full email history, how often you've opened something, a year-by-year engagement chart, and up to 500 recent subjects. Reclassify one sender and Ciela offers to fix all the similar ones at the same time. Storage stats now work offline — cached after your first fetch, shown with a quiet "N min ago" label when stale.

8 updates in this release

0.2.26

2026-05-13

Unsubscribe confirmation notice.

  • After you click Unsubscribe on any sender, a small notice now confirms the link opened in your browser and reminds you to confirm in the email you receive.

0.2.25

2026-05-13

Clearer labels throughout.

  • The "Inactive Subscriptions" section is now called Dormant Subscriptions — a more accurate name for newsletters you stopped reading months ago.
  • The engagement heat indicator now shows a frequency range alongside each label — "Cold (<1/mo)", "Warm (4–15/mo)", and so on — so you know exactly what each level means.

0.2.24

2026-05-13

Cleaner actions, live counts.

  • Bulk-action buttons now read "Move all X to Trash" instead of "Clean all X" — no ambiguity about where emails go.
  • Hovering a protected sender now shows a short explanation of why it's locked.
  • A guard prevents accidentally submitting the same trash action twice when the network is slow.

0.2.23

2026-05-13

Storage stats available offline.

  • The "What's Taking Up Space" panel now works even when Ciela can't reach Gmail. After the first successful fetch, the numbers are saved locally. If you open Ciela offline or with an expired session, the cached figures appear with a small "cached · N min ago" label. The error state only shows when no cached data exists at all.

0.2.22

2026-05-13

Clean related senders in one step.

  • After you reclassify a sender, Ciela checks for other senders sharing the same root domain. If any are found, a prompt lists them all pre-checked: "3 similar senders found — move them to Finance too?" Uncheck any you want to keep, then apply to the rest in one click.

0.2.21

2026-05-13

Sender detail view.

  • Clicking any sender name opens a full-screen detail panel. You'll see total email count, unread count, open rate, first and last message dates, and a year-by-year engagement chart (received vs. opened). Scroll down for up to 500 recent subjects. From here you can unsubscribe, protect the sender, or move them to Trash with the usual date-scope options.

0.2.20

2026-05-13

Inbox history chart.

  • The Dashboard now shows a bar chart of email volume by year, built from the timestamps of every message in your inbox. Bars cover every calendar year from your oldest email to the present. The chart appears automatically after your first full scan.

0.2.19

2026-05-12

Accurate counts, more reliable scanning.

  • The "What's Taking Up Space" panel now pulls your inbox size directly from Gmail, so the number reflects reality — not just what Ciela has scanned so far.
  • Clicking "Stop scanning" now immediately shows "Stopping…" — no more wondering whether the click registered.
  • Stopping a scan and then clicking Rescan now kicks off a proper full scan. Previously it would complete instantly with no new results.
v0.2.10 — v0.2.18 · May 2026

Yours to Control.

Mark senders you never want touched — they're protected from every cleanup. Clean an entire category in one click, with a safety net: if you've opened something from that sender in the last 90 days, Ciela stops to show you before anything moves. Education and Healthcare added as dedicated categories.

9 updates in this release

0.2.18

2026-05-11

Smarter bulk-clean, with a safety net.

  • Before you bulk-clean a category, Ciela now surfaces any senders you've opened in the last 90 days. Protect them one at a time — then clean everything else with a single confirm. No surprises.
  • The date-range picker is now a proper modal with four options: All time, 1 year, 6 months, or 90 days. It shows exactly how many emails will move before you confirm.
  • Batch trash now sends up to 1,000 message IDs per call — ten times the previous limit — so large categories clear noticeably faster.

0.2.17

2026-05-11

Two new categories.

  • Mail from schools, universities, and learning platforms now sorts into a dedicated Education bucket — Canvas, Blackboard, school districts, the lot.
  • Patient portals, appointment reminders, and pharmacy notes now sort into Healthcare — they used to scatter across Notifications and Unknown.
  • A few familiar senders that had been slipping through — PayPal, Venmo, Nextdoor, Reddit, Realtor.com, Fidelity, Mint — now land where you'd expect.

0.2.16

2026-05-06

When Ciela gets a sender wrong, you can put it right.

  • Click any sender's category badge to reclassify it. The change sticks: future scans honour your correction automatically. No retraining, no waiting.

0.2.15

2026-05-06

Faster sender list.

  • If your inbox has thousands of senders, the list opens instantly and scrolls smoothly. We only draw what you can see.

0.2.14

2026-05-06

A proper Settings screen.

  • Find the account you connected, the last time it scanned, the running total — all in one place, all read from your own machine.
  • Pick a default for the "older than" filter so the modals open with your preference already chosen.
  • Disconnect now lives in Settings, with a quiet two-step confirmation so it never happens by accident.

0.2.13

2026-05-06

Protect senders you never want to touch.

  • Mark any sender as protected. They get a small badge, the Trash button greys out, and bulk-cleans skip them automatically.
  • Every cleanup category card now has a "Clean all" — confirms the exact email count, warns you if a sender in there is still active, and lets you pick a date scope before anything moves.

0.2.12

2026-05-06

Clearer warnings before cleaning.

  • When you open a bulk-clean category that contains senders you've opened recently, a small banner says so up top.
  • The trash modal now shows the effective date scope in plain English — "Emails older than 1 year will be moved — recent emails will stay."

0.2.11

2026-05-06

A little more honesty per category.

  • Each category card now tells you whether you actually read mail from these senders. "Most never opened." "62% never opened." Or nothing, if you do read them.
  • The trash modal shows the sender's display name and the exact email count it's about to move.

0.2.10

2026-05-06

Quieter security work.

  • When you disconnect, access tokens are now wiped from memory immediately, not just dereferenced. A small thing nobody will notice — which is the point.
  • The Connect screen now explains itself while it waits: "A browser window just opened — approve the connection there to continue."
v0.2.1 — v0.2.9 · May 2026

The Full Picture.

Your inbox turned into a dashboard. See every category, its size, and how engaged you really are with each one. Dormant subscriptions surface themselves. Unsubscribe tracking tells you whether it actually worked. And for large mailboxes, scans got dramatically faster — without you doing a thing.

9 updates in this release

0.2.9

2026-05-05

A long list of small comforts.

  • A brief "Scan complete" page after every scan, so you know what just happened before you land on the Dashboard.
  • Stop scanning mid-run. The next scan picks up where you left off.
  • Unsubscribe appears inline on any sender row that supports it.
  • A sort dropdown on the sender list — most emails, never opened, oldest unread, most recently seen.
  • The "Older than" filter moved out of the modal and into the toolbar, defaulting to one year.
  • Your search and sort are now remembered across navigation; no more losing your place mid-cleanup.
  • Disconnect moved into a quiet gear menu.

0.2.8

2026-05-05

Now you can see where the space goes.

  • A new "What's Taking Up Space" panel on the Dashboard explains the gap between what Gmail counts and what Ciela has scanned: active mail, Trash, Spam, and the long tail of chats and drafts that don't look like email.
  • Empty Trash and Clear Spam are right there too — with a firm confirmation before anything goes.
  • Scans no longer silently lose a batch when Gmail blinks; they retry a few times first.

0.2.7

2026-05-04

Unsubscribe, and find out whether it worked.

  • When you click Unsubscribe from a Dormant Subscription, Ciela remembers it. On the next scan it checks: did they stop? You'll see "Unsubscribed", then "Confirmed" if they went quiet — or "Still sending" if they didn't, with the button right back where it was.

0.2.6

2026-05-04

Every sender row admits how you actually treat it.

  • "Never opened." "Actively read." "Last read 8 months ago." It's on the row now. No clicks required.
  • If a sender is one you've opened recently and you go to trash them anyway, the modal pauses to say so. You can still do it. We just want you to mean it.

0.2.5

2026-05-04

The Dashboard arrives.

  • Three panels: an overview of every category with its size, a list of Dormant Subscriptions you haven't opened in months, and a small chart of how your inbox has grown over time. Clicking any category card jumps straight into that part of the sender list — pre-filtered, no detour.

0.2.4

2026-05-04

Tidied house.

  • A counting bug that made "unread" totals climb across scans is fixed. The number you see now is what your inbox actually has.

0.2.3

2026-05-04

Foundations for engagement-aware cleaning.

  • Every scan now records, per sender, whether you read anything and when. This is what powers Dormant Subscriptions, the engagement labels on every row, and the velocity chart on the Dashboard.

0.2.2

2026-05-04

Amazon-the-receipt and Amazon-the-marketing are two different things.

  • Senders that send you several kinds of mail now appear as separate rows — one per type. You can trash the marketing without ever touching the order confirmations. Ciela re-checks every message against its category at the moment of trashing, so a Finance email from the same sender is never caught up in a marketing sweep.

0.2.1

2026-04-29

Scans got faster, and quieter.

  • After your first scan, every later one only checks what's arrived since. New senders merge in; the rest stay put.
  • Under the hood, Ciela now asks Gmail in batches instead of one-message-at-a-time — much less back-and-forth.
  • The "N senders found!" pop-ups are gone. Finding junk is not an achievement worth celebrating.
v0.1.0 — v0.2.0 · April 2026

First Light.

The first version of Ciela. Connect Gmail, scan the inbox, see every sender classified into one of nine plain-language categories, and move what you don't want to Trash — without leaving your computer. Scan results save to an encrypted local database so you don't start over every time you open the app.

5 updates in this release

0.2.0

2026-04-28

Ciela learns to remember.

  • Scan results now save to an encrypted database on your computer. Restart the app and your sender list is there before the new scan finishes.
  • You stay signed in across restarts — no more reconnecting to Gmail every time.
  • The Connect screen is now a single button. We carry the credentials so you don't have to.

0.1.3

2026-04-29

One stubborn bug, gone.

  • A rare condition where an interrupted scan would loop forever on the next launch is fixed. If it ever happened to you, it won't again.

0.1.2

2026-04-28

Tests, tests, tests.

  • No visible changes this release. Behind the scenes, we wrote enough tests that we now trust ourselves to ship faster without breaking your inbox.

0.1.1

2026-04-28

A quiet security pass.

  • A careful read of the OAuth flow, the Gmail query string, and every place we handle a URL. A handful of small holes patched, none ever exploited. The kind of work you only notice in its absence.

0.1.0

2026-04-28

First light.

  • The first build of Ciela. Connect Gmail, scan the inbox, classify every sender into one of nine plain-language categories, and move what you want to Trash. Resume an interrupted scan. Filter by category, search by name, decide a sender at a time.
  • Everything local. Everything reversible. Everything free.