062e02b417
CI/CD + deploy: Gitea Actions -> registry -> Dockge -> NPM (rcai.brasse-pc.eu)
...
build-and-push / build (push) Has been cancelled
Server:
- serverar byggd web-frontend statiskt + SPA-fallback (WEB_DIST)
- host-mountad persistent katalog via DATA_DIR (/srv/docker/agent-helm -> /app/data),
förberedd för framtida db/auth enligt övriga appars konvention
- esbuild-bundle -> dist/server.cjs (en fil, inga node_modules i runtime)
Web:
- WS-URL defaultar till samma origin i prod (wss://rcai.brasse-pc.eu), localhost i dev
Deploy-artefakter:
- Dockerfile: multi-stage, bygger web + bundlar server; --filter utesluter daemon
(ingen node-pty-kompilering); kör som uid 1000 (= brasse på host)
- .gitea/workflows/build.yaml: push master -> bygg arm64 -> push localhost:5000
- deploy/act-runner.{compose,config}.yaml: Gitea Actions-runner i Docker (docker.sock,
job-containrar får värdens docker for build/push)
- deploy/agent-helm.compose.yaml: Dockge-stack (srv_default, expose 8787, data-mount,
x-dockge.urls)
- deploy/DEPLOY.md: full runbook (runner, bygge, stack, NPM, uppdatering, felsökning)
Verifierat lokalt: typecheck rent, server-bundle serverar UI+health+assets+SPA-fallback,
data-dir skapas. Docker-bygget validerat så långt daemonen är nere (filter bekräftat).
2026-06-28 16:03:14 +02:00
8af5fd9972
Fixa native builds + CJS-interop; lås beroenden; verifierad slice
...
- pnpm-workspace.yaml: allowBuilds för esbuild + node-pty (pnpm 11 ersätter
onlyBuiltDependencies-listan)
- pnpm-lock.yaml: committa låsfilen
- server: @xterm/headless + @xterm/addon-serialize är CommonJS — default-
importera värdet och ta typen via 'import type' (annars ESM-named-export-fel
i runtime trots att typecheck passerar)
- daemon: städa pty-processen även vid SIGTERM
Verifierat lokalt: alla paket typecheckar, web bundlar (vite), och rök-test av
server<->daemon<->klient passerar (token-auth, registrering, snapshot,
input->pty->output).
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 14:42:01 +02:00
c58f73626e
Scaffolda tunn vertikal slice: pnpm-monorepo (shared/daemon/server/web)
...
- shared: typat WebSocket-protokoll (daemon/server/web som enda sanning)
- daemon: node-pty kör agenten (default gemini), strömmar pty över WS,
auto-reconnect; fast pty-storlek
- server: WS-mux + token-auth + session-registry + headless-xterm scrollback
(SerializeAddon) + routing av input till rätt session
- web: Vue 3 + Vite + xterm.js, session-lista, mobil-layout och
fallback-tangentbord (piltangenter/Enter/Esc/Tab/Ctrl-C) som skickar
escape-sekvenser rakt till pty:n -> styr sessionen även utan hooks
- workspace: pnpm-workspace.yaml (onlyBuiltDependencies: node-pty, esbuild),
tsconfig.base, .npmrc (retry-inställningar), .env.example
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com >
2026-06-28 14:28:04 +02:00