Conversation
…nguage-key comments, as of v6.3.0 Companion to UltiKits/UltiTools-Reborn fix/p17-fu-config (#523, #526, #553, #542). Prose only, both languages; no example reference to unreleased API. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Codex Review SummaryThis comment shows the latest Codex review activity on this pull request.
ℹ️ About Codex in GitHubYour team has set up Codex to review pull requests in this repo. Reviews are triggered when you
Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings. |
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: 9acc200ffa
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| The `comment` attribute is used to specify the comment of this configuration item. | ||
|
|
||
| As of v6.3.0, a `comment` that is exactly one language key, such as `comment = "{config.limit}"`, is resolved from your module's language catalogue (`lang/en.json`, `lang/zh.json`, or the `.yml` equivalents) in the server's current `language`, so one entry can ship its comment in every language the module supports. The framework writes that text on every write of the file, keys the operator already has included: the first-boot defaults write, a save, the shutdown save, a panel write, and the first start after an upgrade or a `language` switch. Only those comment lines change; an operator's hand-written comment on such an entry is replaced, and a start whose comments already match writes nothing. A catalogue text with line breaks becomes several comment lines. A key missing from the catalogue is written as the token itself, with one warning naming the module, file, entry and key. Any other comment, including one that only contains a placeholder such as `{player}` inside other text, is written as it is, and only when the key is first added. |
There was a problem hiding this comment.
Qualify YAML-only catalogue resolution
For internal modules that ship only lang/<code>.yml, the current internationalization guide (docs/src/guide/essentials/i18n.md:26-27) states that the shared classloader can resolve the core JSON catalogue before YAML is tried, causing i18n(...) to return the raw key. This paragraph currently presents the .yml equivalent as reliably resolving the localized comment, so modules following it can receive an untranslated token instead; link to that warning and include its JSON-file workaround.
Useful? React with 👍 / 👎.
|
|
||
| ::: info Comments, as of v6.3.0 | ||
| Bukkit preserves existing comments across a save, and UltiTools sets `options().parseComments(true)` explicitly rather than relying on the default. A key added for the first time also gets its `@ConfigEntry(comment)` written alongside it; a key the operator already has is left untouched. | ||
| Bukkit preserves existing comments across a save, and UltiTools sets `options().parseComments(true)` explicitly rather than relying on the default. A key added for the first time also gets its `@ConfigEntry(comment)` written alongside it; a key the operator already has keeps its own comment unless that comment is a language key (see `@ConfigEntry` above). |
There was a problem hiding this comment.
Make the exception depend on the annotation comment
When a key already exists, replacement is controlled by whether its declared @ConfigEntry(comment) is a language key, not whether the operator's existing comment is itself a language key. As written, a reader can infer that an ordinary hand-written comment remains untouched even when the annotation contains {config.limit}, contradicting the behavior documented above; name the annotation comment explicitly here.
Useful? React with 👍 / 👎.
Deploying ultitools-dev-doc with
|
| Latest commit: |
610b67b
|
| Status: | ✅ Deploy successful! |
| Preview URL: | https://569cf5ae.ultitools-dev-doc.pages.dev |
| Branch Preview URL: | https://docs-p17-fu-config.ultitools-dev-doc.pages.dev |
…ates, collection types, re-rendering), as of v6.3.0 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…the whole-file re-render, as of v6.3.0 Follows the maintainer's answers of 2026-09-30 on UltiKits/UltiTools-Reborn#534, #553 and #542. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c0d1d0382a
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
|
|
||
| The `comment` attribute is used to specify the comment of this configuration item. | ||
|
|
||
| As of v6.3.0, a `comment` that is exactly one language key, such as `comment = "{config.limit}"`, is resolved from your module's language catalogue (`lang/en.json`, `lang/zh.json`, or the `.yml` equivalents) in the server's current `language`, so one entry can ship its comment in every language the module supports. The framework writes that text on every write of the file, keys the operator already has included: the first-boot defaults write, a save, the shutdown save, a panel write, and the first start after an upgrade or a `language` switch. An operator's hand-written comment on such an entry is replaced, values keep their meaning, and a start whose comments already match writes nothing. The rewrite changes more than the comment lines: like every framework write, it renders the whole file again, so quotes the operator added are dropped, an inline list `[a, b]` becomes a multi-line list, `yes` becomes `true`, `1.50` becomes `1.5`, and a comment written beside a list item is lost. Values keep their meaning. This happens once on the first start after an upgrade and once after a `language` switch. A catalogue text with line breaks becomes several comment lines. A key missing from the catalogue is written as the token itself, with one warning naming the module, file, entry and key. Any other comment, including one that only contains a placeholder such as `{player}` inside other text, is written as it is, and only when the key is first added. |
There was a problem hiding this comment.
Reconcile the quote rewrite description
When the file contains a double-quoted string, this sentence says the operator-added quotes are dropped, but the unchanged saving section at line 190 says SnakeYAML re-emits the value with single quotes. Those descriptions are mutually inconsistent and give operators conflicting expectations about the whole-file diff caused by translating a comment; clarify whether quoting is removed or merely changed.
Useful? React with 👍 / 👎.
… as of v6.3.0 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…; list-element maps keep them, as of v6.3.0 Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…6.2, as of v6.3.0 Follows the maintainer's answer of 2026-09-30 on UltiKits/UltiTools-Reborn#553 (warn only, the write path stays as in 6.2); no refusal claim remains. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…ull values; module parsers as before UltiKits/UltiTools-Reborn#553, maintainer answer of 2026-09-30 ("no check, documentation only"): the framework neither refuses nor warns about a dotted map key, so the page now says plainly that such a key is split into nested levels on write and on load, that quoting it does not help, and that module authors and operators must use '-' or '_'. No claim of a warning remains. Also: a custom parser, including one extending DefaultConfigParser, reads and writes exactly as before; save() leaves a null map/object value out with a warning where earlier versions threw a NullPointerException and left the file unchanged. English and Chinese pages changed together. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Summary
Documents the 6.3.0 configuration-binding changes on
alpha(this PR targetsalphadeliberately — the unreleased layer;masterstays at the released version). Companion to the framework branchUltiKits/UltiTools-Rebornfix/p17-fu-config, whose pull request is opened by the next plan on that branch; issues UltiKits/UltiTools-Reborn#523, #526, #534, #553, #542.@ConfigEntrycomment: a comment that is exactly one language key ({config.limit}) is resolved from the module's catalogue in the server'slanguageand rewritten on every framework write, keys already in the file included (maintainer decision of 2026-09-29). The page says plainly that the rewrite re-renders the whole file — quotes dropped, inline lists expanded,yes→true,1.50→1.5, comments beside list items lost, values unchanged — which the maintainer accepted on 2026-09-30.-or_(maintainer decision of 2026-09-30: no check, documentation only, #553). Also: a custom parser, including one extendingDefaultConfigParser, reads and writes as before;save()leaves anullmap/object value out with a warning where earlier versions threw aNullPointerExceptionand left the file unchanged.float/Floatfields accept a decimal whose float reading prints back the same (0.1,0.3,1.5); more digits than a float holds keeps the default with a warning (maintainer decision of 2026-09-30, #534).Prose and inline code only, marked
as of v6.3.0, English and Chinese pages changed together; no<<<example reference to unreleased API. Checked locally:scripts/check-container-length.shon both pages (0 over),scripts/check-bilingual-parity.sh(exit 0).中文
在
alpha(未发布层)记录 6.3.0 配置绑定的改动,是框架分支fix/p17-fu-config的配套文档:语言键注释在每次写文件时按服务器语言重写,并明确写出重写会重新输出整个文件(引号、行内列表、yes、1.50、列表项旁注释),维护者 2026-09-30 已接受;列表和映射按声明类型绑定;映射的键里不要用点(写入和读取都会被拆成嵌套的几层,加引号也没用,框架既不拒绝也不警告;维护者 2026-09-30 决定只写文档);映射或对象里的 null 值save()不写并警告(旧版本抛NullPointerException、文件不变);float小数读回来一样就接受。Issue closure
None — the framework pull request closes the issues.
🤖 Generated with Claude Code