Skip to content

Releases: dscalzi/HeliosLauncher

Release v2.0.0 - Major Rewrite (AssetGuard, JavaGuard, DistroManager)

24 Mar 21:52
e4ddf89
Compare
Choose a tag to compare

Release v2.0.0

This release includes new implementations of several core mechanisms of Helios Launcher. The new implementations replace the Distribution manager, AssetGuard, and JavaGuard. All rewritten code leverages the full power of Typescript and modern Javascript APIs. This has resulted in a more maintainable, robust, and concise codebase. Remember, async/await was not even stable in Node when v1 was being written!

For technical details on the new implementations, see the helios-core release notes https://github.com/dscalzi/helios-core/releases/tag/v2.0.0

Highlights

  • Support for Helios Distribution Spec v1.2.0.
  • Support for SRV records in server status api (#120)
  • Java settings per server (through the distribution), and full support for pack-specific ram (#154)
  • Downloads are retried up to ten times. This will fix issues with the Mojang resource urls timing out.
  • Robust download error handling, you should never get stuck at 99% again.
  • RAM increments are now correctly resolved in increments of 512 MB (instead of 500MB).
  • ..and much more! Check out the code changes 😄

Breaking Changes of Note

As this is a rewrite, there are a lot of breaking changes. Most of the changes should be self evident, these might not be as obvious.

  • Pack.xz format is no longer supported. Older versions of forge no longer ship as .pack.xz and even the JDK removed Pack200 starting in JDK 14. The solution to this is simple, host your jar files as .jar and not as .jar.pack.xz.
  • The location of the distribution url has changed. It is now stored in exports.REMOTE_DISTRO_URL in distromanager.js (line 7).
  • Dev distribution must now be named distribution_dev.json, instead of dev_distribution.json.

Full changeset #270

Note for Forks

Helios 1.x is no longer supported, I would highly recommend upgrading your forks to v2 at the earliest convenience. If you have any questions, please ask them either on Discord or on the GitHub discussion for this release. Please make sure to test your upgrades before shipping to production. Report any issues you find in the base code, and they will be fixed. Thank you!

Release v1.10.0 - 1.17+ Support, 2022 Maintenance

20 Mar 00:16
f3c1e42
Compare
Choose a tag to compare

Release v1.10.0

This release includes support for launching Minecraft versions 1.17 and greater. Also included are numerous bugfixes and improvements.

Please note that this will be the last release of the 1.x line of Helios Launcher. A major refactor of the validation and download code (commonly known as AssetGuard) is in progress. Once complete, HeliosLauncher will be incremented to v2.0.0. Going forward, major refactors may warrant major version bumps. After v2 is complete, the next major development effort will be a rewrite of ProcessBuilder, enabling support for different modloaders (or lack thereof), including fabric and vanilla. That will likely land as v3.

More information on v2 will be posted in a v2 release candidate. All the changes are immediately available in #270.

1.17+ Support

Support for Minecraft 1.17+ and greater was added in late 2022 via #261. In 1.10.0, HeliosLauncher will use JDK 8 for any version of Minecraft below 1.17, and JDK 17 for 1.17 or greater. Java settings have been moved to per server instance to support this. This includes setting pack specific ram. The min and max ram values are still globally set by the launcher, but v2 will allow these to also be set on a per-server basis.

Changelog

Full diff can be viewed here.

New Features

  • e3ee03e 1.17+ Support / Java Settings by Instance (#261)
  • fb586cc (Apple Silicon) aarch64 OpenJDK detect and install (#273)

Changes

Fixes

  • 45630c0 Fix style violation.
  • 5d44cc3 fix: Readme badge (#264)
  • 9224531 fix: variable references (#227)
  • 2e1ab3c Fix expiration token date which return always NaN (#226)
  • ee61ea4 Improve handling of JVM arguments on the settings view.
  • 4e2c9ce Set user type to msa for msft accounts.
  • 15fc12b Fix deleting drop-in mods from the settings view.
  • ccf099a Fix macOS executable name.
  • b092722 Calculate expiry date should not be async.
  • fc28926 Show GitHub actions build status in the README.
  • a8c92ab Fix URL to ms auth documentation in comment.
  • f6b787c Fix URL to ms auth documentation on README.

Release v1.9.0 - Microsoft Authentication, 2021 Maintenance

12 Feb 01:35
78a4f7b
Compare
Choose a tag to compare

Release v1.9.0

This update includes support for Microsoft Authentication. Mojang account lockout will begin on March 10, 2022. Please integrate these changes before then. Forks should constantly be in sync with master to get the latest changes, fixes, and features.

Is your network using Helios and its toolchain? Consider supporting its development https://github.com/sponsors/dscalzi
Sponsors of a certain tier will be added to the README.

Rewrite Update (v2) and helios-core

The react-electron-typescript-webpack-etc toolchain is incredibly difficult to work with due to the complexities of getting all those third-party libraries to work together. Additionally, there are issues where third-party dependencies fall into disrepair or are extremely slow to update. This causes blocking issues when performing SEMVER-MAJOR upgrades (ie from webpack 4 to 5). I would much rather spend my available development hours on development, not getting these libraries to work together.

As a compromise, all new logic that is not explicitly tied to UI integration will be done in helios-core. Helios-core is a typescript library containing the core mechanisms of the launcher. The benefit of moving the core mechanisms into this library are that we can leverage the full power of TypeScript to produce code that is more reliable, testable, and maintainable. This library already houses the core Microsoft and Mojang authentication functionality, among other things. Existing code will gradually be moved over. The next two to be moved over will likely be java handling and an assetguard replacement.

Changelog

Full diff can be viewed here.

New Features

  • 58e68c1 Microsoft Authentication
  • cd1ca7e Add support for building arm64 dmg (Apple Silicon processors) (#157)

Changes

  • ad47617 Replace mojang.js with helios-core implementation.
  • Updated to Electron 16
  • c1d36d2 Fork discord-rpc and remove native dependencies.
  • 9c6d75f Implement helios-core, use Server List Ping protocol.
  • 430e840 Update JDK handling to account for AdoptOpenJDK migration to Adoptium.
  • 54e6572 Use MCHeads instead of Crafatar (#181)
  • 31a51b8 MIT License.
  • 84c13e6 Update PackXZExtract to v1.2.0
  • be4a42b Use GitHub Actions for building.
    • Later commit updates the build config. See latest version of the file.

Fixes

  • f9e4fd8 CRITICAL Fix Let's Encrypt DST Root CA X3 certificate expiration.
  • 79135f3 Fixed broken links on the login page (#159)
  • 3ea41b4 Point to https mojang endpoint.

Release v1.8.0 - 2020 Maintenance and Fixes

13 Sep 17:49
faa5f52
Compare
Choose a tag to compare

Release v1.8.0

This update contains various fixes and changes from the past year of development and maintenance. Forks should constantly be in sync with master to get the latest changes, fixes, and features.

Is your network using Helios and its toolchain? Consider supporting its development https://github.com/sponsors/dscalzi
Sponsors of a certain tier will be added to the README.

Notable Development Efforts

Helios v2

https://github.com/dscalzi/HeliosLauncher/tree/ts-refactor

Helios is being rewritten in Typescript, using React as a UI framework. Each system is being rewritten and overhauled using the lessons learned from implementing and maintaining v1.

This rewrite has NO ETA. It is being worked on entirely in my freetime and is a massive undertaking. No corners are being cut, and tests are being written for each component. For status updates, monitor the v2 branch or check the discord. Large/current tasks will be posted on the v2 project board.

Helios v1 will continue to be maintained for the forseeable future.

Nebula

https://github.com/dscalzi/Nebula

Nebula is a tool to automatically generate a distribution.json. Heavy development over the past year has brought it to a usable state. Several minor features are yet to be implemented, none of which will prevent you from generating a full distribution. Once setup, you can generate new server configurations in seconds.

Claritas

https://github.com/dscalzi/Claritas

Claritas is a utility library to extract metadata through bytecode analysis. It is used in Nebula generate accurate entries for forge mods, litemods, and tweakers.

Changelog

Full diff can be viewed here.

New Features

  • 96db607 Support mod loading for 1.7.10.
  • 7f821f3 Support latest 1.12.2 builds (compiled with ForgeGradle 3).
  • 9a2c1fd Display the Java vendor on the settings page (ex. Oracle, AdoptOpenJDK, Amazon).

Fixes

  • 9761c1d Provide empty JSON object to forge user_properties on 1.8.9. (#40)
  • 1a2e9f3 Ensure libraries are added to the classpath as .jar (.pack.xz extensions were slipping through).
  • 1430d0f MacOS platform icon is now a png. (#68)
  • 71b25d3 Fix passing fullscreen option to 1.13+, fix launch area toggling on 1.13+, added minimum linger time to launch area transition.
  • 1bdb413 Fixed autoconnect for 1.13, 1.14. Disabled autoconnect for early forge 1.15 builds due to OpenGL issue.
  • b09cd2e Re-enable autoconnect for 1.15.2 on patched forge versions.
  • f795b28 Fix launching on 1.8.9 and 1.9.4. (#79)
  • eeaa2e9 Fix rich presence never leaving Loading Game status. (#80)
  • 6b755fe MD5 comparisons should ignore case (they're just hex strings).
  • bd19b16 Include user's displayName in server joined regex.
  • cc86f2a Use --fml.modLists on 1.13+ to avoid potential issues with CLI length limits.
  • 9a2c1fd Use Corretto 8 on macOS to fix lwjgl issue caused by modern Xcode versions. (#70)
    • See the #70 for more details, as this is an important issue.
  • 17e36fa Return after rejection in distribution fetch.
  • 25e7e5a Fixes and tweaks for Java discovery on windows.
  • c0776dc Mojang's status API is returning sessionserver and minecraft.net as red. Set it to green until their endpoint is fixed.

Changes

  • 8b04f47 PackXZExtract updated to v1.1.0.
  • 9d1aa49 Send integer percentage only to reduce load on the IPC channel. (#56)
  • 64dfc54 Added version to executable name.
  • b1abe07 Use new forgot password url.
  • Updated Electron to v10.
  • 4685315 Updated ejs to v3.
  • Virtually every dependency has been updated since the last release. Only important updates have been noted here.

Docs

  • ef8f36b Moved sample distribution to docs folder to avoid confusion.

Release v1.7.0 - Rebrand to Helios Launcher, Various Fixes.

17 Oct 23:51
Compare
Choose a tag to compare

Release v1.7.0

The project has been rebranded to Helios Launcher (formerly Electron Launcher). Development since v1.6.0 has mostly targeted this effort, as well as general maintenance to make sure the application is performs as expected. Noteworth changes will be detailed below.

Migration to AdoptOpenJDK

Automatic Java installation broke last year as Oracle put downloads for JRE 8 behind a login page. To mitigate this, we've switched to AdoptOpenJDK, a service which hosts prebuilt OpenJDK binaries. This change brings two added benefits. The first is that we no longer have to scrape download urls off of webpages, as AdoptOpenJDK provides an API. The second is that we are no longer dependent on Oracle, especially with the licensing changes that have started to come into effect.

In the future, the Java discovery system should be upgraded to become more robust and extensible. As of right now, we are not searching known OpenJDK paths for binaries. As with most programs, just add the location to JAVA_HOME to have the launcher discover it.

As a final note, cpw's ModLauncher only supports the HotSpot VM. If you are extending the launcher, keep that in mind.

Update to 1.13 Sample

The launcher does support 1.13, and hopefully 1.14. I have not personally tested a 1.14 configuration at this point. The sample configuration included in this repository has been updated to support forge's latest (and presumably final) 1.13 release. See the sample configuration for details.

Switch to Electron-Builder's Programmatic API.

This is a minor change, althouth I feel it's worth noting. We now invoke Electron-Builder through its programmatic API via build.js. The build scripts have been updated and now point to this.

Eventual Language File Support

I've begun the process of moving all strings to a language file so that they can be more easily changed without having to look through each file. This process is partially complete, supporting all HTML files and a handful of Javascript files. No ETA on when this effort will be complete, as it's a tedious and non-imperative task.

Future Plans

The future of this project will take one of two forms.

  • Project Rewrite - I've learned a lot implementing the initial version of Helios Launcher, and now see various ways in which the project can be improved. A large goal of any rewrite would be to make the core functionality more modular, allowing better independence of version support. Another task would be to rewrite the UI using either Vue or React. This would be an enormous task and require a lot of time, planning, and effort. As such, I really only see it being worthwhile if there would be a large enough demand for the end-product. After all, version 1 works fine and can be maintained indefinitely.

  • Long-term Maintenance - This would pretty much be exactly what I've been doing the last 7 months. QOL updates, dependency upgrades, and adding compatibility with new versions of MC/Java as they come out.

As this is the first update in 7 months, the commit list is rather long. As such, I will not be listing each individual change. More details on what's been changed can be viewed here:

v1.6.0...v1.7.0

Release v1.6.0 - Forge 1.13 Support, Failed to Verify Username Fixed

18 Feb 23:52
e08c3a9
Compare
Choose a tag to compare

Release v1.6.0

This release adds support for Forge 1.13 Beta. Forge is no longer a single jar file, and the version manifest formats have changed. There is also a new system for maven-style mod loading. As a result, the following had to be done:

  • Added new argument parser to prepare arguments provided in both the vanilla and forge version manifest.
  • Added two new distribution types.
    • VersionManifest. This is forge's version manifest. In 1.12 and below, this was extracted from the universal jar. Now, this file is only present in the installer. As a result it must now be hosted. The file is stored to common/versions/{forge-version}/{forge-version}.json
    • VersionJar. This is forge's patched version jar. The file is stored to common/versions/{forge-version}/{forge-version}.jar
  • Several more Forge files need to be hosted since it is no longer a single universal jar. These files are generated by the installer. An example is provided in repo's sample distribution.json. Files can be identified here.
  • Forge 1.13 has a new feature replacing --modListFile. These are --fml.mavenRoots and --fml.mods. All 1.13 configurations now make use of this to load mods.

Failed to verify username is finally fixed. The issue was caused when users has fullscreen enabled. The fullscreen argument was not properly passed to the game and therefore overrided whichever argument came directly after it. That argument was --username, hence the name of the issue. Along with fixing this issue, we reorganzed the launcha arguments to be more coherent and in-line with the vanilla launcher.

Features

  • 81367bc Support for launching Forge 1.13.2 Beta.
  • e08c3a9 Support for Forge 1.13.2's replacement of --modListFile.

Changes

  • c834ca9 Reorder the launch arguments to be more organized, predictable, and in line with the vanilla launcher.

Fixes

  • c834ca9 Fixed application of the --fullscreen argument to not block other arguments. In particular, this used to block --username from being registered, resulting in the infamous issue failed to verify username. That will no longer happen.

Dependency Upgrades

Release v1.5.2 - Better Error Message for Non-Paid Accounts

05 Feb 22:44
46f8b19
Compare
Choose a tag to compare

Release v1.5.2

This update adds a more meaninful error message for users who attempt to login without a paid minecraft account. We assume that the absense of a selectedProfile from Mojang's auth service indicates a non-paid account and will alert the user accordingly.

Brought all dependencies up to date.

Changes

  • 6d1ecd7 More meaningful error message for non-paid accounts.

Dependency Upgrades

Release v1.5.1 - Better Error, Auth Handling

21 Jan 03:49
8bd040a
Compare
Choose a tag to compare

Release v1.5.1

If you encounter the "Failed to verify username" error, you can now resolve the issue by logging out of all your accounts, then relogging in. This will reset the clientToken. You no longer have to delete the config.json.

Error handling for the launch process has been improved. We are now properly monitoring the forked process for invalid exit codes and errors. If anything happens, the user will now be alerted. This should eliminate a lot of the "stuck at 100%" issues.

Changes

  • 90651d4 Reset client token when user logs out of all accounts.
  • 8c0bf8f Improved error handling during launch. We now properly monitor the forked process and alert the user of any errors (non-zero status codes and actual errors). This should eliminate a lot of the "stuck at 100%" issues.

Dependency Upgrades

Release v1.5.0 - Customize your Installation

04 Jan 19:54
cb12c07
Compare
Choose a tag to compare

Release v1.5.0

If you have multiple drives, you may not want to install files to their default locations. This update allows you to change both the installation directory (Windows only) and the data directory (also known as .westeroscraft). All game files are installed to the data directory.

Change Windows installation directory
Change Windows installation directory

Change data directory
Change data directory

Changes

  • de15440 Added option to change data folder location.
    • Removed commonDirectory.
    • Removed instanceDirectory.
    • Added dataDirectory. The common and instance directories are now resolved from this.
    • The config.json and distribution.json are now stored in Electron's data folder (app.getPath('userData')).
    • Users can edit the dataDirectory under launcher settings.
  • e121975 Added option to change installation directory on Windows.

Release v1.4.1 - Important Fix for Latest 1.12.2 Forge

31 Dec 16:36
d2982ca
Compare
Choose a tag to compare

Release v1.4.1

Forge rewrote their modList implementation last April and we finally got the memo. This update adds support for some incompatible changes they've introduced. Please update to this version ASAP as our next update to the 1.12.2 test server will not work on older versions.

We've also been working on the backend to prepare for eventual Java 11 support once 1.13 rolls around.

Changes/Fixes

  • d2982ca Forge 1.12.2 (14.23.3.2655)+ requires the absolute: prefix when using an absolute path for the modList repository root.
  • d7fe519 Preliminary Java 9+ support. This is not finalized and still disabled for all versions. It will be enabled only when we verify a 1.13 configuration that works 100% on Java 9+. Expect this within the next few months.

Dependency Upgrades