Files
firefrost-services/docs/code-bridge/status/ACTIVE_CONTEXT.md
Claude Code e6552864f0 Bitch Bot: full source scaffold for NeoForge 1.21.1 (REQ-2026-04-15-bitch-bot)
First-boot server provisioner. Named by Holly. Architecture per Gemini 4-round
consultation. Drops a provision.json in server root, mod runs once on
ServerStartedEvent: pastes spawn schematic, places TP command blocks pointing
at the original level.dat spawn, sets worldspawn, gamerules, YAWP region file,
self-destructs by renaming jar to .jar.disabled.

Files (services/bitch-bot/1.21.1/):
- build.gradle / settings.gradle / gradle.properties / gradle wrapper (mirrors rules-mod 1.21.1)
- META-INF/neoforge.mods.toml
- BitchBot.java        — @Mod entry, ServerStartedEvent listener, Throwable net
- Provisioner.java     — sequenced step runner, per-step try/catch, success tracking gates self-destruct
- ProvisionConfig.java — Gson POJO matching provision.json schema verbatim
- SchematicLoader.java — HTTP download + SHA-256 verify + Sponge v2 .schem parser (NbtIo + varint + BlockStateParser palette)
- CommandBlockPlacer.java — impulse command blocks with /tp @p baked into CommandBlockEntity
- SignPlacer.java      — oak signs, 4-line front text via SignBlockEntity#setText
- YawpConfigWriter.java — drops region JSON to world/serverconfig/yawp/regions/{name}.json
- SelfDestruct.java    — ProtectionDomain → CodeSource → jar rename, Windows fallback to deleteOnExit

Plus services/bitch-bot/CLAUDE.md (project doc) and sample-provision.json.

NOT COMPILED — no Java/Gradle on Nitro per repo CLAUDE.md. Compile on Dev Panel:
  cd /opt/mod-builds/firefrost-services/services/bitch-bot/1.21.1
  source use-java 21
  /opt/gradle-8.8/bin/gradle build --no-daemon

Risk areas flagged in CLAUDE.md for first compile: schematic parser (untested
against real WorldEdit output), YAWP file format (best-guess schema).
2026-04-15 12:47:08 -05:00

9.1 KiB
Raw Blame History

Code Status Update

Last Updated: 2026-04-15 (post-launch, late night — Michael away)

Environment Change

Now running locally on the Nitro (Windows 11) instead of the remote dev server. Working directory: C:\Users\mkrau\firefrost-services. Git remote still pushes to Gitea. Git identity configured repo-local as Claude Code <claude@firefrostgaming.com>.

Current Focus

Bridge queue empty. Launch went out earlier with reaction-roles + Carl-bot migration shipped (f4f96df). Bitch Bot scaffold complete on Nitro, awaiting Dev Panel compile.

Post-Launch Session 2026-04-15

