1.1.1
A launcher-sync, old-version, and reliability update - import instances from other launchers, smoother navigation, sounds and language files restored on legacy Minecraft versions, and a wide round of launch, security,
and install fixes.
✨ What's new
Sync instances from other launchers
A new Sync panel scans for instances from Prism Launcher, MultiMC, Modrinth, ATLauncher, CurseForge, and GDLauncher. Each can be Linked (launched in place from its original folder, so mods stay in sync) or
Imported (copied into Refract as an independent instance). Sources are grouped and color-coded.
Smooth page transitions
Navigating between pages now animates with a horizontal slide and soft blur on spring easing, instead of snapping.
Sounds & language files on old versions
Pre-1.7 / legacy versions don't read assets from the modern hashed object store, so they used to launch with no sounds, no language files, and missing menu icons. Refract now materializes the legacy/virtual asset tree
on install (and mirrors it into the instance's resources/ folder for pre-1.6).
Bug fixes
- NeoForge / Forge wouldn't launch. A custom Java path pointing at a JDK folder (not
java.exe) failed withENOENT- now resolved to the correct executable (and whitespace-trimmed). Auto-detection picked the
newest Java instead of the closest match - now prefers the closest Java at or above the requirement. An incomplete install used to crash withUnknown module: cpw.mods.securejarhandler- Refract now checks the
loader's module files first and asks you to repair instead. - Duplicate libraries broke older Forge. Vanilla and loader copies of shared libraries (ASM, log4j) both landed on the classpath at different versions; they're now de-duplicated by Maven coordinate, with the
loader's version winning. - Empty window after enabling the renderer sandbox. The preload loaded a helper package with a runtime
require()that sandboxed preloads can't make, sowindow.apinever initialized and the app looked wiped.
The preload now bundles its dependencies - sandbox stays on, data loads normally. - Stop / "already running" broke after a restart. Running games are now tracked by persisted PID, so liveness detection and Stop survive reopening the launcher.
- Streak rolled over at the wrong time. The 🔥 daily streak now rolls at your local midnight instead of UTC.
- Custom JVM args with spaces. Quoted values like
-Dfoo="bar baz"are no longer split incorrectly. - Some downloads failed on mirrors. Now follows
303/307/308redirects and resolves relativeLocationURLs. - Sync panel & localization. Works in all builds, fully translated to Ukrainian, correct accent styling.
- Linked-instance content now writes to that instance's own game folder; installs can be cancelled per-instance.
Security & hardening
The renderer now runs sandboxed. World, screenshot, and asset file operations reject path-traversal names, production builds no longer open DevTools, and untrusted HTML is stripped through an inert parser.
Full Changelog: v1.1.0...v1.1.1