* fix(app): adjust CSP settings for skin manager to work
* tweak: allow current Tauri scheme in CSP
* tweak: remove references to invalid `sunny.png` texture in skin models
These were causing load errors in production app builds.
* tweak: use proper URL imports for skin models
This fixes importing these models in production builds of the app.
* chore(app-frontend): use more proper import style for glTF assets
* tweak: use proper URL imports for skin models in more places
* fix(app): use the same CSP during `tauri dev` as `tauri build`
* chore(app-frontend): make Vite WS CSP policy a bit more strict
* tweak: make Tauri CSP config object readable again
At the cost of some extra code in the Vite config side, but I think it's
worth it.
* chore: fix linter warning in app frontend introduced who knows where else
We need a Git hook to ensure these things aren't pushed only to explode
later on or something.
* Fix wrong email address
Signed-off-by: Ken <131881470+Keniis0712@users.noreply.github.com>
* Decouple SMTP auth identity from message sender
Signed-off-by: Ken <131881470+Keniis0712@users.noreply.github.com>
* Add new configurations to .env file
Signed-off-by: Ken <131881470+Keniis0712@users.noreply.github.com>
* Update mod.rs
Signed-off-by: Ken <131881470+Keniis0712@users.noreply.github.com>
* Remove unused import
Signed-off-by: Ken <131881470+Keniis0712@users.noreply.github.com>
* Give SMTP_FROM_ADDRESS a default value
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Signed-off-by: Ken <131881470+Keniis0712@users.noreply.github.com>
* Add the correct host name
Signed-off-by: Ken <131881470+Keniis0712@users.noreply.github.com>
* Fix CI failure
Signed-off-by: Ken <131881470+Keniis0712@users.noreply.github.com>
* Update mod.rs
Signed-off-by: Ken <131881470+Keniis0712@users.noreply.github.com>
---------
Signed-off-by: Ken <131881470+Keniis0712@users.noreply.github.com>
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Co-authored-by: Emma Alexia <emma@modrinth.com>
* 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>
* Add blog post: Pride Month 2025 campaign
* fix lint maybe
* Revert changes to other stuff
* run fix
* use local links
* re-run fix
---------
Co-authored-by: Prospector <prospectordev@gmail.com>
* tweak(pages/plus): update lack of ads perk desc to match latest changes
* tweak(pages/plus): more perks coming soon -> soon™
At this point it feels a bit fake for reasonable definitions of "soon"
to keep stating that more perks are coming "soon", even though it's not
something that has not been discarded altogether.
However, I think everyone can agree on a more playful and realistic
"soon™" deadline, because everyone likes memes and can relate to things
taking longer to come to fruition than planned :)
Some users elect to try to perform their upgrade immediately before their subscription renews. However, we throw an error whenever the proration charge is under 30 cents because we lose more money on fees than we gain by charging the customer. This PR changes charges so that the user's server will simply be provided a free upgrade instead of requiring them to wait until after their next renewal.
An unforeseen consequence of PR #3833 landing was that `tauri dev`
stopped working reliably, getting softlocked when the `app-lib` crate
build script actually needed to build Java scripts: Gradle always
modifies a few files under the `.gradle` directory when run, which get
picked up by Tauri as source code changes that should trigger a rebuild,
but such rebuild triggers Gradle to run and modify those files again ad
infinitum.
This change fixes that by adding such a directory to a documented Tauri
exclusion file, restoring such functionality back.
* Clear owner's project cache after deleting organization
Fixes an issue where people would think their projects were deleted along with their organization, when this isn't actually the case.
* address PR review
* Update apps/labrinth/src/routes/v3/organizations.rs
Signed-off-by: Emma Alexia <wafflecoffee7@gmail.com>
* Fix lint
* actually fix lint
---------
Signed-off-by: Emma Alexia <wafflecoffee7@gmail.com>
* Remove new-projects channel emojis
With new loaders, this functionality has become unwieldy. We don't have enough emoji slots in the server for the number of emojis we'd need for the loaders. It is easiest to simply format them in the same way knossos does.
Note: I forgor how the borrow checker works, this compiles but I'm sure it's gore to anyone who actually knows the difference between a string slice and a String, I come from Javaland though so pls forgive
* Rename func accordingly
* feat(ci): sign Windows Theseus bins with DigiCert KeyLocker cloud HSM
* perf(ci): speed up Jsign installation
* fix(ci): use absolute path to DigiCert client certificate
This should avoid errors related to Jsign not being able to find it
we've seen on CI.
* fix(ci): trim strange characters out from DigiCert credentials
* ci: another attempt at fixing Jsign errors
* chore: add comment mentioning why `jsign` choco deps are ignored
* tweak: move KeyLocker signing config to CI release Tauri config file
This prevents casual local builds from attempting to use a signing
command they really can't use, improving developer experience.
* tweak(ci/windows): do not waste time and signatures with MSIs
We aren't distributing these anyway. This should reduce the signing
operations required for building the app from 5 (one for the binary,
another for the MSI installer, two for WiX extension DLLs and one for
the NSIS installer) to 2.
* feat(ci): make Windows code signing toggleable, do not sign non-final builds
* chore(ci): tweak `sign-windows-binaries` input wording
* fix(ci): deal with usual Powershell syntax shenanigans
* fix(ci): work around more Powershell syntax shenanigans
Who thought it'd be a good idea to make a comma a synonymous of a space
for separating command line arguments? Why have to characters for the
same thing?
* perf(ci): do not run app build workflow on Labrinth changes
Labrinth is not related to the app at all, so this is just a waste of CI
minutes.
* ci(theseus): enable Windows code signing by default for manual triggers
These are expected to be not that common, so defaulting to what causes
the least human errors when it comes to publishing a release makes most
sense.
* Add quick server creation button, and dynamic pricing to custom server selection
* Remove test in compatibility card
* Lint + remove duplicate file
* Adjust z-index of popup
* $6 -> $5
* Dismiss prompt if the button is clicked
* Make "Create a server" disabled for now
* Use existing loaders type
* 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