summaryrefslogtreecommitdiff
path: root/tests
AgeCommit message (Collapse)Author
78 min.web: bokftui in the browser (ttyd + bokfweb login gate); per-user login limitv0.1.69Anders Betts
New image bokf-web (Dockerfile target "web", compose service "web" on 127.0.0.1:8790): Caddy routing with forward_auth, the bokfweb login gate (C, authenticates with bokfd's session.open, per-address limit, cookie + terminal handle, one login handed to the TUI via /redeem) and ttyd running bokftui in web mode in an isolated throwaway HOME. TLS stays with the host's reverse proxy. BOKF_WEB=1 blocks every local file and viewer path in the TUI. bokfd's login limiter is now per user name instead of one global counter (5 wrong guesses from anyone locked out everybody), and a full counter table no longer disables it. The cross build and deploy.sh build and ship both images. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
116 min.tui: context menu on → / ^O; no F-keys, ^N or ^EnterAnders Betts
→ (where no caret uses it) and ^O (everywhere, also in table cells) open "Åtgärder": a box at the right edge with every action of the view and its key. Screens declare their actions with tui_set_actions(); choosing one feeds its key to the widget, so the menu and accelerators share one path. Function keys, Ctrl+N (now n), Ctrl+Enter and Ctrl+F are gone and no extended keyboard protocol is enabled, so the TUI works in a browser terminal; save/post/validate/preview/template/attach are menu actions. make check rejects F-keys, ^N and ^Enter in clients/. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 hoursuser.set_password: change your own password; TUI "Byt lösenord"v0.1.68Anders Betts
Needs the current password (wrong ones rate limited like logins) and a password session, requires at least 10 characters, closes the user's other sessions and is audited without secrets. The TUI main menu gets "Byt lösenord" with masked prompts; ^R keeps working with the new password. Masked prompt buffers are wiped before they are freed. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
3 hourstui: 'g' + a letter searches list rowsAnders Betts
The goto prompt decides on its first key: digits jump to a row number as before, any other printable key searches the row texts of the list or menu (case-insensitive, also åäö), with up/down stepping through the matches. Keys typed into the prompt no longer reach the screen's key hook, and Enter in the action menu closes an open prompt. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 hourstui: aligned voucher detail, up/down between vouchers, list sortingAnders Betts
The detail pads every column by display width, blanks zero amounts and shows row texts and a Summa line. Up/Down step to the previous/next voucher in the list order; 's' cycles the list sort (number or date, ascending or descending, saved in tui.conf). The list fetches all pages of voucher.list instead of stopping at 200. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
4 hourstui: one shared field editor, in-place form editing, value-only focusAnders Betts
Forms edit fields in place in the value column instead of a bottom prompt, highlight only the focused value and scroll when taller than the screen; long text scrolls horizontally instead of wrapping. Fixes: typing after Backspace/Del no longer wipes the field, 'q' is text in row tables, the caret resets between cells, dialogs decode arrow keys, full buffers never take half a UTF-8 character, an invalid amount stays editable. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
14 hourssru, tui: round every account to whole kronor; fix the årsredovisning ↵v0.1.67Anders Betts
Stäng skip Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
15 hoursreports: ignore IB rows on P&L accounts; bokfctl --dry-runv0.1.66Anders Betts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17 hoursreports: VAT report skips the momsomföring and imported closingsv0.1.65Anders Betts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17 hoursMerge eff/imported-closings; skip only SIE-imported Stäng closingsAnders Betts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17 hoursreports, sie: carry earlier IB vouchers, restart P&L at year startAnders Betts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
17 hoursreports: income statement skips imported Stäng closingsAnders Betts
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
24 hourstui: kundutkast, <UTKAST>, explicit Spara och F2-åtgärderAnders Betts
28 hoursdocuments: org name in the invoice and payslip headers, document_header_colorv0.1.63Anders Betts
38 hoursinvoices: text rows, duplicate and payment link (schema v12); smtp address ↵v0.1.62Anders Betts
checks
39 hourssettings: per-feature voucher series and console invoice number; tui: F9 hintsv0.1.60Anders Betts
2 dayspayroll: lönebesked PDF and mail (schema v11)Anders Betts
2 dayspayroll: employees, tax tables and the monthly run (schema v10)Anders Betts
3 daystests: named test_core sections with --onlyAnders Betts
3 daysinvoice: send the issued PDF over SMTPAnders Betts
3 dayssmtp: send messages with a PDF attachmentAnders Betts
3 dayssettings: encrypted secrets and SMTP settingsAnders Betts
3 daysinvoice: customer, sequence, preview and issue commandsAnders Betts
3 daysinvoice: render the document as PDFAnders Betts
3 dayspdf: minimal PDF writer for generated documentsAnders Betts
3 daysbank: import SEB CSV and match against vouchers (schema v8)Anders Betts
3 daysdb: make attachments append-only (schema v7)Anders Betts
3 daystui: pinned report headers, voucher detail headers, clamped pagingv0.1.48Anders Betts
3 daystui: align list rows beyond nine itemsv0.1.47Anders Betts
3 daysreport: per-org moms rule editor commandsAnders Betts
3 daysdb: snapshot the database before forward migrationsAnders Betts
When db_open finds an older schema version, write a consistent VACUUM INTO copy to <backup_dir>/pre-migration-v<old>-<UTC>.db before the first migration statement. A taken name gets a numeric suffix; if the snapshot fails, the open and the migration abort.
3 dayscommands: declarative argument schemas with dispatch validationAnders Betts
3 daysaudit: verify voucher chains and attachment hashesAnders Betts
4 daystui: remember the focused row in forms and the bokslut hubv0.1.44Anders Betts
4 daystui: bokslut hub with year fields, reports and the posting actionv0.1.43Anders Betts
4 daystui: backspace deletes backwards while editing; esc restores the valuev0.1.41Anders Betts
4 daystui: themes, pager markup, menu sections; merge Bokslut and year infov0.1.40Anders Betts
4 daystui: form fields on the row-table screen; home/end/pgup/pgdn navigationv0.1.39Anders Betts
4 daystui: migrate the remaining screens to the widget layerv0.1.38Anders Betts
4 daystui: row table widget (dynamic rows, trailing blank row) + testsv0.1.37Anders Betts
4 daystui: shared widget layer (fields, prompts, lists, forms, pager) + testsv0.1.36Anders Betts
4 daysårsredovisning: Information om året per räkenskapsår (schema v6)v0.1.34Anders Betts
4 daysbokslut: TUI screen, K2 årsredovisning draft, storable dividend (schema v4)v0.1.33Anders Betts
4 daysattachments: list every link when filtering by voucherv0.1.32Anders Betts
5 dayssru: INK2 report view in the TUI; voucher list tweaksv0.1.31Anders Betts
sru.export now returns the emitted fields as ink2/ink2r/ink2s arrays plus from/to, so Rapporter -> Inkomstdeklaration (INK2/SRU) renders the declaration as a table with the official fältnamn before saving; unmapped accounts are listed in the view. The voucher list puts the verifikat id before the date, widens the column gaps and adds an inner margin.
5 daysbokslut, INK2/SRU export and attachment markersv0.1.30Anders Betts
- bokslut.post: year-end bookings (manual entries, periodiseringsfond, skatt at a given rate, resultatdisposition) with a dry-run plan through the normal ledger path; the resultatrapport separates bokslutsdispositioner and skatt per K2. - sru.export: INFO.SRU + BLANKETTER.SRU (INK2/INK2R/INK2S) from the official 2025P4 field tables and the BAS mapping, with manual INK2S adjustments, submitter defaults and unmapped-account detection; the TUI writes both files from Rapporter -> Inkomstdeklaration. - voucher.list carries attachment_count and the voucher list marks vouchers with underlag with an x column. - date_prompt restores the cursor state so it stops blinking at the bottom after the report date prompts.
5 daysattachments: link/unlink from the TUI, multi-voucher linksv0.1.29Anders Betts
The voucher detail can attach a file to an existing voucher (^F) and the underlag picker (f) can remove a link (d, confirmed). The Underlag inbox links a highlighted item to a voucher picked from a list (k). attachment.link and attachment.unlink are new write commands (dry-run, audited); unlinked files return to the inbox. The same content may now link to several vouchers — only the same voucher/attachment pair is a CONFLICT, matching the table's primary key.
5 dayseskd: generate the momsdeklaration file (eSKDUpload 6.0)v0.1.28Anders Betts
report.vat_eskd builds the ISO-8859-1 XML from report.vat: whole kronor with öre truncated like the blankett, box 48 positive as filed, MomsBetala computed from the whole-krona boxes, and an optional upplysning converted from UTF-8, XML-escaped and capped at 300 characters. The TUI momsrapport gains "s = spara eSKD", prompting for a path and writing the bytes verbatim. Verified against the FY2027 Kapitas report: 05=703200, 10=175800, 20=1453, 30=851, 48=1030, 49=175621.
5 daysreports: huvudbok and verifikationslista; fiscal_year.reopenAnders Betts
report.general_ledger lists every account with activity or IB, its postings in date order with a running saldo, and Omslutning/Utgående saldo; accounts?/from?/to? narrow it. report.voucher_list lists the year's vouchers with rows and totals, with an optional series filter. fiscal_year.reopen undoes a close (owner-only, confirm:true, audited) so the Räkenskapsår screen can toggle the status.
5 daysreports: Kapitas-style TUI tables, corrected moms rules (schema v3)v0.1.26Anders Betts
The report views dumped JSON; they now render Saldobalans, Resultatrapport (previous-year column, 89xx bokfört/ej bokfört), Balansrapport (Ing balans/Ing saldo/Period/Utg balans, Beräknat resultat) and Momsrapport ruta för ruta, with Swedish amount formatting (1 234,56). The moms starter rules missed 33xx sales, sent reverse-charge VAT 2614 to box 10 instead of 30 and had box 48 positive. Rules may now share a box and report.vat sums them; box 49 is the sum of the moms boxes only. Schema v3 replaces the rules for existing orgs. Verified on a copy of the live DB: 05=703 200, 10=175 800, 20=1 453, 30=851, 48=-1 030, 49=175 621, matching the Kapitas 2027 export. Ctrl+R reload passes --socket and auto-login no longer rewrites tui.conf; pty tests now run through scripts/tui-sandbox.sh so they cannot touch the real config, cache or bw session.