| Age | Commit message (Expand) | Author | Files | Lines |
| 6 days | feat: close the calendar's event pane with Escape | Danilo M. | 2 | -5/+20 |
| 6 days | feat: hide the calendar's event pane while nothing is selected | Danilo M. | 1 | -0/+4 |
| 6 days | fix: stop a chip's colour flooding the next calendar day cell | Danilo M. | 1 | -0/+3 |
| 6 days | fix: drop orphaned overrides when a series stops, plus review minors | Danilo M. | 5 | -2/+38 |
| 6 days | docs: document the calendar, translate it, file its follow-ups | Danilo M. | 2 | -5/+10 |
| 6 days | feat: open the calendar from the View menu and the toolbar | Danilo M. | 3 | -0/+61 |
| 6 days | fix: add the toolbar New button, sync the month controls, and let a stale sav... | Danilo M. | 2 | -4/+32 |
| 6 days | feat: the calendar window, with undo and a stale-safe save | Danilo M. | 3 | -0/+866 |
| 6 days | fix: show the collection swatch and translate the attendee line in the event ... | Danilo M. | 2 | -3/+16 |
| 6 days | feat: show and edit a calendar event in the side pane | Danilo M. | 3 | -0/+621 |
| 6 days | fix: swallow the calendar more-line double-click and clear the agenda selection | Danilo M. | 2 | -2/+14 |
| 6 days | feat: paint the calendar's month grid and agenda list | Danilo M. | 5 | -0/+387 |
| 6 days | feat: lay out the calendar's month grid without a painter | Danilo M. | 3 | -0/+139 |
| 6 days | test: a write during a run queues one more calendar sync | Danilo M. | 1 | -1/+5 |
| 6 days | feat: debounce the calendar sync command after writes | Danilo M. | 3 | -0/+126 |
| 6 days | feat: read the calendar's config keys | Danilo M. | 2 | -0/+50 |
| 6 days | feat: write calendar files atomically, refusing stale ones | Danilo M. | 3 | -0/+108 |
| 6 days | feat: edit or delete one occurrence of a repeating event | Danilo M. | 1 | -3/+48 |
| 6 days | fix: compare sameMeaning overrides by recurrence id and check the uid | Danilo M. | 1 | -2/+12 |
| 6 days | feat: edit a calendar event in place and write new ones | Danilo M. | 1 | -3/+260 |
| 6 days | feat: an event is editable only when the user organises it | Danilo M. | 1 | -1/+9 |
| 6 days | fix: expand a long dense series completely and flag overrides' own all-day | Danilo M. | 1 | -4/+6 |
| 6 days | feat: expand calendar occurrences in each event's own zone | Danilo M. | 1 | -2/+112 |
| 6 days | fix: an empty RRULE means does-not-repeat, not a custom rule | Danilo M. | 1 | -0/+3 |
| 6 days | feat: model the calendar's repeat control as RRULE text | Danilo M. | 1 | -4/+251 |
| 6 days | feat: read every time form and load a calendar vdir | Danilo M. | 1 | -1/+72 |
| 6 days | feat: parse one calendar event with libical (item 206) | Danilo M. | 7 | -1/+518 |
| 12 days | fix: sanitise untrusted contact names on insertion | Danilo M. | 1 | -16/+24 |
| 12 days | feat: load the contact store once and feed both consumers | Danilo M. | 2 | -0/+30 |
| 12 days | feat: complete contacts in the query bar | Danilo M. | 2 | -4/+34 |
| 12 days | feat: complete contacts in the composer recipients | Danilo M. | 2 | -5/+259 |
| 12 days | feat: add the contacts_dir config key | Danilo M. | 2 | -0/+50 |
| 12 days | feat: add ContactStore, the vCard address-book parse | Danilo M. | 3 | -0/+295 |
| 2026-09-14 | fix: keep the message bar populated on a spam reply | Danilo M. | 1 | -0/+7 |
| 2026-09-14 | fix: the Not spam review findings | Danilo M. | 1 | -7/+9 |
| 2026-09-14 | feat: a Not spam action | Danilo M. | 3 | -84/+249 |
| 2026-09-14 | fix: gate spam like delete, and keep one origin in the model | Danilo M. | 3 | -9/+67 |
| 2026-09-14 | feat: find stranded spam mail | Danilo M. | 3 | -0/+62 |
| 2026-09-14 | feat: empty spam moves mail to the trash, per account | Danilo M. | 3 | -2/+122 |
| 2026-09-14 | feat: spam on the message bar, with a bug icon and junk fallback | Danilo M. | 2 | -92/+124 |
| 2026-09-13 | feat: mark spam moves mail to the account's spam folder | Danilo M. | 2 | -5/+141 |
| 2026-09-13 | refactor: rename the origin tag to moved-from: with overwrite semantics | Danilo M. | 7 | -26/+55 |
| 2026-09-13 | feat(config): a threaded, path-based spam filter | Danilo M. | 2 | -1/+21 |
| 2026-09-13 | feat(config): per-account spam folder and queries | Danilo M. | 2 | -0/+51 |
| 2026-09-08 | feat: make Sync follow the account being looked at | Danilo M. | 2 | -10/+54 |
| 2026-09-07 | fix: refresh the current query when the index changes | Danilo M. | 3 | -0/+36 |
| 2026-09-06 | fix: index the sent copy so it appears in the Sent view at once | Danilo M. | 3 | -0/+40 |
| 2026-09-06 | fix: keep one Message-ID across a draft's revisions | Danilo M. | 5 | -7/+82 |
| 2026-09-06 | fix: give the Sent and Drafts views one row per message, in date order | Danilo M. | 3 | -31/+122 |
| 2026-08-29 | fix: draw Important as a star on the message bar | Danilo M. | 1 | -3/+18 |