Changelog

All notable changes to godi are documented here. This project follows Semantic Versioning and uses Conventional Commits for automatic versioning.

4.0.0 (2025-08-18)

⚠ BREAKING CHANGES

  • Module path updated from v3 to v4

  • Complete architectural refactor of the dependency injection system

  • Service registration now happens through Collection interface instead of ServiceProvider

  • Provider interface is now immutable after build

  • Scope extends Provider interface for unified API

  • Removed Decorator functionality

  • Changed HasService to Contains and HasKeyedService to ContainsKeyed

  • Transient services can no longer depend on scoped services

Migration Guide:

  • Update import paths to use /v4

  • Replace ServiceProvider with Collection for service registration

  • Use Collection.Build() to create an immutable Provider

  • Update all resolution calls to use Provider interface

  • Replace HasService/HasKeyedService calls with Contains/ContainsKeyed

Features

  • refactor entire DI system with new Collection and Provider architecture

  • add immutable Provider pattern with build-time validation

  • implement new reflection system for improved performance

  • add support for instance registration without constructors

  • allow multiple return values from constructors

  • add comprehensive error wrapping and typed errors

  • implement dependency graph with cycle detection

  • add newScope method for scope creation

  • register internal services when building collection

Bug Fixes

  • do not allow transient instances to depend on scoped instances

  • fix not being able to get scope from context

  • cache instances that do not have a constructor

  • fix lifetime tests and validation

  • fix security issues in dependency resolution

  • fix graph dependency resolution issues

  • fix scope context test

  • fix all tests after refactoring

Performance Improvements

  • refactor reflection system for better performance

  • refactor instance caching mechanisms

Code Refactoring

  • rename HasService to Contains and HasKeyedService to ContainsKeyed

  • remove decorator functionality

  • clean up createInstance method

  • restructure error handling with typed errors

  • update to v4 module path

3.0.0 (2025-07-28)

⚠ BREAKING CHANGES

  • All resolution functions (Resolve, ResolveKeyed, ResolveGroup) now accept a Scope parameter instead of ServiceProvider. This enforces proper lifetime constraints between Singleton and Scoped services.

Migration: Replace ServiceProvider parameters with Scope in all calls to:

  • Resolve[T](s ServiceProvider) -> Resolve[T](s Scope)

  • ResolveKeyed[T](s ServiceProvider, key) -> ResolveKeyed[T](s Scope, key)

  • ResolveGroup[T](s ServiceProvider, group) -> ResolveGroup[T](s Scope, group)

Features

  • replace ServiceProvider with Scope in resolution functions (f131f95)

2.1.0 (2025-07-22)

Features

  • add Decorate method to ServiceProvider and ServiceProviderScope for enhanced service modification (4e19a8c)

2.0.5 (2025-07-22)

Bug Fixes

  • add context and scope as scoped services in service provider (d269cfc)

  • enhance service provider to register built-in services and improve scope handling (96177a6)

2.0.4 (2025-07-22)

Bug Fixes

  • resolve context registration conflict in service scope (43ceb3a)

2.0.3 (2025-07-22)

Bug Fixes

  • handle duplicate service registrations with As and Group options (e30fd66)

2.0.2 (2025-07-21)

Bug Fixes

  • update installation instructions to use v2 of godi (9c62926)

2.0.1 (2025-07-21)

Bug Fixes

  • correct expected output in TestLastSegment for version path (fb7de97)

  • update module configuration for v2 compatibility (cd064f1)

2.0.0 (2025-07-21)

⚠ BREAKING CHANGES

  • Service lifetimes have been redesigned and group resolution has been added. This is a breaking change from the previous API.

  • redesign service lifetimes and add group resolution (#9)

Features

  • redesign service lifetimes and add group resolution (#9) (550159f)

  • trigger major release for service lifetime redesign (e9d649f)

1.6.2 (2025-07-17)

Bug Fixes

  • update changelog reference to use markdown file and remove obsolete changelog.rst (011286d)

1.6.1 (2025-07-17)

Bug Fixes

  • update changelog handling to skip commit and tag creation (3d0538b)

1.6.0 (2025-07-17)

Features

  • ensure changelog has proper formatting and amend commit if necessary (93a8ac2)

1.5.1 (2025-07-17)

Bug Fixes

  • update installation instructions to use version placeholders (4cb376e)

1.5.0 (2025-07-17)

Features

  • update version handling in Sphinx config and adjust installation instructions to use version placeholders (b156b4c)

1.4.0 (2025-07-17)

Features

  • add ‘docs’ to allowed scopes in PR title validation (c117eaf)

  • implement type caching for reflection to improve performance (#6) (c709315)

1.3.3 (2025-07-16)

Bug Fixes

  • ci: allow deps scope for Dependabot commits PR (0f92ef1)

1.3.2 (2025-07-16)

Bug Fixes

  • ci: allow deps scope for Dependabot commits (3c8bcbc)

1.3.1 (2025-07-16)

Bug Fixes

  • release: update git message format to use {tag} instead of v{version} (67d7ea7)

1.3.0 (2025-07-16)

Features

  • scope: add public ScopeFromContext function with error handling (7a95acb)

1.2.2 (2025-07-16)

1.2.1 (2025-07-15)

1.2.0 (2025-07-14)

1.1.0 (2025-07-14)

⚠ BREAKING CHANGES

  • refactor interfaces and module system for better composability (v1.1.0)

Features

  • refactor interfaces and module system for better composability (v1.1.0) (8d7bb85)

1.0.2 (2025-07-13)

1.0.1 (2025-07-12)

1.0.0 (2025-07-11)