Shipped

  • REQ-2026-04-15-reaction-roles (f4f96df) — pre-launch dispatch. Reaction roles for #get-roles (3 messages, 20 emoji→role mappings), Wanderer auto-assign + welcome DM on guildMemberAdd, link-reminder DM after Stripe checkout. Added GuildMessageReactions + DirectMessages intents and Partials.Message/Channel/Reaction to client. All silent-fail.
  • REQ-2026-04-15-bitch-bot — full source scaffold. NeoForge 1.21.1 mod, 7 Java files + gradle config + mods.toml + sample-provision.json + project CLAUDE.md. Mirrors rules-mod/1.21.1 layout. NOT compiled — Java/Gradle not available on Nitro per CLAUDE.md. Compile on Dev Panel.
    • Files: BitchBot.java (entry + ServerStartedEvent), Provisioner.java (sequenced step runner with per-step try/catch), ProvisionConfig.java (Gson POJO), SchematicLoader.java (HTTP + SHA-256 + Sponge v2 .schem parser using NbtIo.read + varint decode + palette resolution via BlockStateParser), CommandBlockPlacer.java (impulse command blocks with /tp @p [origSpawn] baked into CommandBlockEntity), SignPlacer.java (oak signs, 4-line front text via SignBlockEntity#setText), YawpConfigWriter.java (drops region JSON to world/serverconfig/yawp/regions/), SelfDestruct.java (locates own jar via ProtectionDomain and renames to .jar.disabled)
    • Build: cd services/bitch-bot/1.21.1 && source use-java 21 && /opt/gradle-8.8/bin/gradle build --no-daemonbuild/libs/BitchBot-1.0.0-neoforge-1.21.1.jar
    • Risk areas to test on first compile: Sponge v2 schematic parser (untested against real WorldEdit output), command block NBT persistence, YAWP file format (best guess at schema — may need a tweak in YawpConfigWriter once we see what YAWP actually expects). All failures log gracefully and skip self-destruct so Bitch Bot can be retried.

Session Summary (2026-04-14 Evening)

Rules Mod 1.18.2 Builds — DONE

  • Ported both Firefrost Rules and Discord Rules to Forge 1.18.2-40.2.4
  • API changes: TextComponent, sendMessage(comp, Util.NIL_UUID), getPlayer()
  • ForgeGradle 6.0 + Gradle 8.8 + Java 17
  • Jars: firefrostrules-1.0.5-1.18.2-forge.jar, discord-rules-1.0.5-1.18.2-forge.jar
  • Both mods now have 4 versions each: 1.16.5, 1.18.2, 1.20.1, 1.21.1

Version UI in Server Matrix — DONE

  • Added installed version display to both TX1 and NC1 card loops in _matrix_body.ejs
  • Uses <% var %> assignment pattern to avoid single-quote EJS breakage
  • Edit button, save/cancel, version history viewer via HTMX
  • EJS validates clean

PWA Phase 1 — DONE

  • manifest.json — standalone app config, cyan theme, app ID
  • sw.js — conservative static-only caching, never caches admin routes
  • Placeholder icons (cyan T, 192 + 512) in src/public/images/
  • express.static middleware added to src/index.js
  • PWA meta tags + Apple mobile web app + service worker registration in layout.ejs

Task Module — 7 Features — DONE

  1. Slide-out detail panel (click task title → full info overlay from right)
  2. Client-side sorting (number, priority, status, updated) persists in localStorage
  3. Toggleable filter chips (status + priority, multi-select)
  4. Saved filter presets (Launch Fires, Code Queue, Post-Launch, All Open)
  5. Kanban board view (4 columns, toggle persists in localStorage)
  6. Session summary badge ("X tasks completed today")
  7. Code queue badge in sidebar nav (cyan count from tasks tagged 'code')
  • Route updated: added completedToday query, allTasks for kanban
  • Admin middleware: code queue count query for sidebar badge

Earlier Session (2026-04-14)

Server Command Center — CODE COMPLETE

  • Full Arbiter feature build (migrations, services, routes, views)
  • Pending deploy by Michael (see previous ACTIVE_CONTEXT for deploy steps)

Previous Session (2026-04-13)

Task #69: Discord Rules CurseForge Fork — DONE

  • All builds at v1.0.5 (now 4 firefrostrules + 4 discordrules)
  • CurseForge project page copy pending from Chronicler

Rules Mod Config Bug — FIXED

  • v1.0.5 WORKING on Otherworld

Session 2026-04-15 (local Nitro)

Shipped

  • Task #166 — Trinity Console Issue Tracker (b0b69fb, +916 lines)

    • Migration 141: issues, issue_attachments, issue_comments tables + indexes
    • src/routes/admin/issues.js — session-auth UI routes (list/new/detail/status/assign/comments/upload/attachment-serve)
    • src/routes/api.js/api/internal/issues* bearer-token REST surface for n8n
    • src/services/issueNotifier.js — Discord webhook dispatcher (DISCORD_ISSUE_WEBHOOK_URL), silent-fail
    • Views: index.ejs (list+filters+stats), new.ejs (mobile-first, accept="image/*" for phone camera roll), detail.ejs (screenshots w/ lightbox, workflow controls, comments)
    • layout.ejs sidebar nav link
    • package.json adds multer ^1.4.5-lts.1
    • CSRF token passed via query string on multipart forms (csurf runs before multer parses body)
    • Screenshots stored at services/arbiter-3.0/uploads/issues/, 10 MB/file × 6 max, image MIME filter, path-traversal guard
    • All 4 EJS files validated via ejs.compile(), all JS node --check clean
    • Deploy: cd /opt/arbiter-3.0 && git pull && npm install && mkdir -p uploads/issues && psql -U arbiter -h 127.0.0.1 -d arbiter_db -f migrations/141_issues.sql && pm2 restart arbiter-3. Optional: DISCORD_ISSUE_WEBHOOK_URL in .env.
  • Task #163 — Task Description Hygiene Backfill (263a7e3)

    • scripts/backfill-task-descriptions.js — reads ops manual archive, strips YAML frontmatter, emits UPDATE tasks SQL with $body$…$body$ dollar quoting
    • Guard: AND (description IS NULL OR description = '') — safe to re-run
    • Output: scripts/out/backfill-task-descriptions.sql (575 lines), .md report
    • Matched 6/15 from archive: #99, #100, #104, #105, #106, #113
    • Missing 9 (no archive file, need manual copy): #22 Netdata, #23 Department Structure, #32 Terraria Branding, #48 n8n Rebuild, #49 NotebookLM, #51 Ignis Protocol, #81 Memorial Writing Assistant, #89 DERP Protocol Review, #97 Trinity Console Social Hub
    • Apply: psql -U arbiter -h 127.0.0.1 -d arbiter_db -f scripts/out/backfill-task-descriptions.sql
    • Note: REQ header claimed 16 tasks but table lists 15 — worked from the table

Archived (no-op verifications)

  • REQ/RES-2026-04-14-server-command-center — verified code-complete in d16a525 (full build) and a193523 (subdomain + Cloudflare provisioning per RES-2026-04-14-subdomain-seed-data). Migration 139, seed JS, uptimeKuma.js, pterodactyl.js, /provision-subdomain route all present. Pending Michael's deploy on dev panel.
  • REQ-2026-04-14-code-queue-badge-fix — verified already implemented in 166e4c8 ("Task module: 7 UX features"). Middleware in admin/index.js lines 3142, badge span in layout.ejs lines 105110. Archived as no-op. If badge still not showing after deploy, check whether any open/in_progress tasks actually have 'code' in their tags array — badge correctly hides at count 0.

Pending Bridge Requests

Deferred (post-launch, not urgent)

  • REQ-2026-04-12-phase11e-gitbook-scope — GitBook integration scope for ModpackChecker. Explicitly held per Michael.

Previously Completed (can be archived on next pass)

  • REQ-2026-04-14-version-ui-matrix
  • REQ-2026-04-14-pwa-phase1
  • REQ-2026-04-14-task-module-improvements
  • REQ-2026-04-14-rules-mod-1182

Previously Completed (can be archived)

  1. REQ-2026-04-12-discord-rules-fork — Done
  2. REQ-2026-04-12-phase11-prerequisites — Done
  3. REQ-2026-04-12-phase11a-deploy — Done
  4. REQ-2026-04-12-phase11bc-deploy — Done
  5. REQ-2026-04-12-phase11d-badge-debug — Done
  6. REQ-2026-04-12-phase11d-badge-decision — Done
  7. REQ-2026-04-12-phase11d-deploy — Done
  8. REQ-2026-04-13-arbiter-discord-roles — Done
  9. REQ-2026-04-13-missing-modpack-installations-migration — Done
  10. REQ-2026-04-13-rules-mod-config-fix-versioning — Done
  11. REQ-2026-04-13-rules-mod-config-not-read-at-runtime — Done
  12. REQ-2026-04-13-rules-still-returning-defaults — Done
  13. REQ-2026-04-13-status-route-mismatch — Done
  14. REQ-2026-04-13-v110-consolidated-deploy — Done

Standing Items

  • ModpackChecker v1.1.0 deploy blocked on CurseForge API rate limit
  • CurseForge Discord Rules project page pending Chronicler copy
  • Build router at /opt/mod-builds/ffg-build.sh

Discipline Notes

  • CHANGELOG.md updated with every version bump
  • ACTIVE_CONTEXT.md updated at end of each work session
  • EJS validated before every commit