| Age | Commit message (Expand) | Author | Files | Lines |
| 2026-08-07 | feat(ui): add a Maildir overview under Help | Danilo M. | 5 | -0/+199 |
| 2026-08-07 | feat(ui): make Escape deselect the row as well as blank the pane | Danilo M. | 2 | -1/+45 |
| 2026-08-07 | feat(ui): fill the blank message pane with a branded placeholder | Danilo M. | 9 | -3/+596 |
| 2026-08-07 | feat(ui): show each thread's tags under its row | Danilo M. | 8 | -43/+480 |
| 2026-08-07 | fix(ui): tell read threads from unread without relying on bold | Danilo M. | 5 | -8/+109 |
| 2026-08-07 | fix(ui): the message pane follows the desktop theme | Danilo M. | 4 | -14/+153 |
| 2026-08-07 | feat(tags): mark every thread in the view read, in one undoable step | Danilo M. | 3 | -0/+105 |
| 2026-08-07 | feat(sync): the status bar says which account is syncing | Danilo M. | 4 | -7/+242 |
| 2026-08-07 | fix(mime): a body part carrying a Content-Id no longer renders blank | Danilo M. | 1 | -1/+8 |
| 2026-08-07 | fix(tags): the Remove field suggests only tags the selection has | Danilo M. | 1 | -2/+17 |
| 2026-08-06 | fix(ui): one Sync control, and a query bar that looks finished | Danilo M. | 2 | -30/+60 |
| 2026-08-06 | test: stop two tests depending on the machine they run on | Danilo M. | 2 | -1/+28 |
| 2026-08-06 | fix(sync): hold tag edits made during a background sync | Danilo M. | 4 | -3/+179 |
| 2026-08-04 | fix(sync): count unsynced edits as net state, not as writes | Danilo M. | 2 | -10/+76 |
| 2026-08-04 | feat(ui): make Delete a toggle, and expire transient status messages | Danilo M. | 2 | -11/+91 |
| 2026-08-04 | fix(ui): name the default button on the quit prompt | Danilo M. | 1 | -0/+9 |
| 2026-08-04 | feat(ui): disable Sync during a background sync, and blank the pane on Esc | Danilo M. | 3 | -7/+71 |
| 2026-08-04 | fix(sync): stop a local sync reporting itself as a background one | Danilo M. | 2 | -10/+38 |
| 2026-08-04 | feat(sync): notice syncs this window did not start | Danilo M. | 5 | -0/+306 |
| 2026-08-04 | feat(ui): make multi-select discoverable and stop it opening threads | Danilo M. | 3 | -0/+174 |
| 2026-08-04 | docs: scrub account names from comments, tests and fixtures | Danilo M. | 1 | -2/+2 |
| 2026-08-04 | feat(sync): dismissable log pane, progress bar, and a skip that is not a failure | Danilo M. | 2 | -6/+112 |
| 2026-08-04 | fix(tags): complete every tag in the list, not only the first | Danilo M. | 1 | -1/+70 |
| 2026-08-04 | feat(tags): add an Edit tags dialog on Ctrl+T | Danilo M. | 6 | -0/+389 |
| 2026-08-04 | feat(sync): show unsynced edits and offer to sync on exit | Danilo M. | 4 | -18/+214 |
| 2026-08-04 | feat(threads): mark an opened thread read after a delay | Danilo M. | 4 | -0/+135 |
| 2026-08-04 | feat(message): show From/To/Cc and add a details dialog | Danilo M. | 4 | -5/+132 |
| 2026-08-04 | feat(completion): size the description column by need, not by half | Danilo M. | 1 | -7/+26 |
| 2026-08-04 | fix(query): let the query bar keep Return instead of open_thread | Danilo M. | 2 | -5/+55 |
| 2026-08-04 | fix(completion): stop the key filter handing itself the key it forwards | Danilo M. | 2 | -1/+18 |
| 2026-08-04 | fix(completion): filter keys on the application, not the line edit | Danilo M. | 2 | -3/+62 |
| 2026-08-04 | fix(completion): drive the popup instead of QLineEdit::setCompleter | Danilo M. | 2 | -6/+66 |
| 2026-08-04 | feat(completion): wire query completion into the main window | Danilo M. | 4 | -1/+99 |
| 2026-08-04 | feat(completion): render the popup with descriptions | Danilo M. | 2 | -0/+246 |
| 2026-08-04 | feat(completion): select candidates per context | Danilo M. | 2 | -0/+113 |
| 2026-08-04 | feat(config): add completion_on_focus and extra_mimetypes | Danilo M. | 2 | -0/+49 |
| 2026-08-04 | keymap: register complete_query bound to Ctrl+Space | Danilo M. | 1 | -0/+5 |
| 2026-08-04 | feat(completion): add the prefix, date and mimetype vocabularies | Danilo M. | 3 | -0/+107 |
| 2026-08-04 | feat(worker): list every tag in the database | Danilo M. | 2 | -0/+27 |
| 2026-08-04 | feat(completion): complete both bounds of a date range | Danilo M. | 2 | -7/+63 |
| 2026-08-04 | feat(completion): complete nothing inside a quoted literal | Danilo M. | 1 | -0/+15 |
| 2026-08-04 | feat(completion): recognise value context after a prefix | Danilo M. | 1 | -4/+14 |
| 2026-08-04 | feat(completion): add the query cursor-context tokenizer | Danilo M. | 3 | -0/+107 |
| 2026-08-04 | feat(about): custom About dialog with icon, copyright and project link | Danilo M. | 1 | -7/+46 |
| 2026-08-04 | feat: make attachments reachable from the message pane | Danilo M. | 4 | -2/+347 |
| 2026-08-04 | feat: show a paperclip for threads with attachments | Danilo M. | 4 | -2/+69 |
| 2026-08-04 | feat: choose the startup query by name | Danilo M. | 3 | -2/+60 |
| 2026-08-04 | feat: own the message-pane zoom and persist it | Danilo M. | 6 | -1/+198 |
| 2026-08-04 | feat: persist window, splitter and column widths | Danilo M. | 2 | -5/+88 |
| 2026-08-04 | feat: use the application icon | Danilo M. | 3 | -1/+29 |