Skip to content

Releases: ogre-works/ogre-tools

v23.2.0

19 May 15:02

Choose a tag to compare

23.2.0 (2026-05-19)

Features

  • element-component: Expose getPropsFromPlugins so non-React callers can derive element props (6fa9f44)

Bug Fixes

  • injectable: Let getInjectable2 implementation be narrower than its token (4c6163a)

v23.1.0

07 May 12:10

Choose a tag to compare

23.1.0 (2026-05-07)

Features

  • injectable: Override-as-injectable via instantiationDecoratorToken (635d0a0)
  • injectable: Tag-keyed dispatch for every targeted decorator/callback (65c3998)
  • injectable: Walk specificTokenOf chain at decorator dispatch sites (27534bd)

Performance Improvements

  • injectable: Direct-store v2-default no-args injects, closing the v1/v2 gap (cdb18b9)
  • injectable: Skip decorator dispatch and direct-store singletons in hot paths (5c489c2)
  • injectable: Trim per-call overhead in inject, injectMany and register hot loops (f14a99c)

v23.0.1

24 Apr 15:05

Choose a tag to compare

23.0.1 (2026-04-24)

Note: Version bump only for package ogre-tools

v23.0.0

24 Apr 14:32

Choose a tag to compare

23.0.0 (2026-04-24)

⚠ BREAKING CHANGES

  • injectable: Restructure Inject/Inject2 types and clean minimalDi interfaces
  • injectable-react: Rename getAbstractInjectionTokenComponent to *2
  • injectable-extension-for-mobx: Unwrap computedInjectMany2 family and reuse ManyFactory
  • injectable-extension-for-mobx: The following named exports are removed from
    @ogre-tools/injectable-extension-for-mobx: computedInjectManyInjectable,
    computedInjectManyWithMetaInjectable, computedInjectMany2Injectable,
    computedInjectManyWithMeta2Injectable, computedInjectMaybeInjectable,
    computedInjectMaybe2Injectable. Use the matching *InjectionToken exports
    together with registerMobX instead.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
(cherry picked from commit a675191)

  • injectable: di.decorate(alias, decorator) and
    di.decorateFunction(alias, decorator) are gone. Replace call sites by
    registering an injectable with injectionToken: injectionDecoratorToken.for(alias)
    on a container created with { injectionDecorators: true }.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
(cherry picked from commit 4add9f6)

  • injectable: Containers that rely on di.decorate, di.decorateFunction,
    or injectables registered against injectionDecoratorToken.for(...) must
    now pass { injectionDecorators: true } to createContainer.

Co-Authored-By: Claude Opus 4.7 (1M context) noreply@anthropic.com
(cherry picked from commit ed0f5d2)

Features

  • Add dual CJS/ESM build output for all packages (07f5ee9)
  • element-component: Introduce mechanism for conditional $prop usage with react hooks (a6a664c)
  • injectable-extension-for-mobx: Add 2-variants of computedInjectMany et al (ea46423)
  • injectable-react: Add getAbstractInjectionTokenComponent (c456d16)
  • injectable-react: Add getInjectableComponent2 for v2 InjectionToken2 (e0f0697)
  • injectable-react: Add getInjectionTokenComponent (e0e3022)
  • injectable-react: Add getInjectionTokenComponent2 for v2 InjectionToken2 (ede306b)
  • injectable-react: Add useInject2 factory-returning hook (ad23e79)
  • injectable-react: Support injectable2 in useInject hooks (0711183)
  • injectable: Add getAbstractInjectionToken2 with full enforcement (21d194c)
  • injectable: Add getInjectable2/getInjectionToken2 with curried instantiate and generic support (e341713)
  • injectable: Add getNumberOfInstances for global instance count introspection (a818797)
  • injectable: Add inject2/injectMany2 for factory-returning injection (d8c2e73)
  • injectable: Add injectable2/token2 support to Override type (cf5bb83)
  • injectable: Add instancePurgeCallbackToken with three-phase purge and LRU integration (0eac0f6)
  • injectable: Add LRU cache support for keyedSingleton instances (80beb7b)
  • injectable: Add registration/deregistration decorator tokens (5a2e94e)
  • injectable: Add registration/deregistration decorator tokens as abstract v2 (e7949bf)
  • injectable: Enhance purge with key-based, token, scoped, and typed support (8730312)
  • injectable: Hold object-typed keyed singleton keys weakly (c0649a9)
  • injectable: Make di.override and di.override2 cross-compatible with v1/v2 (99c9dc9)
  • injectable: Make injectionDecorators opt-in at container creation (b5379eb)
  • injectable: Make preventSideEffects the default (2dcc0a4)

Bug Fixes

  • injectable-extension-for-mobx: Wrap computed reads in runInAction to suppress MobX warnings (3bbed48)
  • injectable-mobx: Use curried inject for v2 minimalDi in computed-inject-2 variants (7d5dbf9)
  • injectable-react: Accept specific ComponentType tokens for bare components (1fa51c6)
  • injectable-react: Run tsd separately per test file to avoid multi-directory glob bug (5e77ae5)
  • injectable-react: Update error message expectations after context removal (0b0ad28)
  • injectable-react: Widen injectionToken type in getInjectableComponent (3387e59)
  • injectable: Detect override-after-injection when overriding by token (f871f43)
  • injectable: Fix cascade deregistration throwing for already-deregistered injectables (fbbca02)
  • injectable: Fix cascade deregistration throwing for already-deregistered injectables (bf41803)
  • injectable: Fix context mutation and optimize hot paths (f095d95)
  • injectable: Fix WithMeta types and add type tests for token2 (326bb8f)
  • injectable: Include injectable id in singleton instantiation-parameter error (0021718)
  • injectable: Include injecting injectable's namespaced id in inject error messages (dfa89c5)
  • injectable: Look up instantiation decorators by original injectable, not override (ffbe1b9)
  • injectable: Prevent double-decoration when injectable and token share id (1cd7d60)
  • injectable: Stop double-applying injection decorators via injectMany (4318dd7)
  • injectable: Stop spreading v1 instantiation param in Inject2 factory (13eed28)
  • injectable: Tolerate undefined instantiation args on old-style singletons (25614a0)
  • injectable: Use namespaced ids in error messages where injectable is registered (3271f1f)
  • injectable: Use object reference as speciality in abstract decorator tokens (e666d1d)

Performance Improvements

  • injectable-mobx: Track reactivity atoms lazily, share wrapper singletons, drop rest-spread (62b7115)
  • injectable: Cache injection and instantiation decorator lists (3d49715)
  • injectable: Fast-path singleton cache hits, avoiding minimalDi allocation (de5c292)
  • injectable: Optimize getI...
Read more

v19.0.0

20 Feb 08:05

Choose a tag to compare

19.0.0 (2026-02-20)

⚠ BREAKING CHANGES

  • Update GetInjectable type to accept a generic lifecycle
    enum parameter, allowing typed lifecycle values beyond the built-in set.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

  • Require React 18+ as peer dependency and remove the
    registerInjectableReact module that is no longer needed with the new
    hook-based API.

Co-Authored-By: Claude Opus 4.6 noreply@anthropic.com

  • Migrate to using asyncComputed in package mobx-utils

Co-authored-by: Janne Savolainen janne.savolainen@live.fi

Features

  • Drop React 17 support and remove registerInjectableReact (ef9e866)
  • Enhance injectable bunches and typed specifiers (b1f6fa3)
  • Expose typing for instantiation parameter of computedInjectMany (64674a1)
  • Implement checking for if "alias-has-registrations" (ae1fb0a)
  • Introduce discoverable and element-component packages (6e0c6f4)
  • Introduce specificity of injection tokens (992551d)
  • Introduce useInject hook and getInjectableComponent (6080eab)
  • Make replaceTagsWithValues exported as point-free, and with typing (3ff26b1)
  • Support React 19 and introduce computedInjectMaybe (f6ed37f)

Bug Fixes

  • Fix bad export (df4b9c1)
  • Fix injectable core internals and remove cycle detection (bfd24fa)
  • Fix React withInjectables rendering and memoization (e17244f)
  • Fix typing of conditional promises in pipeline (850a3aa)
  • Fix typing of different public decorators of injectable (e975baf)
  • injectable-extension-for-mobx: ComputedInjectMaybe should pass through injection params (df63bb0)
  • Make GetInjectable accept generic lifecycle enum (cddd14e)
  • Make withInjectables have access to all features of di (543dc16)

Miscellaneous Chores

  • Get rid of duplicated asyncComputed (b6fd8b3)

v17.11.1

29 Nov 14:43

Choose a tag to compare

17.11.1 (2023-11-29)

Note: Version bump only for package ogre-tools

v18.0.1

26 Oct 10:22

Choose a tag to compare

18.0.1 (2023-10-26)

Bug Fixes

  • Fix bad imports and remove dead comment (088ecb0)

v17.11.0

26 Oct 10:46

Choose a tag to compare

17.11.0 (2023-10-26)

Features

  • Expose typing of getKeyedSingletonCompositeKey (f516342)
  • Introduce DeepMap, being like Map, but with composite keys instead of singular ones (8969d27)
  • Make ComputedInjectMany support instantiation parameters (b8b0dc1)
  • Make keys of keyedSingleton able to be composed of multiple reference values (19fb547)

Bug Fixes

  • Fix bad imports and remove dead comment (1cad69f)

v18.0.0

23 Oct 08:17

Choose a tag to compare

18.0.0 (2023-10-23)

⚠ BREAKING CHANGES

  • Illegal attempts to inject singletons with an instantiation parameter now throw.
    Adapt by either:
  1. Changing design to not use instantiation parameters for singletons
  2. Making the singletons keyed singletons instead
  3. Having singletons receive what they need as a dependency, instead of instantiation parameter

Features

  • Expose typing of getKeyedSingletonCompositeKey (2e94d50)
  • Introduce DeepMap, being like Map, but with composite keys instead of singular ones (7ef8e99)
  • Make ComputedInjectMany support instantiation parameters (fc6aefa)
  • Make keys of keyedSingleton able to be composed of multiple reference values (ad6c067)
  • Make singletons throw if instantiation parameter is provided (96215f2)

v17.10.0

19 Oct 12:20

Choose a tag to compare

17.10.0 (2023-10-19)

Features

  • Introduce proper typing for pipelineBreak (6a78b40)
  • Introduce safePipeline which is like pipeline, but considers "undefined" as pipelineBreak (db82b7c)