Skip to content

Package quality review: remaining roadmap (B-, 70.7/100) #26

@manaporkun

Description

@manaporkun

Tracking issue for the remaining findings from the package quality review (overall B-, 70.7/100). The two highest-confidence P0s are already in flight; this tracks everything not yet addressed.

Already in flight

Remaining

P0 — packaging / compatibility (needs a real Unity check)

  • Make URP an optional/soft dependency. package.json hard-depends on com.unity.render-pipelines.universal@12.1.0 with zero URP C# usage, forcing every Built-in/HDRP consumer to install URP just for a gizmo. Move to an RP-agnostic shader include or a gated SubShader; drop the manifest dependency. Verify clean install in a Built-in-only project.
  • Input System asmdef reference. Runtime asmdef references GUID:75469ad4d38634e559750d17036d5f7c (Unity.InputSystem) unconditionally while the TH_INPUTSYSTEM define is gated via versionDefines. Confirm whether a legacy-input-only project (no Input System package) still compiles; if not, gate or remove the hard reference. Needs a legacy-only project to confirm Unity's unresolved-GUID behavior.

P1 — correctness / coverage

  • Multi-target average rotation. TransformGroup.GetAveragePosRotScale accumulates sumQuaternion *= target.rotation (quaternion product, not an average) — wrong ghost-pivot orientation for N>1 in Self space. Decide on semantics (active-object rotation, identity, or true mean) and implement.
  • Test coverage. ~334 test LOC vs ~3,700 runtime LOC, concentrated in pure utils. Add EditMode/PlayMode tests for: TransformHandleManager lifecycle, plane/axis wiring (recent bug-fix area), snapping Relative/Absolute branches, Ghost/TransformGroup delta application across Self and World space.

P2 — polish

  • ScaleGlobal framerate coupling. ScaleGlobal.Interact multiplies the per-frame pixel delta by Time.deltaTime, tying uniform-scale speed to FPS. Drop Time.deltaTime and re-tune MouseSensitivity (~60×) to preserve feel; verify by hand.
  • Tighten public surface (pre-locking the API). public mutable fields (mainCamera, HandleBase.delta, axis fields) → controlled properties; make TransformGroup internal/read-only where possible; explicit integer values on serialized enums; rename UpdateGroupScaleUpdate; resolve the unused Origin enum.
  • CI hardening. SHA-pin third-party actions; add a Unity 2021.3 matrix entry so the declared floor is actually verified (CI only runs 6000.3); add a publish concurrency guard; add dependabot.
  • Doc accuracy. README quick-start logs handle.target (the ghost pivot, not the user's object); correct PreserveScaleOnScreenExtension naming in the migration guide; add <exception> tags to throwing methods.
  • Version note. main is at 3.0.0 from the erroneous bump; decide whether to continue from 3.0.1 (recommended) or reset.

Full per-dimension scorecard available on request. Generated from a code-grounded review (claims verified against source before listing).

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions