{# Money › Book — the ledger beside the chain (043 A34/A35, §3.4). Derived from docs/design/040/web/money.html (and its disagree / partial / empty siblings). The five-tab subnav is server-rendered; only Book is built this task, so Moves, Cash and Invoices are stub panes a later task fills, and Limits is a link to Agent, where the caps live. Everything below the subnav is drawn by webview/static/app/money.js from GET /api/webgate/book — the verdict first, the positions the ledger claims beside the chain's reading, the chains Rob checked with the cache age, and the trading run (which lives in Work). Every word comes from webview/copy/en.py. No inline script on any 043 template (tests/unit/webview/test_no_new_inline_script.py): the words ride on #money-copy's data attributes and money.js reads them off `dataset`. ⚠️ The names carry an UNDERSCORE, not a hyphen: `dataset` camel-cases a hyphen away, and the JS keys the words by the copy name, which is snake_case. #} {% extends "shell.html" %} {% block body %}

{{ t('money.title') }}

{{ t('money.sub') }}

{# Book — drawn by money.js. The verdict leads. #}
{# Moves — in flight (bridges) + recent moves (wallet_spend) + made (creations). Drawn by money.js from /api/webgate/{bridges,moves,creations}. #} {# Cash — the two ledgers, NEVER summed. Drawn from /api/webgate/ledger. #} {# Invoices — who owes Rob money + the A20 machine-income note. Drawn from /api/webgate/invoices; settle posts to /api/webgate/invoices/{id}/settle. #} {# Limits — today's used/limit from the ledger's caps + a link to Agent. #}

{{ t('money.book.sources')|safe }}

{# The words money.js renders, and the states it distinguishes. #} {% endblock %}