Skip to content

docs(module-versioning): version comparison trigger, duplicate module copies and /upm as of v6.3.0 - #106

Open
wisdommen wants to merge 3 commits into
alphafrom
docs/p17-fu-module-files
Open

wisdommen wants to merge 3 commits into
alphafrom
docs/p17-fu-module-files

Conversation

@wisdommen

@wisdommen wisdommen commented Sep 30, 2026 •

Copy link
Copy Markdown
Member

Summary

Documentation companion of UltiKits/UltiTools-Reborn#561 (module files: /upm update by observation, deferred uninstall deletion, file-name discovery order, per-module JAR identity). This PR targets alpha deliberately: it describes behaviour that lands in v6.3.0 and is not released yet; master is the published branch.

Changes to guide/advanced/module-versioning.md, English and Chinese, prose and inline code only (no new examples/ references, no version bump):

  • UltiTools-Dev-Doc#96: the rows for PluginManager.hasNewerVersionLoaded and unregisterSupersededVersions now name their real trigger, code calling PluginManager#register(...) with another instance of an already loaded main class. Two JARs of one module on disk never reach them. The mandatory-rule tip and the admission paragraph are reworded to match.
  • New section Two copies of one module (as of v6.3.0): module JARs are read in file-name order (UltiTools-Reborn#476); one start-up warning names every JAR that declares the same main: and the JAR the classes load from, quoted verbatim from the framework's en.json; /upm uninstall deletes every JAR whose plugin.yml main: names the module's main class (UltiTools-Reborn#516).
  • In the same section (maintainer follow-up 19): /upm update refuses, before downloading anything, while another JAR declaring the module's main: sorts before the new JAR's name, because that copy would keep supplying the classes and every update would roll back; the reply names the new JAR and every such copy, and the retry after removing them needs no restart.
  • New section Updating and uninstalling on a server (as of v6.3.0): /upm update stages the download under .ultikits/upm-transactions/ and the next start commits it only after observing the module loaded from the new JAR at the new version, otherwise rolls back; the version check on the download; failed moves and the cross-file-system refusal; /upm uninstall cancelling any staged update of the module and deferring a deletion it cannot do now (UltiTools-Reborn#505, #513, #518).
  • In the same section: an update only moves, replaces or deletes files whose SHA-256 matches its record; otherwise it does nothing, holds its record for the operator, logs each unexpected file with both hashes, and /upm update / /upm uninstall refuse until the operator deletes the record and its folder (the foreign-file rule of UltiTools-Reborn#561).

Checks

  • npm run build: success; check-rendered-links.sh --clean: 0 failures; in-page anchors of both built pages resolve.
  • check-bilingual-parity.sh: OK (20 headings on each side); check-container-length.sh on both pages: no violation.

Issue closure

None. UltiTools-Dev-Doc#96 is closed by hand after this PR merges (the docs repository's default branch is master, so a closing keyword into alpha would not act).

中文说明

UltiKits/UltiTools-Reborn#561 的文档配套 PR,有意以 alpha 为目标分支(描述的是 v6.3.0 才发布的行为)。module-versioning.md 中英两侧同步修改:更正 hasNewerVersionLoaded 的实际触发条件(#96);新增「同一模块的两个副本」(文件名顺序、启动警告、/upm uninstall 删除所有副本;另有副本文件名排在新 JAR 之前时 /upm update 当场拒绝并列出副本)与「在服务器上更新和卸载」(/upm update 暂存、下次启动观察到加载成功才保留、否则回滚;卸载取消暂存的更新并延迟删除;更新只处理哈希与记录一致的文件,否则暂停等待管理员处理)两节。#96 在合并后手动关闭。

🤖 Generated with Claude Code

…duplicate copies and /upm, as of v6.3.0

- UltiTools-Dev-Doc#96: hasNewerVersionLoaded and unregisterSupersededVersions are reached when
  code registers another instance of a loaded module's main class, not by two JARs on disk; both
  table rows, the mandatory-rule tip and the admission paragraph reworded (English and Chinese)
- new section "Two copies of one module": file-name discovery order (UltiTools-Reborn#476), the
  one start-up warning naming every copy, /upm uninstall deleting every copy (UltiTools-Reborn#516)
- new section "Updating and uninstalling on a server": /upm update staged and committed only after
  the next start observes the module loaded, rollback and failure lines, the version check, the
  cross-file-system refusal; /upm uninstall cancelling staged updates and deferring deletion
  (UltiTools-Reborn#505, #513, #518)
- prose and inline code only, no new examples references; companion of UltiTools-Reborn#561

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-09-30T09:32:38.056151Z 1922a11 PR opened
ℹ️ 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" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@cloudflare-workers-and-pages

cloudflare-workers-and-pages Bot commented Sep 30, 2026 •

Copy link
Copy Markdown

Deploying ultitools-dev-doc with  Cloudflare Pages  Cloudflare Pages

Latest commit: ad39951
Status: ✅  Deploy successful!
Preview URL: https://604668b2.ultitools-dev-doc.pages.dev
Branch Preview URL: https://docs-p17-fu-module-files.ultitools-dev-doc.pages.dev

View logs

wisdommen and others added 2 commits September 30, 2026 23:09
… load first, as of v6.3.0

A JAR in the modules folder that declares the module's main: and sorts before
the new JAR's name would keep supplying the classes, so every update would be
rolled back; /upm update now stages nothing and names the copies. Prose only,
English and Chinese. Companion of UltiTools-Reborn#561 (maintainer follow-up 19).

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
…cord, else waits for the operator, as of v6.3.0

A changed or unexpected file among those an update moves or needs free makes
it do nothing, keep its record on hold for the operator, and log each file
with its expected and found hash; later starts repeat the line, /upm update and
/upm uninstall refuse, and the operator resolves it by deleting the record and
its folder. English and Chinese, prose only. Companion of UltiTools-Reborn#561.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant