4.4 KiB
4.4 KiB
Session Log — ZeroLagHub (Execution Ledger)
Chronological ledger of notable execution work. Keep this high signal; link to code PRs/commits in upstream repos when available.
2026-02-07 → 2026-02-08 — Console stabilization
- Migrated console from log tailing to PTY-backed interactive console over WebSockets.
- Hardened WS stability:
- moved to a single-writer pattern
- ensured exactly one PTY read loop per
{vmid, container_type}
- Fixed "it works but not on prod" issues caused by stale binaries still running.
- Confirmed systemd points to
/opt/zlh-agent/current/zlh-agentwithcurrent -> releases/<ver>layout.
2026-02-21 → 2026-02-22 — Game telemetry routing + agent Phase 1 feature set
API (control plane)
- Added
src/routes/game.js, mounted at/api/game. - Added:
GET /api/game/servers/:id/players(Redis-backed, normalized response)GET /api/game/servers/:id/update-status(agent version + update state)
- Extended
src/utils/agentPoller.js:- poll agent
GET /game/playersfor game containers - poll agent
GET /version+GET /agent/update/status - cache
agentVersion,updateStatus,updateAvailable
- poll agent
- Persisted
engineType/engineVersioninContainerInstanceon provisioning. - Rolled back provisioning-time agent update triggers (back to direct
/configflow).
Frontend (portal)
- Game console polling switched to:
GET /api/game/servers/:id/playersGET /api/game/servers/:id/update-status
- UI shows player count + optional name list.
- Version context rendered as
Version: XorVersion: X -> Y.
Agent (runtime)
/game/playershardened for more reliable Minecraft presence (port/protocol fallbacks).- Added periodic update checks:
ZLH_AGENT_UPDATE_MODE=notify|auto|offZLH_AGENT_UPDATE_INTERVAL(default30m)
- Implemented Phase 1 mod management:
GET /game/modsPOST /game/mods/install(allowlist + redirect constraints + size cap + sha256 verify)PATCH /game/mods/:mod_id(enable/disable)DELETE /game/mods/:mod_id(moves tomods-removed/)
- Implemented
GET /metrics/process(PID + VmRSS/VmSize; restart_count mapped to crashCount). - Added Minecraft readiness probe after start/restart and stop-wait-before-restart sync to reduce restart races.
- Added
lifecycle.logfor lifecycle/probe diagnostics.
Artifacts
- Expanded Minecraft artifact tree to include NeoForge under
/opt/zlh/zpacks/minecraft/neoforge/<mc_version>/. - Encountered installer naming contract mismatch; Phase 1 fix is to normalize the NeoForge installer filename for predictable installs.
2026-02-22 — Architecture strategy session (Claude)
Artifact server strategy decided
- Moved away from self-hosting all mod artifacts.
zlh-artifactdPhase 1 scope: mod resolver only (Modrinth API + NeoForge maven).- No local mod storage in Phase 1; agent fetches from upstream, verifies hash.
- Local caching added in Phase 2 based on real usage patterns.
- Full artifact orchestrator (game jars, runtimes, mods unified) is the Phase 3 vision.
- Rationale: single-operator sustainability; learn ingestion patterns from mods before automating game jars.
Mod platform decision
- Modrinth as primary source (open API, no key required, hash provided, NeoForge/Fabric/Forge/Quilt filter support).
- CurseForge: manual SFTP upload by user (their friction, not ours).
- Modrinth API base:
api.modrinth.com/v2, rate limit 300 req/min, requires User-Agent header.
NeoForge versions for artifact server
- 1.21.1 — highest mod ecosystem density (16,000+ mods)
- 1.21.4 — next significant stable adoption
- 1.21.11 — current latest
- 1.20.x NOT needed for NeoForge; existing Forge covers that ecosystem.
Vanilla MC versions to add
- Currently at 1.21.7; need to add 1.21.8 through 1.21.11.
- Source: Mojang version manifest at
piston-meta.mojang.com/mc/game/version_manifest_v2.json.
Confirmed loader coverage at launch
- Vanilla, Paper, Purpur, Forge, Quilt (covers Fabric mods too) — already in place.
- NeoForge added (3 versions above).
- No Fabric standalone needed; Quilt provides compatibility.
Next session targets
- API: proxy agent mod + process metrics endpoints behind auth/ownership.
- Artifacts: add vanilla 1.21.8–1.21.11 jars + confirm NeoForge naming contract resolved.
- Frontend: add Mods UI surface using API proxy endpoints.
- zlh-artifactd: Phase 1 design (Modrinth resolver, no local mod storage).