obfuskator/crates
loki5512344 1ebbca10fa
analysis: lock mixin classes and plugin again (revert mixin rename)
Renaming mixin classes and patching mixins.json (90506a4) breaks Fabric
mods at runtime, proven on LoVisual (2026-10-13):

- When obfuscated packages are randomized per class the config patcher
  computes an empty common prefix and writes `package: ""`. Fabric/Mixin
  then drops every mixin as "orphaned", so `RenderPipelineMixin
  implements IRenderPipeline` never applies, the interface is not
  injected into `RenderPipeline`, and the entrypoint dies with
  `ClassCastException: RenderPipeline cannot be cast to IRenderPipeline`.
- `IMixinConfigPlugin.shouldApplyMixin` compares the runtime mixin class
  name against string literals (`Set.of("dev.loki...Mixin")`); renaming
  desyncs those sets and optional sodium/iris/xaero mixins get applied
  when the target mod is absent.

Re-enable absorb_mixins: mixin entry classes and the config plugin keep
their names, and locking a class freezes its members too (needed for
@Accessor/@Invoker/@Overwrite name lookups). Calls from locked mixin
bytecode are still rewritten consistently, and the family mechanism keeps
interface method names (IRenderPipeline) in sync with the frozen mixin
methods. patch_mixins_json stays but is identity for locked classes.

Verified: LoVisual obf jar loads all 221 mixins (0 orphaned), the main
menu renders, the entrypoint runs.
2026-10-13 13:18:13 +02:00
..
noxis verify,cli: jadx decompile-quality metric with analyze --decompile 2026-10-10 13:32:23 +02:00
noxis-analysis analysis: lock mixin classes and plugin again (revert mixin rename) 2026-10-13 13:18:13 +02:00
noxis-classfile classfile,passes: model RuntimeVisibleTypeAnnotations and AnnotationDefault 2026-10-13 10:17:10 +02:00
noxis-core passes,core: debug fakes - line numbers and source removal 2026-10-09 14:08:08 +02:00
noxis-jar jar: pass module-info.class through as a raw resource 2026-10-13 10:23:19 +02:00
noxis-passes classfile,passes: model RuntimeVisibleTypeAnnotations and AnnotationDefault 2026-10-13 10:17:10 +02:00
noxis-runtime frames,jar,passes: verifier-driven hardening from real jars 2026-10-09 13:47:27 +02:00
noxis-structure-check frames,jar,passes: verifier-driven hardening from real jars 2026-10-09 13:47:27 +02:00
noxis-verify classfile,passes,jar: model PermittedSubclasses, normalize interface flags, name class in write errors 2026-10-10 14:22:03 +02:00