chore(web): enable Flutter web target

Adds the platform scaffolding flutter create produces for web
(web/index.html, manifest.json, favicon, icons). flutter build
web --release compiles the existing codebase to JS in ~16 s.
.metadata records the platform now lists web.

What works on web today:

  - Mock-mode UI (the same five fixture norms, sorted,
    inline-text-card, browser-open via launchUrl which becomes
    'open in new tab' in the browser).
  - All static screens (Heatmap, Normen, Methodik, Recht).

What does NOT yet work on web:

  - Hub-mode gRPC. chain_client_sdk_dart uses package:grpc,
    which in a browser needs the gRPC-Web wire format
    (text/grpc-web+proto over fetch). The Ch∆In Hub speaks
    gRPC-Web on the same port per docs/architecture/
    protocol-surfaces.md, but the client SDK needs a small
    web-channel branch to actually use it. Phase 1 task.

Why this matters: a single URL the AG can click is a different
political artefact than a downloaded .app. Web + macOS share
the same Recl∆Im codebase; nobody has to choose.

Signed-off-by: flemming-it <sf@flemming.it>
This commit is contained in:
flemming-it 2026-06-18 13:52:19 +02:00
parent 116310b65b
commit b06e686001
8 changed files with 82 additions and 1 deletions

35
app/web/manifest.json Normal file
View file

@ -0,0 +1,35 @@
{
"name": "reclaim_app",
"short_name": "reclaim_app",
"start_url": ".",
"display": "standalone",
"background_color": "#0175C2",
"theme_color": "#0175C2",
"description": "A new Flutter project.",
"orientation": "portrait-primary",
"prefer_related_applications": false,
"icons": [
{
"src": "icons/Icon-192.png",
"sizes": "192x192",
"type": "image/png"
},
{
"src": "icons/Icon-512.png",
"sizes": "512x512",
"type": "image/png"
},
{
"src": "icons/Icon-maskable-192.png",
"sizes": "192x192",
"type": "image/png",
"purpose": "maskable"
},
{
"src": "icons/Icon-maskable-512.png",
"sizes": "512x512",
"type": "image/png",
"purpose": "maskable"
}
]
}