CLAUDE.md described Hexa.NET.ImGui.Widgets.Extras as "referenced for a
future tier but not yet used by any Tier 1 widget". It is used, by
CurveField.cs and BezierEditor.cs, so a reader was being told the
reference was removable for free when it is not.
Record what the reference actually costs and what it does not. The
Roslyn compiler and scripting host arrive through it (5 packages,
~107 MB unpacked) and every consumer of ktsu.ImGui.Widgets restores and
publishes them. Scanning all 366 method bodies in Extras 1.0.9 shows the
Microsoft.CodeAnalysis types are reached from exactly nine methods, all
on TextEditor's CSharpSyntaxHighlight, which nothing here touches — so
the weight is a restore and publish cost, not a runtime one.
Also note the dead end, so it is not rediscovered: ExcludeAssets and
PrivateAssets cannot drop it, because the dependency is declared in
Extras' own nuspec and a package cannot prune its dependency's
dependencies for its consumers.
Refs #384
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FrbYB3Qv8zvJfGCGbqr4dk
Refs #384. Does not close it — the remaining work there is a packaging decision that needs your call.
What
CLAUDE.mddescribedHexa.NET.ImGui.Widgets.Extrasas "referenced for a future tier but not yet used by any Tier 1 widget." It is used, byImGui.Widgets/Editors/CurveField.csandImGui.Widgets/Editors/BezierEditor.cs. A reader was being told the reference is removable for free when it is not — which is exactly the misreading #384 asks to prevent.The replacement records three things: the two call sites, what the reference actually costs, and the dead end that shouldn't be rediscovered.
Measurements behind the new wording
The Roslyn weight is real. A fresh restore of
ImGui.Widgets.csproj(obj/project.assets.json,net10.0) resolves 30 packages, 5 of them Roslyn, reached viaHexa.NET.ImGui.Widgets.Extras 1.0.9 → Microsoft.CodeAnalysis.CSharp.Scripting 4.14.0:But it is a restore/publish cost, not a runtime one. I walked the IL of every method body in
Hexa.NET.ImGui.Widgets.Extras 1.0.9(366 bodies, 0 skipped) looking for tokens resolving into aMicrosoft.CodeAnalysis*assembly. Nine methods reference Roslyn, all on one type:ImGuiCurveEditorandImGuiBezierWidget— the only two types this repo calls — never touch it, and .NET loads assemblies lazily, so nothing here faults a Roslyn assembly in at runtime.Option 2 from #384 does not work.
dotnet packonImGui.Widgetsshows the produced nuspec lists only direct dependencies; Roslyn is already absent from it. Consumers get Roslyn fromHexa.NET.ImGui.Widgets.Extras' own nuspec, which declaresMicrosoft.CodeAnalysis.CSharp.Scripting 4.14.0directly.ExcludeAssets/PrivateAssetsare local to the project that sets them and do not flow downstream, so no setting here can prune a dependency's own dependencies from a consumer's restore. That leaves options 1 and 3, which is the decision I've left on the issue.Testing
Documentation only — no code changes, so there is nothing to add a test against. The claims in the new text are the measurements above, each reproducible from a clean checkout.
🤖 Generated with Claude Code
https://claude.ai/code/session_01FrbYB3Qv8zvJfGCGbqr4dk
Generated by Claude Code