Repository navigation
Repack Wallpaper Engine items into .kpk, and play .kpk files - #14
Merged
Merged
Conversation
`kirie convert <item>` repacks a Wallpaper Engine item, every file as it is, into a package of the new `wallpaper_engine` kind: its entry is the item's project.json and its provenance is `converted` with the Workshop id, so it can never be published. Assets and application wallpapers are refused. kirie now plays a `.kpk` wherever it takes a wallpaper. A package is unpacked once, every entry checked against its hash, into `kirie/packages/<fingerprint>` in the user's cache and played from there, so Wallpaper Engine items run through exactly the code that runs their folders today. The four most recently unpacked packages are kept. The reserved `scene` kind is refused. The writer now reads files when the package is written, one at a time, and copies large or already-compressed ones through in blocks, so packing a folder of videos no longer holds them all in memory. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kg1KotRgE7Ws6DQwhsgTpj
|
Note Currently processing new changes in this PR. This may take a few minutes, please wait... ⚙️ Run configuration
📒 Files selected for processing (12)
✨ Finishing Touches📝 Generate docstrings
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kg1KotRgE7Ws6DQwhsgTpj
beingsuz
marked this pull request as ready for review
October 9, 2026 11:45
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Requested by beingsuz · project thread
What this changes
Before: kirie could build and inspect a
.kpkbut not play one, and there was no way to turn a Wallpaper Engine item into one.After:
kirie convert <item folder>repacks a Wallpaper Engine item intowe-<workshop id>.kpk, and kirie plays any.kpkpassed as--bgor over the socket'sbg, converted items included. Wallpaper Engine support is unchanged: a converted item runs through the same code as its folder.How:
wallpaper_engineholds the item's files as they are. Its entry must beproject.jsonand its provenance must beconverted, so it can never be published.kirie convertfills the manifest fromproject.json(title, description, preview, tags, mature rating, Workshop id). It refuses assets and application wallpapers.kirie/packages/<fingerprint>in the user's cache. Every entry is checked against its hash on the way. The unpacked folder then goes to the existing folder or file loaders. The same package starts from that copy next time, and only the four most recently unpacked packages are kept. The reservedscenekind is refused.docs/PACKAGE.mdanddocs/COMMANDS.mddescribekirie convertand playing a.kpk.How it was tested
cargo fmt --all --checkandcargo clippy --workspace --all-targets -D warningsare clean.cargo test -p kirie-packpasses (9 unit and 12 integration tests). New tests cover entries added by path, unpacking, and a damaged entry failing to unpack.pack,packageandresolvetests pass. New tests cover converting an item, refusing an asset, unpacking once and finding the copy again, and keeping only the latest four.kirie pack --inspectshowed it with all hashes matching, andkirie check we-1234567.kpkunpacked it into the cache.Not tested: actually drawing a converted scene, video or web item. There is no GPU, display or Wallpaper Engine install here. Windows and macOS were not run, and the Windows-only cache path is only type-checked by CI's existing jobs, which do not build this crate.
Checklist
cargo fmt --alland workspace clippy-D warningsare cleancargo test --workspacepasses (only the package-related tests were run)🤖 Generated with Claude Code
https://claude.ai/code/session_01Kg1KotRgE7Ws6DQwhsgTpj
Generated by Claude Code