611 Commits
Author SHA1 Message Date
soarqin 0e09c17ea0 feat(UXAssist): show original building buffer values 2026-07-22 15:50:16 +08:00
soarqin 69d5a4b3ce feat(UXAssist): set orbital collector product limits 2026-07-22 15:25:30 +08:00
soarqin 53d558a9a4 feat(UXAssist): add advanced auto-navigation 2026-07-22 15:01:34 +08:00
FyisFeandsoarqin a48ae5ad96 feat: add 'hide sorters too' sub-option for do-not-render feature
When enabled (with the parent feature on), sorters are also hidden,
leaving only belts and their cargo visible. Hidden sorters also become
click-through so clicks reach the belts beneath them.

- RenderingPatch: gate InserterRenderer.Render and the RaycastLogic
  inserter exemption on a new HideSorters flag
- FactoryPatch/UXAssist/FactoryConfigProvider: new
  DoNotRenderEntitiesHideSorters config wired to the flag
- UIConfigWindow/I18NKeys: indented sub-checkbox + EN/zh label
- README/CHANGELOG: document the sub-option; bump to 1.5.9
2026-07-22 14:21:05 +08:00
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