feat(import): the Din historia reveal after SIE import (#1473)

* feat(import): the Din historia reveal after a successful SIE import

Fourth slice of the activation concept, stacked on the theater (#1471).
When the theater ran, the result step's success header becomes the
reveal: the settled constellation beside the personalized story
({years} år av historia, verifikat/konton/motparter, the balance
tie-out) and the bank bridge ("Historiken är på plats. Det som saknas
är nuet: banken.") deep-linking into the bank connect flow.

Honesty guards from the adversarial pass: the reveal requires actually
imported entries (an opening-balances-only run keeps the plain header),
the balance claim is suppressed when unbalanced vouchers were skipped,
and sandbox hides the bank bridge (live connections are stripped from
/import there). Failures and theater-less successes render the exact
previous header + stats grid.

The canvas is extracted to a shared TheaterCanvas (build mode driven by
the narration timeline via an imperative handle; settled mode for the
reveal: everything born, camera home, breathing only).

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

* fix(import): tame the constellation labels against real-world data

Real BAS names are paragraph-length and real files cluster in one class
region, which piled fifteen full labels into mush (founder screenshot,
Arcim Technology import). Labels now truncate hard (24/16 chars), only
the five heaviest accounts and counterparties carry labels, spread and
radius widen within a bucket, and a greedy per-frame collision pass
skips any label that would overlap one already drawn (importance order:
hub, buckets, heaviest first). The reveal also drops its meta line:
less text, the story is the headline + stats + bridge.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>

---------

Co-authored-by: Jakob Wennberg <311770904+jakobwennberg-oss@users.noreply.github.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Jakob Wennberg
2026-08-09 20:05:00 +02:00
committed by GitHub
co-authored by Claude Fable 5 Jakob Wennberg
parent d4ef4f8bc4
commit 170b2722d6
6 changed files with 515 additions and 350 deletions
+8
View File
@@ -6498,6 +6498,14 @@
"theater_balance_ok": "Every year balances",
"theater_balance_warn": "Imbalance found, see the warnings afterwards",
"theater_writing": "Writing to the journal ...",
"reveal_eyebrow": "Your history",
"reveal_title": "{years, plural, one {Your history is in place.} other {# years of history, in place.}}",
"reveal_stats": "{vouchers} vouchers · {accounts} accounts · {counterparties} counterparties",
"reveal_tie_ok": "Every year balances: 0.00 kr off",
"reveal_skipped": "{count, plural, one {# voucher was skipped, see details below.} other {# vouchers were skipped, see details below.}}",
"reveal_bridge": "The history is in place. What's missing is the present: the bank.",
"reveal_cta_bank": "Connect the bank",
"reveal_cta_open": "Open Accounted",
"export_title": "Export",
"export_subtitle": "Download your bookkeeping as a SIE file or back it up to Google Drive",
"tab_import": "Import",
+8
View File
@@ -6498,6 +6498,14 @@
"theater_balance_ok": "Varje år balanserar",
"theater_balance_warn": "Obalans hittad, se varningarna efteråt",
"theater_writing": "Skriver till journalen ...",
"reveal_eyebrow": "Din historia",
"reveal_title": "{years, plural, one {Historiken är på plats.} other {# år av historia, på plats.}}",
"reveal_stats": "{vouchers} verifikat · {accounts} konton · {counterparties} motparter",
"reveal_tie_ok": "Varje år balanserar: 0,00 kr i diff",
"reveal_skipped": "{count, plural, one {# verifikat hoppades över, se detaljer nedan.} other {# verifikat hoppades över, se detaljer nedan.}}",
"reveal_bridge": "Historiken är på plats. Det som saknas är nuet: banken.",
"reveal_cta_bank": "Koppla banken",
"reveal_cta_open": "Öppna Accounted",
"export_title": "Exportera",
"export_subtitle": "Ladda ner bokföringen som SIE-fil eller säkerhetskopia till Google Drive",
"tab_import": "Importera",