| Age | Commit message (Expand) | Author | Files | Lines |
| 13 days | docs: never run test binaries without the offscreen platform | Danilo M. | 1 | -1/+19 |
| 13 days | test(mainwindow): stop the suite reading the real kernel lock table | Danilo M. | 3 | -4/+107 |
| 13 days | release: 0.16.0v0.16.0 | Danilo M. | 2 | -1/+11 |
| 13 days | docs: record the one coupling between qtmaildir and mailctl | Danilo M. | 1 | -0/+60 |
| 13 days | docs(backlog): record item 44 as done | Danilo M. | 3 | -1/+102 |
| 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. | 3 | -0/+105 |
| 14 days | feat(rules): read and write the shared rule store | Danilo M. | 5 | -0/+563 |
| 14 days | docs(plans): implementation plan for the shared tagging rules | Danilo M. | 1 | -0/+2955 |
| 14 days | docs(backlog): specify item 44 as a shared tagging-rule store | Danilo M. | 2 | -23/+432 |
| 2026-08-11 | feat(panes): draw the pane marks from shipped SVGs, not font glyphs | Danilo M. | 27 | -80/+1183 |
| 2026-08-11 | feat(sync): sync a tag change automatically after a short delay | Danilo M. | 9 | -2/+537 |
| 2026-08-11 | docs(backlog): record item 67 as shipped in 0.15.0 | Danilo M. | 1 | -1/+13 |
| 2026-08-11 | release: 0.15.0v0.15.0 | Danilo M. | 2 | -1/+30 |
| 2026-08-11 | feat(placeholder): count sent mail and drafts on the blank pane | Danilo M. | 7 | -48/+470 |
| 2026-08-11 | docs(backlog): reconcile with the user's notes, and settle item 68 | Danilo M. | 1 | -0/+244 |
| 2026-08-11 | feat(sent): add a Sent view, flat and by recipient | Danilo M. | 21 | -26/+1108 |
| 2026-08-11 | docs: specify item 63, sent mail, in its own design file | Danilo M. | 2 | -15/+225 |
| 2026-08-11 | feat(config): let the date format on a card be configured | Danilo M. | 13 | -17/+232 |
| 2026-08-11 | feat(ui): give Sync the refresh icon | Danilo M. | 3 | -1/+71 |
| 2026-08-10 | release: 0.14.0v0.14.0 | Danilo M. | 2 | -1/+16 |
| 2026-08-10 | feat(view): follow a background sync without a keystroke | Danilo M. | 10 | -21/+2299 |
| 2026-08-10 | release: 0.13.0v0.13.0 | Danilo M. | 2 | -1/+36 |
| 2026-08-10 | docs: record the intermittent test_mainwindow failure as item 61 | Danilo M. | 1 | -0/+43 |
| 2026-08-10 | feat(view): lift a muted account colour for the accent bar | Danilo M. | 4 | -21/+180 |
| 2026-08-10 | docs: close items 20, 51, 53 and 60, now that the card list is on master | Danilo M. | 1 | -20/+22 |
| 2026-08-10 | Merge branch 'card-list': the thread pane as a list of cards | Danilo M. | 27 | -847/+4294 |
| 2026-08-10 | fix(view): indent a flat thread's replies like any other | Danilo M. | 2 | -1/+47 |
| 2026-08-10 | fix(ui): expand flat threads, reach the first message, localise the date | Danilo M. | 9 | -30/+388 |
| 2026-08-10 | fix(view): stop clipping the date, and make the accent bar visible | Danilo M. | 4 | -25/+93 |
| 2026-08-10 | docs: record the card list, and correct what CLAUDE.md claims | Danilo M. | 3 | -60/+130 |
| 2026-08-10 | feat(ui): let the user choose newest or oldest first | Danilo M. | 5 | -2/+169 |
| 2026-08-10 | feat(ui): step by index, and give thread stepping a second binding | Danilo M. | 4 | -17/+203 |
| 2026-08-10 | refactor(view): stop the view painting, and hit-test the reply count | Danilo M. | 5 | -793/+311 |
| 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. | 3 | -111/+110 |
| 2026-08-10 | feat(view): compute a card's geometry with no painting | Danilo M. | 5 | -0/+475 |
| 2026-08-10 | feat(worker): let a query choose newest or oldest first | Danilo M. | 3 | -6/+45 |
| 2026-08-10 | feat(model): expose the tags a reply has and its thread does not | Danilo M. | 3 | -0/+126 |
| 2026-08-10 | test(mainwindow): select the flagged-tag row through the tree helper | Danilo M. | 1 | -2/+2 |
| 2026-08-10 | docs: record message rows, and the user's verdict on them | Danilo M. | 2 | -9/+77 |
| 2026-08-10 | feat(ui): scope actions to the selected row kind and name it | Danilo M. | 5 | -28/+431 |
| 2026-08-10 | feat(ui): render a single message when its row is selected | Danilo M. | 6 | -0/+227 |
| 2026-08-10 | feat(ui): mark replies with a thread line, a tint and dimmer text | Danilo M. | 5 | -6/+311 |
| 2026-08-10 | fix(ui): make the expander visible and the reply indent readable | Danilo M. | 7 | -5/+231 |
| 2026-08-10 | feat(ui): load a thread's replies when its row is expanded | Danilo M. | 5 | -0/+127 |
| 2026-08-10 | refactor(view): make ThreadListView a QTreeView for message rows | Danilo M. | 5 | -85/+372 |
| 2026-08-10 | feat(model): resolve action scope from the selected row kind | Danilo M. | 4 | -0/+153 |
| 2026-08-10 | feat(model): expose a thread's replies as child rows | Danilo M. | 3 | -5/+268 |