ForgeKit
Dependency-free dev-tooling for Outward BepInEx mods: file-driven dev command loop, self-test harness, on-screen toasts, player-ready lifecycle wait, embedded/override table loaders, and a shared dev-verb pack (movement/combat/skill/status probes).ForgeKit changelog
0.4.5 — 2026-08-23
- Kit versioning contract: KitContract handshake, COMPAT_SINCE, BepInDependency VERSION floors, one-bundle alpha profiles
- ForgeKit: restore VerbHost.Register's 8-param overloads (the last of the c27ed933 breaks)
0.4.4 — 2026-08-19
- ForgeKit: restore the 6-arg CommandChannel ctor as a binary-compat overload
0.4.4 — 2026-08-19
- ForgeKit: restore the 6-arg CommandChannel ctor as a binary-compat overload
0.4.3 — 2026-08-19
- Cheat verbs: ForgeKit Cheats domain drives the game's own Debug Mode
- Merge V6b fix (log-level gate: 14 unwrapped sinks retyped + requested-output exemption), peer-reviewed
- SF11 review fixes: vanilla over-capacity gate, sibling cache reads, durable host
- Fix V6b: the Quiet-tier exemption was inverted (ambient ungated, verbs gated)
- SF11 fix A3b: petinvgive reports a SETTLED weight, inside the forge capture
- Merge A1+A2+A5 fix (removeitem/unequip deferred settled reports via DeferredReport + script-control verbs unblocked), peer-reviewed
- Merge B1+B2 fix (forge shell stale-cache self-heal + script response window), peer-reviewed
- forge B1+B2 review follow-ups: keep-in-sync back-ref, skew-proof cache stamps, lease-timeout note
- Review fixes: deferred verb reports stay inside the forge response capture
- ForgeKit fix batch A (A1/A2/A5): settled readbacks + exact-verb script guard
- Merge A6+B3 fix (SaveVerbs refusal order + consumed-savelist message), peer-reviewed
- SaveVerbs A6+B3: honest post-select savelist message + in-world refusal reordered
- Merge branch 'fix/sa-0815-leafkits' into feature/pet-self-feed
- Review follow-ups on the F3c leaf-kit wave (M1, M2, L3, L5, L6)
- Static-analysis wave F3c: leaf-kit fixes (A7-1/2/4/8/9/13/14/15/16/20/23/24/25/27)
- A10 verb re-homing: photondump body -> NetKit.ViewRegistryDump; waiver docs; V28-V31
- Coercion wave: every ForgeKit integration completes cleanly through the TUI seam
- cfgdump filter accepts a full Section.Key (interface-sweep note) + sweep results recorded
- Catalog-audit fixes: comment/noise rows out of completion, real skill completion, placeholder-aware usage grammar
- UsageSpec: derive arg specs from help-string usage clauses — completion for the whole verb corpus with zero mod edits
- … and 2 more (see git history)
0.4.2 — 2026-08-11
- ForgeKit agent test-automation verbs: screenshot pipeline + removeitem
- Merge branch 'main' into fix/sa-0808-kits
- Static-analysis 2026-08-08 wave D-kits: P2-13/P2-15 + the kit P3 group
- Static-analysis 2026-08-08 wave E: close the test-debt list (§4)
- Static-analysis 2026-08-08 wave 0: nine P1/P2 fixes
- Fix BUG-RAGDOLLJOINTLOSS: the rig re-init pass ate healthy ragdoll joints
- Review fixes for lane B: drop the dead destroy companions, close the destroy-wanted ghost window, honest wording
- Fix BUG-CHOWNOTCONSUMED family: authoritative guest consumption via ForgeKit.Inventories.ConsumeOne
- invdump: read the player's inventory, and answer "how many X" with a number
- loadsave: a session can now start its own world (live-verified)
- W4: fixes for everything D1 found, plus the join-race P1
- Log levels: a per-mod [Diag] LogLevel, gating at the source
- Stuck-in-combat hardening: wedge-proof the vanilla hostility checker
- ForgeKit: fake-null sweep in GiveVerbs equip/unequip (UNT0008)
Unreleased
-
New (built, NOT live-verified):
screenshot [supersize 1-4] [label]CommonVerbs verb (EngineDiag domain,[SHOT]tag, works at the main menu) — captures the frame toBepInEx/screenshots/and prints[SHOT] saved <path> <bytes> bytesonce the file is size-stable, so a driving agent can retrieve and Read the PNG for visual analysis (scripts/game-shot.shis the dispatch+retrieval wrapper). Pure grammar inDevShot(unit-tested). -
New (built, NOT live-verified):
removeitem [qty 1-999|all] <name-or-ItemID>CommonVerbs verb (Items domain,[REMOVE]tag) — the reverse ofgive, built onInventories.ConsumeOneso guest-side destruction rides vanilla's compensation. Refuses ambiguous name matches, reports observedTOTAL QTY before -> after, never touches equipped gear. Pure grammar + stack allocation inDevRemove(unit-tested). -
New (built, NOT live-verified):
Inventories.ConsumeOne— authoritative item consumption on any Photon role. A bareItem.RemoveQuantityis a no-op for the last unit on a co-op guest (item destruction is master-gated in vanilla), which let guests feed/tame/bandage for free in consumer mods. The helper mirrors vanilla's own compensation (CharacterInventory.RemoveItem: destroy RPC to the master + local hide) and returns read-back facts (before/after/shortfall/ destroy-requested) so callers log from observation, not intent. With it,Inventories.All/AllByContainernow skip destroy-wanted items (the vanillaItemContainer.ItemStackCountprecedent), so a guest's just-spent item is no longer enumerable — or counted byinvdump— during the destroy round-trip window.
0.4.1 — 2026-08-02
- Cleanup: collapse three repeated verb preambles into helpers that already had a home
- ForgeKit/SkillKit/StoryKit: fix five guards that could never fire, and stop the recovery verb lying
- ForgeKit: one numeric-token parser for every dev verb, and it refuses NaN
- Docs sweep: archive, condense, and validate the whole documentation tree
0.4.0 — 2026-07-30
- Cap all-status build-up resistance below the engine's refusal sentinel
- Review fixes: the shared kits must not enforce OUR id allocation
- Draw every custom id from the community-allocated pool (87000-87999)
- Wire the test-automation tooling wave: Containers+Resilience CommonVerbs domains, caravanreroll rows, ForgeKit 0.4.0, ledger/STATUS, limits survey
- Merge lane 3: container/caravan queue-unblocker verbs + review fixes (scavengesim reachability honesty, quest-event disclosure, reopen gate typing, pristine-state skip)
- Lane 3 review fixes: honesty gates on the container + scavenge-sim verbs
- Merge lane 2: session resilience (unstick/LoadGate/goto hardening) + review fixes (Done precedence, sawLoading acceptance, latch decoupling)
- Merge lane 1: ForgeKit command-script runner (script/scriptcancel/scriptstatus) + review fixes (waitloaded stale-flag acceptance rule, NaN rejection, pump-gap wording)
- Review fixes F2/F3/F4-F5/F6: watchdog pre-load window, granular refusal, comment truth, latch ownership
- Review fixes: waitloaded stale-TRUE trap, NaN waits, pump-gap misblame
- Concurrent-session work committed as-is: grantstatus [force] + StatusApplyGate (DoT thread) + 2026-07-29/30 live-session testplan results
- Session resilience:
unstickverb,[LOADGATE]watchdog, hardenedgoto - Lane 3: container + caravan queue-unblocker verbs
- Add
scriptrunner: one command line, several verbs, real time between steps - Hyena/Pearlbird tuning wave: HAO taunt, gifts, bone relic, feed rule
