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

46
app/web/index.html Normal file
View file

@ -0,0 +1,46 @@
<!DOCTYPE html>
<html>
<head>
<!--
If you are serving your web app in a path other than the root, change the
href value below to reflect the base path you are serving from.
The path provided below has to start and end with a slash "/" in order for
it to work correctly.
For more details:
* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/base
This is a placeholder for base href that will be replaced by the value of
the `--base-href` argument provided to `flutter build`.
-->
<base href="$FLUTTER_BASE_HREF">
<meta charset="UTF-8">
<meta content="IE=Edge" http-equiv="X-UA-Compatible">
<meta name="description" content="A new Flutter project.">
<!-- iOS meta tags & icons -->
<meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="reclaim_app">
<link rel="apple-touch-icon" href="icons/Icon-192.png">
<!-- Favicon -->
<link rel="icon" type="image/png" href="favicon.png"/>
<title>reclaim_app</title>
<link rel="manifest" href="manifest.json">
</head>
<body>
<!--
You can customize the "flutter_bootstrap.js" script.
This is useful to provide a custom configuration to the Flutter loader
or to give the user feedback during the initialization process.
For more details:
* https://docs.flutter.dev/platform-integration/web/initialization
-->
<script src="flutter_bootstrap.js" async></script>
</body>
</html>