Martin Vogel
62af5b87ee
feat(ui): wire CodeAtlasWeb into the build, the dev-proxy contract and the CSP
...
Maintainer glue for the imported frontend; no product behaviour of the
UI itself changes.
- Makefile.cbm: `npm ci` runs with PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1.
The UI's dev dependencies include playwright for its local browser
proofs, and a plain install would download browsers that no build or
gate launches.
- graph-ui/vite.config.ts: the dev server listens on 5173 with the two
literal loopback origins, which is what
tests/test_ui_dev_proxy_security.sh pins.
- graph-ui/index.html: lang="en"; the catalog is English.
- CSP: the directive string moves to http_server.h as CBM_UI_CSP_VALUE
so a test can pin it, and connect-src now admits the two loopback
services the UI may talk to when the reader starts them, the
local-model sidecar on 127.0.0.1:4141 and the agent-event bridge on
127.0.0.1:4142. Under connect-src 'self' both fetches were silently
blocked in the embedded build. Every other host stays forbidden; a
new httpd test asserts that the only hosts in the policy are those
two loopback ports.
- scripts/security-ui.sh: two false positives that bit on the imported
source. The analytics pattern matched the English word "plausible"
(now plausible.io), and `\s` inside an ERE bracket is a literal
backslash and 's', which cut every localhost URL at its first 's' and
then failed the allowlist (now [:space:]).
Verified: httpd suite 64 passed; dev-proxy contract and UI security
audit pass; graph-ui builds and its 2024 vitest tests pass.
Signed-off-by: Martin Vogel <martin.vogel.tech@gmail.com >
2026-09-05 20:15:13 +02:00
..
2026-08-08 17:35:05 +02:00
2026-08-03 01:51:30 +02:00
2026-08-11 13:37:32 +02:00
2026-06-05 21:53:25 +02:00
2026-06-05 21:53:25 +02:00
2026-07-13 01:50:03 +02:00
2026-03-15 22:37:34 +01:00
2026-08-11 13:37:32 +02:00
2026-08-21 04:11:51 +02:00
2026-08-01 17:36:21 +04:00
2026-05-30 18:26:44 +02:00
2026-07-11 03:28:32 +02:00
2026-06-29 09:45:28 -06:00
2026-07-22 17:48:20 +02:00
2026-08-08 17:35:05 +02:00
2026-07-18 15:52:50 +02:00
2026-08-20 21:36:57 +02:00
2026-08-17 00:16:15 +02:00
2026-07-13 01:50:02 +02:00
2026-07-14 21:13:52 +02:00
2026-08-15 10:37:24 +03:00
2026-08-17 04:54:14 +02:00
2026-08-06 08:24:23 -04:00
2026-08-04 16:37:06 +02:00
2026-06-06 22:16:04 +02:00
2026-08-15 08:44:20 +02:00
2026-08-14 06:46:05 -04:00
2026-07-18 15:52:50 +02:00
2026-08-27 23:19:30 +02:00
2026-08-08 17:35:05 +02:00
2026-08-14 20:04:08 +02:00
2026-08-14 06:46:05 -04:00
2026-08-12 12:47:59 +02:00
2026-08-09 13:06:42 +02:00
2026-07-18 11:48:59 +02:00
2026-08-27 23:19:30 +02:00
2026-08-11 13:37:32 +02:00
2026-07-18 01:26:08 +02:00
2026-07-18 01:26:08 +02:00
2026-08-13 14:04:51 +02:00
2026-08-16 13:12:25 +02:00
2026-08-18 00:14:17 +02:00
2026-06-23 06:38:45 +09:00
2026-06-23 06:38:45 +09:00
2026-03-25 09:28:11 +01:00
2026-08-06 18:15:48 +02:00
2026-07-18 15:52:50 +02:00
2026-07-18 15:52:50 +02:00
2026-06-07 12:35:53 +02:00
2026-06-08 22:55:23 +02:00
2026-08-20 18:42:26 +02:00
2026-07-16 01:21:45 +02:00
2026-06-05 21:53:25 +02:00
2026-07-02 00:37:52 +02:00
2026-08-06 03:30:32 +02:00
2026-07-18 15:52:50 +02:00
2026-06-05 21:53:25 +02:00
2026-08-20 00:12:28 +02:00
2026-06-07 19:13:01 +02:00
2026-06-07 19:13:01 +02:00
2026-06-07 19:13:01 +02:00
2026-06-27 16:23:26 +02:00
2026-06-07 20:05:24 +02:00
2026-06-07 20:05:24 +02:00
2026-08-20 00:12:28 +02:00
2026-07-08 00:05:19 +05:30
2026-08-06 08:26:45 -04:00
2026-05-21 22:52:16 +02:00
2026-07-24 16:08:42 +02:00
2026-08-17 22:07:11 +03:00
2026-09-05 20:15:13 +02:00
2026-08-28 02:07:53 +02:00
2026-07-28 20:46:29 +00:00
2026-08-14 20:01:06 +02:00
2026-06-22 22:04:31 +02:00
2026-07-18 13:48:06 +02:00
2026-06-02 18:52:37 +02:00
2026-07-18 15:52:50 +02:00
2026-07-18 15:52:50 +02:00
2026-08-20 19:11:33 +02:00
2026-07-31 03:42:43 +02:00
2026-07-18 14:38:07 +02:00
2026-06-28 13:05:05 +02:00
2026-08-06 18:15:48 +02:00
2026-03-15 22:37:34 +01:00
2026-08-16 18:43:44 +02:00
2026-07-18 01:26:08 +02:00
2026-06-08 22:55:23 +02:00
2026-07-18 15:52:50 +02:00
2026-08-27 22:51:35 +02:00
2026-08-13 19:16:19 +02:00
2026-08-11 17:01:24 +02:00
2026-08-16 03:23:05 +02:00
2026-06-12 02:17:39 +02:00
2026-08-20 21:20:44 +02:00
2026-07-29 17:05:10 +02:00
2026-08-03 17:44:52 +02:00
2026-08-17 22:07:11 +03:00
2026-08-15 17:22:59 +02:00
2026-07-03 19:57:01 +02:00
2026-07-18 15:52:50 +02:00
2026-07-18 15:52:50 +02:00
2026-08-20 10:23:48 +02:00
2026-08-14 06:11:05 +03:00
2026-07-18 01:26:08 +02:00
2026-07-18 01:26:08 +02:00
2026-08-10 16:40:31 +02:00
2026-08-28 09:14:40 +02:00
2026-05-09 14:16:15 +02:00
2026-07-18 15:52:50 +02:00
2026-08-18 11:19:19 +02:00
2026-08-11 17:01:24 +02:00
2026-08-13 23:52:21 +02:00
2026-08-18 22:30:28 +02:00
2026-06-23 13:52:08 -03:00
2026-08-17 22:07:11 +03:00
2026-07-18 15:52:50 +02:00
2026-07-18 15:52:50 +02:00
2026-08-03 15:42:32 +02:00
2026-08-17 22:07:11 +03:00
2026-08-12 20:57:43 +02:00
2026-08-08 17:35:05 +02:00
2026-07-18 01:26:08 +02:00
2026-08-18 11:21:36 +02:00
2026-08-06 18:33:13 +02:00
2026-06-28 21:57:35 -06:00
2026-08-13 16:36:27 -04:00
2026-07-25 00:37:05 +02:00
2026-08-07 14:58:22 +02:00
2026-07-13 11:43:00 +03:00
2026-08-10 12:57:34 +01:00
2026-07-19 12:35:58 +05:30
2026-03-20 20:32:38 +01:00
2026-08-01 01:29:20 +02:00
2026-07-03 20:16:39 +02:00
2026-08-20 10:23:48 +02:00
2026-07-17 22:32:53 +02:00
2026-07-13 01:48:29 +02:00
2026-03-24 23:48:23 +01:00
2026-06-24 20:33:52 +05:30
2026-08-13 00:21:13 +02:00
2026-03-24 23:48:23 +01:00
2026-08-17 00:16:16 +02:00
2026-06-10 12:11:02 +02:00
2026-07-21 15:32:15 +02:00
2026-08-28 00:39:57 +02:00
2026-04-06 14:34:07 +02:00
2026-08-08 17:35:05 +02:00
2026-08-09 17:17:05 +02:00
2026-07-23 00:53:41 +02:00
2026-08-08 17:35:05 +02:00
2026-06-05 21:53:25 +02:00
2026-08-14 00:21:31 +02:00
2026-08-14 04:40:07 +02:00
2026-08-14 12:48:40 +02:00
2026-08-28 09:14:40 +02:00
2026-08-14 14:32:28 +02:00
2026-08-17 22:07:11 +03:00
2026-06-06 19:48:48 +02:00
2026-08-17 22:07:11 +03:00
2026-08-06 18:00:08 +02:00
2026-03-24 23:48:23 +01:00
2026-04-15 23:56:03 +02:00