Skip to content

Rework and modernization of Maxima - #70

Open
sjp761 wants to merge 58 commits into
ArmchairDevelopers:masterfrom
sjp761:belleza-rebase
Open

sjp761 wants to merge 58 commits into
ArmchairDevelopers:masterfrom
sjp761:belleza-rebase

Conversation

@sjp761

@sjp761 sjp761 commented Sep 9, 2026 •

Copy link
Copy Markdown

This PR is a rework that has been going on the past few months by me and BellezaEmporium.

Belleza's work

  • Deps updates to the latest versions
  • RTM updates
  • GUI fixes
  • Touchup elevation on windows
  • Downloader rework with state saving (state saving is only on windows for now)

My part

  • Per game wine prefixes on Linux
  • Improved handling for UMU including options for environmental variables
  • File exclusion
  • LSX refactor
  • Internal game registry (games will auto register with new system on windows, Linux will have to be relocated because of prefixes now being per game
  • Fixing up Belleza's work where possible

This PR also relies on my crates updates for flate2 and async-compression

This PR succeeds #46

BellezaEmporium and others added 30 commits May 4, 2026 15:47
Define messages for conversation channels and events.
- Added "lsx_crypto" to take care of the necessary stuff
- Included a method to prepare a challenge response by encrypting a key and deriving a new seed.
- Defined custom error types for better error handling.
…'s lazylock, limit requests to prevent 403s, fix potential lib issue
BellezaEmporium and others added 27 commits August 1, 2026 23:18
Fix all compile errors

Fix winit compile error on linux

Put rustls into virtual workspace

Fix GUI not launching on Linux

Run touchup only when needed, set CWD before game launch to fix crashing
Comment thread maxima-cli/src/main.rs

let offer_id = game.base_offer().offer_id().to_owned().clone();
let slug = game.base_offer().slug().to_owned().clone();
drop(maxima); // To unlock before starting the game, since start_game will also need to lock

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Instead of using drops like this I think using scopes would be better fit

{}

Alternatively extract the functionality that needs a lock to separate function

Comment thread maxima-cli/src/main.rs
Comment on lines +409 to +413
if available_live_build.is_none() {
bail!("Couldn't find a suitable game build");
}

let build = build.unwrap();
info!("Installing game build {}", build.to_string());
let build = available_live_build.unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This could be made into

let Some(build) = builds.live_build() else { bail!("....") } ; 

Comment thread maxima-cli/src/main.rs
Comment on lines 518 to 522
if build.is_none() {
bail!("Couldn't find the game build {}", build_id);
}

let build = build.unwrap();

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

similarly here you could you use let Some() stuff

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

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants