Skip to content

Improvements & updates: housekeeping, CI/tests, and prepared dependency bumps - #11

Closed
BloddyMichi wants to merge 4 commits into
mainfrom
claude/improvements-updates-okn43m
Closed

BloddyMichi wants to merge 4 commits into
mainfrom
claude/improvements-updates-okn43m

Conversation

@BloddyMichi

Copy link
Copy Markdown
Owner

Overview

Improves consistency and maintainability of the Data Center UnityExplorer fork, adds the first CI/tests, and prepares (but does not yet verify) the dependency updates. Work is split so the risk-free parts can merge independently of the runtime-affecting bumps.

Phase 1 — Housekeeping (risk-free, no behavior change)

  • Fixed the corrupted src/.editorconfig — it was mojibake (Shift-JIS read as Latin-1). Rewritten as clean UTF-8; dropped the dead [*.vb] naming section (no VB files) and duplicate style blocks, all C# rules/diagnostics preserved. (The UniverseLib .editorconfig is valid UTF-8 Japanese and was left untouched.)
  • Version consistency — aligned UnityEditorPackage/package.json (4.12.7 → 4.13.5) with the assembly version, and documented in ExplorerCore.cs that 4.13.5 is the upstream base while the fork release series is the v1.x line in the changelog.
  • Added global.json pinning the .NET 8 SDK for reproducible builds.
  • Unified Microsoft.Unity.Analyzers to 1.19.0 across both projects (compile-time analyzer only).
  • Added bilingual CONTRIBUTING.md (branch, build, style, in-game test guidance).

Phase 2 — CI & tests

  • First unit-test project tests/UnityExplorer.Tests covering platform-independent UniverseLib utilities (MiscUtility, IOUtility). It links the real source files, so no Unity/IL2CPP assemblies are required and it runs on any OS.
  • .github/workflows/ci.yml runs the tests on every push and pull request (including feature branches), complementing the existing Windows CoreCLR build.

Phase 3 — Dependency bumps (prepared as isolated commits, NOT yet verified)

Each is its own commit so it can be compile-/game-tested and reverted independently. None were compiled or tested in-game in the authoring environment — see the "pending in-game verification" note in CHANGELOG.md.

Commit Bump Notes
Il2CppInterop 1.0.0 → 1.5.1 src + UniverseLib Matches the runtime bundled with MelonLoader 0.7.3 (1.5.1-ci.845). API changed across 1.0→1.5, so a compile pass is required.
HarmonyX 2.5.2 → 2.14.0 src + UniverseLib Compile-only (IncludeAssets="compile"); runtime patching still uses MelonLoader's force-resolved 0Harmony.dll.
Tomlet 3.1.3 → 3.2.2 src Bundled/self-contained; kept within major 3.x to preserve the config API (ParseFile, Put(key,value,bool)).

Deferred: net6 → net8 — the MelonLoader 0.7.x CoreCLR runtime targets net6, so a net8 mod likely would not load. Needs a loader-compatibility test first.

Verification

  • CI (ci.yml) runs the unit tests on Linux — they do not reference the bumped packages, so they validate Phases 1–2 only.
  • The dependency bumps are compile-checked by the Windows Build Data Center CoreCLR workflow, which runs on this PR. After a green build, load the mod in Data Center and run the smoke test in CONTRIBUTING.md (UI opens, Object Explorer lists objects, C# console evaluates, a hook can be created).
  • If any bump fails, revert that single commit — they are independent.

🤖 Generated with Claude Code

https://claude.ai/code/session_01XwZk8tHDBTSZQB25KsMdXY


Generated by Claude Code

claude added 4 commits July 29, 2026 15:12
Phase 1 (risk-free housekeeping):
- Rewrite corrupted (mojibake) src/.editorconfig as clean UTF-8; drop the
  dead [*.vb] naming section and duplicate style blocks, preserve all C# rules.
- Align UnityEditorPackage/package.json version (4.12.7) with the assembly
  version 4.13.5 and document the version scheme in ExplorerCore.cs.
- Add global.json pinning the .NET 8 SDK for reproducible builds.
- Unify Microsoft.Unity.Analyzers to 1.19.0 across both projects.
- Add bilingual CONTRIBUTING.md (branch, build, style, in-game test guidance).

Phase 2 (CI & tests):
- Add tests/UnityExplorer.Tests: first unit tests covering platform-independent
  UniverseLib utilities (MiscUtility, IOUtility). The project links the real
  source files so no Unity/IL2CPP assemblies are required.
- Add .github/workflows/ci.yml running the unit tests on push and pull request,
  complementing the existing Windows CoreCLR build workflow.

Documented in CHANGELOG.md (Unreleased). Dependency runtime bumps
(Il2CppInterop, HarmonyX, net6->net8) are intentionally deferred as they
require an in-game smoke test against Data Center.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XwZk8tHDBTSZQB25KsMdXY
MelonLoader 0.7.3 bundles Il2CppInterop 1.5.1-ci.845 at runtime; the
compile-time reference is aligned to 1.5.1 so the mod links against the same
API surface it runs on. Applied to both the Interop/CoreCLR configs in
src/UnityExplorer.csproj and UniverseLib/src/UniverseLib.csproj.

NOT YET VERIFIED: not compiled or tested in-game in this environment. Il2CppInterop
had API changes between 1.0 and 1.5, so a compile pass and a Data Center smoke
test are required before release. Isolated commit so it can be reverted alone.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XwZk8tHDBTSZQB25KsMdXY
HarmonyX is referenced with IncludeAssets="compile", so it is not shipped with
the mod; at runtime MelonLoader force-resolves its own bundled 0Harmony.dll.
This only refreshes the compile-time API. UnityExplorer uses stable core Harmony
APIs (Harmony ctor, CreateAndPatchAll, Patch, AccessTools) unchanged across 2.x.

NOT YET VERIFIED: not compiled or tested in-game in this environment. Isolated
commit so it can be reverted alone.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XwZk8tHDBTSZQB25KsMdXY
Tomlet is bundled with the mod (no IncludeAssets=compile) and is self-contained,
so this does not depend on MelonLoader's runtime. Kept within major 3.x so the
config handlers' API usage (TomlParser.ParseFile, TomlDocument.Put(string, string,
bool), TomlDocument.CreateEmpty, GetString, SerializedValue) is preserved; the
4.x/6.x majors change that API and are intentionally deferred.

NOT YET VERIFIED: not compiled or tested in-game in this environment. Isolated
commit so it can be reverted alone.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01XwZk8tHDBTSZQB25KsMdXY
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants