Object-Configure

 view release on metacpan or  search on metacpan

Changes  view on Meta::CPAN

	- Added --exclude lib/Devel --exclude lib/App/Test/Generator/Sample to the
	  non-ATG-repo generate-test-dashboard call in dashboard.yml (parity with
	  mutate.yml).
	- Fixed empty-BASE guard in mutate.yml (no-op diff when all commits are bot).
	- Added conditional $BASE_SHA_FLAG in mutate.yml (avoids passing empty --base_sha).
	- Removed || true from all git pull --rebase lines in both workflow files.
	- Fixed coverage snapshot to use pre-captured SNAPSHOT_SHA / SNAPSHOT_TIMESTAMP
	  instead of recomputing git rev-parse after bot commits moved HEAD.

	[ Tests ]
	- Added t/locales.t: verifies configure() error strings are locale-consistent
	  under en_US.UTF-8, de_DE.UTF-8, ja_JP.UTF-8 using local $! = ENOENT pattern.
	- Updated t/function.t: replaced _walk_isa() subtests with _get_inheritance_chain()
	  equivalents to match refactored internals.

0.22
	[ Bug Fixes ]
	- Fixed https://github.com/nigelhorne/Object-Configure/issues/4

0.21	Thu May 21 07:55:13 EDT 2026

	[Bug Fixes]
	- Bump minimum version of Params::Get and Config::Abstraction

0.20	Tue May 19 08:51:20 EDT 2026

	[Enhancement]
	- Improve the method documentation

	[Bug Fixes]
	- Fixed disable_hot_reload() hanging indefinitely when child process does not exit on SIGTERM
		During mutation testing the forked watcher process can be left in a state where it never receives or acts on SIGTERM, causing waitpid to block forever.
		The fix replaces the unconditional waitpid with a non-blocking poll loop with a 5-second deadline, then escalates to SIGKILL if the child is still alive, followed by a final waitpid that is safe because SIGKILL cannot be caught or deferred.
	- Fixed configure() logger dispatch ignoring NULL and re-wrapping existing Log::Abstraction instances
	- Fixed looking in the correct directory for a object class to reload
	- Fixed _reload_object_config() to use full config file paths during hot reload.
		Previously attempted to reload from basename only (e.g., 'app.yml') instead
		of full path stored in _config_files array. This caused -f test to fail and
		reload to silently return without updating object properties or calling
		_on_config_reload hooks. Now uses the last (most specific) path from
		_config_files array when available, falling back to _config_file for
		backward compatibility. Added explicit return statement for consistency.
	- Sanity check that class is given to configure()
	- Fixed register_object() to return void consistently.
		Previously returned a coderef on first call (from $SIG{USR1} assignment),
		undef on Windows, and false on subsequent calls. Now explicitly returns
		nothing via 'return;' at end of function to match API specification.
	- Fixed restore_signal_handlers() to return void consistently.
		Previously returned undef when handler was defined and empty list when
		not defined. Now explicitly returns nothing via 'return;' at end of
		function to match API specification.
	- Automatically preserve coderefs and blessed objects passed to configure().
		Config::Abstraction treats unknown scalar values as config file paths,
		which corrupts coderef and object references. The configure() function
		now automatically stashes these values before processing and restores
		them afterward, eliminating the need for users to implement manual
		stash-delete-restore patterns in their constructors. The logger
		parameter continues to receive special handling for wrapping in
		Log::Abstraction. Added comprehensive test suite (t/coderef.t) to
		verify preservation of coderefs and blessed objects.
	- Fixed _deep_merge() to correctly return overlay value when overlay is not a hash.
		Previously returned base value instead of overlay, violating the principle
		that overlay should always take precedence. Changed line to
		'return $overlay unless ref($overlay) eq "HASH"'.
	- Fixed logger='NULL' handling to prevent unwanted logger creation.
		When logger parameter was set to 'NULL', code would skip wrapping but fall
		through to else clause which created a default Log::Abstraction anyway.
		Restructured logic to explicitly check for 'NULL' first and preserve it
		without creating any logger. Also optimized to avoid dereferencing
		$params->{'logger'} twice by using the already-assigned $logger variable.
	- Comprehensive POD documentation updates for all public methods.
		Added detailed documentation for configure(), instantiate(),
		enable_hot_reload(), disable_hot_reload(), reload_config(),
		register_object(), restore_signal_handlers(), and get_signal_handler_info().
		Each method now includes Purpose, Arguments, Returns, Side Effects, Notes,
		Usage Example, API Specification (Params::Validate::Strict compatible
		input schema and Return::Set compatible output schema), and Formal
		Specification (Z notation). Added comprehensive white-box test suite
		(t/function.t) covering all public and private functions.

0.19	Fri Dec 12 08:07:32 EST 2025

	[Enhancement]
	- Added UNIVERSAL configuration inheritance support.
	All classes now automatically inherit from a universal.yml (or .conf,
	.json, etc.) configuration file if present. This allows application-wide
	defaults to be set once and inherited by all classes unless explicitly
	overridden. Modified _walk_isa() to explicitly include UNIVERSAL in the
	inheritance chain for classes with no explicit parents. Added test suite
	(t/universal.t) to verify UNIVERSAL inheritance across multiple classes
	and inheritance levels. Updated POD with UNIVERSAL CONFIGURATION section.

0.18	Thu Dec 11 11:58:01 EST 2025
	If a parent class hierachy can't be found, ensure we still load the given path/file

0.17	Sat Dec  6 21:31:58 EST 2025
	Load in parents classes as well
	Don't assume English - fixes https://www.cpantesters.org/cpan/report/b1624b76-ad2b-11f0-852b-311a6e8775ea

0.16	Thu Oct 16 19:10:49 EDT 2025
	Set croak_on_error
	Latest testing console

0.15	Wed Sep 17 07:28:24 EDT 2025
	Allow the logger to be NULL, in which case nothing is set up
	Scalar::Utils was used but not imported
	instantiate: avoid double blessing
	Added testing dashboard on GitHub Pages
	Pass schema through to Config::Abstraction
	Added configuration hot reloading without restarting the application (not supported on Windows)

0.14	Wed Aug 27 13:16:36 EDT 2025
	Allow the params to be undef

0.13	Wed Aug 20 09:39:00 EDT 2025
	Ensure it works with Log::Abstraction 0.25 and bump to use that
		Also fixes https://github.com/nigelhorne/Object-Configure/issues/2

0.12	Fri Aug  1 08:20:23 EDT 2025
	Use Return::Set
	Allow carp_on_warn to be read from the configuration file, and change the default to 0

0.11	Mon Jul 21 08:06:15 EDT 2025
	Avoid encapsulating Log::Abstraction within Log::Abstraction



( run in 0.637 second using v1.01-cache-2.11-cpan-600a1bdf6e4 )