* Add auth servers unreachable warning to app
* Check auth status every 5 minutes
* Use admonition in auth server warning
* feat: tanstack
* Fix auth server reachability query
* Format
* intl extract
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
* feat: split wrapper command on linux
* feat: use code from #3900
* feat: also use shlex on Windows
* feat: add a version number to global settings
* feat(app): add settings v2, where wrapper command are split
* Taplo and typos in CI
* Clean up Cargo.toml files
* Fix CI
* Fix CI
* Run typos in CI
* Loosen typos a bit
* Fix typos
* Fix taplo
* Switch to Tombi
* Fix Tombi errors
* Remove unused typos config
* Tombi fmt
* Remove extraneous cargo fmt
* fix typos
PR #4270 modified the internal `fetch` function used by the application
to download version artifacts in a way that 4xx HTTP errors also caused
an abnormal return, instead of just 5xx errors. That was a good change,
but it had the unintended side effect of exposing our faulty logic
elsewhere of trying to download non-native JAR library artifacts when
only native artifacts are appropriate, at least according to the
PrismLauncher source code I've read. Such a download always returned a
404 error, but because such error was considered successful, a dummy
library file was still created and things worked seemingly fine.
These changes bring the Modrinth App behavior in this regard more in
line with PrismLauncher's, avoiding downloading non-native artifacts for
dependencies that have native artifacts available. (Reference:
8b5e91920d/launcher/minecraft/Library.cpp (L163))
I've tested these changes to work successfully with a variety of old
vanilla and modded Minecraft versions.
Fixes#4464.
* Make theseus capable of logging messages from the `log` crate
* Move update checking entirely into JS and open a modal if an update is available
* Fix formatjs on Windows and run formatjs
* Add in the buttons and body
* Fix lint
* Show update size in modal
* Fix update not being rechecked if the update modal was directly dismissed
* Slight UI tweaks
* Fix lint
* Implement skipping the update
* Implement the Update Now button
* Implement updating at next exit
* Turn download progress into an error bar on failure
* Restore 5 minute update check instead of 30 seconds
* Fix PendingUpdateData being seen as a unit struct
* Fix lint
* Make CI also lint updater code
* feat: create AppearingProgressBar component
* feat: polish update available modal
* feat: add error handling
* Open changelog with tauri-plugin-opener
* Run intl:extract
* Update completion toasts (#3978)
* Use single LAUNCHER_USER_AGENT constant for all user agents
* Fix build on Mac
* Request the update size with HEAD instead of GET
* UI tweaks
* lint
* Fix lint
* fix: hide modal header & add "Hide update reminder" button w/ tooltip
* Run intl:extract
* fix: lint issues
* fix: merge issues
* notifications.js no longer exists
* Add metered network checking
* Add a timeout to macOS is_network_metered
* Fix tauri.conf.json
* vibe debugging
* Set a dispatch queue
* Have a popup that asks you if you'd like to disable automatic file downloads if you're on a metered network
* Move UpdateModal to modal package
* Fix lint
* Add a toggle for automatic downloads
* Fix type
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Signed-off-by: Josiah Glosson <soujournme@gmail.com>
* Redo updating UI and experience
* lint
* fix unlistener issue
* remove unneeded translation keys
* Fix expose issue
* temp disable cranelift, tweak some messages
* change version back
* Clean up App.vue
* move toast to top right
* update reload icon
* Fixed the bug!!!!!!!!!!!!
* improve messages
* intl:extract
* Add liquid glass icon file
* not you!
* use dependency injection
* lint on apple icon
* Fix imports, move download size to button
* change update check back to 5 mins
* lint + move to providers
* intl:extract
---------
Signed-off-by: Cal H. <hendersoncal117@gmail.com>
Signed-off-by: Josiah Glosson <soujournme@gmail.com>
Co-authored-by: Calum <calum@modrinth.com>
Co-authored-by: Prospector <prospectordev@gmail.com>
Co-authored-by: Cal H. <hendersoncal117@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
* Switch to nightly + cranelift
* Fail on warnings only in CI
* Fix check errors
* Don't use mold on Linux to fix CI
* Pin nightly toolchain and add default rustup components
* Fix another CI thing
* PR comment
* Ensure that fetch errors are properly propagated
* Handle user not found errors better in add_friend
* Cargo fmt
* Introduce new LabrinthError returnable by fetch_advanced
* Allow enter key to send a friend request
* Reapply "Implement a more robust IPC system between the launcher and client (#4159)"
This reverts commit e25d726da4.
* Put game JAR and theseus JAR ahead of other JARs in classpath
* Fix 1.17-1.20 Forge by forcefully removing Multi-Release manifest entry
* Fix formatting
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* feat: consistently format all HTML, XML, JSON, CSS, JS, TS, SQL, TOML, YAML, and Markdown files
* chore: deal with VS Code not being able to parse valid editorconfig syntax
Sometimes I'm surprised that computers even work.
* chore: get rid of IntelliJ IDE config files that should not be there
These were already added to the `.gitignore` a long time ago, and now
are being ignored by Prettier.
* fix: rename `tooling-config` `format` script to `fix` for it to run with Turbo
* Implement a more robust IPC system between the launcher and client
* Clippy fix and cargo fmt
* Switch to cached JsonReader with LENIENT parsing to avoid race conditions
* Make RPC send messages in lines
* Try to bind to either IPv4 or IPv6 and communicate version
* Move message handling into a separate function to avoid too much code in a macro
* Implement direct server joining for 1.6.2 through 1.19.4
* Implement direct server joining for versions before 1.6.2
* Ignore methods with a $ in them
* Run intl:extract
* Improve code of MinecraftTransformer
* Support showing last played time for profiles before 1.7
* Reorganize QuickPlayVersion a bit to prepare for singleplayer
* Only inject quick play checking in versions where it's needed
* Optimize agent some and fix error on NeoForge
* Remove some code for quickplay singleplayer support before 1.20, as we can't reasonably support that with an agent
* Invert the default hasServerQuickPlaySupport return value
* Remove Play Anyway button
* Fix "Server couldn't be contacted" on singleplayer worlds
* Fix "Jump back in" section not working
* Detection of protocol versions before 18w47b
* Refactor old_protocol_versions into protocol_version
* Ping servers closer to how a client of an instance's version would ping a server
* Allow pinging legacy servers from a modern profile in the same way a modern client would
* Ping 1.4.2 through 1.5.2 like a Vanilla client in those versions would when in such an instance
* fix(app-frontend): do not emit exceptions when no loaders are available
* refactor(app): simplify Microsoft login code without functional changes
* feat(app): external browser auth flow for Modrinth account login
* chore: address Clippy lint
* chore(app/oauth_utils): simplify `handle_reply` error handling according to review
* chore(app-lib): simplify `Url` usage out of MC auth module