Skip to content

Add mods ZIP and Ornithe 1.8.9 Prism instance exports - #951

Open
liwwyy wants to merge 2 commits into
Polyfrost:mainfrom
liwwyy:feat/instance-export
Open

liwwyy wants to merge 2 commits into
Polyfrost:mainfrom
liwwyy:feat/instance-export

Conversation

@liwwyy

@liwwyy liwwyy commented Oct 7, 2026

Copy link
Copy Markdown

This is a passion project built and maintained with AI, Wyvest told me to make a pr so I did #blamewyvest

Description

Add an Exporting section to instance settings. Users can save enabled mods as a flat ZIP, or export an Ornithe 1.8.9 instance that Prism Launcher can import.

Prism exports include the Ornithe component patches and a file/folder picker for mods, configs and optional game data. The picker has all-files, personal-use and distribution presets, remembers successful selections per instance, and uses the instance name and Minecraft version for the default filename. Users can optionally open the completed ZIP in Prism.

Exports run in the background with filename, byte and file-count progress, followed by a success or error notification. Cached linked mods are included even when they have not been materialized into the instance folder; disabled linked mods are excluded. Temporary output is cleaned up on failure, and a failed export preserves an existing destination ZIP.

The Prism button is limited to Ornithe 1.8.9. Mods ZIP export is available for other instances. Existing OneClient artwork is used for the exported instance icon.

Saved selections are additive launcher-settings data with defaults, so existing settings files continue to load.

How to test

Automated checks:

cargo build -p oneclient_app -j1
cargo test -p oneclient_core -p oneclient_events -p oneclient_app --lib --no-fail-fast -j1

Results: the app build passed; core tests passed (202), events tests passed (10), and app tests reported 162 passed with one failure in unchanged upstream code. All 17 export/selection/progress regression tests passed. The failing browser fixture, a_disabled_override_on_an_unlinked_pin_offers_enable, keys its override by performance, while the fixture manifest name is OneClient 1.21.11 Fabric [performance]. This unrelated fixture correction is not included here. The build also reports an existing unused use_start_maximized import.

Manual checks (not run by the agent):

  1. Open an instance's settings and export its mods ZIP. Verify enabled and manually added mods appear without disabled mods.
  2. Open an Ornithe 1.8.9 instance's Prism export picker. Expand folders, change nested selections, and switch between the three presets.
  3. Export a personal archive and a distribution archive. Confirm the personal preset includes worlds, server lists, options and packs; distribution includes mods/configs and omits those personal files.
  4. Reopen the picker after a successful export and verify the selected paths and optional Prism setting were remembered.
  5. Import the ZIP into Prism, check the instance name, icon, Minecraft/loader versions and selected files, and launch it.
  6. Enable opening in Prism and export again. If Prism is absent, the ZIP should remain saved with a clear notification.
  7. Check live progress during an export and that the instance cannot launch while its export is active.

Regression tests cover actual ZIP contents, cached/manual/disabled mods, nested selection persistence, shared game folders, invalid paths, symlink cycles, failure cleanup, progress finalization and existing notification behavior.

Documentation

The settings descriptions and picker explain the feature. No external documentation changes are included.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

Status: No status

Development

Successfully merging this pull request may close these issues.

1 participant