| Date | Message | Author |
| 2026-09-24 | Spacing: the ladder, not literals — and the compose dialog as a popover plate | Lucas Galante |
| 2026-09-24 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-24 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-24 | Root plate: the toolkit's standard spec, and the edge inset that goes with it | Lucas Galante |
| 2026-09-24 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-24 | Control socket: drive and query the window over `cce-mail ctl` | Lucas Galante |
| 2026-09-24 | Gaps: the window edge inset is the bare padding, like every other gap | Lucas Galante |
| 2026-09-24 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-24 | fix: fit the detail pane's subject and metadata lines to the plate | Lucas Galante |
| 2026-09-24 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-22 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-22 | fix: context menu rows through row_at, the lit-plate paint, and a live text-box menu | Lucas Galante |
| 2026-09-22 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-22 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-22 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-22 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-21 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-21 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-21 | Pin workspace dependencies to GitHub, the crates' origin | Lucas Galante |
| 2026-09-21 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-21 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Repin workspace dependencies to their published revs | Lucas Galante |
| 2026-09-20 | Control faces and inset plates take a Material (cce-ui RFC material, step 2c) | Lucas Galante |
| 2026-09-20 | Google OAuth client comes only from google_client.json | Lucas Galante |
| 2026-09-20 | Sync: one pass at a time, and no deleting mail a pass never saw | Lucas Galante |
| 2026-09-19 | Depend on cce-ui through git.lucas.co, so this crate builds alone | Lucas Galante |
| 2026-09-19 | Bar items: the flat stance, and the trims it makes unnecessary | Lucas Galante |
| 2026-09-19 | Gaps: the bar's top edge lands where the panes' sides do | Lucas Galante |
| 2026-09-19 | Gaps: trim each edge treatment's optical bite | Lucas Galante |
| 2026-09-19 | The rendered message belongs to a renderer, not to the process | Lucas Galante |
| 2026-09-19 | Bar items are plates, faced with the panes' material | Lucas Galante |
| 2026-09-19 | One gap everywhere, the window's rolled rim included | Lucas Galante |
| 2026-09-19 | Both bars: behind a frosted plate, fading to the fore | Lucas Galante |
| 2026-09-18 | List scrollbar: out of sight at rest, not showing through | Lucas Galante |
| 2026-09-18 | List scrollbar: down the plate's centre line | Lucas Galante |
| 2026-09-18 | Detail pane: one padding inside the plate too | Lucas Galante |
| 2026-09-18 | Panes: one uniform gutter, from the DE's own spacing | Lucas Galante |
| 2026-09-18 | Split: no separator line, just the gap between the plates | Lucas Galante |
| 2026-09-18 | Detail pane: a plate too, matching the list | Lucas Galante |
| 2026-09-18 | List: a rounded plate, at the DE's list radius | Lucas Galante |
| 2026-09-18 | Scrollbars: the toolkit's pills, and the standard track inset | Lucas Galante |
| 2026-09-18 | Bar: flush with the plate, not recessed | Lucas Galante |
| 2026-09-18 | Mail menu: cce-icons mail glyph instead of the text dropdown | Lucas Galante |
| 2026-09-18 | fix: context menu labels in the menu font | Lucas Galante |
| 2026-09-11 | Expire info toasts on a deadline, not a dt countdown | Lucas Galante |
| 2026-09-04 | scroll: glide and coast the detail body through cce-ui's ScrollMotion | Lucas Galante |
| 2026-09-01 | scrollbars: designer raise/sink treatment on both panes | Lucas Galante |
| 2026-09-01 | perf: open links and attachments via gio, not xdg-open | Lucas Galante |
| 2026-09-01 | fix: partially clipped message cards render cut, not culled | Lucas Galante |
| 2026-08-31 | fix: adopt an unflagged folder named Archive into the archive slot | Lucas Galante |
| 2026-08-31 | fix: stop guessing Gmail mailbox names for every account | Lucas Galante |
| 2026-08-31 | feat: cid: inline images render in the HTML view | Lucas Galante |
| 2026-08-31 | fix: don't dial out with no password from the background IMAP ops | Lucas Galante |
| 2026-08-31 | fix: say why the HTML fetch fell back to text, and don't dial out with no password | Lucas Galante |
| 2026-08-31 | feat: HTML mail rendering via embedded WPE WebKit | Lucas Galante |
| 2026-08-30 | fix: the open bar dropdowns and the context menu take the keyboard | Lucas Galante |
| 2026-08-23 | feat: browse the account's own folders | Lucas Galante |
| 2026-08-22 | feat: delete is permanent in Trash and All Mail | Lucas Galante |
| 2026-08-22 | feat: arrow keys move the selection, Delete removes and advances | Lucas Galante |
| 2026-08-22 | feat: sync Gmail's All Mail as an Archive folder | Lucas Galante |
| 2026-08-22 | feat: incremental sync by UID — the cache accumulates instead of capping | Lucas Galante |
| 2026-08-22 | fix: re-read the keyring before a sync, and retry until it opens | Lucas Galante |
| 2026-08-22 | fix: Escape closes the search band, not just the query | Lucas Galante |
| 2026-08-22 | feat: search is a band opened with "/"; the compose button goes | Lucas Galante |
| 2026-08-22 | feat: drafts get Edit/Delete in the card menu | Lucas Galante |
| 2026-08-22 | feat: per-message actions move to a card context menu | Lucas Galante |
| 2026-08-22 | feat: retire the detail-pane action bar | Lucas Galante |
| 2026-08-21 | feat: resize cursor over the split separator | Lucas Galante |
| 2026-08-21 | feat: draggable list/detail split | Lucas Galante |
| 2026-08-21 | feat: errors are sticky red toasts; everything mirrors to stderr | Lucas Galante |
| 2026-08-21 | docs: drop the Accounts half of a stale label comment | Lucas Galante |
| 2026-08-21 | refactor: the whole bar is Dropdowns — MenuBar retired | Lucas Galante |
| 2026-08-21 | feat: account switcher is a real Dropdown; the Accounts page retires | Lucas Galante |
| 2026-08-16 | feat: list and open attachments on fetched mail | Lucas Galante |
| 2026-08-16 | feat: Cc/Bcc, attachments, a Drafts folder, and a send path that cannot lose mail | Lucas Galante |
| 2026-08-16 | feat: handle mailto: URLs, and ship a desktop entry claiming the scheme | Lucas Galante |
| 2026-08-15 | rename: cce-email is now cce-mail | Lucas Galante |
| 2026-08-14 | fix: a scrollbar press no longer also clicks the row behind it | Lucas Galante |
| 2026-08-14 | fix: unregister the outgoing email-row buttons before reallocating | Lucas Galante |
| 2026-08-13 | deps: drop glyphon, use cce-ui's cosmic-text re-export | Lucas Galante |
| 2026-08-13 | build: drop the unused raw-window-handle and pollster declarations | Lucas Galante |
| 2026-08-13 | build: drop the wgpu and bytemuck declarations this crate never used | Lucas Galante |
| 2026-08-13 | build: install via ccebuild instead of hand-listing binaries | Lucas Galante |
| 2026-08-13 | fix: spawn cce-system-interface, not the old cce-system-settings name | Lucas Galante |
| 2026-08-10 | Adapt to cce-ui KeyEvent gaining the alt field (synthetic events: alt false) | Lucas Galante |
| 2026-08-06 | fix: pump ui_context.tick — dropdown menus' close animation froze fully open | Lucas Galante |
| 2026-07-27 | feat: sidebar dissolves into the menubar | Lucas Galante |
| 2026-07-27 | feat: menubar — Mail / Message / View | Lucas Galante |
| 2026-07-27 | feat: account passwords live in the Secret Service keyring | Lucas Galante |
| 2026-07-27 | feat: Sent folder sync + recipient-first sent rows | Lucas Galante |
| 2026-07-27 | feat: push read state to the server (\Seen by UID) | Lucas Galante |
| 2026-07-27 | feat: server-side deletes — UID plumbing + shared session opener | Lucas Galante |
| 2026-07-27 | feat: sync on start and folder switch, remember last account | Lucas Galante |
| 2026-07-27 | fix: list rows survive real Gmail data — CRLF snippets + wide dates | Lucas Galante |
| 2026-07-27 | fix: live Mark Read/Unread label + badge and compose-button placement | Lucas Galante |
| 2026-07-27 | fix: compose polish — Reply title + wrapped body quote | Lucas Galante |
| 2026-07-23 | refactor: account management moves to cce-system-settings | Lucas Galante |
| 2026-07-23 | feat: BODYSTRUCTURE-aware fetch — attachments never come down the wire | Lucas Galante |
| 2026-07-23 | feat: wire list keyboard scrolling + scrollbar above rows | Lucas Galante |
| 2026-07-23 | feat: body scrollbar thumb drag | Lucas Galante |
| 2026-07-23 | feat: detail-pane body scrolling (wheel + keys + scrollbar) | Lucas Galante |
| 2026-07-23 | feat: real MIME parsing (mail-parser) + 50-message fetch with server read-state | Lucas Galante |
| 2026-07-23 | fix: char-safe truncation (UTF-8 panic) + word-wrapped detail body | Lucas Galante |
| 2026-07-23 | feat: widget chrome via the paint walk (paint_root_into) — visible chrome everywhere | Lucas Galante |
| 2026-07-23 | fix: register rebuilt list-row buttons immediately + tokio reactor for sync threads | Lucas Galante |
| 2026-07-16 | feat: resolve shortcuts through input.kdl's cce-email domain | Lucas Galante |
| 2026-07-13 | refactor: dispatch roots go by WidgetId (cce-ui plumbing retype) | Lucas Galante |
| 2026-07-12 | refactor: cce-email on routed events (6bd shrink — direct dispatch retired) | Lucas Galante |
| 2026-07-12 | refactor: Element -> WidgetHost (cce-ui 6bd flip) | Lucas Galante |
| 2026-07-12 | refactor: base() Option handling dropped (cce-ui flip part 1) | Lucas Galante |
| 2026-07-11 | refactor: email list scroll frame dissolved — List -> app-owned ScrollRegion (Phase 6as) | Lucas Galante |
| 2026-07-11 | refactor: widget text via the paint walk, not the text_labels getters (Phase 6ao) | Lucas Galante |
| 2026-07-10 | feat: whole frame via display_list (Phase 6ai) — off legacy path; FIXES invisible list/detail text | Lucas Galante |
| 2026-07-09 | chore: Paginator -> Adapted<Paginator> (cce-ui Phase 5r migration) | Lucas Galante |
| 2026-07-09 | chore: TextBox -> Adapted<TextBox> (cce-ui Phase 5q migration) | Lucas Galante |
| 2026-07-08 | refactor: adapt Button fields to the cce-ui Phase 5 migration | Lucas Galante |
| 2026-07-07 | refactor: create FontSystem via cce_ui::create_font_system_with_system_fonts | Lucas Galante |
| 2026-07-07 | refactor: route hardcoded config/font paths through cce_ui XDG helpers | Lucas Galante |
| 2026-07-02 | Refactor ScrollingList to List and fix window decoration blur and styling | Lucas Galante |
| 2026-07-02 | sec: upgrade Google login flow to dynamic PKCE | Lucas Galante |
| 2026-06-25 | Fix target directory path in install command | Lucas Galante |
| 2026-06-24 | Implement ui_context for Application to support default draggable window | Lucas Galante |
| 2026-06-21 | Use cce-ui Paginator widget instead of MenuBar vertical page switcher | Lucas Galante |
| 2026-06-21 | Remove Paginator widget and tab margin spinboxes | Lucas Galante |
| 2026-06-18 | refactor: update dependencies and rename clear-ui to cce-ui | Lucas Galante |
| 2026-06-09 | Refactor and adapt widgets to use UiContext and scale factor | Lucas Galante |
| 2026-06-06 | Update clear-email-interface to adapt to Element trait refactoring (modified: src/main.rs) | Lucas Galante |
| 2026-06-05 | refactor: dynamically position layout components using paginator sidebar width | Lucas Galante |
| 2026-06-04 | Proactively generate google_client.json template on application startup | Lucas Galante |
| 2026-06-04 | Support loading Google OAuth client credentials dynamically from ~/.config/ccec/google_client.json | Lucas Galante |
| 2026-06-04 | Implement guided iCloud Login helper button inside Add Account dialog modal | Lucas Galante |
| 2026-06-04 | Restrict accounts directory permissions to 0700 and accounts.json permissions to 0600 on Unix systems | Lucas Galante |
| 2026-06-04 | Implement click to login in browser for OAuth accounts on Accounts page and update in-place logic | Lucas Galante |
| 2026-06-04 | Implement browser-based OAuth2 login with local redirection server and automatic token refreshing | Lucas Galante |
| 2026-06-04 | Implement Gmail, iCloud, and custom IMAP/SMTP network support with per-account caching and smart domain autofill modal | Lucas Galante |
| 2026-06-04 | feat: add Accounts page to paginator and implement account settings view | Lucas Galante |
| 2026-06-04 | style: remove emojis from paginator tabs and adjust unread badge position | Lucas Galante |
| 2026-06-04 | feat: enable vertical rotated tabs on paginator and narrow sidebar to 56px | Lucas Galante |
| 2026-06-04 | Refactor: Use Paginator widget for sidebar folders navigation | Lucas Galante |
| 2026-06-04 | Initial commit: Clear Email Client using clear-ui | Lucas Galante |