| Age | Commit message (Expand) | Author | Files | Lines |
| 13 hours | fix: give a restored message its inbox tag back | Danilo M. | 1 | -1/+12 |
| 13 hours | fix: correct the avatar initials, the two-tone fill and the fade | Danilo M. | 6 | -51/+166 |
| 14 hours | fix: harden candidate appends and cover the message-row sender roles | Danilo M. | 1 | -2/+11 |
| 14 hours | feat: propose business senders from newly synced mail | Danilo M. | 3 | -0/+86 |
| 15 hours | feat: load the business-senders list at startup | Danilo M. | 2 | -1/+65 |
| 15 hours | feat: draw a sender's avatar on every card | Danilo M. | 2 | -0/+61 |
| 15 hours | feat: fade the account colour across a card | Danilo M. | 2 | -0/+46 |
| 15 hours | feat: expose a row's sender to the delegate | Danilo M. | 4 | -0/+34 |
| 15 hours | feat: reserve a card's avatar gutter | Danilo M. | 2 | -0/+20 |
| 15 hours | feat: propose business-sender candidates, always commented out | Danilo M. | 2 | -0/+111 |
| 15 hours | feat: read the business-senders list | Danilo M. | 3 | -0/+137 |
| 15 hours | feat: paint the avatar squircle from a hashed seed | Danilo M. | 1 | -0/+78 |
| 15 hours | feat: choose an avatar fill and derive its colour | Danilo M. | 1 | -0/+22 |
| 15 hours | feat: derive a sender's avatar initials | Danilo M. | 3 | -0/+156 |
| 15 hours | feat: carry the first message's sender address on a thread summary | Danilo M. | 2 | -0/+78 |
| 17 hours | feat: flag what you answered, mark what was forwarded to you | Danilo M. | 16 | -14/+514 |
| 35 hours | fix: offer Delete and Restore only where they mean something | Danilo M. | 2 | -3/+89 |
| 36 hours | feat: empty the trash, the one action that asks first | Danilo M. | 5 | -0/+256 |
| 37 hours | feat: say which way the unread action will go, and hide it when it cannot | Danilo M. | 3 | -18/+111 |
| 37 hours | feat: number each build of a dev tree | Danilo M. | 5 | -4/+33 |
| 42 hours | fix(worker): reopen the notmuch handle so queries see new mail | Danilo M. | 1 | -1/+21 |
| 43 hours | fix(compose): resolve a path a sync renamed, at all three read sites | Danilo M. | 4 | -6/+126 |
| 43 hours | fix(delete): recover when a sync renamed the file underneath a move | Danilo M. | 2 | -1/+83 |
| 45 hours | feat(compose): a menu bar on the composer | Danilo M. | 2 | -5/+122 |
| 45 hours | feat(compose): report autosave state in a status bar | Danilo M. | 2 | -6/+151 |
| 46 hours | fix(drafts): list drafts as messages, not threadssignatures | Danilo M. | 1 | -10/+27 |
| 2 days | fix(drafts): index a saved draft so it appears without a sync | Danilo M. | 5 | -1/+142 |
| 2 days | fix(compose): a resumed draft does not re-seed on a From: change | Danilo M. | 1 | -0/+5 |
| 2 days | feat(compose): the signature follows the account until it is chosen | Danilo M. | 1 | -5/+22 |
| 2 days | fix(signatures): match the guard against on-disk text, newline and all | Danilo M. | 1 | -1/+24 |
| 2 days | feat(compose): a signature switch on the editor bar | Danilo M. | 2 | -0/+169 |
| 2 days | feat(config): read the three signature keys | Danilo M. | 2 | -0/+59 |
| 2 days | feat(signatures): replace an existing signature, guarded by a match | Danilo M. | 1 | -7/+80 |
| 2 days | feat(signatures): splice a signature into a buffer | Danilo M. | 1 | -3/+69 |
| 2 days | feat(signatures): read a directory of markdown signatures | Danilo M. | 3 | -0/+144 |
| 2 days | feat(queries): drop pinning, the menu is every saved query's home | Danilo M. | 6 | -81/+30 |
| 3 days | feat(compose): offer Edit on a draft in the message pane's bar | Danilo M. | 2 | -8/+110 |
| 3 days | feat(compose): open a draft to finish it | Danilo M. | 9 | -5/+262 |
| 3 days | feat: add a Drafts filter, and close the composer with Ctrl+W | Danilo M. | 3 | -2/+35 |
| 3 days | fix(compose): make the Send button a square that reads as one item | Danilo M. | 1 | -2/+16 |
| 3 days | feat(compose): lay the composer out by scope | Danilo M. | 2 | -24/+215 |
| 3 days | fix(ui): move Compose back, drop the bar below the header, size its icons | Danilo M. | 3 | -10/+31 |
| 3 days | feat(ui): give the message pane its own action bar | Danilo M. | 4 | -9/+78 |
| 3 days | fix(compose): default to quoting below, and focus the body on a reply | Danilo M. | 3 | -3/+14 |
| 3 days | feat(messageview): give the notice bars a ground and a severity | Danilo M. | 2 | -15/+69 |
| 3 days | fix(messageview): drop the receive-only ribbon when the pane is blanked | Danilo M. | 1 | -0/+8 |
| 3 days | fix(compose): put the reply cursor on blank space, not on the quote | Danilo M. | 1 | -6/+9 |
| 3 days | fix(compose): close every composer when the main window quits | Danilo M. | 1 | -0/+27 |
| 5 days | feat(compose): wire the composer into the main window, item 123compose-and-send | Danilo M. | 8 | -20/+998 |
| 5 days | feat(compose): the composer window, item 123 | Danilo M. | 3 | -0/+1075 |