Skip to content

Deploy diagram, live-stream proxy fix, and UI polish - #14

Merged
tobilobacodes00 merged 10 commits into
mainfrom
tobiloba/engine-spine
Jul 18, 2026
Merged

tobilobacodes00 merged 10 commits into
mainfrom
tobiloba/engine-spine

Conversation

@tobilobacodes00

@tobilobacodes00 tobilobacodes00 commented Jul 18, 2026 •

Copy link
Copy Markdown
Owner

Brings main up to date with the submission-ready branch:

…dduser removed)

Debian 13 (trixie) slim dropped `adduser` from the base image, so the floating
`debian:stable-slim` tag started failing the gateway runtime build with
"adduser: not found" (exit 127). Pin the gateway runtime to bookworm and install
the `adduser` package explicitly on both the gateway and engine runtime stages, so
the user-creation step works regardless of which Debian the slim tag points at.
…trols

Landing (door):
- Neutral grey background (#F5F5F5) replacing the yellow-cream #FDFCF8
  across the @theme tokens, theme.ts mirror, and the WebGL wolf fill.
- Sidebar is now a viewport-fixed overlay (with scrim) that stays put on
  scroll and layers on top; a persistent fixed hamburger opens it.
- Meet-the-Pack wolf heads shrunk (BASE_SCALE 0.34 -> 0.28 + smaller
  static-fallback sizes) for more breathing room.
- Hero typewriter slower and pinned to one line (whitespace-nowrap) so it
  never wraps mid-typing.
- Intake "Chat session" now scrolls messages + footer together, so the
  formation card and "Yes, send it" stay reachable at short heights.

Hunt (territory):
- Pack activity is now a collapsible plain-text log under the spend line,
  expanded only by its chevron; per-beat titles derived client-side from
  the wolf role + action (beat-title.ts). Drops the old chat-feed activity
  line and the WolfActivityLine component.
- Back / New Hunt now leave territory via a hard nav instead of only
  stripping the URL slug (the door-mounted territory never remounted).
- Reward reading view gains a right-side control rail: zoom in/out and
  incremental step-scroll up/down.

History/spend (local-first, no auth):
- New lib/local-history.ts keeps a per-browser index of this browser's
  hunt ids; /hunts and /spend are filtered to owned rows and the spend
  total recomputed, so visitors no longer see each other's shared-DB data.
  Clear/Reset now clear the local index only.
…planner attribution

The hunt live-stream never connected when VITE_GATEWAY_URL is a same-origin
relative path (e.g. "/ws" behind nginx or a tunnel): the code passed the bare
path straight to new WebSocket(), which requires an absolute ws(s):// URL, so
the socket failed and no events ever reached the browser. The hunt then sat
frozen on "forming the pack…" because the plan_proposed event that flips it to
the formation card never arrived.

- use-hunt-stream: resolveGatewayBase() rebases a relative gateway path onto the
  page origin as ws://host or wss://host (https pages -> wss, avoiding a
  mixed-content block). Absolute ws(s):// / http(s):// values pass through. Fixes
  live streaming behind both the prod nginx /ws proxy and a Cloudflare tunnel.
- vite.config: dev server gains host + allowedHosts + a /api and /ws proxy, so
  the whole app can be served from one origin (needed to tunnel it as a single URL).

Copy fix: the planning status said "Alpha is forming the pack…" but Beta is the
planner (supervisor: beta.think("plan")). Corrected to "Beta is forming the
pack…" in the footer and the canvas forming toast.
…yment board

Verified all six diagrams against the real code and fixed the inaccuracies:
- deployment: new detailed board — the ECS box broken into its 3 containers
  (nginx :80, engine :8000, gateway :8080), with the three Alibaba touchpoints
  (ECS, Qwen/Model Studio, OSS) marked in black.
- backend: wolf pack shows Warden (the real standing healer), not the retired
  Doctor; web tools/providers corrected to DuckDuckGo + Jina readers (the old
  "18 providers: Tavily, Exa…" line was stale after the DuckDuckGo-only refactor).
- frontend: the six routed pages (artifacts, tracks, scorecard, library, memory,
  spend) are live features now, not stubs.
- ERD: memory.text + memory.status; documents.kind + documents.text (were
  mislabelled "body"); hunts.parent_hunt_id (self-referential lineage).
- sequence: real event names — wolf_spawned, tool_called, tool_result.
- ARCHITECTURE.md: deployment leads, every image present with an accurate caption.
The six architecture PNGs are the deliverable; the HTML sources + bundled fonts
were ~900 lines of build scaffolding. Trim ARCHITECTURE.md's regeneration section
and the now-dead diagram-src gitignore rules to match.
A sweep across the backend and frontend cutting comments down to what a reader
actually needs: the load-bearing "why", the bug-history notes, the ordering and
race warnings — and cutting the multi-sentence narration, the restated-code
comments, and the internal doc/version tags (Doc 0X §Y, v2/v3, F14, B11). No
executable code changed; verified comments/docstrings-only against the AST.

Also folds in the real Figma submission link and a type="button" on the benchmark
launch (it was submitting its parent form and reloading the page).
@tobilobacodes00
tobilobacodes00 merged commit 2575a32 into main Jul 18, 2026
4 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant