| Age | Commit message (Expand) | Author | Files | Lines |
| 22 hours | fix(signatures): match the guard against on-disk text, newline and all | Danilo M. | 2 | -1/+41 |
| 22 hours | feat(compose): a signature switch on the editor bar | Danilo M. | 5 | -0/+406 |
| 23 hours | feat(config): read the three signature keys | Danilo M. | 3 | -0/+132 |
| 23 hours | test(signatures): record what the quoted-delimiter test does not pin | Danilo M. | 1 | -0/+10 |
| 23 hours | feat(signatures): replace an existing signature, guarded by a match | Danilo M. | 2 | -7/+181 |
| 23 hours | feat(signatures): splice a signature into a buffer | Danilo M. | 2 | -3/+131 |
| 23 hours | docs(backlog): item 136 fails deterministically, and names its own cause | Danilo M. | 1 | -1/+26 |
| 24 hours | docs(plans): use a placeholder name in the signature fixtures | Danilo M. | 1 | -30/+30 |
| 24 hours | feat(signatures): read a directory of markdown signatures | Danilo M. | 5 | -0/+249 |
| 24 hours | docs(plans): implementation plan for signatures, item 152 | Danilo M. | 1 | -0/+1939 |
| 24 hours | docs(specs): guard the signature splice against deleting the user's text | Danilo M. | 2 | -5/+72 |
| 24 hours | docs(specs): design signatures, item 152 | Danilo M. | 2 | -1/+316 |
| 24 hours | feat(queries): drop pinning, the menu is every saved query's home | Danilo M. | 12 | -353/+307 |
| 25 hours | feat(compose): offer Edit on a draft in the message pane's bar | Danilo M. | 4 | -9/+276 |
| 31 hours | feat(compose): open a draft to finish it | Danilo M. | 14 | -6/+617 |
| 31 hours | docs(backlog): record items 153 to 156 from the notes | Danilo M. | 1 | -1/+5 |
| 31 hours | feat: add a Drafts filter, and close the composer with Ctrl+W | Danilo M. | 10 | -35/+204 |
| 31 hours | fix(compose): make the Send button a square that reads as one item | Danilo M. | 2 | -2/+31 |
| 32 hours | feat(compose): lay the composer out by scope | Danilo M. | 7 | -136/+602 |
| 32 hours | fix(ui): move Compose back, drop the bar below the header, size its icons | Danilo M. | 7 | -21/+156 |
| 32 hours | feat(ui): give the message pane its own action bar | Danilo M. | 8 | -79/+266 |
| 32 hours | fix(compose): default to quoting below, and focus the body on a reply | Danilo M. | 8 | -12/+72 |
| 32 hours | feat(messageview): give the notice bars a ground and a severity | Danilo M. | 4 | -16/+146 |
| 33 hours | fix(messageview): drop the receive-only ribbon when the pane is blanked | Danilo M. | 3 | -1/+105 |
| 33 hours | fix(compose): put the reply cursor on blank space, not on the quote | Danilo M. | 3 | -7/+69 |
| 46 hours | Merge branch 'compose-and-send': composing and sending mail | Danilo M. | 57 | -88/+13517 |
| 46 hours | docs: close out compose and send, and drop the v1/v2 split | Danilo M. | 4 | -16/+190 |
| 46 hours | docs(backlog): reconcile with the notes, items 138 to 147 | Danilo M. | 1 | -1/+233 |
| 47 hours | fix(compose): close every composer when the main window quits | Danilo M. | 2 | -0/+65 |
| 47 hours | feat(hooks): own the notmuch hooks, and keep sent mail out of the inbox | Danilo M. | 8 | -0/+1403 |
| 3 days | feat(compose): wire the composer into the main window, item 123compose-and-send | Danilo M. | 11 | -21/+2062 |
| 3 days | feat(compose): the composer window, item 123 | Danilo M. | 5 | -0/+2372 |
| 4 days | docs(backlog): record the undoMovesTheMessageBack flake, item 136 | Danilo M. | 1 | -0/+35 |
| 4 days | feat(compose): the send popup and its undo window, item 123 | Danilo M. | 6 | -0/+964 |
| 4 days | feat(compose): register the six compose actions, item 123 | Danilo M. | 5 | -4/+380 |
| 4 days | feat(compose): transform the markdown buffer for the toolbar, item 123 | Danilo M. | 6 | -0/+679 |
| 4 days | feat(compose): derive a reply's recipients and headers, item 123 | Danilo M. | 10 | -8/+1884 |
| 4 days | feat(compose): hand outgoing mail to the send command, item 123 | Danilo M. | 7 | -0/+950 |
| 4 days | feat(compose): save drafts atomically into a Maildir, item 123 | Danilo M. | 5 | -0/+399 |
| 5 days | fix(compose): refuse a directory attachment and a bad recipient, item 123 | Danilo M. | 3 | -21/+210 |
| 5 days | docs: record that build() blocks the caller, item 123 | Danilo M. | 1 | -0/+10 |
| 5 days | feat(compose): build outgoing messages with GMime, item 123 | Danilo M. | 6 | -0/+685 |
| 5 days | fix(config): reject garbage numerics instead of silently reading zero, item 123 | Danilo M. | 4 | -17/+201 |
| 5 days | docs: document the new config keys in the plan's close-out, item 123 | Danilo M. | 1 | -0/+15 |
| 5 days | refactor(maildir): extract freshMaildirName for reuse, item 123 | Danilo M. | 6 | -61/+219 |
| 5 days | fix(compose): correct the header's attribution and harden three tests, item 123 | Danilo M. | 4 | -9/+23 |
| 5 days | feat(config): send_command and the [compose] section, item 123 | Danilo M. | 5 | -0/+301 |
| 5 days | fix(compose): document what actually suppresses raw HTML, item 123 | Danilo M. | 2 | -7/+43 |
| 5 days | feat(compose): render markdown bodies with cmark-gfm, item 123 | Danilo M. | 6 | -1/+272 |
| 5 days | docs: implementation plan for compose and send, item 123 | Danilo M. | 1 | -0/+4923 |