| Age | Commit message (Expand) | Author |
| 16 hours | commands: split the command table by domain | Anders Betts |
| 16 hours | tui: bankgiro and our ref belong to Företagsuppgifterv0.1.53 | Anders Betts |
| 19 hours | tui: set the next invoice number from the listv0.1.52 | Anders Betts |
| 20 hours | docs: invoicing waves 1-3 completev0.1.51 | Anders Betts |
| 20 hours | tui: fakturering with invoice form, preview and send | Anders Betts |
| 20 hours | docs: document the invoice_our_ref setting | Anders Betts |
| 20 hours | settings: allow invoice_our_ref | Anders Betts |
| 20 hours | deploy: pass BOKFD_SECRET_KEY through compose; document waves 1-2 | Anders Betts |
| 20 hours | invoice: send the issued PDF over SMTP | Anders Betts |
| 20 hours | build: wire the SMTP client into the test suite | Anders Betts |
| 20 hours | smtp: send messages with a PDF attachment | Anders Betts |
| 20 hours | secret: build it as its own unit | Anders Betts |
| 20 hours | settings: encrypted secrets and SMTP settings | Anders Betts |
| 20 hours | invoice: skip the Swish QRv0.1.50 | Anders Betts |
| 20 hours | invoice: allow setting the bankgiro, document wave 1 | Anders Betts |
| 20 hours | invoice: customer, sequence, preview and issue commands | Anders Betts |
| 21 hours | build: wire the invoice renderer into the test suite | Anders Betts |
| 21 hours | invoice: render the document as PDF | Anders Betts |
| 21 hours | db: schema v9 for invoicing, vouchers source rebuild | Anders Betts |
| 21 hours | invoice: extract the Comfortaa wordmark as vector paths | Anders Betts |
| 21 hours | pdf: minimal PDF writer for generated documents | Anders Betts |
| 21 hours | invoicing: keep customers in Register per the menu rule | Anders Betts |
| 21 hours | invoicing: design chapter with layout, numbering and SMTP | Anders Betts |
| 23 hours | docs: bank reconciliation phase 1v0.1.49 | Anders Betts |
| 23 hours | tests: bank reconciliation pty scenario | Anders Betts |
| 23 hours | tui: bank reconciliation screen | Anders Betts |
| 23 hours | bank: import SEB CSV and match against vouchers (schema v8) | Anders Betts |
| 25 hours | db: make attachments append-only (schema v7) | Anders Betts |
| 25 hours | tui: pinned report headers, voucher detail headers, clamped pagingv0.1.48 | Anders Betts |
| 26 hours | tui: align list rows beyond nine itemsv0.1.47 | Anders Betts |
| 26 hours | docs: mark the moms rule editor and pre-migration snapshot donev0.1.46 | Anders Betts |
| 26 hours | tests: momsregler pty scenario | Anders Betts |
| 26 hours | tui: momsregler screen for the vat report rules | Anders Betts |
| 26 hours | report: per-org moms rule editor commands | Anders Betts |
| 26 hours | db: snapshot the database before forward migrations | Anders Betts |
| 26 hours | build: ignore the sanitizer build directories | Anders Betts |
| 26 hours | tests: wire check, pty and sanitizer targets and document them | Anders Betts |
| 26 hours | ledger: free the default-series string on every post error path | Anders Betts |
| 26 hours | commands: declarative argument schemas with dispatch validation | Anders Betts |
| 26 hours | scripts: check command and error-code drift against the docs | Anders Betts |
| 26 hours | tests: pty golden harness for the TUI | Anders Betts |
| 26 hours | deploy: alpine runtime image with the daemon and CLI onlyv0.1.45 | Anders Betts |
| 26 hours | audit: verify voucher chains and attachment hashes | Anders Betts |
| 36 hours | tui: remember the focused row in forms and the bokslut hubv0.1.44 | Anders Betts |
| 36 hours | tui: bokslut hub with year fields, reports and the posting actionv0.1.43 | Anders Betts |
| 36 hours | tui: bokslut footer explains the plan/post keysv0.1.42 | Anders Betts |
| 36 hours | tui: backspace deletes backwards while editing; esc restores the valuev0.1.41 | Anders Betts |
| 37 hours | tui: themes, pager markup, menu sections; merge Bokslut and year infov0.1.40 | Anders Betts |
| 37 hours | tui: form fields on the row-table screen; home/end/pgup/pgdn navigationv0.1.39 | Anders Betts |
| 37 hours | tui: migrate the remaining screens to the widget layerv0.1.38 | Anders Betts |