Repository navigation
Fetch only Wallpaper Engine's assets, and repack downloads into .kpk - #8
Merged
Merged
Conversation
haru asked tapline for all of Wallpaper Engine to get the one folder kirie reads. It now asks for `assets` alone, through tapline's new `InstallOptions::paths`, so the program, its web runtime and its UI are no longer downloaded. The fetch button drops its fixed "377 MB" and the progress note shows the size of what is actually being fetched. The tapline pin moves to the branch carrying `paths`; it moves to tapline's main once that change merges there. 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 ignored due to path filters (1)
📒 Files selected for processing (15)
✨ 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 |
After haru downloads a Workshop item itself, it runs `kirie convert` on the folder, keeps the package in its own data folder (haru/packages) and removes the folder, so the item lives on disk as one file. Items the Steam client downloads stay folders, since Steam would fetch them again. When kirie is missing or too old to convert, the folder stays and works as before. The library lists packages beside folders, under the Workshop id they were made from, with their title, type and preview (copied out once into `.previews`), and a package wins over a folder with the same id. Their properties come from the project.json inside, deleting one removes the file, and the screens remember a package the way they remember a folder. haru reads packages itself rather than through kirie's code: header, manifest, index, hash checks and LZ4, in haru-core's `package` module, which adds blake3 and lz4_flex. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kg1KotRgE7Ws6DQwhsgTpj
Items the Steam client downloaded now also get a .kpk, kept in packages/steam beside the folder Steam keeps, since Steam fetches a missing folder again. The library shows the copy while it is current and falls back to the folder once Steam updates it; a later pass makes the copy again, and removes copies whose folder is gone. Removing such an item removes both. Items kirie cannot convert are noted and not retried until the item or kirie changes. Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01Kg1KotRgE7Ws6DQwhsgTpj
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:46
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
Before: "Fetch engine assets" downloaded all of Wallpaper Engine (program, web runtime and UI) to get the one
assetsfolder kirie reads. Every Workshop item haru downloaded stayed a loose folder of files.After:
assets. The button no longer claims a fixed "377 MB", and the progress note shows the real size ("… 42% of N MB").kirie convertinto one.kpkinharu/packagesunder haru's data folder, and its folder is removed..kpkcopy inharu/packages/steam. The library shows the copy while it is current and falls back to the folder once Steam updates the item; the next pass makes the copy again. Copies whose folder is gone are removed, and removing such an item removes both.How:
engine_assetssets tapline's newInstallOptions::pathsto["assets"](Let an app install take only some of its files tapline#5).haru_apply::repackrunskirie convert <folder> -o <packages>/<id>.kpkon a background thread when a download lands. It removes the folder only after haru can open the package.haru_core::packagereads.kpkfiles itself (header, manifest, index, blake3 checks, LZ4), since haru shares no code with kirie. This addsblake3andlz4_flex.haru_apply::repack::mirrorruns on a background thread whenever the library refreshes. It skips copies that are not older than the item's folder orproject.json, and notes items kirie refuses (application wallpapers, an old kirie) in a.<id>.refusedfile so they are not retried until the item or kirie changes.library::scan_allmerges packages first, so a package wins over a folder with the same id. A package's preview is copied out once to.previews/<fingerprint>.<ext>.Merge order: tapline#5 has merged and tapline is pinned to its
main. Repacking needs a kirie release that includes UnhingedSoftware/kirie#14; until then haru keeps folders.Tested:
-D warningsandcargo test --workspaceon Linux. New tests read a package, refuse a damaged one, list a package with its preview, prefer a package over a folder, and read properties from a package.kirie convert, with its preview andproject.json.mirrorwith the real kirie binary against a fake Steam library: it made the copy and kept the folder, did nothing on a second pass, listed the copy in the library, and removed the copy once the folder was gone.repackdrove the real kirie binary, wroteharu/packages/7654321.kpkand removed the folder.Not tested:
🤖 Generated with Claude Code
https://claude.ai/code/session_01Kg1KotRgE7Ws6DQwhsgTpj
Generated by Claude Code