What happens
A Map-typed @ConfigEntry whose key contains a dot is saved as a dotted path. Measured in UltiKits/UltiChat#25: the in-memory map held [my.rule, server-ip, rules-info]; after a save and a fresh init it held [my, server-ip, rules-info], with my -> {rule={...}}. The entry no longer matches its own name. YAML itself splits the dotted key on read, so the renamed form cannot be read back as written.
UltiChat now refuses a dotted rule name on its side (merged in UltiChat #40); this issue is the framework half, which every module with a Map entry keyed by operator input can still hit.
Relation
One of three symptoms of the same cause in the binding layer (the layer does not respect the declared shape of a field): #523 (collection elements stringified) and #526 (a wrongly shaped value takes the module down). The maintainer decided (2026-09-29) that all three are fixed before the 6.3.0 release, and that a value that cannot be converted to the declared type is skipped (or the field falls back to its default) with a warning naming the key and the value, while the rest of the configuration loads.
中文摘要: 配置序列化时把映射里带点的键写成路径,重载后键被改名(UltiChat#25 实测)。这是 UltiChat 那条的框架一半;与 #523、#526 同一根因。维护者 2026-09-29 决定三条都在 6.3.0 发布前修。
🤖 Generated with Claude Code
What happens
A
Map-typed@ConfigEntrywhose key contains a dot is saved as a dotted path. Measured in UltiKits/UltiChat#25: the in-memory map held[my.rule, server-ip, rules-info]; after a save and a freshinitit held[my, server-ip, rules-info], withmy -> {rule={...}}. The entry no longer matches its own name. YAML itself splits the dotted key on read, so the renamed form cannot be read back as written.UltiChat now refuses a dotted rule name on its side (merged in UltiChat #40); this issue is the framework half, which every module with a
Mapentry keyed by operator input can still hit.Relation
One of three symptoms of the same cause in the binding layer (the layer does not respect the declared shape of a field): #523 (collection elements stringified) and #526 (a wrongly shaped value takes the module down). The maintainer decided (2026-09-29) that all three are fixed before the 6.3.0 release, and that a value that cannot be converted to the declared type is skipped (or the field falls back to its default) with a warning naming the key and the value, while the rest of the configuration loads.
中文摘要: 配置序列化时把映射里带点的键写成路径,重载后键被改名(UltiChat#25 实测)。这是 UltiChat 那条的框架一半;与 #523、#526 同一根因。维护者 2026-09-29 决定三条都在 6.3.0 发布前修。
🤖 Generated with Claude Code