* 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
We standarized on using `rustls` as a TLS implementation across the
monorepo, which is written in Rust and has better ergonomics,
integration with the Rust ecosystem, and consistent behavior among
platforms. However, the Labrinth Clickhouse client was the last
remaining exception to this, using the native, OS-provided TLS
implementation, which on Linux is OpenSSL and requires developers and
Docker images to install OpenSSL development packages to build Labrinth,
in addition to introducing an additional runtime dependency to Labrinth.
Let's make the process of building Labrinth slightly simpler by
switching such client to `rustls` as well, which results in finally
using the same TLS implementation for everything, a simplified build and
distribution process, less transitive dependencies, and potentially
smaller binaries (since `rustls` was already being pulled in for, e.g.,
the SMTP client).
* chore: typo fix and formatting tidyups
* refactor(theseus): extend auth subsystem to fetch complete user profiles
* chore: fix new `prettier` lints
* chore: document differences between similar `Credentials` methods
* chore: remove dead `profile_run_credentials` plugin command
* feat(app): skin selector backend
* enh(app/skin-selector): better DB intension through deferred FKs, further PNG validations
* chore: fix comment typo spotted by Copilot
* fix: less racy auth token refresh logic
This may help with issues reported by users where the access token is
invalid and can't be used to join servers over long periods of time.
* tweak(app-lib): improve consistency of skin field serialization case
* fix(app-lib/minecraft_skins): fix custom skin removal from DB not working
* Begin skins frontend
* Cape preview
* feat: start on SkinPreviewRenderer
* feat: setting for nametag
* feat: hide nametag setting (sql)
* fix: positioning of meshes
* fix: lighting
* fix: allow dragging off-bounds
* fix: better color mapping
* feat: hide nametag setting (impl)
* feat: Start on edit modal + cape button cleanup + renderer fixes
* feat: Finish new skin modal
* feat: finish cape modal
* feat: skin rendering on load
* fix: logic for Skins.vue
* fix: types
* fix: types (for modal + renderer)
* feat: Editing?
* fix: renderer not updating variant
* fix: mojang username not modrinth username
* feat: batched skin rendering - remove vzge references (apart from capes, wip)
* feat: fix sizing on SkinButton and SkinLikeButton, also implement bust positioning
* feat: capes in preview renderer & baked renders
* fix: lint fixes
* refactor: Start on cleanup and polish
* fix: hide error notification when logged out
* revert: .gltf formatting
* chore(app-frontend): fix typos
* fix(app-lib): delay account skin data deletion to next reboot
This gives users an opportunity to not unexpectedly lose skin data in
case they log off on accident.
* fix: login button & provide/inject AccountsCard
* polish: skin buttons
* fix: imports
* polish: use figma values
* polish: tweak underneath shadow
* polish: cursor grab
* polish: remove green bg from CapeLikeTextButton when selected.
* polish: modal tweaks
* polish: grid tweaks + start on upload skin modal
* polish: drag and drop file flow
* polish: button positioning in SkinButton
* fix: lint issues
* polish: deduplicate model+cape stuff and fix layout
* fix: lint issues
* fix: camel case requirement for make-default
* polish: use indexed db to persist skin previews
* fix: lint issues
* polish: add skin icon sizing
* polish: theme fixes
* feat: animation system for skin preview renderer
* feat(app/minecraft_skins): save current custom external skin when equipping skins
* fix: cape button & dynamic nametag sizing
* feat(theseus): add `normalize_skin_texture` Tauri command
This command lets the app frontend opt in to normalizing the texture of
any skin, which may be in either the legacy 64x32 or newer 64x64 format,
to the newer 64x64 format for display purposes.
* chore: Rust build fixes
* feat: start impl of skin normalization on frontend
* feat(theseus): change parameter type of `normalize_skin_texture` Tauri command
* fix: normalization
* fix(theseus): make new `normalize_skin_texture` command usable
* feat: finish normalization impl
* fix: vueuse issue
* fix: use optimistic approach when changing skins/capes.
* fix: nametag cleanup + scroll fix
* fix: edit modal computedAsync not fast enough for skin preview renderer
* feat: classic player model animations
* chore: fix new Clippy lint
* fix(app-lib): actually delete custom skins with no cape overrides
* fix(app-lib): handle repeated addition of the same skin properly
* refactor(app-lib): simplify DB connection logic a little
* fix: various improvements
* feat: slim animations
* fix: z-fighting on models
* fix: shading + lighting improvements
* fix: shadows
* fix: polish
* fix: polish
* fix: accounts card not having the right head
* fix: lint issues
* fix: build issue
* feat: drag and drop func
* fix: temp disable drag and drop in the modal
* Revert "fix: temp disable drag and drop in the modal"
This reverts commit 33500c564e3f85e6c0a2e83dd9700deda892004d.
* fix: drag and drop working
* fix: lint
* fix: better media queries
* feat(app/skins): revert current custom external skin storing on equip
This reverts commit 0155262ddd081c8677654619a09e814088fdd8b0.
* regen pnpm lock
* pnpm fix
* Make default capes a little more clear
* Lint
---------
Co-authored-by: Alejandro González <me@alegon.dev>
Co-authored-by: Prospector <prospectordev@gmail.com>
* Create get_resource_file macro to get an embedded resource
If the tauri feature is enabled, the resource will be loaded from Tauri resources.
If the tauri feature is disabled, the resource will be extracted to a temp directory.
* Wrap process execution to inject system properties through stdin
* Pass the time values as ISO 8601 datetimes
* Remove entirely internal modrinth.process.uuid
* Redo Java version checking somewhat and fix a few bugs with it
* Fix game launch with early access versions of Java
* Format Java code
* Fix modrinth.profile.modified being the same as modrinth.profile.created
* Revert to manually extracting class files
* chore(clippy): enable and fix many stricter lints
These ensure that the codebase uses more idiomatic, performant, and
concise language constructions.
* chore: make non-Clippy compiler warnings also deny by default
* refactor: inherit Clippy lint config and Rust edition from workspace
This also ensures developers running `clippy lint` locally get the same
lints as during CI, especially when the Rust toolchain version is fixed
through a `rust-toolchain.toml` file.
* chore(clippy.toml): bump MSRV to 1.87
* chore: undo unintended updater `zip` feature drop, tweak comment
* fix: correct unintended regression on version and project validation
This was caused by a mistake when coalescing mostly copied and pasted
`RE_URL_SAFE` regexes into one.
* chore: inherit dependencies from workspace, optimize some deps out
* Update bitflags from 2.9.0 to 2.9.1
* Fix temp directory leak in check_java_at_filepath
* Fix build
* Fix lint
* chore(app-lib): refactor overkill `futures` executor usage to Tokio MPSC
* chore: fix Clippy lint
* tweak: optimize out dependency on OpenSSL source build
Contrary to what I expected before, this was caused due to the Tauri
updater plugin using a different TLS stack than everything else.
* chore(labrinth): drop now unused dependency
* Update zip because 2.6.1 got yanked
* Downgrade weezl to 0.1.8
* Mention that p256 is also a blocker for rand 0.9
* chore: sidestep GitHub review requirements
* chore: sidestep GitHub review requirements (2)
* chore: sidestep GitHub review requirements (3)
---------
Co-authored-by: Josiah Glosson <soujournme@gmail.com>
* Add launcher_feature_version to Profile
* Misc fixes
- Add typing to theme and settings stuff
- Push instance route on creation from installing a modpack
- Fixed servers not reloading properly when first added
* Make old instances scan the logs folder for joined servers on launcher startup
* Create AttachedWorldData
* Change AttachedWorldData interface
* Rename WorldType::World to WorldType::Singleplayer
* Implement world display status system
* Fix Minecraft font
* Fix set_world_display_status Tauri error
* Add 'Play instance' option
* Add option to disable worlds showing in Home
* Fixes
- Fix available server filter only showing if there are some available
- Fixed server and singleplayer filters sometimes showing when there are only servers or singleplayer worlds
- Fixed new worlds not being automatically added when detected
- Rephrased Jump back into worlds option description
* Fixed sometimes more than 6 items showing up in Jump back in
* Fix servers.dat issue with instances you haven't played before
* Update a bunch of app dependencies in non-breaking ways
* Update dependencies in app-lib that had breaking updates
* Update dependencies in app that had breaking updates
* Fix too large of bulk requests being made, limit max to 800 #3430
* Also update tauri-plugin-opener
* Update app-lib to Rust 2024
* Non-breaking updates in ariadne
* Breaking updates in ariadne
* Ariadne Rust 2024
* Add hiding from home page, add types to Mods.vue
* Make recent worlds go into grid when display is huge
* Fix lint
* Remove redundant media query
* Fix protocol version on home page, and home page being blocked by pinging servers
* Clippy fix in app-lib
* Clippy fix in app
* Clippy fix
* More Clippy fixes
* Fix Prettier lints
* Undo `from_string` changes
* Update macos dependencies
* Apply updates to app-playground as well
* Update Wry + Tauri
* Update sysinfo
* Update theseus_gui to Rust 2024
* Downgrade rand in ariadne to fix labrinth
Labrinth can't use rand 0.9 due to argon2
* Cargo format
---------
Signed-off-by: Josiah Glosson <soujournme@gmail.com>
Co-authored-by: Prospector <prospectordev@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: Alejandro González <me@alegon.dev>
* Fix not being able to connect to local friends socket
* Start basic work on tunneling protocol and move some code into a common crate
* Commonize message serialization logic
* Serialize Base62Ids as u64 when human-readability is not required
* Move ActiveSockets tuple into struct
* Make CI run when rust-common is updated
CI is currently broken for labrinth, however
* Fix theseus-release.yml to reference itself correctly
* Implement Labrinth side of tunneling
* Implement non-friend part of theseus tunneling
* Implement client-side except for socket loop
* Implement the socket loop
Doesn't work though. Debugging time!
* Fix config.rs
* Fix deadlock in labrinth socket handling
* Update dockerfile
* switch to workspace prepare at root level
* Wait for connection before tunneling in playground
* Move rust-common into labrinth
* Remove rust-common references from Actions
* Revert "Update dockerfile"
This reverts commit 3caad59bb474ce425d0b8928d7cee7ae1a5011bd.
* Fix Docker build
* Rebuild Theseus if common code changes
* Allow multiple connections from the same user
* Fix test building
* Move FriendSocketListening and FriendSocketStoppedListening to non-panicking TODO for now
* Make message_serialization macro take varargs for binary messages
* Improve syntax of message_serialization macro
* Remove the ability to connect to a virtual socket, and disable the ability to listen on one
* Allow the app to compile without running labrinth
* Clippy fix
* Update Rust and Clippy fix again
---------
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
* Bump tauri to v2
* Switch to virtual typed list for content page
* Fix unexpected hang on windows
* Fix ads window scaling issues on some devices
* Use DPR from browser
* Fix link opens, bump version, fix lint
* 0.8.5 fixes
* Attempt to fix binary name
* bump version + add nsis installmode
* (temp) Use cargo version of tauri CLI
* fix cli build
* Fix build env var
* Bump tauri version
* remove old invalid installs
* Fix old shortcuts + NSIS build
* Implement ads in desktop app
* Finish ads
* use git dep instead
* attempt to fix linux build (temp)
* bump version + lint
* comment more
* fix build
* try to fix linux build
* Fix crashing on windows
* Fix icons not showing
* Remove useless env vars
* Actual linux build fix
* Run fmt
* Fix scrolling
* fix clippy
* bump version + fix localhost
* rev linux build patch
* update version num
* update csp
* update csp
* update csp
* Switch to mousewheel event