legion-settings 1.4.0 → 1.4.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: baf40211abee6a48e5863077ce8e31fa416afbad9f003933e7edcfca4b8a72ba
4
- data.tar.gz: f8faf5fb5eadead569c9f222a70c58e5ac11bc923dc281bd587f3f2704125cd0
3
+ metadata.gz: 01a0643f5091d9faedff907a6fc0cec207522970608d3b06b75030d85953d159
4
+ data.tar.gz: 3dacab16c187e733d10b16d04ad945eaa034a27dc71a6d42f738379c488976d7
5
5
  SHA512:
6
- metadata.gz: 7dbe223a77152d41812ec94bd98457db0570dae8bdea879f58b4ec052fca03eed46d1364617d4affb73d4cd7bc0364e6f6074c5a0fe5d8c433776e900d354417
7
- data.tar.gz: b362c5d3a541c5afce645b47656ef1a427b65d58500bd5100e14717451dacaa8024823a188fd97f2475cb2ab1e176912c30ed7ba0496f0f512dd79a593228401
6
+ metadata.gz: 3229d7d05ec8f457c6a8a871552fe2f50bfd092afac42fcb14f505754c6b35d314eb813783f53d66e7ed84bbfa2c7ea0ab4adbbfafb6451c84b393a5695956b8
7
+ data.tar.gz: 0df58dd5227d34447dd04610c28bcaeb8cf27c3dfddca0c6fbf898c404ce572b8776323944fb605f654eeb2d2b237e4db2940f871267efe1063a32571df7db3c
data/CHANGELOG.md CHANGED
@@ -1,5 +1,20 @@
1
1
  # Legion::Settings Changelog
2
2
 
3
+ ## [1.4.2] - 2026-08-14
4
+
5
+ ### Fixed
6
+ - `Legion::Settings::Helper#settings` now resolves two-segment (nested) extensions to their nested settings path instead of a flat key. `lex-llm-vllm` (`Legion::Extensions::Llm::Vllm::Runners::DiscoveryRefresh`) resolves to `Legion::Settings[:extensions][:llm][:vllm]` — not the flat `:llm_vllm` key — and `lex-identity-entra` (`Legion::Extensions::Identity::Entra::Delegated::Runners::Login`) resolves to `[:extensions][:identity][:entra]`. All `lex-<a>-<b>` nested extensions (lex-llm-*, lex-identity-*, lex-agentic-*, etc.) were reading the wrong (empty) settings path in production; single-segment `lex-<name>` extensions were unaffected.
7
+ - Resolution is now segment-based: an explicit `segments` method (LegionIO's `Helpers::Base` mixin) is preferred; otherwise segments are derived from the class namespace, stopping at boundary words (Actor/Actors/Runners/Helpers/Transport/Data), with the gem boundary verified against the `Legion::Settings::Extensions` registry. Sub-module runners resolve to their parent gem's settings.
8
+
9
+ ### Added
10
+ - Regression spec in `spec/legion/settings/helper_spec.rb` covering nested two-segment runner resolution (lex-llm-vllm, lex-identity-entra) that fails on the 1.4.0 flat-key helper.
11
+
12
+ ### Changed
13
+ - `Settings#[]` and `Settings#dig` read the settings hash directly with string→symbol key fallback instead of rebuilding an indifferent-access hash tree on every read (`indifferent_access!` now only runs on explicit `to_hash` calls) — removes the boot-time O(n) rebuild per read.
14
+ - Overlay skips resolution when no overlay is active (fast path).
15
+ - Consolidated four duplicate deep-merge implementations into a shared `Legion::Settings::DeepMerge` module that preserves `Concurrent::Hash` type through merges.
16
+ - FQDN is lazy-resolved on first access instead of blocking at init; schema validation is deferred to `validate!` instead of running on every merge.
17
+
3
18
  ## [1.4.0] - 2026-04-29
4
19
 
5
20
  ### Added
@@ -181,8 +181,8 @@ module Legion
181
181
  def find_similar(key, candidates)
182
182
  key_str = key.to_s
183
183
  candidates.map(&:to_s).select { |c| levenshtein(key_str, c) <= 2 }
184
- .min_by { |c| levenshtein(key_str, c) }
185
- &.to_sym
184
+ .min_by { |c| levenshtein(key_str, c) }
185
+ &.to_sym
186
186
  end
187
187
 
188
188
  def levenshtein(str_a, str_b)
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Legion
4
4
  module Settings
5
- VERSION = '1.4.0'
5
+ VERSION = '1.4.2'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: legion-settings
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.4.0
4
+ version: 1.4.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity