Skip to content

The config serializer writes a map key that contains a dot as a nested path, so the key is renamed on reload #553

Description

@wisdommen

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions