| Age | Commit message (Expand) | Author | Files | Lines |
| 6 hours | fix: give a restored message its inbox tag back | Danilo M. | 2 | -1/+27 |
| 7 hours | fix: correct the avatar initials, the two-tone fill and the fade | Danilo M. | 10 | -58/+358 |
| 8 hours | fix: harden candidate appends and cover the message-row sender roles | Danilo M. | 4 | -26/+93 |
| 8 hours | docs: document card avatars and the business-senders list | Danilo M. | 2 | -0/+31 |
| 8 hours | feat: propose business senders from newly synced mail | Danilo M. | 4 | -0/+125 |
| 8 hours | feat: load the business-senders list at startup | Danilo M. | 3 | -1/+83 |
| 8 hours | feat: draw a sender's avatar on every card | Danilo M. | 3 | -0/+102 |
| 8 hours | feat: fade the account colour across a card | Danilo M. | 3 | -0/+71 |
| 8 hours | feat: expose a row's sender to the delegate | Danilo M. | 5 | -0/+57 |
| 9 hours | feat: reserve a card's avatar gutter | Danilo M. | 3 | -2/+91 |
| 9 hours | feat: propose business-sender candidates, always commented out | Danilo M. | 3 | -0/+211 |
| 9 hours | feat: read the business-senders list | Danilo M. | 5 | -0/+239 |
| 9 hours | feat: paint the avatar squircle from a hashed seed | Danilo M. | 2 | -0/+108 |
| 9 hours | feat: choose an avatar fill and derive its colour | Danilo M. | 2 | -0/+50 |
| 9 hours | feat: derive a sender's avatar initials | Danilo M. | 5 | -0/+252 |
| 9 hours | feat: carry the first message's sender address on a thread summary | Danilo M. | 3 | -0/+114 |
| 9 hours | docs: scan every message on the first candidate run | Danilo M. | 2 | -3/+87 |
| 9 hours | docs: plan the card avatar and account fade work | Danilo M. | 1 | -0/+1907 |
| 10 hours | docs: reconcile the backlog, and specify card avatars | Danilo M. | 2 | -8/+424 |
| 11 hours | feat: flag what you answered, mark what was forwarded to you | Danilo M. | 25 | -79/+1190 |
| 29 hours | docs(changelog): record this session's user-visible changes | Danilo M. | 1 | -0/+40 |
| 29 hours | fix: offer Delete and Restore only where they mean something | Danilo M. | 5 | -76/+348 |
| 30 hours | feat: empty the trash, the one action that asks first | Danilo M. | 11 | -36/+689 |
| 30 hours | feat: say which way the unread action will go, and hide it when it cannot | Danilo M. | 7 | -101/+467 |
| 31 hours | docs(backlog): close item 166 | Danilo M. | 2 | -66/+91 |
| 31 hours | feat: number each build of a dev tree | Danilo M. | 10 | -51/+196 |
| 31 hours | fix(hooks): keep inbox on mail that was sent AND received | Danilo M. | 2 | -16/+201 |
| 31 hours | docs: mailctl is retired, the hooks are ours | Danilo M. | 2 | -53/+56 |
| 31 hours | docs(backlog): file item 167, no build identity between releases | Danilo M. | 1 | -0/+46 |
| 31 hours | docs(backlog): close item 104 after its hand test | Danilo M. | 2 | -95/+93 |
| 36 hours | docs(backlog): close item 104, file item 166 | Danilo M. | 1 | -50/+150 |
| 36 hours | fix(worker): reopen the notmuch handle so queries see new mail | Danilo M. | 2 | -1/+76 |
| 36 hours | docs(backlog): record item 165, a draft's Message-ID changes on every save | Danilo M. | 1 | -0/+69 |
| 37 hours | docs(backlog): close item 163 | Danilo M. | 2 | -76/+113 |
| 37 hours | fix(compose): resolve a path a sync renamed, at all three read sites | Danilo M. | 6 | -6/+300 |
| 37 hours | docs(backlog): close item 162, record a second site for 163 | Danilo M. | 2 | -64/+174 |
| 37 hours | chore(hooks): log how many messages the sent carve-out matched | Danilo M. | 1 | -1/+26 |
| 37 hours | fix(delete): recover when a sync renamed the file underneath a move | Danilo M. | 3 | -1/+161 |
| 38 hours | docs(backlog): correct item 164, the first cause was wrong | Danilo M. | 1 | -32/+43 |
| 38 hours | docs(backlog): record items 163 and 164, both found by hand | Danilo M. | 1 | -0/+82 |
| 38 hours | docs(backlog): record item 162, Delete races a sync's rename | Danilo M. | 1 | -38/+55 |
| 38 hours | feat(compose): a menu bar on the composer | Danilo M. | 6 | -5/+371 |
| 38 hours | feat(compose): report autosave state in a status bar | Danilo M. | 8 | -56/+481 |
| 39 hours | docs(backlog): record items 160 and 161 from the notes | Danilo M. | 1 | -0/+87 |
| 39 hours | release: 0.27.0v0.27.0 | Danilo M. | 2 | -1/+10 |
| 39 hours | Merge branch 'signatures' | Danilo M. | 21 | -126/+1975 |
| 39 hours | fix(drafts): list drafts as messages, not threadssignatures | Danilo M. | 5 | -20/+124 |
| 2 days | docs(backlog): close item 158, drafts are indexed on save | Danilo M. | 2 | -42/+36 |
| 2 days | fix(drafts): index a saved draft so it appears without a sync | Danilo M. | 7 | -1/+302 |
| 2 days | docs(backlog): close item 152, signatures | Danilo M. | 2 | -72/+76 |