Skip to content

chore: migrate tooth.json to lip.toml format 4 - #33

Merged
futrime merged 2 commits into
mainfrom
lip-toml-v4
Nov 11, 2026
Merged

futrime merged 2 commits into
mainfrom
lip-toml-v4

Conversation

@futrime

@futrime futrime commented Nov 11, 2026 •

Copy link
Copy Markdown
Member

Replaces tooth.json (format 3) with lip.toml of format 4 (lip v0.40.0). Same id, same version (0.18.0), same assets, same placement and same LeviLamina ranges.

Variant mapping

Old variant (tooth.json) New variant side platform deps asset
"" (server build) "" server win-x64 github.com/LiteLDev/LeviLamina 26.60.* LeviOptimize-server-windows-x64.zip
client "" client win-x64 github.com/LiteLDev/LeviLamina#client 26.60.* LeviOptimize-client-windows-x64.zip
client client (alias) client win-x64 github.com/LiteLDev/LeviLamina#client 26.60.* LeviOptimize-client-windows-x64.zip

Both zips keep LeviOptimize/ -> mods/LeviOptimize/ (placements dir -> place directory form).

Why client is kept

LeviLauncher v1.1.0-beta.6 installs catalog mods as <id>#client first, and updates installed packages with the recorded identity (github.com/LiteLDev/LeviOptimize#client) with no fallback. lip treats X and X#client as different identities, so removing client would break updates of existing installs. The alias holds the same client entry as "".

Intended change: with tooth.json the default variant installed the server build on any side; now lip install github.com/LiteLDev/LeviOptimize on a client workspace installs the client build. #client is client-only now (it was never meaningful on a server).

Other changes

  • info.tags: optimization (recommended tag id); dropped the prefixed platform:levilamina / type:mod. Empty avatar_url replaced with info.logo pointing at docs/logo.png.
  • CHANGELOG: entry under Unreleased.
  • CI: the release workflow does not read or ship tooth.json, so no packaging change is needed. Following review, the update-release-notes job of release.yml now fails when the version in lip.toml differs from the release tag without its leading v (the version still has to be bumped by hand before tagging, as with tooth.json). The README lip install commands stay valid.

Verification

  • levimc.org catalog parser (check.ts): parses, both variants listed, "" with (server, win-x64) and (client, win-x64), client with (client, win-x64).
  • lip 0.40.0, server side: lip install -n <repo> (full resolution incl. LeviLamina, bds, bedrock-runtime-data...) OK; lip install --no-dependencies --ignore-scripts <repo> OK; installed tree identical to github.com/LiteLDev/LeviOptimize@0.18.0 (old tooth.json); upgrade old -> new in place OK. <repo>#client on the server side is rejected (no server entry), as intended.
  • LeviLauncher v1.1.0-beta.6 engine (client side): -n install <repo> and -n install <repo>#client (full resolution incl. LeviLamina#client) OK; -nodeps -ignore-scripts installs of both OK; #client tree identical to github.com/LiteLDev/LeviOptimize#client@0.18.0; "" on client now equals the client build (old one installed the server build: intended). Upgrade path #client@0.18.0 (released) -> local #client replaces in place without conflict; the same for "".

The default variant gets a server entry and a client entry; the variant
"client" is kept as an alias with the same client entry, because
LeviLauncher and existing installs use github.com/LiteLDev/LeviOptimize#client.
@futrime
futrime merged commit b4113d3 into main Nov 11, 2026
4 checks passed
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