The initial v0.2 functionality is a preview. Automated core tests validate file isolation and cloning, but real Minecraft gameplay must confirm that worlds and settings remain separate.
- Download a successful Windows x64 / Linux x64 / macOS ARM64 preview from the build workflow.
- Keep a copy of important worlds before performing any preview migration.
- Note that
Legacy Vanillastill uses the existing v0.1 directory. New instances are saved under the SyntaxLauncher data directory'sinstances/<uuid>/game.
- Open Manage instances and create Survival A for an available Minecraft release.
- Select it and click Play Minecraft. Create a world called
OnlyInA; save and quit. - Create Survival B for exactly the same Minecraft version. Run B and check that
OnlyInAis absent. - Create
OnlyInB, then return to instance A. ConfirmOnlyInAis present andOnlyInBis absent. - Confirm that assets, libraries, client JARs and managed Java are shared and reused (no unnecessary complete re-download).
- Select A and open Manage instances → Instance settings. Change its name, version, minimum/maximum RAM and advanced JVM arguments (one argument per line). Confirm Save persists after restart and that the version-change warning appears.
- Reopen settings, change all inputs, click Cancel, and confirm no metadata changed. Try invalid RAM/version/JVM values and confirm Save is disabled. Verify the main screen's version/RAM controls are read-only for a selected instance but remain editable in Legacy Vanilla.
- Before intentionally downgrading a Minecraft world, make an external backup. Confirm the warning is displayed before saving the lower version. Do not test destructive downgrade on important worlds.
- Customize the Legacy Vanilla version/RAM/channel. Switch into a named instance with different version/RAM, then return to Legacy Vanilla; verify Legacy settings are retained.
- Restart SyntaxLauncher with a named instance selected. Its saved UUID, version and memory must return; the Legacy Vanilla settings must remain separate.
- Resize the Instances window below its two-column breakpoint and back; confirm inventory and actions adapt without clipping or losing state.
- Test at 1080×720 and with desktop DPI scaling 125–200%, including keyboard Tab, Enter, Escape, dialogs, cancellation and long names.
- Simulate a missing/corrupt selected instance on a disposable launcher profile. Play must remain disabled and offer a clear recovery path.
- Select A, click Clone, then launch the clone.
OnlyInAmust exist in the clone. - Change a world/config in the clone. The original A must retain its original data.
- Rename the clone. Its internal UUID/path should not change.
- Move the clone to trash and confirm it disappears from the launcher list.
- Confirm its directory exists under
instance-trash. In Manage instances → Recover deleted instances, click Restore. Confirm the original UUID, world saves and settings reappear, then launch the restored instance. - If an instance with that UUID already exists, confirm Restore fails without overwriting either copy; resolve the conflict manually after backing up both directories.
- If the
Legacy Vanillagame data exists, use Import v0.1 game (copy worlds), verify imported saves, and confirm the original legacy game folder remains untouched.
- Import a copy of a large test world (not your only save). Check that the displayed source/destination paths and estimated byte totals match the source preview.
- Cancel an import mid-file using the workspace Cancel copying action and verify that the source is unmodified and no new selectable instance appears.
- Simulate insufficient disk space/permissions with a disposable test directory. Confirm an actionable failure and no partial published profile.
- Place a symbolic link in a disposable source game folder and confirm import refuses the unsafe copy rather than following that link.
- Launch an instance, leave Minecraft running, close SyntaxLauncher (detach), and start SyntaxLauncher again.
- Attempt to rename, clone, edit or move that instance to trash. All mutations must fail without changing the profile or its worlds. The failure should name the active PID.
- Quit Minecraft and retry. Operations should become possible without deleting worlds or manually removing a lock.
- Launch Legacy Vanilla and verify an attempt to import it while the game is running is rejected. Reattempt once it exits.
- Verify a failed or cancelled game preparation does not leave a live lock permanently blocking editing.
- A malformed or newer-than-supported
instance.jsonshould not be deleted or overwritten by routine list/update actions. - Delete only the
gamedirectory of a disposable test profile (not a real world). Confirm the inventory flags a corrupted/missing profile and cannot silently launch an empty replacement. - For a disposable import, confirm SHA-256 verification completes before publication. Interrupted verification must roll back staging as well as interrupted copying.
- Missing previously selected instance should generate an actionable warning instead of silently opening Legacy Vanilla.
- Instance metadata uses schema v1. Unknown fields are retained during update and clone. Schema-changing migrations will be added when a later format is introduced.
- Malformed trash entries must show a problem, remain on disk for manual recovery and never be automatically deleted.
- Restoring a deleted instance must keep its original UUID, including unknown schema-1 metadata fields; duplicate names are differentiated by short UUID in the manager.
- The metadata
instance.jsonis stored beside each instance'sgamedirectory. The folder name and JSONidmust agree.
Include launcher commit SHA, operating system/architecture, Minecraft version, instance name (not the UUID), operation, reproduction steps, and sanitized process errors/logs. Never include private credentials or other users' sensitive data.