Files
mesh-catalog/modules/mesh-mail-web
jochen 4e68ec63c9 issue 1860: prove the operator's list end to end (integration, compiled only)
Both bundles start whole: mesh-mail-reader against a fresh database on the real store and an added event
on a real bus, mesh-mail-web's mail-reading asks carried to the reader's own tools/call as mesh-mail-web,
with stand-ins for mail-store and a fixed judgement. A task due today shows under today, ticked through
the page it is under handled today with one handled line holding no mail text, undo returns it, and a
correction from the reading pane keeps a lesson and one corrected line, within two minutes. pgx joins
mesh-mail-web's go.mod for the test's fresh database; the lead's try runs it.
2026-10-22 20:18:34 +02:00
..

mesh-mail-web — the mail page

The mail web client (novox/hq ADR 0440), built from mesh-mail's own source. It claims mail-webclient and serves the mail page on its internal name, behind Keycloak sign-in. Since design 63 milestone 1 (issue 1859, ADR 0515) the page opens on the operator's list — today, this week, later, the promises, good to know, read later, handled today and the scam warnings — from mail reading (mail-reading.list and its acts), with the modes Work, Personal and Everything (the trusted setting modes) and a reading pane for one mail and its corrections. The classical list (accounts, folders, search, one mail, write) stays at /all, as All mail. One script and one stylesheet, /static/app.js and /static/app.css, come from the page's own origin.

The code is the package internal/web; cmd/mesh-mail-web is the module's program, the one its manifest builds.

The local run: the page on your own machine

cmd/mail-page-dev serves the same page handlers on 127.0.0.1 alone, to click through the page without the mesh:

cd modules/mesh-mail-web
go run ./cmd/mail-page-dev

and open http://127.0.0.1:8463/. Flags:

  • -addr 127.0.0.1:8463 — where it listens; any address other than 127.0.0.1 is refused.
  • -now 2026-10-22T09:00:00+02:00 — fixes "today" (RFC 3339), to see the list on a chosen day.

What is real and what is a stand-in:

  • Real: every page, form, template, the script and the stylesheet, the content security policy, the host check and the form tokens: internal/web as the module runs it.
  • Stand-ins, in memory, gone when it stops: the mail — about 25 invented mails in two accounts, work and personal, with design 63's mockup people and firms (Sara Claes, Tim Jacobs, Lena Janssens, the Harbor demo, Hostco, Telco) at .example addresses; mail reading — invented entries with tasks, promises and read later in every section, handled, undone, reminded and corrected by the same rules as mesh-mail-reader; the setting modes (Work is work, Personal is personal); and sign-in, always signed in as a stand-in operator.
  • Nothing reaches the mesh: no bus, no database, no Keycloak, no mail server; a send answers an invented id, is waiting once, then says sent, and no mail leaves the machine.

It is not part of the module's build: module.json builds cmd/mesh-mail-web alone.