Commit Graph
26 Commits
Author SHA1 Message Date
q792602257andClaude Opus 4.6 2ccbc63d95 feat(cloud-api): bake cloud-console SPA into the image and serve at /console
Multi-stage Dockerfile: stage 1 (node:20-bookworm-slim) builds cloud-console
with vite base "/console/"; stage 2 (uv) copies dist/ to /app/console-static.
Cloud API mounts the SPA at /console via SpaStaticFiles (StaticFiles subclass
that falls back to index.html for deep-link refreshes) when the new
CLOUD_CONSOLE_STATIC_DIR env is set, and 307-redirects / to /console/. Static
files bypass bearer auth (the SPA shell is public; tokens are still required
for /v1/*). Compose enables the mount by default; local dev still uses
npm run dev + CLOUD_CONSOLE_CORS_ORIGINS.

Jenkinsfile passes mirror overrides (NODE_IMAGE, NPM_REGISTRY, UV_IMAGE,
APT_MIRROR, UV_INDEX_URL) as --build-arg, defaulting to CN mirrors
(registry.jerryyan.net, registry.npmmirror.com, registry-ghcr.jerryyan.top,
mirrors.aliyun.com) so CN builds don't time out; Dockerfile ARGs default to
official upstreams so `docker build .` still works anywhere.

Backend suite: 443 passed (-m "not integration"); cloud-console typecheck
and production build succeed with the new base path.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-13 14:40:52 +08:00
q792602257andClaude Opus 4.6 2169bb03d9 feat(cloud-console): task listing, attempt history, CORS, and console SPA
Implements the cloud-console OpenSpec change: adds GET /v1/tasks (filterable,
bounded pagination, tasks:read) and GET /v1/tasks/{id}/attempts (404 on unknown
task) to the platform SDK, with matching CloudClient methods and a closed-by-
default CLOUD_CONSOLE_CORS_ORIGINS allow-list wired through CloudControlConfig.
Ships an independent Vue 3 + Vite SPA at cloud-console/ that authenticates with
an operator-supplied bearer token held in sessionStorage, renders tasks with
attempt history, device pool, host registry, and the plugin registry with a
registration form.

Backend test suite: 438 passed (-m "not integration"); cloud-console typecheck
and production build both succeed. PostgreSQL-backed repository tests and
manual end-to-end verification remain pending external infrastructure.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-07-13 14:00:23 +08:00
q792602257 e61dcca801 feat(cloud): add edge host enrollment 2026-07-13 13:54:16 +08:00
q792602257 e162ec5041 test(cloud): verify public execution outcomes 2026-07-13 08:10:11 +08:00
q792602257 1b0b3790c2 fix(host-agent): advertise connected devices 2026-07-13 08:07:45 +08:00
q792602257 22d37ca95b chore(cloud): verify integration change 2026-07-13 08:06:15 +08:00
q792602257 90961bd0a4 fix(host-agent): load configured devices 2026-07-13 07:56:41 +08:00
q792602257 77fadbd9e6 test(host-agent): cover distributed recovery flows 2026-07-12 19:54:30 +08:00
q792602257 b1303569e3 feat(host-agent): shut down gracefully 2026-07-12 19:47:50 +08:00
q792602257 91f08509a7 feat(host-agent): report assignment outcomes 2026-07-12 19:09:07 +08:00
q792602257 ec1e8c20d8 feat(host-agent): renew active assignment leases 2026-07-12 19:06:22 +08:00
q792602257 6dc2803ccc feat(host-agent): execute cloud assignments 2026-07-12 18:52:32 +08:00
q792602257 ab538513b0 feat(host-agent): compose execution factories 2026-07-12 18:50:21 +08:00
q792602257 6e59f2f3ca feat(host-agent): synchronize device snapshots 2026-07-12 18:48:17 +08:00
q792602257 f6bc8f6b98 feat(host-agent): add control plane client 2026-07-12 18:44:18 +08:00
q792602257 1e10d5aa95 test(cloud-api): verify restart recovery 2026-07-12 18:40:29 +08:00
q792602257 8131c0124b feat(cloud-api): add correlated lifecycle logging 2026-07-12 18:37:51 +08:00
q792602257 a5de7399f8 feat(cloud-api): expose health readiness 2026-07-12 18:33:45 +08:00
q792602257 b8d02abf87 fix(cloud-api): retry lifecycle iterations 2026-07-12 18:31:19 +08:00
q792602257 937a4646e1 feat(cloud-api): run lifecycle workers 2026-07-12 18:26:41 +08:00
q792602257 bd261e4992 feat(cloud-api): compose control plane services 2026-07-12 18:21:57 +08:00
q792602257 7d22b5234d feat(cloud-auth): require production credentials 2026-07-12 18:02:49 +08:00
q792602257 64aa9b39bc feat(cloud-store): support SQLite and PostgreSQL engines 2026-07-12 16:53:02 +08:00
q792602257 638216d6e7 feat(cloud): validate control plane and host configuration 2026-07-12 16:45:12 +08:00
q792602257 5e98708a94 feat(host-agent): add workspace application entrypoint 2026-07-12 16:42:51 +08:00
q792602257 2af8909b29 feat(cloud-api): add workspace application entrypoint 2026-07-12 16:41:17 +08:00