| Age | Commit message (Expand) | Author | Files | Lines |
| 13 days | feat(rulequery): parse an or-group with trailing exclusions | Danilo M. | 1 | -0/+81 |
| 13 days | feat(rulequery): parse a flat and/or chain | Danilo M. | 1 | -2/+197 |
| 13 days | feat(rulequery): join terms and guard the or-group binding | Danilo M. | 1 | -1/+24 |
| 13 days | docs,rulequery: state the tag quoting rule rather than the test | Danilo M. | 1 | -4/+7 |
| 13 days | feat(rulequery): compile every field and operator | Danilo M. | 1 | -2/+49 |
| 13 days | feat(rulequery): compile a single term | Danilo M. | 3 | -0/+131 |
| 14 days | feat(rules): open the tagging rules from the Message menu | Danilo M. | 3 | -0/+90 |
| 14 days | feat(rules): a dialog to view and edit the tagging rules | Danilo M. | 3 | -0/+440 |
| 14 days | feat(worker): count messages as well as threads | Danilo M. | 2 | -0/+44 |
| 14 days | feat(rules): read and write the shared rule store | Danilo M. | 3 | -0/+317 |
| 2026-08-11 | feat(panes): draw the pane marks from shipped SVGs, not font glyphs | Danilo M. | 13 | -60/+552 |
| 2026-08-11 | feat(sync): sync a tag change automatically after a short delay | Danilo M. | 4 | -1/+132 |
| 2026-08-11 | feat(placeholder): count sent mail and drafts on the blank pane | Danilo M. | 4 | -48/+170 |
| 2026-08-11 | feat(sent): add a Sent view, flat and by recipient | Danilo M. | 11 | -9/+355 |
| 2026-08-11 | feat(config): let the date format on a card be configured | Danilo M. | 8 | -16/+96 |
| 2026-08-11 | feat(ui): give Sync the refresh icon | Danilo M. | 1 | -1/+1 |
| 2026-08-10 | feat(view): follow a background sync without a keystroke | Danilo M. | 6 | -11/+600 |
| 2026-08-10 | feat(view): lift a muted account colour for the accent bar | Danilo M. | 2 | -21/+44 |
| 2026-08-10 | fix(view): indent a flat thread's replies like any other | Danilo M. | 1 | -1/+11 |
| 2026-08-10 | fix(ui): expand flat threads, reach the first message, localise the date | Danilo M. | 6 | -24/+187 |
| 2026-08-10 | fix(view): stop clipping the date, and make the accent bar visible | Danilo M. | 3 | -25/+56 |
| 2026-08-10 | feat(ui): let the user choose newest or oldest first | Danilo M. | 3 | -2/+57 |
| 2026-08-10 | feat(ui): step by index, and give thread stepping a second binding | Danilo M. | 3 | -17/+73 |
| 2026-08-10 | refactor(view): stop the view painting, and hit-test the reply count | Danilo M. | 3 | -348/+68 |
| 2026-08-10 | feat(view): paint the whole card in one delegate | Danilo M. | 5 | -281/+282 |
| 2026-08-10 | refactor(model): collapse the thread list to a single column | Danilo M. | 2 | -111/+82 |
| 2026-08-10 | feat(view): compute a card's geometry with no painting | Danilo M. | 3 | -0/+239 |
| 2026-08-10 | feat(worker): let a query choose newest or oldest first | Danilo M. | 2 | -3/+20 |
| 2026-08-10 | feat(model): expose the tags a reply has and its thread does not | Danilo M. | 2 | -0/+57 |
| 2026-08-10 | feat(ui): scope actions to the selected row kind and name it | Danilo M. | 4 | -28/+221 |
| 2026-08-10 | feat(ui): render a single message when its row is selected | Danilo M. | 4 | -0/+117 |
| 2026-08-10 | feat(ui): mark replies with a thread line, a tint and dimmer text | Danilo M. | 4 | -6/+188 |
| 2026-08-10 | fix(ui): make the expander visible and the reply indent readable | Danilo M. | 6 | -4/+102 |
| 2026-08-10 | feat(ui): load a thread's replies when its row is expanded | Danilo M. | 4 | -0/+86 |
| 2026-08-10 | refactor(view): make ThreadListView a QTreeView for message rows | Danilo M. | 4 | -35/+129 |
| 2026-08-10 | feat(model): resolve action scope from the selected row kind | Danilo M. | 3 | -0/+70 |
| 2026-08-10 | feat(model): expose a thread's replies as child rows | Danilo M. | 2 | -5/+153 |
| 2026-08-10 | refactor(model): convert ThreadListModel to QAbstractItemModel | Danilo M. | 2 | -14/+102 |
| 2026-08-10 | feat(worker): load a thread as a reply tree with per-message depth | Danilo M. | 4 | -0/+113 |
| 2026-08-10 | feat(types): add MessageNode for message rows in the thread list | Danilo M. | 1 | -0/+31 |
| 2026-08-09 | fix(ui): stop a restored splitter position collapsing the message pane | Danilo M. | 2 | -0/+19 |
| 2026-08-09 | fix(config): report an out-of-range message_zoom | Danilo M. | 1 | -2/+17 |
| 2026-08-09 | fix(ui): give Archive its own icon | Danilo M. | 1 | -1/+4 |
| 2026-08-09 | feat(ui): make the toolbar icon size configurable | Danilo M. | 3 | -0/+59 |
| 2026-08-09 | feat(ui): icons on every action, and rename Flag to Important | Danilo M. | 2 | -5/+50 |
| 2026-08-09 | fix(sync): clear the pending-edit count on a cron sync | Danilo M. | 6 | -2/+139 |
| 2026-08-07 | feat(sync): sync only the accounts with unsynced edits | Danilo M. | 8 | -6/+149 |
| 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 |