soarqin
82365b3d16
fix(CheatEnabler): retry invalid Dyson shell candidates
2026-07-21 23:53:21 +08:00
soarqin
010ec73c8d
fix(CheatEnabler): restore BuildToolOpt station replacement
2026-07-12 18:30:20 +08:00
soarqin
66ecebaca7
fix(UXAssist): start late-discovered mod features
2026-07-11 14:25:46 +08:00
soarqin
15c5bbdd72
feat(cheatenabler): add bounded shell-count input
2026-07-11 01:02:12 +08:00
soarqin
6b03801681
fix: Auto-Construct panel visibility on panel switching
2026-07-11 00:53:06 +08:00
soarqin
db15c65961
chore: remove BlueprintTweaks patch, the PR is merged as well
2026-07-07 23:49:54 +08:00
soarqin
ff7ce158cc
fix(UXAssist): enable AutoConstruct patch on setting change
...
- Rename ImmediateBuildPatch to FactoryBuildPatches
- Rename AutoConstructButton to AutoConstructPatch
- AutoConstructButtonEnabled now toggles the Harmony patch instead of only refreshing UI visibility
- Preserve AutoConstructEnabled state when the button option is toggled
2026-07-06 21:46:46 +08:00
soarqin
ab1d20683d
fix(UXAssist): centralize mod-feature lifecycle to prevent duplicate execution
...
ModFeatureRegistry is a static class with shared collections accumulating
features from all mods. Dependent mods (CheatEnabler, UniverseGenTweaks)
each independently called InitAll/StartAll/OnInputUpdateAll/OnUpdateAll/
UninitAll, re-running lifecycle for ALL accumulated features including
other mods' — per-frame Update ran 2-3x (breaking CheatEnabler key toggles
to net no-ops), Init/Start/Uninit ran 2-3x (double RegisterExporter causing
save corruption, double SettingChanged subscriptions, double keybind
registration).
Fix:
- Init now runs eagerly at Discover/Register time (Awake-phase), preserving
the original timing that keybind registration depends on (game's
UIOptionWindow._OnCreate copies keybinds only after all plugins load)
- InitAll removed entirely
- StartAll/UninitAll/OnInputUpdateAll/OnUpdateAll made internal so only
UXAssist (host, same assembly, no InternalsVisibleTo) can drive them
- Start deferred to UXAssist.Start (after all dependents' Awake complete;
BepInEx runs all Awakes before any Start)
- Per-feature Started idempotency + per-frame Time.frameCount guards as
defense-in-depth
- Dependent mods reduced to Discover-only in Awake
Document the Init/Start timing contract on IModFeature and
ModFeatureAttribute so future mods can rely on it.
2026-06-29 02:56:54 +08:00
soarqin
c2016909ff
refactor: phase 5 transpiler docs, mod-compat helpers, and build quality gates
2026-06-23 23:03:13 +08:00
soarqin
cca8b8594d
fix: avoid NRE in BeltSignal reset and remove no-op GalaxySelectUI reset
2026-06-23 22:27:27 +08:00
soarqin
647b130993
refactor: register static-state resets on game end
2026-06-23 22:20:04 +08:00
soarqin
b74005282e
docs: inventory static mutable state
2026-06-23 22:04:25 +08:00
soarqin
76d9d9fa21
refactor: use localization constants for last remaining literals
2026-06-23 21:44:35 +08:00
soarqin
8d70ce8862
refactor: use localization constants at remaining call sites
2026-06-23 21:41:24 +08:00
soarqin
51fc080ff2
fix: address localization review issues
2026-06-23 21:35:09 +08:00
soarqin
036243fd4a
refactor: centralize localization keys and remove runtime Chinese literals
2026-06-23 21:19:42 +08:00
soarqin
34c99701ca
refactor: localize hard-coded strings and translate comments
2026-06-23 20:58:05 +08:00
soarqin
6e2b21a0a0
refactor(UniverseGen): replace remaining step slider literals
2026-06-23 20:51:23 +08:00
soarqin
1939a9cf22
refactor(CheatEnabler/UniverseGen): consume more centralized constants
2026-06-23 20:48:35 +08:00
soarqin
25b33144b8
refactor(CheatEnabler/UniverseGen): consume centralized constants
2026-06-23 20:41:20 +08:00
soarqin
a133fd9e14
refactor(UXAssist): replace magic numbers with constants
2026-06-23 20:25:13 +08:00
soarqin
7973cbe358
refactor: centralize game constants
2026-06-23 20:11:39 +08:00
soarqin
36426d034d
docs: update public API surface with Phase 2 additions
2026-06-23 08:36:15 +08:00
soarqin
4fb43c73b5
refactor(UXAssist): split tab management out of MyConfigWindow
2026-06-23 08:33:40 +08:00
soarqin
06c3532acc
refactor(UXAssist): extract UI layout helpers from MyWindow
2026-06-23 08:28:46 +08:00
soarqin
54c1700fcd
fix(UXAssist): restore I18N public API compatibility
2026-06-23 08:25:48 +08:00
soarqin
6c7f9867d0
refactor(UXAssist): clean up I18N internals without changing public API
2026-06-23 08:22:25 +08:00
soarqin
d843090622
refactor(UXAssist): safe GameEvent wrapper and XML docs
2026-06-23 08:17:08 +08:00
soarqin
439d74c817
fix(UXAssist): preserve calling assembly semantics in Util facade
2026-06-23 08:09:53 +08:00
soarqin
ed916ebe7f
refactor(UXAssist): split Util into focused helpers with forwarding facade
2026-06-23 08:04:58 +08:00
soarqin
f4b163fae9
docs: update public API surface with Phase 1 additions
2026-06-23 07:43:07 +08:00
soarqin
8bfcee2a81
refactor(UniverseGenTweaks): split MoreSettings into focused classes
2026-06-23 07:19:25 +08:00
soarqin
b5b2fee14e
refactor(UniverseGenTweaks): adopt ModFeatureRegistry from UXAssist
2026-06-23 04:23:03 +08:00
soarqin
b6657c96c0
refactor(CheatEnabler): reduce duplication in DysonSphere helpers
2026-06-23 04:20:52 +08:00
soarqin
2dce3a7b93
refactor(CheatEnabler): split DysonSphereFunctions into focused helpers
2026-06-23 04:10:09 +08:00
soarqin
eae4ba0376
refactor(CheatEnabler): split FactoryPatch into focused classes
2026-06-23 03:47:18 +08:00
soarqin
06015d51d0
docs(UXAssist): update ModFeature docs for non-static feature classes
2026-06-23 03:38:04 +08:00
soarqin
099f3ee35a
refactor(CheatEnabler): adopt ModFeatureRegistry from UXAssist
2026-06-23 03:33:19 +08:00
soarqin
39bdf06e88
refactor(UXAssist): introduce config providers between UI and patches
2026-06-23 03:27:01 +08:00
soarqin
87f08f3f8d
fix(UXAssist): guard non-UI input updates in menu demo
2026-06-23 03:22:41 +08:00
soarqin
f822c1a5c6
refactor(UXAssist): drive lifecycle and save dispatch via ModFeatureRegistry
2026-06-23 03:18:36 +08:00
soarqin
ce199374b4
refactor(UXAssist): split UIFunctions into UI sub-features
2026-06-23 03:13:23 +08:00
soarqin
dace35a691
refactor(UXAssist): split LogisticsPatch into focused classes
2026-06-23 02:56:19 +08:00
soarqin
f2abb7cc2c
refactor(UXAssist): split FactoryPatch into focused classes
2026-06-23 02:42:21 +08:00
soarqin
91259bbd17
refactor(UXAssist): harden ModFeatureRegistry
2026-06-23 02:23:20 +08:00
soarqin
cb7a965d12
feat(UXAssist): public ModFeature lifecycle registry
2026-06-23 02:18:32 +08:00
soarqin
bfe0787923
docs: inventory UXAssist.UI/Common public API surface
2026-06-23 02:17:07 +08:00
soarqin
4ed33b2638
chore: ignore agent worktrees
2026-06-23 01:42:19 +08:00
soarqin
ee7ea6ec35
fix: config ui
2026-06-22 23:01:31 +08:00
soarqin
64f9aee06b
fix: logistic storage overflow reset when switching stations in panel
2026-06-20 15:22:05 +08:00