| Age | Commit message (Expand) | Author | Files | Lines |
| 25 hours | feat: show the dashboard when a conversation is selected | Danilo M. | 1 | -75/+255 |
| 26 hours | feat: read a thread's digest from the index | Danilo M. | 1 | -0/+136 |
| 26 hours | fix: undo only what the write actually changed | Danilo M. | 2 | -0/+153 |
| 26 hours | feat: add the thread dashboard | Danilo M. | 2 | -0/+75 |
| 26 hours | feat: judge a row's membership on the thread's union | Danilo M. | 1 | -0/+112 |
| 27 hours | feat: treat a mixed conversation's unread state as unread | Danilo M. | 1 | -34/+63 |
| 32 hours | feat: scope an action to the row it was invoked on | Danilo M. | 3 | -473/+617 |
| 32 hours | feat: resolve a selection's scope from what each row is | Danilo M. | 1 | -0/+93 |
| 32 hours | refactor: remove the sibling chip tier | Danilo M. | 1 | -125/+0 |
| 33 hours | feat: draw a conversation row's own tags, in one tier | Danilo M. | 2 | -228/+17 |
| 33 hours | feat: let a row say whether it is a conversation | Danilo M. | 1 | -0/+79 |
| 2 days | feat: forward an HTML message with its formatting | Danilo M. | 6 | -9/+619 |
| 2 days | fix: flag a saved draft seen so it is not tagged unread | Danilo M. | 2 | -2/+60 |
| 3 days | feat: open the unsynced-changes count to see what it counts | Danilo M. | 4 | -0/+233 |
| 3 days | feat: resolve pending-change ids to subjects | Danilo M. | 1 | -0/+67 |
| 3 days | feat: snapshot the pending changes as rows | Danilo M. | 1 | -0/+85 |
| 3 days | refactor: drop the unnettable pending-edit counter | Danilo M. | 1 | -10/+40 |
| 3 days | fix: give a restored message its inbox tag back | Danilo M. | 1 | -0/+15 |
| 3 days | fix: correct the avatar initials, the two-tone fill and the fade | Danilo M. | 4 | -7/+192 |
| 3 days | fix: harden candidate appends and cover the message-row sender roles | Danilo M. | 2 | -0/+58 |
| 3 days | feat: propose business senders from newly synced mail | Danilo M. | 1 | -0/+39 |
| 3 days | feat: load the business-senders list at startup | Danilo M. | 1 | -0/+18 |
| 3 days | feat: draw a sender's avatar on every card | Danilo M. | 1 | -0/+41 |
| 3 days | feat: fade the account colour across a card | Danilo M. | 1 | -0/+25 |
| 3 days | feat: expose a row's sender to the delegate | Danilo M. | 1 | -0/+23 |
| 3 days | feat: reserve a card's avatar gutter | Danilo M. | 1 | -2/+71 |
| 3 days | feat: propose business-sender candidates, always commented out | Danilo M. | 1 | -0/+100 |
| 3 days | feat: read the business-senders list | Danilo M. | 2 | -0/+102 |
| 3 days | feat: paint the avatar squircle from a hashed seed | Danilo M. | 1 | -0/+30 |
| 3 days | feat: choose an avatar fill and derive its colour | Danilo M. | 1 | -0/+28 |
| 3 days | feat: derive a sender's avatar initials | Danilo M. | 2 | -0/+96 |
| 3 days | feat: carry the first message's sender address on a thread summary | Danilo M. | 1 | -0/+36 |
| 3 days | feat: flag what you answered, mark what was forwarded to you | Danilo M. | 3 | -6/+474 |
| 4 days | fix: offer Delete and Restore only where they mean something | Danilo M. | 1 | -0/+162 |
| 4 days | feat: empty the trash, the one action that asks first | Danilo M. | 2 | -0/+216 |
| 4 days | feat: say which way the unread action will go, and hide it when it cannot | Danilo M. | 1 | -2/+210 |
| 4 days | fix(worker): reopen the notmuch handle so queries see new mail | Danilo M. | 1 | -0/+55 |
| 4 days | fix(compose): resolve a path a sync renamed, at all three read sites | Danilo M. | 2 | -0/+174 |
| 4 days | fix(delete): recover when a sync renamed the file underneath a move | Danilo M. | 1 | -0/+78 |
| 4 days | feat(compose): a menu bar on the composer | Danilo M. | 1 | -0/+165 |
| 4 days | feat(compose): report autosave state in a status bar | Danilo M. | 2 | -0/+202 |
| 4 days | fix(drafts): list drafts as messages, not threadssignatures | Danilo M. | 1 | -9/+27 |
| 5 days | fix(drafts): index a saved draft so it appears without a sync | Danilo M. | 2 | -0/+160 |
| 5 days | fix(compose): a resumed draft does not re-seed on a From: change | Danilo M. | 1 | -0/+58 |
| 5 days | feat(compose): the signature follows the account until it is chosen | Danilo M. | 1 | -0/+119 |
| 5 days | fix(signatures): match the guard against on-disk text, newline and all | Danilo M. | 1 | -0/+17 |
| 5 days | feat(compose): a signature switch on the editor bar | Danilo M. | 2 | -0/+221 |
| 5 days | feat(config): read the three signature keys | Danilo M. | 1 | -0/+73 |
| 5 days | test(signatures): record what the quoted-delimiter test does not pin | Danilo M. | 1 | -0/+10 |
| 5 days | feat(signatures): replace an existing signature, guarded by a match | Danilo M. | 1 | -0/+101 |