diff --git a/SESSION_LOG.md b/SESSION_LOG.md index 30679a8..0e03c62 100644 --- a/SESSION_LOG.md +++ b/SESSION_LOG.md @@ -87,8 +87,42 @@ Chronological ledger of notable execution work. Keep this high signal; link to c --- +## 2026-02-23 — Mod System Now Operational + +Full mod lifecycle implemented and confirmed end-to-end. + +### What shipped +- Modrinth search integrated (`GET /api/game/mods/search`) +- Full install/list/enable/disable/delete routes live behind auth + ownership +- Agent host allowlist expanded to include `cdn.modrinth.com` +- Filename validation updated to allow `+` (required for Modrinth filenames like `sodium-neoforge-0.6.13+mc1.21.4.jar`) +- Engine metadata bug fixed: `engineType="neoforge"`, `engineVersion="1.21.4"` (was `"minecraft"` / `"neoforge-1.21.4"`) +- API → Agent payload contract corrected (field names and `source` field) +- Frontend: mod search drawer, installed panel, enable/disable/delete, toast notifications + +### System state +- Full lifecycle via API: ✅ +- Frontend search + install: ✅ +- Enable/disable/delete: ✅ +- Installed flag displayed: ✅ +- Soft delete to `/mods-removed`: ✅ +- No retention automation: intentional +- No install queue: intentional +- Filesystem authoritative: confirmed + +### Known tradeoffs locked in +- No deterministic Modrinth project ID persistence (installed detection is heuristic) +- No DB tracking of mod state +- Soft delete is permanent until file browser enables manual restore + +### Pending +- Response corruption investigation (one early curl output appeared malformed) +- API error mapping: `"mod already exists"` → `409` (currently `502`) +- Portal UI wiring for install flow + +--- + ## 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). +- Reproduce and resolve response corruption with clean curl test +- Tighten API error mapping +- Begin file browser (agent + API + frontend) — see `OPEN_THREADS.md`