{# 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; Limits is a link to the agent page, 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') }}

{# 067 P5a: the data routes are a contribution (webview/contributions.py). None installed: the destination stays, the panes and money.js do not. #} {% if money_installed is defined and not money_installed %}

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

{% else %} {# Book — drawn by money.js. The verdict leads. #}
{# W1: the tokens Rob trusts — drawn by money-tokens.js from /api/webgate/tokens. #}
{# 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. #} {# The words money.js renders, and the states it distinguishes. #} {% endif %} {% endblock %}