Changes since 25.1.0-alpha9
Breaking changes
-
Move component-bound effect to Signal public API
Commit · Pull requestAdd Signal.effect(Component, SerializableRunnable) as the public API for creating component-lifecycle-bound signal effects, delegating to the internal Effect.effect(). Rename the existing unbound Signal.effect(EffectAction) to Signal.unboundEffect(EffectAction) to steer users toward the component-bound version. Migrate user-visible code from Effect.effect() to Signal.effect().
New features
-
Add git pre-commit hook for automatic code formatting
Commit · Pull requestAdd a Husky-based pre-commit hook that runs Spotless on staged files, so code is automatically formatted before each commit. - Use Husky (via npx) for cross-platform git hook management - Auto-install hooks via Maven profile activated when .husky/_ is missing - Use ratchetFrom with the upstream merge-base to only format changed files - Stash unstaged changes before formatting to preserve partial staging - Use a filesystem lock to prevent races during parallel Maven builds - Skip formatting during rebase when no upstream is set
Fixes
-
Add NonNull value type annotations on collection-based signals
Commit · Pull requestIn a NullMarked package, type parameters are implicitly Nullable, making peek() return Nullable for ListSignal, SharedListSignal, and SharedMapSignal even though their collection values are never null. Add NonNull to the type arguments to correctly express this contract.