Skip to content

fix(install)+feat(docs): resync the browser-app copy to the released v0.12 web UI (#89) and sync the ADRs (#120) - #124

Merged
eaitbrahim merged 2 commits into
mainfrom
fix/webui-resync-adrs
Aug 28, 2026
Merged

fix(install)+feat(docs): resync the browser-app copy to the released v0.12 web UI (#89) and sync the ADRs (#120)#124
eaitbrahim merged 2 commits into
mainfrom
fix/webui-resync-adrs

Conversation

@eaitbrahim

@eaitbrahim eaitbrahim commented Aug 28, 2026

Copy link
Copy Markdown
Contributor

Closes #89 · Closes #120

Two resyncs against the now-released keel web UI (v0.12.0 → v0.12.2). Every clause below was re-verified against CodeGateSoftware/keel@v0.12.2 — releases, keel/web/, keel/commands/setup.py and keel/capabilities.py — not assumed from commit titles.

#89 — 'Work from the browser' resync (install.ts, ×3 locales, rev .6.7)

Claims added, each traced to a release:

claim source
the interface wears this site's own identity — same paper, teal, ship mark v0.12.1 / #594
the header carries a light-or-dark theme choice + a mode badge that only reports; changing mode stays a config edit, not a click v0.12.2 / #598
every money figure arrives as text, computed and formatted by the engine — the page displays numbers, never derives them v0.12.0 / #544
profit and loss differ in brightness as well as colour (survives a greyscale screen); form fields carry a visible border v0.12.0 / #543
the page is served under a content-security policy that stops it sending positions or trade history anywhere but your own machine v0.12.0 / #545

Claims corrected (were false at v0.12.2):

  • "keel update moves the whole install to each new release, in place" — desktop bundles never self-update since ADR 0001; updating = downloading the new installer, and config/db/credentials "are never touched by an update" (release notes wording).
  • "attestations … from a page" narrowed to asset attestations: the browser write surface at v0.12.2 is exactly keel.commands.setup.ACTIONS (config, database, rules seed, keychain credential, asset attestation, gate-checked promotion with no force option, background fetch). Venue/withdrawal attestations, resume/arm, record-flow, autonomy and update are terminal-only — keel/capabilities.py: "every capability increase in this build is a CLI command run by a person at a terminal."

Kept and re-verified: OS keychain (the credentials ACTION stores in the keychain), background fetch (jobs), WAL (ADR 0002), cannot-arm/release/spend.

Checked, no change needed: features.ts / home.ts carry no browser-app copy; all 9 "Verify in the repository" targets exist at v0.12.2; none pointed at the deleted render.py. Python floor already says 3.14 (handled in #105). The PWA question #89 raised: v0.12.0 does ship "installable, with a worker that structurally cannot cache a balance" (#551) — left out of this copy deliberately, per #89's own "deserves its own copy, not a footnote"; follow-up candidate.

#120 — the ADRs sync

  • docs/decisions/000{1,2,3} — 0001 desktop update path, 0002 SQLite persistence, 0003 commands-layer survey — added to engine-docs.manifest.json with slug/title/en/ar/fr blurbs, under a new decisions section (Decisions / سجلّات القرارات / Décisions) placed between Reference and Research.
  • One reading order everywhere (nav.ts readingOrder → sidebar, index cards, prev/next): guides → reference → decisions → research, ADR number within the section.
  • Each path verified HTTP 200 at the pinned ref v0.12.2; the fetch resolved latest-release → v0.12.2 and pulled all three. docs/decisions/README.md (the directory index) deliberately not synced — the docs index plays that role.
  • No failure-policy change: a vanished ADR fails the build loudly per FR-4, never silently stale, never a fallback to main. The sync remains the only writer of src/content/engine-docs/.

Verification

  • npm run check0 errors (astro cache cleared first)
  • npm run build — clean; ADR pages render under dist/en/docs/decision-000{1,2,3}-*/, and all three locale indexes (en/fr/ar) list the three cards under the localized Decisions heading; prev/next ordering sane (fiqh-basis ⇄ 0001 ⇄ 0002 ⇄ 0003 ⇄ research)
  • Puppeteer @390px, zero overflow (page-level and uncontained-element): all 3 ADR pages, install ×3 locales, docs indexes ×3 — 9/9 PASS

…eb UI

The v0.12.0 rewrite shipped a new client (JSON API + zero-dependency
shell); v0.12.1 put keeltrading.com's palette and mark on it (#594);
v0.12.2 gave the header a brand anchor, a light/dark theme choice and a
read-only mode badge (#598). Every clause of browserBody re-verified
against keel@v0.12.2, all three locales, rev 2026-08-28.6 -> .7.

Added, each traced to a release: the interface wears this site's
identity (v0.12.1); the header's theme choice and mode badge, reporting
only (v0.12.2); money arrives as text, computed and formatted by the
engine — the page displays, never derives (#544); profit and loss
differ in brightness as well as colour, and form fields carry a visible
border (#543); the page is served under a content-security policy that
stops it sending positions or trade history off-machine (#545).

Corrected: 'keel update moves the whole install' was already false for
the desktop app — ADR 0001 ships per-release installers and the app
never replaces itself, so the copy now says that, plus the releases'
'config, database and credentials are never touched by an update'.
'Attestations from a page' narrowed to asset attestations: the browser
write surface at v0.12.2 is setup.ACTIONS (config, database, rules
seed, keychain credential, asset attestation, gate-checked promotion,
background fetch); every capability increase — resume/arm, record-flow,
autonomy, withdrawals attest, update — is a CLI command at a terminal
(keel/capabilities.py).

Kept and re-verified: OS keychain, background fetch, WAL mode,
cannot-arm/release/spend. features.ts and home.ts carry no
browser-app copy; every 'Verify in the repository' target exists at
v0.12.2 and none pointed at the deleted render.py.

Closes #89
… section

The engine repo records its architecture decisions in docs/decisions/
— short, dated Context/Options/Decision/Consequences records, numbered
and superseded, never quietly edited. Until now every ADR lived
repo-only: a site reader never saw why keel is built the way it is.

Adds the three records at the pinned release to
engine-docs.manifest.json, each with slug/title/en/ar/fr blurb under a
new 'decisions' section (Decisions / سجلّات القرارات / Décisions):

  0001 the desktop update path — per-release installer, no self-update
  0002 SQLite persistence — one writer per file, named triggers only
  0003 the commands-layer survey — measured, and the premise dissolved

Reading order: guides -> reference -> decisions -> research, ADR number
within the section — sidebar, index cards and prev/next all derive from
one order (nav.ts readingOrder). The sync stays the only writer of
src/content/engine-docs/; docs/decisions/README.md (the directory
index) is deliberately not synced — the docs index plays that role.
Each path verified HTTP 200 at v0.12.2; a move upstream still fails the
build loudly per FR-4, with no fallback to main.

Closes #120
@sonarqubecloud

Copy link
Copy Markdown

@eaitbrahim
eaitbrahim merged commit d94a987 into main Aug 28, 2026
2 checks passed
@eaitbrahim
eaitbrahim deleted the fix/webui-resync-adrs branch August 28, 2026 23:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

1 participant