From ae60b7d2c87cc9ed6878faa57cd4233f77f6f7c3 Mon Sep 17 00:00:00 2001 From: Anders Betts Date: Sun, 20 Sep 2026 10:24:18 +0200 Subject: tui: pinned report headers, voucher detail headers, clamped paging --- docs/PROTOCOL.md | 6 ++++-- docs/STATE.md | 4 ++++ docs/TUI-GUIDELINES.md | 3 ++- 3 files changed, 10 insertions(+), 3 deletions(-) (limited to 'docs') diff --git a/docs/PROTOCOL.md b/docs/PROTOCOL.md index 8405ca5..6f26463 100644 --- a/docs/PROTOCOL.md +++ b/docs/PROTOCOL.md @@ -503,8 +503,9 @@ commands. Implemented screens (0.1.0-dev): - **Inloggning** — server, user, password; org picker when several exist. - **Dashboard** — status line with org, fiscal year, role and user. -- **Verifikat** — list and detail view (rows, attachments, hash, link to - corrected voucher); `c` posts an ändringsverifikat. +- **Verifikat** — list and detail view (rows with column headers, an + underlag section separated by a rule, hash, link to corrected voucher); `c` + posts an ändringsverifikat. - **Nytt verifikat** — row editor with live balance display, F5 dry-run validation and F9 posting; one `client_ref` per form makes retries safe. F4 applies a konteringsmall (prompts for template and `x`). @@ -525,6 +526,7 @@ commands. Implemented screens (0.1.0-dev): inkomstdeklaration (INK2/SRU), årsredovisning (K2 text draft) and kontolista (all accounts with type, moms treatment, SRU and status). `s` saves the SRU files, eSKD XML and the årsredovisning respectively. + Report tables keep their column-header row pinned while the body scrolls. The draft asks for the board's proposed dividend, kept per fiscal year with `fiscal_year.update`. - **Bokslut** — periodiseringsfond and tax rate fields; F5 shows the posting diff --git a/docs/STATE.md b/docs/STATE.md index de87186..526c1a6 100644 --- a/docs/STATE.md +++ b/docs/STATE.md @@ -91,6 +91,10 @@ check. saldo/Period/Utg balans and Beräknat resultat, Momsrapport ruta för ruta). The TUI never shows report JSON. Amounts are Swedish formatted (`1 234,56`); moms rutas are whole kronor truncated like Kapitas. + Report tables mark their column-header row with `\x04` (`TUI_MARK_STICKY`) + so the pager pins it above the scrolling body; the verifikat detail shows + column headers and separates the underlag section with a rule. PgUp/PgDn + page without wrapping and stop at the first/last row. 16. **Moms rules (schema v3)**: default seed covers 05 over 3000-3019, 3100-3199, 3300-3399, reverse-charge sales (32xx) in 41, EU purchases in 20/21, reverse-charge output VAT 2614/2624/2634 in 30/31/32, and box 48 diff --git a/docs/TUI-GUIDELINES.md b/docs/TUI-GUIDELINES.md index 3bd3c65..09605e9 100644 --- a/docs/TUI-GUIDELINES.md +++ b/docs/TUI-GUIDELINES.md @@ -24,7 +24,7 @@ there. | `Ctrl+A` | Close or reopen the highlighted räkenskapsår (Räkenskapsår screen; asks for confirmation) | | `1`–`9` | In lists: jump to that row. In menus: activate that item | | `g` | Live goto: "Gå till rad/nummer:" updates the selection as you type digits (backspace steps back); Enter closes the prompt without opening anything | -| arrows, PgUp/PgDn, Home/End | Move/scroll; selection always stays visible | +| arrows, PgUp/PgDn, Home/End | Move/scroll; selection always stays visible. Pages stop at the first/last row, they never wrap | | `e` | Edit the shown object (IB, where applicable) | | `a` | Add/upload (Underlag) | | `c` | Correct (voucher detail) | @@ -193,6 +193,7 @@ formatters, interpreted by `tui_markup`): | `\x01` | line is a heading (`TUI_HEADING`) | | `\x02` | line is dimmed (`TUI_DIM`) | | `\x03` | full-width `ACS_HLINE` rule (`TUI_RULE`); the rest of the line is ignored | +| `\x04` | line is pinned as a column header: the pager keeps it visible above the scrolling body (combine with another marker, e.g. `\x04\x01`) | Report formatters mark headings, sums/derived lines and rules before the text reaches `tui_pager`; the markers never change column widths. Anything -- cgit v1.3