* Change "Billing" link on dashboard for admins
Requires an archon change before merging
* change order
* steal changes from prospector's old PR
supersedes #3234
Co-authored-by: Prospector <prospectordev@gmail.com>
* lint?
---------
Co-authored-by: Prospector <prospectordev@gmail.com>
* 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
* oop, all commas!
* Only show slug stuff when needed.
* Move status alerts to top of message, getting rid of separators.
* redist libs message altered, and now shows on plugins too
* Update versions.ts
remove unnecessary import
Signed-off-by: coolbot <76798835+coolbot100s@users.noreply.github.com>
* Tweak summary formatting msg
* Update license messages to use flink
* reorder link text to match the settings page
* add Description clarity button
---------
Signed-off-by: coolbot <76798835+coolbot100s@users.noreply.github.com>
* 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
* Typo correction
* show optimization button when present in additional categories
* add more formatted link shortcuts
* Add info text to env info stage
* Only show gallery relevancy button when relevant.
* add unsupported project type message to versions stage
* Fix misuse of slug message.
* Update unsupported_project.md
* lint fix
* Hopefully fix collection visibility once and for all
Follow up to #3408 and #3864
* Use same unlisted approach for collections as is used for projects
* Allow modification of failed charges on admin billing page
Allows cancelling a failed subscription and forcing another charge attempt
* use addNotification
* 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
Fixes#1485
Also fixes an issue where email_verified was being set to true regardless of whether the oauth provider provides an email (thus indicating that a null email is verified)
Updated functions refreshSearch and clearSearch to reset the currentPage.value to 1
Signed-off-by: Gwenaël DENIEL <monsieur.potatoes93@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* fix text in license and links stages, change a license option to conditional
* remove unused project definition
* Switch markdown to use <br />
---------
Co-authored-by: Prospector <prospectordev@gmail.com>
* starting on new checklist implementation
Change default shouldShow behavior for stages.
add new messages and stages.
Change some existing stage logic.
Add placeholder var for the rules.
Co-Authored-By: @coolbot100s
* misc fixes + corrections
* Add clickable link previews to links stage
* Correct mislabeled title message and add new title messages
* Change message formatting, use rules variable, correct wip desc and title 1.8 messages, add tags buttons
* More applications of rules placeholder
* Add new status alerts stage
* change order of statusAlerts
* Update title related messages, add navigation based vars
* Overhaul Links stage and add new messages.
* Set message weights, add some disables
* message.mds now obey lint >:(
* fixed links text message formatting and changed an icon
* Combine title and slug stages
* Add more info to some stages and properly case stage ids
* tweak summary text formatting
* Improved tags stage info and more navigation placeholders
* redo reupload stage, more navigation placeholders, licensing stage improvements, versions stage improvements, status alerts stage improvements
* Allow modpack permissions stage to appear again by adding a dummy button.
* Update modpack permissions guidance
* fix: blog path issues
* fix: lint issues
* fix license stage text formatting
* Improve license stage
* feat: move links into one md file to be cleaner
* Update packages/moderation/data/stages/links.ts
Signed-off-by: IMB11 <hendersoncal117@gmail.com>
---------
Signed-off-by: IMB11 <hendersoncal117@gmail.com>
Co-authored-by: IMB11 <hendersoncal117@gmail.com>
Co-authored-by: IMB11 <calum@modrinth.com>
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).
* feat: add security.txt
Security.txt is a well-known (pun intended) file among security researchers, so they don't have to go scavenging for your security information. More information is available on [securitytxt.org](https://securitytxt.org/).
I've set the following values:
- The email to contact with issues, `jai@modrinth.com`. This is the email stated in the security policy. If you wish to not include it here due to spam, you should also not have it as a `mailto` link in the security policy.
- Expiry is set to 2030. By this time Modrinth has become the biggest Minecraft mod distributor, and having expanded into other games. By this time they should also have updated this file.
- English is the preferred language
- The file is located at modrinth.com/.well-known/security.txt
- The security policy is at https://modrinth.com/legal/security
The following values have been left unset:
- PGP key, not sure where this would be located, if there is one
- Acknowledgments. Modrinth does currently not have a site for thanks
- Hiring, as it wants security-related positions
- CSAF, a Common Security Advisory Framework ?
* fix(docs): reduce security.txt expiry
This addresses a concern where the security.txt has a long expiration date. Someone could treat this as "use this until then", which we don't want since it's a long time. The specification recommends no longer than one year, as it is to mark as stale.
From the RFC:
> The "Expires" field indicates the date and time after which the data contained in the "security.txt" file is considered stale and should not be used (as per Section 5.3). The value of this field is formatted according to the Internet profiles of [ISO.8601-1] and [ISO.8601-2] as defined in [RFC3339]. It is RECOMMENDED that the value of this field be less than a year into the future to avoid staleness.
Signed-off-by: Erb3 <49862976+Erb3@users.noreply.github.com>
* fix(frontend): extend security.txt expiry
It takes so long to merge the PR :(
Signed-off-by: Erb3 <49862976+Erb3@users.noreply.github.com>
* docs(frontend) careers link in security.txt
Signed-off-by: Erb3 <49862976+Erb3@users.noreply.github.com>
---------
Signed-off-by: Erb3 <49862976+Erb3@users.noreply.github.com>
Co-authored-by: Erb3 <49862976+Erb3@users.noreply.github.com>
* fix(theseus-gui): fix sort/group by game version
In the Library, game version 1.8.9 is sorted/grouped after 1.20 because
the default sorting sorts 2 < 8
therefore localeCompare(with numeric=true) is needed, it detects 8 < 20
and puts the versions in the correct order.
* lint
---------
Co-authored-by: Prospector <prospectordev@gmail.com>
* feat: only initialize batch renderer if needed & head storage
* feat: support webp storage of skin renders if supported (falls back to png if not)
* fix: performance improvements with cache loading+saving
* fix: mirrored skins + remove cape model for embedded cape
* feat: antialiasing
* fix: leg jumping & store fbx's for reference
* fix: lint issues
* fix: lint issues
* feat: tweaks to radial spotlight
* fix: app nav btn colors
* ci(theseus-build): ensure only relevant bundle artifacts are uploaded
Tauri leaves behind quite a bit of intermediate garbage in these target
folders, even when building with no build cache.
* ci(theseus-release): fix typo in RPM package URL generation
* ci(theseus-build): generate shorter and more user-friendly commit build versions
* dist(docker): add `.dockerignore` as symlink to `.gitignore`
This ensures that no files outside of version control are transferred to
the Docker build context for Labrinth and Daedalus images, which
significantly improves build speed (if a `target` directory is already
present) and build reproducibility.
* chore(dist/docker): simplify out unneeeded statements, move `SQLX_OFFLINE` env var setting to build command itself
The latter approach ensures that developers building the image locally
don't forget to set `SQLX_OFFLINE`, too.
* dist(docker): add `curl` package to Labrinth image
* feat(ci): clean up app release build workflow, set app versions to match tag's
* feat(ci): rename Theseus build workflow, add new release workflow
* chore(ci): minor tweaks to `theseus-build` workflow
* chore: update workflow reference in comments
* 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>
* Fix old Minecraft versions not having playtime resolved for servers
* Revert and clean up get_server_worlds_in_profile a bit
* Add a semaphore to resolve_server_address in general to apply to all DNS queries
* Remove unused tokio-stream dependency from theseus
* 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
* Use Gradle to build Java code
* Make Gradle build reproducible
* Fix constant rebuilds
* Get rid of unnecessary rebuilds
* Fix modrinth.profile.modified being the same as modrinth.profile.created
* Make javac use all lints and treat them as errors
* Force Gradle color output
* Add Java formatting config
* Make gradlew executable
* Revert to manually extracting class files
* Switch to using update resource macro
* fix: make `app-lib` build again
---------
Co-authored-by: Alejandro González <me@alegon.dev>
* 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
* Create base shared instance migration and initial routes
* Fix build
* Add version uploads
* Add permissions field for shared instance users
* Actually use permissions field
* Add "public" flag to shared instances that allow GETing them without authorization
* Add the ability to get and list shared instance versions
* Add the ability to delete shared instance versions
* Fix build after merge
* Secured file hosting (#3784)
* Remove Backblaze-specific file-hosting backend
* Added S3_USES_PATH_STYLE_BUCKETS
* Remove unused file_id parameter from delete_file_version
* Add support for separate public and private buckets in labrinth::file_hosting
* Rename delete_file_version to delete_file
* Add (untested) get_url_for_private_file
* Remove url field from shared instance routes
* Remove url field from shared instance routes
* Use private bucket for shared instance versions
* Make S3 environment variables fully separate between public and private buckets
* Change file host expiry for shared instances to 180 seconds
* Fix lint
* Merge shared instance migrations into a single migration
* Replace shared instance owners with Ghost instead of deleting the instance
* feat(labrinth): rework v3 side types to a single `environment` field
This field is meant to be able to represent the existing v2 side type
information and beyond, in a way that may also be slightly easier to
comprehend.
* chore(labrinth/migrations): use proper val for `HAVING` clause
* feat(labrinth): add `side_types_migration_review_status` field to projects
* fix(labrinth): return version artifact size exceeded error eagerly
Now we don't wait until the result memory buffer has grown to a size
greater than the maximum allowed, and instead we return such an error
before the buffer is grown with the current chunk, which should reduce
memory usage.
* fix(labrinth): proper supported game versions range for datapacks
* feat(labrinth): allow protected resource and data packs to pass validation
* fix(labrinth): ensure versions get removed from search indexes before ending route execution
* chore: run `sqlx prepare`
* chore(labrinth): simplify `remove_documents` a little
* chore: tweak new comment
When a payment for a subscription fails, we continue to try to re-attempt retrieving payment for 30 days.
Sometimes making it fail is an intentional choice on the user's part (e.g. Privacy.com card) or other times the user just doesn't want their subscription anymore after it fails.
This PR allows users with a failed payment to simply cancel instead of waiting for the 30-day timer to set in.
* 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
* perf(ci): use Turbo to schedule both `lint` and `test` tasks at once
* fix(ci): wait until service containers are initialized for tests
This is achieved by adding a health check to the containers, and
instructing the CI workflow to wait until the containers are healthy.
Not doing this wait risks spurious CI failures due to DB migrations
being applied before the DB even starts.
* chore(turbo): use locally installed schema in new Turbo override file
On the latest versions of Turbo, this ensures that the used schema is
always in sync with what's available in the installed Turbo version,
which is something that has already caused confusion to me before.
* feat: Organisations are now sorted alphabetically in dashboard and on user pages
* Use computed ref
---------
Co-authored-by: Prospector <prospectordev@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Fix random_projects route not returning the requested number of projects
* fix(labrinth): further improve random project route SQL query
* chore: fix typo in comment
* tweak(labrinth): more apparent and fast randomness for `random_projects_get`
* tweak(labrinth): even better random projects query
* chore: address formatting review
---------
Co-authored-by: Alejandro González <me@alegon.dev>
* fix(frontend): remove fixed height from ManySelect
Frontend development is not my passion, there might be a better fix.
I've tested my changes in all places that I found using the chganed components (ManySelect, ScrollablePanel):
- Changelog filters
- Version filters
- Download dialog
- Search filters
Fixes#2334
* Revert incorrect merge
* fix merge conflict
When an issue has been already handled by our part, and thus gets
closed, but affects many users and the fix takes a while to be rolled
out, it usually happens that those who notice the matter later on don't
notice previous reports and create duplicate issues.
Let's try to improve a little bit on that by not filtering out closed
issues in the links for checking whether the same issue was already
reported before. This should make it more obvious to users who follow
the link whether an issue for their problem already exists.
* fix(labrinth/billing): add Spain and Singapore to the list of countries for currency inferences
This should fix payments in those countries not going through with their
local currencies for products that do not have USD-only pricing.
* fix(labrinth/billing): tentative fix for subscription periods not updating
* chore(labrinth): fix typos, simplify out `remove_duplicates` func
* fix(labrinth): implement `capitalize_first` so that it can't panic on wide chars
* chore(labrinth): refactor out unneeded clone highlighted by nightly Clippy lints
* chore(labrinth): simplify `capitalize_first` implementation
* fix(labrinth): preserve ordering when deduplicating project field values
This addresses an unintended behavior change on
157647faf2778c74096e624aeef9cdb79539489c.
* fix(labrinth/tests): make `index_swaps` test run successfully
I wonder why we don't run these more often...
* refactor: rename `.env.example` files to `.env.local`, make local envs more consistent between frontend and backend
* chore(labrinth/.env.local): proper email verif. and password reset paths
* Put all ID types in the labrinth::models::ids, and reduce code duplication with them
* Rewrite labrinth::database::models::ids and rename most DB interface ID structs to be prefixed with DB
* Run sqlx prepare
---------
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
* 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>
* Fix `updated` field including deleted versions
Four years ago, I created issue modrinth/labrinth#200. Today, while it adorns a different name (modrinth/code#2766), the issue remains the same. In celebration of Modrinth's oldest bug report, here is a fix.
Instead of having a separate `updated` field, it simply pulls the publish date of the most recent version. This should also allow the `updated` column on the `mods` table to be dropped at a later date, but I would rather get confirmation that it works before we go ahead with that.
Fixes#2766
* Update apps/labrinth/src/database/models/project_item.rs
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Signed-off-by: Emma Alexia <wafflecoffee7@gmail.com>
---------
Signed-off-by: Emma Alexia <wafflecoffee7@gmail.com>
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
* Revert "fix: capitalization of ID org route breaks projects list (#3621)"
This reverts commit e4adbb9469b241c9bdd0e0f1839a023802445e1c.
* Fix organization projects route properly
Reverted #3621 because it caused more bugs to be created, in the form of organizations with capital letters not showing any projects
* Update apps/labrinth/src/routes/v3/organizations.rs
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Signed-off-by: Emma Alexia <wafflecoffee7@gmail.com>
* fix copy-paste error
---------
Signed-off-by: Emma Alexia <wafflecoffee7@gmail.com>
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
* Update some Labrinth dependencies
* Update some Labrinth dependencies
* Update some Labrinth dependencies
* Update zip in Labrinth
* Update itertools in Labrinth
* Update validator in labrinth
* Update thiserror in labrinth
* Update rust_decimal, redis, and deadpool-redis in labrinth
* Update totp-rs and spdx in labrinth
* Update maxminddb and tar in labrinth
* Update sentry and sentry-actix in labrinth
* Update image in labrinth
* Update lettre in labrinth
* Update derive-new and rust_iso3166 in labrinth
* Update async-stripe and json-patch in labrinth
* Update clap and iana-time-zone in labrinth
* Update labrinth to Rust 2024
* Cargo fmt
* Just do a full cargo update
* Update daedelus to Rust 2024
* Update daedelus_client to Rust 2024
* Set the formatting edition to 2024
* Fix formatting
IntelliJ messed up my formatting
* feat(frontend): refactor and modernize welcome page - also fixes navbar issue.
Closes: #1533
* fix(frontend): lint issues & use standard variables instead of the constants from error.vue
* fix(frontend): remove creator count as it's not a count of all users
* fix(frontend): lang reshuffle
* feat: rinthbot
* fix: lint issues
* fix: sizing of bot on mobile & scss cleanup for error.vue
* fix: lint issues
* fix: ui lint
* chore(theseus): significantly cleanup MacOS-specific code
* fix(labrinth): only use jemalloc allocator for Linux targets
The upstream crate asserts that its tests only pass for Linux targets,
and there's little point in supporting other OS for now since practical
Labrinth deployments run under a Linux environment anyway. This change
made it easier for me to cross-compile Labrinth.
* chore(theseus): tweak traffic lights pos according to c39bb78e38
As far as I understand it, that PR introduced the seemingly ad-hoc
additions of 6 and 12 units to the traffic light position calculations,
not directly modifying the `const` values introduced by
d6a72fbfc4.
* fix: re-enable app window shadows on Linux
* chore: log `window.set_shadow` errors
* chore: trigger CI
* 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>
* 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
* Fix too large of bulk requests being made, limit max to 800 #3430
* 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
* More Clippy fixes
* Fix Prettier lints
* Undo `from_string` changes
---------
Co-authored-by: Josiah Glosson <soujournme@gmail.com>
Co-authored-by: Alejandro González <me@alegon.dev>
* Add support for snapshots with Modrinth Servers
* Fix snapshots without dots
* Fix loader version not resetting when no longer valid
* Fix collapsing margins on Report page
* Begin work on worlds backend
* Finish implementing get_profile_worlds and get_server_status (except pinning)
* Create TS types and manually copy unparsed chat components
* Clippy fix
* Update types.d.ts
* Initial worlds UI work
* Fix api::get_profile_worlds to take in a relative path
* sanitize & security update
* Fix sanitizePotentialFileUrl
* Fix sanitizePotentialFileUrl (for real)
* Fix empty motd causing error
* Finally actually fix world icons
* Fix world icon not being visible on non-Windows
* Use the correct generics to take in AppHandle
* Implement start_join_singleplayer_world and start_join_server for modern versions
* Don't error if server has no cached icon
* Migrate to own server pinging
* Ignore missing server hidden field and missing saves dir
* Update world list frontend
* More frontend work
* Server status player sample can be absent
* Fix refresh state
* Add get_profile_protocol_version
* Add protocol_version column to database
* SQL INTEGER is i64 in sqlx
* sqlx prepare
* Cache protocol version in database
* Continue worlds UI work
* Fix motds being bold
* Remove legacy pinging and add a 30-second timeout
* Remove pinned for now and match world (and server) parsing closer to spec
* Move type ServerStatus to worlds.ts
* Implement add_server_to_profile
* Fix pack_status being ignored when joining from launcher
* Make World path field be relative
* Implement rename_world and reset_world_icon
* Clippy fix
* Fix rename_world
* UI enhancements
* Implement backup_world, which returns the backup size in bytes
* Clippy fix
* Return index when adding servers to profile
* Fix backup
* Implement delete_world
* Implement edit_server_in_profile and remove_server_from_profile
* Clippy fix
* Log server joins
* Add edit and delete support
* Fix ts errors
* Fix minecraft font
* Switch font out for non-monospaced.
* Fix font proper
* Some more world cleanup, handle play state, check quickplay compatibility
* Clear the cached protocol version when a profile's game version is changed
* Fix tint colors in navbar
* Fix server protocol version pinging
* UI fixes
* Fix protocol version handler
* Fix MOTD parsing
* Add worlds_updated profile event
* fix pkg
* Functional home screen with worlds
* lint
* Fix incorrect folder creation
* Make items clickable
* Add locked field to SingleplayerWorld indicating whether the world is locked by the game
* Implement locking frontend
* Fix locking condition
* Split worlds_updated profile event into servers_updated and world_updated
* Fix compile error
* Use port from resolve SRV record
* Fix serialization of ProfilePayload and ProfilePayloadType
* Individual singleplayer world refreshing
* Log when worlds are perceived to be updated
* Push logging + total refresh lock
* Unlisten fixes
* Highlight current world when clicked
* Launcher logs refactor (#3444)
* Switch live log to use STDOUT
* fix clippy, legacy logs support
* Fix lint
* Handle non-XML log messages in XML logging, and don't escape log messages into XML
---------
Co-authored-by: Josiah Glosson <soujournme@gmail.com>
* Update incompatibility text
* Home page fixes, and unlock after close
* Remove logging
* Add join log database migration
* Switch server join timing to being in the database instead of in a separate log file
* Create optimized get_recent_worlds function that takes in a limit
* Update dependencies and fix Cargo.lock
* temp disable overflow menus
* revert home page changes
* Enable overflow menus again
* Remove list
* Revert
* Push dev tools
* Remove default filter
* Disable debug renderer
* Fix random app errors
* Refactor
* Fix missing computed import
* Fix light mode issues
* Fix TS errors
* Lint
* Fix bad link in change modpack version modal
* fix lint
* fix intl
---------
Co-authored-by: Josiah Glosson <soujournme@gmail.com>
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
* refactor: move .env to .env.example
* refactor(labrinth): allow setting SMTP port and TLS
This will help setting up labrinth for local development. You can now use a mock SMTP server such as smtp4dev. The TLS options will stay the same as before if set to `true`, and disabled when `false`.
Depends on #2883
* chore(labrinth): lint
* chore(labrinth): conflicts
* chore(labrinth): conflicts
* fix: use TLS port by default
Co-authored-by: AlexTMjugador<me@alegon.dev>
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Signed-off-by: Erb3 <49862976+Erb3@users.noreply.github.com>
* fix(labrinth): correct deafult SMTP port in .env
* feat(labrinth): expose all SMTP TLS settings
Replaced if/else with a switch statement. The new values for `SMPT_TLS` are `none`, `opportunistic_start_tls`, `requires_start_tls`, `tls`. When none of these values are supplied, it defaults to full TLS (`tls`), and throws a warning.
Resolves PR review
* fix(labrinth): correct SMTP TLS example .env setting
Signed-off-by: Erb3 <49862976+Erb3@users.noreply.github.com>
* fix(labrinth) SMTP tls env var check
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Signed-off-by: Erb3 <49862976+Erb3@users.noreply.github.com>
---------
Signed-off-by: Erb3 <49862976+Erb3@users.noreply.github.com>
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
* Allow servers to be unprovisioned without issuing a refund
for very specific weird circumstances where a server gets stuck/etc; useful for support
* still create a charge
* Fix compile
* wip: backup page fixes and new impls for new apis
* wip: more progress on backup fixes, almost done
* lint
* Backups cleanup
* Don't show create warning if creating
* Fix ongoing state
* Download support
* Support ready
* Disable auto backup button
* Use auth param for download of backups
* Disable install buttons when backup is in progress, add retrying
* Make prepare button have immediate feedback, don't refresh backups in all cases
* Intl:extract & rebase fixes
* Updated changelog and fix lint
---------
Co-authored-by: Prospector <prospectordev@gmail.com>
* Fixes error when an admin tries transferring project ownership
* Fixes error when trying to delete a user when they previously have a transaction
Co-authored-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
* Use the log config from the Vanilla client.json
* Remove debug message
---------
Co-authored-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
Replaced all icon usages of `apps/frontend/src/assets/image/utils` for `@modrinth/assets`.
The only icon which has been changed is the `WorldIcon`, which has been replaced by the `GlobeIcon`.
* Move a lot of scheduled tasks to be runnable from the command-line
* Use pubsub to handle sockets connected to multiple Labrinths
* Clippy fix
* Fix build and merge some stuff
* Fix build fmt
:
---------
Signed-off-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
* Fix moderation-side issues by segmenting requests in review page and handling missing users in report page
* increase to 100
* 450 limit
* fine! take 1000!
* 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>
* Improve clarity of ongoing revenue period notice
* get rid of semicolon
---------
Co-authored-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
* Move Minecraft brand disclaimer to bottom of footer
* Add careers link back to footer
* Intl extract
---------
Co-authored-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
Also add io::is_same_disk and io::create_dir
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
* refactor(frontend): move Toggle component to Composition API + TS
**Toggle.vue**:
- Enable composition API and TS
- Added `disabled` to props
- Remove redundant `checked`
- Replace `modelValue` and `emits` with `defineModel` compiler macro
**Others**:
- Replace emit handling and `model-value` with `v-model` where simple logic was used
- Not `FeatureFlagSettings.vue` (contained custom code on receiving emit)
- Not `Mods.vue` (contained custom code on receiving emit)
- Remove redundant `checked` attribute
* fix(app): toggles not updating value
* Improve revenue information
* Improve NET 60 period info + show next period if current period is over.
* invert period check
* %
* Finalize changes
* Cleanup
* Remove .idea
* Discard changes to .idea/discord.xml
* Discard changes to .idea/code.iml
* Discard changes to .idea/.gitignore
* Discard changes to .idea/libraries/KotlinJavaRuntime.xml
* Discard changes to .idea/vcs.xml
* Discard changes to .idea/modules.xml
* Discard changes to .idea/.gitignore
* fix lint issues
* table fix, lint fix and media sizing fix
* fix responsiveness
* Remove comment
* utc comment
* fix lint
* Update footer to new design
* Update footer with changelog and security notice
* Move mastodon icon
* Make full-width instead of card
* Intl extract, lint
* refactor(frontend): move project description to composition API + TS
* refactor(frontend): rename to `patchRequestPayload` for consistency
* chore: lint
The MessageBanner padding that appears when a project is archived only has padding on the bottom and not the top. This means that there is no visual gap and it does follow the visual style of the rest of the website. I have fixed it.
* chore(pyroservers): attempt better error propogation
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(pyroservers): introduce deferred modules
* fix(pyroservers): synchronize server icon processing
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor: server action buttons
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: bring back skeleton
* fix(startup): populate values on refresh
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: properly refresh network
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: do not open backup settings modal if fetch failed
* fix(platform): only clear selected loader version if selecting a different loader
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: parse links in console log
* fix: attempt to mitigate power button state flash
Signed-off-by: Evan Song <theevansong@gmail.com>
* Revert "fix: attempt to mitigate power button state flash"
This reverts commit 3ba5c0b4f7f5bacf1576aba5efe42785696a5aed.
* refactor: error accumulation builder in PyroServersFetch
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: sentence case
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(files): await deferred fs
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: startup border
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: prevent suspended server errors from being overwritten
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: add server id copy button to suspended server listing
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: refresh behavior
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: behavior of server icon in options
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: prevent error inspector failures from destroying the page
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: remove nexttick wrapper
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: ensure file edit gets initted due to deferred module
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor: prevent module errors from breaking the layout
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: locations page + stock callouts
* feat: misalligned but spirits there!!
* fix readability on colors on globe
* Enhancements to globe
* Fix out of stock indicator styling
* Start globe near US and slow speed
* Remove debug statement
* Switch from capacity to stock API
* Make custom use its own stock checker
* Fix lint, add changelog entries
---------
Co-authored-by: Elizabeth <checksum@pyro.host>
Co-authored-by: Lio <git@lio.cat>
* Add changelog page to website
* Add pages for individual changelog entries that can be linked to
* Handle first case for individual page
* Add some more changelog entries, improve some spacing
* refactor(frontend): revamp license page
- Add more understandable UI
- Field titles
- Field description
- Use more semantically correct elements
- Make paragraph not a label
- Rephrase some parts
- Fields no longer jump around
- Split SPDX-identifier and license name into two seperate fields, for readability
- Sort imports
- fmt
* feat(frontend): encourage license URL on custom license
* refactor(frontend): license page to composition + ts
- Move to Vue composition API
- Move to TypeScript
- Move away from vue-multiselect to the dropdown component
- Use `formatProjectType` function for typesafety
- Remove unused form error highlighting code
- Creating typings for built-in licenses
- Move standard licenses to licenses.ts util
- There are other license-related utils I want to move there eventually
- Fix typo in Project license type definition
* chore(frontend): fmt
* chore(frontend): fmt
* feat(frontend): require URL and name for custom license
* refactor(frontend): give license or-later checkbox own row
* chore(frontend): fmt
* fix(content): changing mod versions works again
* chore(assets): update pyro logo
* fix(properties): deprecate fetchconfigfile
* Revert "fix(content): changing mod versions works again"
This reverts commit d7c0d1196f8c1850fd7ccbc1644941c6db4dc306.
* feat(files): ability to sort via column click
* chore(startup): update clunky wording
* feat(serverListing): server icons SSR friendly
* fix(servers): if archon fails, display err in listing
* chore(serverlisting): use pyroserver hook to init icon
* chore(servers): much more graceful reinstall
* fix(servers): tw warn
* fix(platform): correctly react when pack reinstalled
* fix(serversroot): explicitly import navigateTo
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(serverlabels): show skeleton instead of hiding
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(platform): install-aware controls
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor!(platform): rewrite platform page
* fix(platform): regression in autoselecting loader
* chore(platform): prefer version over project modification date
* fix(platform): permanent hang after initial mount
* chore(platform): do not silently fail and hang if modpack fails loading
* oops: remove hardcoded error causer
* fix(platform): switch modpack btn while installing doesnt need class
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(platform): adjust styling in version modal
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(platform): prevent changing project card style
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor(pyrodropdown): rewrite
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(pyrodropdown): do nopt use deprecated substr
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(network): sentence case
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor(terminal): initial batch
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): fulllog over fullscreen
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): fullscreen conflict with body scroll
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(terminal): init drag select
* feat(terminal): shift click support
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(terminal): double lines limit
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(terminal): copy button
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(terminal): protip style
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(terminal): improve styles
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(terminal): regex search
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(terminal): move icons to icons dir
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(terminal): improve drag select autoscroll inertia
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): cancel selection on right click
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): progblur and stb btn disappearing
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor(serverstats): power efficiency
* fix(subdomainlabel): correct tooltip terminology
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(preferences): users hide subdomain label
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(servers): clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(terminal): deselect lines on escape
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(serversidebar): type err
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(fileitem): vue server render type
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): disable pointer events on lines if scrolling
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): search result counts style
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): plural
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(terminal): clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(terminal): view selection
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(terminal): show actively selected lines in scrollbar
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminallog): btn color
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(gamelabel): align to text
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(gamelabel): align to text
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(listing): remove deadcode
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(serverlisting): deprecated process.server
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(platform): correctly disable button
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(backups): do not allow backup creation during server installation
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(platform): flush stale currentversion data on successful install
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(gamelabel): fix gap
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(network): vaporize uppercase
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(info): vaporize uppercase
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(backups): style unification
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(backups): finalize style change
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(servers): catch pyro servers fetch errors during ssr
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(serverstats): ram as bytes graph now works
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(platform): unify attempts and refresh interval
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): input
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(servers): installing ticket + update available notice back in platform
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(terminal): dont add bg to scroll track
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): preserve whitespace
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(serversroot): unnest blurred icon query
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(serverstats): clamp memory usage to 100% no matter what
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(terminal): allow copy of single lines, show btn
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(terminal): animate copy>view transition
Signed-off-by: Evan Song <theevansong@gmail.com>
* init: search improvements
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: lint
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: change log modal title
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: hide fullscreen when selecting and cancel selection on clickout
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor(terminal): more reliable jumpToLine
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: search results separator
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: remove buggy isScrollable check
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: style
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor: correctly store pos to make jump reliable
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: disparity between search/log dragselect
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: prevent propagation of click events when clicking on jump btn
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: switch selection strategies depending on terminal mode
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: smarter esc handling
Signed-off-by: Evan Song <theevansong@gmail.com>
* finalize
Signed-off-by: Evan Song <theevansong@gmail.com>
* run fix
* fix: ensure lines between cannot be selected
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: increase initial log batch to 256
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): click on scroll track should take user to new scroll position
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): update aria label for view selected logs btn
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix cancel button on edit modal
* make hardcoded mod text dynamic for plugins
* fix files path when clicking an external plugin
* fix plugins path for file uploads
* improve friendly mod name logic
* fix toggling plugins
* update pyroServers content definitions
* install then remove for changing version
Reinstall isn't currently implemented properly
* make the edit dialog pretty
* make new admonition component
* fix warning admonition colour
* new edit version modal
* cleanup
* make latest version default
* final touches
* lint
I noticed that the `.vscode` folder says LF endings should be used. However, I still regularily see CRLF. To fix this I've added a `.gitattributes` file which makes git convert endings to LF.
Fixes#3176
**Changes**:
- Sets the pagination to page one if the search is updated. This is the norm on most websites, and how users expect it to work.
- Join `setPage` into `updateSearchResults`
- Take a page number in `updateSearchResults`
- Remove unused param to `updateSearchResults`
- Update `watch` to not double requests
- use `scrollToTop` utility function
* Start work on refactoring date range system.
* Use timeResolution terminology.
* "Last month" initial default.
* Migrate fully to dayjs - ease of use.
* Discard changes to pnpm-lock.yaml
* utilize getter
* Fix date label in ChartDisplay.vue
* Finish cleanup
* Update STAGING_API_URL in nuxt.config.ts
* Lint fixes
* Refactor ChartDisplay.vue to handle loading state in selectedRange and formattedCategorySubtitle
* Remove modal impl
---------
Signed-off-by: Calum H. <contact@mineblock11.dev>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Fix importing newer Prism instances and clean up import code a bit
* cargo fmt
---------
Co-authored-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
* chore: show resubscribe on `failed` status
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: hide cancel on failed
Signed-off-by: Evan Song <theevansong@gmail.com>
* update copy
Signed-off-by: Evan Song <theevansong@gmail.com>
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
* Rough draft for fix for Mojang servers being down causing infinite installation
* Add "pack installed" install step
* Allow repairing an instance from Library to recover pack contents
* Allow repair from instance page
* Deduplicate repair code
* Fix lint
* Fix lint (for real this time)
---------
Co-authored-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
* feat(frontend): tags link to a search
* fix category type
* process feedback
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* feat: Automatically open download modal when filter queries are present
* chore: Use a hash to open the modal, and make the filter queries independent of the modal
* chore: Correct to use emit for taking functions
* chore: Add filter query and download hash to the url during modal use, and fix linting issues
* chore(frontend): Undo changes to NewModal
My computer does not like running the app, making testing a lot harder, so I'll undo this change, at least for now
* Remove extra line
---------
Signed-off-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* feat: Automatically open download modal when filter queries are present
* chore: Use a hash to open the modal, and make the filter queries independent of the modal
* chore: correctly type suspension reason
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: faulty suspension condition allowing for fallthrough
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: here as well
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: add support suspension reason
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: handle support suspensions
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: patch pyroservers to handle 503
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: handle 503 in server root
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: dont make pyroservers errors scream at me anymore
Signed-off-by: Evan Song <theevansong@gmail.com>
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
* Fix https://github.com/modrinth/code/issues/1057
* Make sure mods use the installed loader
* Switch &PathBuf to &Path
* Clippy fix
* Deduplicate some code
---------
Co-authored-by: Jai Agrawal <18202329+Geometrically@users.noreply.github.com>
* feat: only scroll up if scrolled down
* feat: no query results message
* feat: content files support, mobile fixes
* fix(drag & drop): type of file prop
* chore: show number of mods in searchbar
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust btn styles
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: prepare for mod author in backend response
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: external mods & mobile
* chore: adjust edit mod version modal copy
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: add tooltips for version/filename
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: swap delete/change version btn
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: dont allow mod link to be dragged
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: oops
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: remove author field
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: drill down tooltip
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: fighting types
Signed-off-by: Evan Song <theevansong@gmail.com>
* prepare for owner field
Signed-off-by: Evan Song <theevansong@gmail.com>
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
Co-authored-by: Evan Song <theevansong@gmail.com>
Co-authored-by: Evan Song <52982404+ferothefox@users.noreply.github.com>
* chore: make serverlisting handle upgrading server state
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: more prominent suspension status bar in server listing
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: handle upgrading in root server page
Signed-off-by: Evan Song <theevansong@gmail.com>
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: dedupe lockfile
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: incorrect spacing between editing and browsing state
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: improve files image viewer toolbar
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: image viewer cursor affordance
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean imports
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: add tooltips
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: use black background
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: show scale factor, handle large images, consolidate state
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: add types to fs operations
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: add date create sorting option
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: match name of folder creation modal
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: add it here too
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: add creation date to file item, file manager header
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: a11y
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: ensure move item modal always has leading slash
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: correct move input placeholder
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: correct design disparity
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: add better affordance on active file item state
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: correct instances where we dont sentence case
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: notify that server restarted on saveandrestart
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: consolidate error state in file manager
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust sizing
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: drag and drop file items to move them
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: enable ability to drag folders too
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: better file movement toasts
Signed-off-by: Evan Song <theevansong@gmail.com>
* just say u hate me
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: uploading indicator for file uploads
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: cleaner file item ghost when dragging
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: enforce max length and truncate on ghost
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: improve item rename toast
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: improve item create toast
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: undo and redo stack
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: confusing behavior where folders were not sorted alphabetically
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: find and replace in file editor
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: correctly set language mode of file editor
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: slop
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: actually handle case with multiple dots in file name before setting language
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: match move icons in file context/threedot
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: upload indicator
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: dedupe lockfile again
Signed-off-by: Evan Song <theevansong@gmail.com>
* lockfile
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: file undefinedness
Signed-off-by: Evan Song <theevansong@gmail.com>
* checkpoint
Signed-off-by: Evan Song <theevansong@gmail.com>
* checkpoint
Signed-off-by: Evan Song <theevansong@gmail.com>
* checkpoint
Signed-off-by: Evan Song <theevansong@gmail.com>
* remove shitty animation logic
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: file upload queuer
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: only allow editable files to have active affordance
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: properly throw pyrofetcherror when rename fails
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: cancel file uploads
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(frontend): ignore case in collection search for followed
When searching for collections, the casing will normally be ignored. The item for "Followed Projects" will be removed if using capitalized characters though. This is especially confusing since it's titled with partially capital letters.
Resolvesmodrinth/code#1370
* chore: revert import sort
* Attempt at fixing popouts? no idea if will work
* Try with no theme?
* Revert "Try with no theme?"
This reverts commit 7fb3a6c6a6233d091d235364d072ffbbc7b7250a.
* Try to remove triggers from theme
* Remove duplicate plugin
* Fix version issue
* Try to remove theme and use default theme
* Add back theme for later fixing
* Lint
---------
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* 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
* chore: initial fixes from app redesign merge
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: ccpa hydration error
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: migrate tailwind to esm
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: default platform selection to current mc version
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: navigating and installing content
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: respect sentence case
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: match new page padding
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: allow user to erase all data when installing from modpack
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: hide hide installed content check if modpack search
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: wording
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: make erase data toggle more prominent
Signed-off-by: Evan Song <theevansong@gmail.com>
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: init selecting paper+purpur on purchase flow
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: properly implement Paper/Purpur in Platform
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: correct wording
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: redo platform modal
Signed-off-by: Evan Song <theevansong@gmail.com>
* Switch to HCaptcha for Auth-related captchas (#2945)
* Switch to HCaptcha for Auth-related captchas
* run fmt
* fix hcaptcha not loading
* fix: more robust loader dropdown logic
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: handle "not yet supported" install err
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: fix icon kerfuffles
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: improve vanilla install modal title
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: spacing
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: usePyroConsole store instead of passing a prop to prevent bulk panel refreshing
* chore: improve no loader state
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: type error
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust mod version modal title
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust modpack warning copy
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: vanilla empty state in content page
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust copy
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: update icon
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: loader type
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: loader type
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: always show dropdown if possible
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: improve spacing
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: appear disabled
Signed-off-by: Evan Song <theevansong@gmail.com>
* h
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: if reinstalling, show it on the modal title
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: put it in the dropdown, they said
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust style
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: sort paper-purpur versions desc
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: do not consider backup limit in reinstall prompt
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: backup locking, plugin support
* fix: content type error
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: casing
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: plugins pt 2
* feat: backups, mrpack
* fix: type errors come on
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: spacing
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: type maxing
* chore: show copy button on allocation rows
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: suspend improvement
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: TheWander02 <48934424+thewander02@users.noreply.github.com>
* feat: init selecting paper+purpur on purchase flow
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: properly implement Paper/Purpur in Platform
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: correct wording
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: redo platform modal
Signed-off-by: Evan Song <theevansong@gmail.com>
* Switch to HCaptcha for Auth-related captchas (#2945)
* Switch to HCaptcha for Auth-related captchas
* run fmt
* fix hcaptcha not loading
* fix: more robust loader dropdown logic
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: handle "not yet supported" install err
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: fix icon kerfuffles
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: improve vanilla install modal title
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: spacing
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: improve no loader state
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: type error
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust mod version modal title
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust modpack warning copy
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: vanilla empty state in content page
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust copy
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: update icon
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: loader type
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: loader type
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: always show dropdown if possible
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: improve spacing
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: appear disabled
Signed-off-by: Evan Song <theevansong@gmail.com>
* h
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: if reinstalling, show it on the modal title
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: put it in the dropdown, they said
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust style
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: sort paper-purpur versions desc
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: do not consider backup limit in reinstall prompt
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: backup locking, plugin support
* fix: content type error
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: casing
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: plugins pt 2
* feat: backups, mrpack
* fix: type errors come on
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: spacing
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: type maxing
* chore: show copy button on allocation rows
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: suspend improvement
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
Co-authored-by: Evan Song <theevansong@gmail.com>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: Evan Song <52982404+ferothefox@users.noreply.github.com>
* feat: All good Docs things under the sun (favicon, oauth2, docs meta)
* Remove favicon changes (already fixed in other PR)
Signed-off-by: worldwidepixel <58098422+worldwidepixel@users.noreply.github.com>
---------
Signed-off-by: worldwidepixel <58098422+worldwidepixel@users.noreply.github.com>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
Only one element should have the same id. The id is used to link with the label's `for` attribute. There may be similar issues other places, but this is the one that was brought to my attention.
Resolves#2999
* init: correctly type powerstate in crash state
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: handle oom_killed and exit_code when a server crashes
Signed-off-by: Evan Song <theevansong@gmail.com>
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(frontend): show date of user join
Shows and formats the date when the user joined, on hover. Can add `cursor-help` if wanted.
Resolves#2243
* chore(frontend): lint
* chore: impl in pyroservers
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: disable install btn if loading
Signed-off-by: Evan Song <theevansong@gmail.com>
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(servers): improve plan button logic
* feat(servers): custom plan capacity checks
* feat(servers): custom plan dynamic ram values
* feat(servers): add custom plan selector back
* fix(servers): final fixes
* feat(servers): allow scrolling faq into view via hashes
* fix(servers): hide webkit details marker for faq
* fix(servers): faqs not opening on nav
---------
Signed-off-by: nullptr <62841684+not-nullptr@users.noreply.github.com>
Resolves an issue where the frontend generated URLs without provider property when there is a frontend redirect uri. Without the provider, labrinth defaults to GitHub.
Fixes#2884
* fix
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor(fileitem): optimize
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore(fileitem): fixed width timestamp
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(fileitem): allow editing json5/jsonc
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: motd pt 1, auto backups scaffolding, editing navbar changes
* feat: fancy sidebar animations
* fix: files
* fix: files pt2
* fix: faulty name validation disallowing spaces in file names
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor: fileitem props
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: upload files not refreshing files list
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(imgviewer): handle invalid/empty images
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: return of the sticky files header
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: prevent servericon from shrinking
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: wtf were we thinking with this anyway
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: further mobile optimization
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: propagate margin
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: truncation fixes
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: track navbar with sentinel
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(files): a11y
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: improve inspector styles
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: console preformance improvements, decrease blur
* feat(mobile): new server header
* fix: linting
* fix: useless z indeces
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust file filter names
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(files): true breadcrumbs
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(marketing): make custom responsive
* fix(marketing): mobile file manager card
* feat: trackable navtabs
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: oh no
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: smartly truncate
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(terminal): z-indexes
* fix: autofocus more inputs
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: color
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust copy
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: backup modal usability improvements
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: padding
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: title
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(content): update banner mobile support
* fix: server listing icons
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: ignore clicks in server listing for labels
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(mobile): backup card
* fix(backups): make plural conditional
* fix: debounce file item selectitem
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: lint
Signed-off-by: Evan Song <theevansong@gmail.com>
* stuff
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: temp sidebar fix until i can be smart
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: explictly set button type in file modals
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: properly sort backups
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: add getautobackup method to pyroservers
Signed-off-by: Evan Song <theevansong@gmail.com>
* choer: update autobackup params
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: update autobackup methods (REALLY GUYS)
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: implement autobackups
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: implement backup-while-running preference
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: make server labels a component
* feat: implement 'All details' modal
* fix(mobile): server manage page
* feat(files): mobile compatible
* fix(info labels): wrap
* chore(inspector): clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(backup settings): swap + and -
* fix(manage): new -> plans instead of modal
* feat: more small mobile fixes
* fix(auto backup modal): manual input validation
* fix(file browse navbar): home margin
* feat(purchase modal): mobile support
* fix(marketing): faded line alignments
* feat: add servers to mobile nav
* feat(network): dns record fixes
* feat: make all settings work on mobile
* fix(loader settings): modpack mobile
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(marketing): add 'Manage your servers' button
* fix(marketing): only check servers if logged in
* fix(network): allocation edit & delete button
* fix(backups): use UiServersTeleportOverflowMenu
* chore: linting
* chore: but here comes the sentence case
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(marketing): make buttons consistent
* lint
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(loader): prevent multiline version names in dropdown
Signed-off-by: Evan Song <theevansong@gmail.com>
* lint
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: copy
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: sentence case
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: linting
* chore: rename dumbass preference key
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor: rewrite power action buttons
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: robust download logic
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(loader mobile): modpack dropdown width
* fix: sentence case
* fix(save & 'working on it'): look good on mobile
* fix(TeleportDropdown): width
* fix(inspecting error): mobile
* fix: show action button dropdown when installing
* fix(navtabs): temp fix for mobile scrolling issue
* fix(install error): mobile compatible
* chore: just remove tracking
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: cleanup
* fix: broken svg clr in checkbox when using experimental styles
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust vanilla icon
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust loader props
Signed-off-by: Evan Song <theevansong@gmail.com>
* revert changes to serversidebar
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: server properties flicker
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(backups): plural
* fix: cases where the telepoverflow would clash with viewport edge
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(backups): auto-backups label
* fix(network): titlecase
* feat(fileitem): new rename icon
* fix(properties): wiki proper noun
* fix: disable motd for the time being
* chore: adjust wording for power conifmration
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: "external" to billing
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: icon
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: add EULA checkbox
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* me and bro deciding which case rules to enforce
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(sftp): copy address & username, launch tooltip
* feat(files): better move
* chore: attempt to mitigate excessive stack depth type
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(loader): prevent versions 1.2.4 and below
* feat(dns table): placeholder improvements
* feat(pyroServer): error handling
* fix: intrinsic size on loader icon
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust wording
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: sentence case
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust wording
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: types
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: "implemented" key in preference
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat(connection lost): redesign
* feat(connection error): make icon orange
* fix: cleanup
* chore(connection lost): redesign pt 2
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: OOOOHHH MY GOD
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: implement capacity api on marketing
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: update createdat backup type
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor: all of backups
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: update backup types
Signed-off-by: Evan Song <theevansong@gmail.com>
* refactor: backups pt 2
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: comically small icons
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: align designs
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: hide ram graph if ram as bytes enabled
Signed-off-by: Evan Song <theevansong@gmail.com>
* base add content page
* Fix conflict
* feat(content): mobile-compatible header, sticky
* fix(marketing): md instead of sm for custom
* fix: compiler macro warning
Signed-off-by: Evan Song <theevansong@gmail.com>
* again
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: loader type error
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: default uptime seconds prop
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: hydration errors on server listing
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: move custom URL to general
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: indiviudally checkj capacities
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: falsey
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: missing prop
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: Derive On That Thang
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: adjust gap
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: add default name for backups
* fix: the backup number should PROBABLY be computed lol
* fix(backups): truncate text, mobile fixes
* fix(loader): modpack mobile fix
* feat(plans): add vcpus
* fix(backup modal): blank by default, maxlength
* fix(subdomain): separate length & valid chars
* feat: mrpack installs functionality (untested), forbidden handling, backups grammar
* feat(content): make responsive on mobile
* fix: disable plan buttons separately
* fix(backup modal): update name max length
* fix(purchase): wrapping on eula, eula link
* fix: move skeleton
* fix(server mobile header): truncation
* fix(server header): proper alignment
* Finish content page fixes
* fix: who up rinthing
Signed-off-by: Evan Song <theevansong@gmail.com>
* wip
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(staging & email banner): z-index
* feat: make eula tickbox more visible
* fix: move "powered by pyro" below buttons on hero
* fix: oops sorry ellie, also updated the main screenshot
* feat: update content screenshot
* fix: content page card should hide image on lg
* feat: hide total storage for now
* fix: terminal card now uses terminal icon
* fix(marketing): make medium plan card border solid
* feat: modloader card, move pyro BACK below buttons, beta release pill
* fix: spinning logo should be behind hero
* feat: surgically remove the hero's massive forehead
* feat(marketing): mobile UI screenshot
* fix(hero): z-index goes over mobile nav
* fix: consistent borders, files breakpoints
* chore: update turbo
* chore: adjust hero sizing
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: mention region restrictions
* chore: double check if we are at capcity
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: measure twice cut once
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: bro cut twice and measured once 💀
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(marketing): login first
* fix: out of capacity text when logged out
* fix(slider): reset some values for frontend
* feat: wip hero section
Signed-off-by: Evan Song <theevansong@gmail.com>
* New navigation to support the new products (#2879)
* Nav
* oops extra file
* feat: mrpack uploading with existing modpack, fix: choose modpack duplicate
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: update features section
Signed-off-by: Evan Song <theevansong@gmail.com>
* Nav adjustments
* fix: server manager empty state clashing with loading state
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: query param hard
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: do not count uptime if crashed
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: grammar
Signed-off-by: Evan Song <theevansong@gmail.com>
* hide hero img on lg breakpoints
* Make plugins a plug
* chore: prep for buffered text selection terminal
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix: marketing responsive stuff, n fixes
* fix hoverable prop
* fix: edit mod spacing
* fix: type error for display name in dropdown
Signed-off-by: Evan Song <theevansong@gmail.com>
* feat: custom plans
* fix: no more console.log
* fix: properly linked prop label
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix(install hero mobile): padding
* fix: prevent x overflow on servers page
Signed-off-by: Evan Song <theevansong@gmail.com>
* fix lint oh ym fucking god yal
Signed-off-by: Evan Song <theevansong@gmail.com>
* Migrate modpack install to search
* fix(custom plan): warning icon variable
* fix: loading probally and modal loader things
* fix(marketing): login icon colours
* fix(marketing): responsiveness
* fix(marketing): responsiveness v2
* fix: sync button for icon tm
* fix(marketing): responsiveness v3
* fix: hero image
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: clean
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: switch to cdn links
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: switch to cdn links
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: switch to cdn links
Signed-off-by: Evan Song <theevansong@gmail.com>
* chore: switch to cdn links
Signed-off-by: Evan Song <theevansong@gmail.com>
* Remove prod override
---------
Signed-off-by: Evan Song <theevansong@gmail.com>
Co-authored-by: Evan Song <theevansong@gmail.com>
Co-authored-by: TheWander02 <48934424+thewander02@users.noreply.github.com>
Co-authored-by: he3als <65787561+he3als@users.noreply.github.com>
Co-authored-by: Evan Song <52982404+ferothefox@users.noreply.github.com>
Co-authored-by: Lio <git@lio.cat>
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: not-nullptr <needhelpwithrift@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: Prospector <prospectordev@gmail.com>
Co-authored-by: sticks <tanner@teamhydra.dev>
Starlight defaults to favicon.svg, however a favicon.ico was added to the repo.
Changes:
- Format astro config according to Prettier
- Properly set favicon
- Markdown guide link to support article
- API version deprecated error to new docs
- Modpack permissions error to support article
- Labrinth README links to new docs
- App WebView2 link to support article
* 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
There is a bug in vue-multiselect library where it will default
`custom-label` property to raw properies object. Presumably this is a
bug that appeared because they ported library to Vue 3 and have not
considered that the signature for `default` prop's function has changed.
To work around this, we can provide custom `custom-label` property that
is just a function that returns the input itself. In other places, where
objects are passed, `label` property can be used. In this case the first
suggestion applies. DO NOT USE VUE-MULTISELECT WITOUT `LABEL` OR
`CUSTOM-LABEL` PROPS!
* 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
* feat(theseus): Initial migration to Tauri v2
* feat(theseus): Added a way to zoom / scale UI
* chore(theseus): Started cleaning up some plugins
* fix(theseus): Github Actions
* refactor(theseus): Reduced boilerplate & more work
* feat(theseus): Allow multiple app instances to be open at once (#995)
* fix(theseus): Lint & more
* fix(theseus): App Release github action
* fix(theseus): Open links in browser & macos builds
* fix(theseus): Rebase fixes
* fix(theseus): Updater & app release action
* fix(theseus): Fixed definitions in `build.rs`
* Fix MacOS deep linking, window decorations
* fix(theseus): Closing & maximizing app
* Fix macos build
* add back release conf
* acc fix build
* make updater for release builds only
* focus window on startup
---------
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
The link to the license was outdated and resulted in a broken path. The correct filename is "LICENSE.txt".
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* cycling indices
* removed printlns
* uses swap indices instead
* Bring back deletion
* Fix tests
* Fix version deletion
---------
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
* removes version ordering from v2; simplifies now-unecessary three-level faceting
* resolved some todos
* test for game version updating
* merge fixes; display_categories fix
* Fix melisearch name replacements with operators other than :
* Pass facet by refrence
---------
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* made dummy data more consistent; not an option
* fixed variable dropping issue crashing actix (?)
* removed scopes specific tests, removed schedule tests
* team routes use api
* removed printlns, fmt clippy prepare
* follows
* all v2 routes now either convert or have a comment
* added common structs, clippy
* merge fix
---------
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Fix project visibility in hash routes
* improve
* clippy
* CLIPPYYYYYYYYYYYYYY
* clippy, I hope you know that I hate you
---------
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* coverage initial push
* compiles on PR
* adds db env variable
* fixed env variables being on the wrong action
* added more tests yml code
* refresh
* tried copying over tests.yml
* removed accidental tests
* shotgun attempts
* generated yml
* more tries
* shotgun again
* small mistakes
* repush
* repush
* Adds env variables to tarp
* removes unused actions and tests cfg attribute on main.rs
* only will work on push to master
* changed to 60%
---------
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* search patch for accurate loader/gv filtering
* backup
* basic search test
* finished test
* incomplete commit; backing up
* Working multipat reroute backup
* working rough draft v3
* most tests passing
* works
* search v2 conversion
* added some tags.rs v2 conversions
* Worked through warnings, unwraps, prints
* refactors
* new search test
* version files changes fixes
* redesign to revs
* removed old caches
* removed games
* fmt clippy
* merge conflicts
* fmt, prepare
* moved v2 routes over to v3
* fixes; tests passing
* project type changes
* moved files over
* fmt, clippy, prepare, etc
* loaders to loader_fields, added tests
* fmt, clippy, prepare
* fixed sorting bug
* reversed back- wrong order for consistency
* fmt; clippy; prepare
---------
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
* adjust type and response format
* Replace Found with Ok for handled redirects
* scope parse fix
* change apps query from body to query
* adjust tests for new response type
* remove unused imports
* Clippy fixes
* Version ordering
* cargo sqlx prepare
* Use version ordering for maven
* Use version ordering when sorting versions in Rust (not just SQL)
* Thanks clippy
* WIP end-of-day push
* Authorize endpoint, accept endpoints, DB stuff for oauth clients, their redirects, and client authorizations
* OAuth Client create route
* Get user clients
* Client delete
* Edit oauth client
* Include redirects in edit client route
* Database stuff for tokens
* Reorg oauth stuff out of auth/flows and into its own module
* Impl OAuth get access token endpoint
* Accept oauth access tokens as auth and update through AuthQueue
* User OAuth authorization management routes
* Forgot to actually add the routes lol
* Bit o cleanup
* Happy path test for OAuth and minor fixes for things it found
* Add dummy data oauth client (and detect/handle dummy data version changes)
* More tests
* Another test
* More tests and reject endpoint
* Test oauth client and authorization management routes
* cargo sqlx prepare
* dead code warning
* Auto clippy fixes
* Uri refactoring
* minor name improvement
* Don't compile-time check the test sqlx queries
* Trying to fix db concurrency problem to get tests to pass
* Try fix from test PR
* Fixes for updated sqlx
* Prevent restricted scopes from being requested or issued
* Get OAuth client(s)
* Remove joined oauth client info from authorization returns
* Add default conversion to OAuthError::error so we can use ?
* Rework routes
* Consolidate scopes into SESSION_ACCESS
* Cargo sqlx prepare
* Parse to OAuthClientId automatically through serde and actix
* Cargo clippy
* Remove validation requiring 1 redirect URI on oauth client creation
* Use serde(flatten) on OAuthClientCreationResult
* Add redis caching to getting a user's project ids
* Run `cargo sqlx prepare` to update the sqlx-data.json
* Add redis caching for getting user notifications
* Fix new clippy warnings
* Remove log that shouldn't have been committed
* Batch insert of notifications (untested)
* sqlx prepare...
* Fix merge conflict things and use new redis struct
* Fix bug with calling delete_many without any elements (caught by tests)
* cargo sqlx prepare
* Add tests around cache invalidation (and fix bug they caught!)
* Some test reorg based on code review suggestions
* most of trolley
* Switch to trolley for payments
* run prepare
* fix clippy
* fix more
* Fix most tests + bitflags
* Update src/auth/flows.rs
Co-authored-by: Jackson Kruger <jak.kruger@gmail.com>
* Finish trolley
* run prep for merge
* Update src/queue/payouts.rs
Co-authored-by: Jackson Kruger <jak.kruger@gmail.com>
---------
Co-authored-by: Jackson Kruger <jak.kruger@gmail.com>
* Batch a bunch of inserts, but still more to do
* Insert many for clickhouse (+ tests)
* Batch the remaining ones except those requiring deduplication
* Risky dedups
* Bit o cleanup and formatting
* cargo sqlx prepare
* Add test around batch editing project categories
* Add struct to satisfy clippy
* Fix silly mistake that was caught by the tests!
* Leave room for growth in dummy_data
* Port redis to staging
* redis cache on staging
* add back legacy auth callback
* Begin work on new auth flows
* Finish all auth flows
* Finish base session authentication
* run prep + fix clippy
* make compilation work
* Add notification for project status updates
* aaaaaa
* cargo sqlx prepare
* use friendly name of statuses
* Update src/models/projects.rs
Co-authored-by: triphora <emma@modrinth.com>
* only send notifications to accepted users
* only send notifications for people not on the team
* cargo sqlx prepare
* !=
* fully address pr comments
Co-authored-by: triphora <emma@modrinth.com>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Initial work on new status sys + scheduling releases
* Finish project statuses + begin work on version statuses
* Finish version statuses
* Regenerate prepare
* Run fmt + clippy
* Move to SPDX licenses
Found a way to do this without breaking API compat, so here it is, instead of waiting for v3
Resolves MOD-129
Resolves#396
* License URL updates
* what was I thinking
* Do a thing
* Add open source filter
* Remove dead imports
* Borrow
* Update 20220910132835_spdx-licenses.sql
* Add license text route
* Update migration
* Address comments
Fixes#358
Adding project_id to the facets would allow the inclusion or exclusion of individual projects from search. For example, this would allow people to be able to exclude projects which they've already followed or are not interested in. My personal vision for this is to merge the [followed projects page](https://modrinth.com/settings/follows) into search itself.
* basic list (no grouping yet)
* now groups and checks auth, moved Team::get_many to TeamMember::get_from_team_full_many
* Ran 'cargo sqlx prepare'
* batch TeamMember::get_from_user_id
* Batches before for loop
* Ran 'cargo sqlx prepare'
Co-authored-by: Emma Cypress <emmaffle@modrinth.com>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Add even more validators
I was gonna add shaderpacks too, but those have no standard metadata file at all.
* Make it compile
* Fix logic
* Update validators
* fix mistake
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Add initial support for blocking inappropriate text content
To make something clear, **nothing** is automatically censored or
deleted as a result of this pull request. This pull request is
meant to add two things:
- Regenerate new IDs (project, version, user, etc.) with profanity
- Send reports to the moderators for new inappropriate content
* Make it build
* Fix logic issue
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Don't consider a user's name taken if self
* Fix incorrect types
* try-use more idiomatic Option tech
* true if `None`
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Add Embedded dependency type
I couldn't find any SQL tables or anything for dependency types, so I'm going to assume there aren't any
* Make modpacks use Embedded instead of Required
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Move validators to seperate thread, other fixes
* Update rust version in Dockerfile
* Fix notifs not working
* Fix pack validator not enforcing files
* typos :help_me:
* (part 1/?) massive cleanup to make the code more Rust-ic and cut down heap allocations.
* (part 2/?) massive cleanup to make the code more Rust-ic and cut down heap allocations.
* (part 3/?) cut down some pretty major heap allocations here - more Bytes and BytesMuts, less Vec<u8>s
also I don't really understand why you need to `to_vec` when you don't really use it again afterwards
* (part 4/?) deduplicate error handling in backblaze logic
* (part 5/?) fixes, cleanups, refactors, and reformatting
* (part 6/?) cleanups and refactors
* remove loads of `as_str` in types that already are `Display`
* Revert "remove loads of `as_str` in types that already are `Display`"
This reverts commit 4f974310cfb167ceba03001d81388db4f0fbb509.
* reformat and move routes util to the util module
* use streams
* Run prepare + formatting issues
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
This fixes a long standing issue where people would point to the frontend homepage where it says 'fully documented' then point to the README here and say 'well that's sure hypocritical'
Thus the branch name :tiny_pumpkin:
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* reduced the default, and added environment override.
* Using parse is more stable and doesn't fail CI this time :P
* Added support for monitoring
This support is currently basic, but it can be improved later down the road.
* Forgot scheduler file
* Added health check
* Cargo fix
* Update cargo.lock to avoid action fails.
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Initial work for modpacks and project types
* Code cleanup, fix some issues
* Username route getting, remove pointless tests
* Base validator types + fixes
* Fix strange IML generation
* Multiple hash requests for version files
* Fix docker build (hopefully)
* Legacy routes
* Finish validator architecture
* Update rust version in dockerfile
* Added caching and fixed typo (#203)
* Added caching and fixed typo
* Fixed clippy error
* Removed log for cache
* Add final validators, fix how loaders are handled and add icons to tags
* Fix search module
* Fix parts of legacy API not working
Co-authored-by: Redblueflame <contact@redblueflame.com>
* More mod info
* Downloading mods
* Run prepare
* User editing + icon editing
* Finish
* Some fixes
* Fix clippy errors
* Fix hash lookup
* Run prepare
* Run formatter
* Moderation + Mod Editing WIP
* Run prepare, fix perms
* Make it compile
* Finish moderation and edit routes
* More fixes
* Use better queries
* Final Fixes
* Fix latest_version in search results
* Handle users with invalid permissions instead of skipping them
* Specify order of some queries, fix serialization of permissions
* Run sqlx prepare
* Team routes template
* More work on teams
* Updating routes WIP
* Edit routes
* Fixes
* Run prepare, prevent non-members from seeing perms
* More fixes
* Finish team routes
* More fixes
* Unpushed changes
* Some more fixes and error handling
* Fix sqlx prepare, formatting
Co-authored-by: Aeledfyr <aeledfyr@gmail.com>
* Hotfixes for indexing
* Handles missing INDEX_CACHE_PATH environment variable
* Exits on startup if environment variables are missing. The flag
--allow-missing-vars disables this, but that is generally a bad
idea, since most environment variables are required (and the ones
that aren't should be marked as such).
* Disables the query loggers
* Upgrade meilisearch-sdk to 0.4.0 for MeiliSearch 0.16 support
* Fix swap of Forge and Fabric labeling
* Improve curseforge and local indexing
This should make curseforge indexing more efficient, and reuses
some of the normal local indexing for the queued indexing of
recently created mods.
* Unify impls for single and multiple routes for mods and versions
This uses the same backend for the single and multiple query
routes so that they no longer return inconsistent information.
* Cache valid curseforge mod ids to reduce request load
This caches the ids of minecraft mods and reuses them on indexing
to reduce the amount of unused addons that are returned.
* Add types to game_versions, allow filtering by version type
- Fixes an issue with version numbers in the initial mod indexing
queue
- Modifies the /api/v1/categories/game_versions route to take an
optional query parameter `type` to filter the listed game versions
- Creating tags is now idempotent
- Creating game_versions now requires a JSON body that specifies
the version type
* Implement automatic indexing of new Minecraft versions
It's currently set to run every 6 hours and isn't configurable; we
could add config for it, but it doesn't seem likely to be rate
limited or have issues with frequency.
* Support for using a master key
* Expand scope of PR, add wrapper struct, add files to intitial versions/mods
* Change changelog path, run formatter
* Split file changes into different PR
* Formatting, rename main variable
Co-authored-by: Aeledfyr <aeledfyr@gmail.com>
* Lots of little fixes
* Change + Add TODOs back that were incomplete
* Fix migrations
* Run prepare
* Minor fixes
* Fix formatting
* SQLX Prepare
* Add status to creation query
* Change header name
* Add default bio value
* Remove default
* Make name null
* Run prepare
* Add new API Routes for requesting multiple of an item
* Run formatter
* Simplify get mods query
* Run prepare
* Refactor to use one query for most routes, change version create route to have mod_id in data
* More fixes
* Merged mod file upload in version creation, mod creation and
version file add to one function; This makes sure that they are
consistent
* Made some fields on `User` optional: `github_id`, `avatar_url`, `bio`.
* We may not want to publicly show the `github_id` to everyone
with access to the API
* If we allow non-github users, some of those fields would be
invalid; some oauth providers may not have avatars or bios
* Made CORS origins should configurable
* Made `--reconfigure-indices` and `--reset-indices` exit after
completion instead of starting the server
* Add more info to search route:
* Run formatter
* Allow for API user to change the amount of mods responded with in search
* Refactor SearchResults
* Fix searchresults usage
* feat: Implement more database methods & add mod and version routes
* feat: Implement deleting mods/versions & implement categories
* feat: Implement routes for categories, game versions & loaders
* feat: Reorganize API routes in a (hopefully) usable way
* Creation Stuff
* Make it work
* Response structs + Mod ID validation
* Run code formatter
* Push local changes
* Finish up version creation - fix comments, impl file creation
* fix: Add sqlx prepare data
Co-authored-by: Aeledfyr <aeledfyr@gmail.com>
This also adds a commandline argument library (gumdrop) for dealing
with indices - reseting, reconfiguring, and skipping them. I don't
know which library is best for this case, but gumdrop has shorter
compile times and many fewer dependencies than clap, which is why
I chose it.
* feat(indexing): Reindex curseforge & local database at an interval
* fix(indexing): Use strings for meilisearch primary key
Fixes#17 by prefixing curseforge ids with "curse-" and local ids
with "local-".
* feat(indexing): Add newly created mods to the index more quickly
* feat(indexing): Implement faceted search, update to meilisearch master
Fixes#9, but only uses faceted search for categories. It should
be reasonably simple to add support for versions, but it may not
be as useful due to the large number of versions and the large
number of supported versions for each mod.
* feat(indexing): Allow skipping initial indexing
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* WIP Switch to Postgres
* feat(postgres): more work on porting to postgres, now compiles
* feat(docker-compose): Changed the docker-compose.yml file to use postgres.
* Update docker, documentation, gh actions...
* Remove bson dependency
* Remove bson import
* feat: move mock filehost to trait rather than cargo feature
* feat(postgres): transactions for mod creation, multipart refactor
* fix: Add Cargo.lock so that sqlx functions
* Update sqlx offline build data
* fix: Use SQLX_OFFLINE to force sqlx into offline mode for CI
* Default release channels
* feat(postgres): refactor database models to fit postgres models
* fix: Fix sqlx prepare, fix double allocation in indexing
* Add dockerfile (#40)
Co-authored-by: Charalampos Fanoulis <charalampos.fanoulis@gmail.com>
Co-authored-by: Aeledfyr <aeledfyr@gmail.com>
Co-authored-by: redblueflame <contact@redblueflame.com>
Co-authored-by: Jai A <jai.a@tuta.io>
Co-authored-by: Valentin Ricard <redblueflame1@gmail.Com>
Co-authored-by: Charalampos Fanoulis <charalampos.fanoulis@gmail.com>
* fix(mod-creation): fix actix server data & mod creation route
* feat(file-host): implement mock file hosting
This implements a mock file hosting system backed by the system's
filesystem. It mirrors the API of the backblaze integration, but
puts the files directly on disk in the path specified by the
MOCK_FILE_PATH environment variable (defaults to /tmp/modrinth).
The mock file hosting is enabled by default using cargo features
to allow people to work on modrinth without access to a valid
backblaze account and setup. To enable backblaze, specify the
cargo feature "backblaze" when running, ex. `cargo run --features
backblaze`.
* feat(file-hosting): implement basic backblaze API error handling
* fix(mod-creation): fix extension parsing, use base62 ids for paths
fix(file-hosting): reduce unnecessary allocations
* fix: fix auth with docker mongodb
* fix: fix failing checks
* fix: remove testing files
* refactor: improve error handling
* fix: specify bind address instead of port
* fix: remove temporary testing file
* fix(errors): change error names to snake_case
* refactor(errors): split indexing error types, remove unused errors
* feat: add env variable checking at program start
This just checks whether the enviroment variables exist and can
parse to the given type and gives a warning if they can't. This
should prevent cases where the program fails at runtime due to
checking an environment variable that doesn't exist.
* feat(schema): add basic structs for schema
* feat(schema): implement base62 id parsing
* docs(schema): add documentation for schema structs
fix(schema): prevent integer overflow in base62 decoding
* refactor(schema): move ids into submodules, reexport from ids mod
* feat(schema): add random generation of base62 ids
style: run rustfmt
* chore: Removed everything not needed, and added base for rewrite
feat(error_handling): Added 404 general cache
feat(index): Added informations about the app in the / route.
* feat(indexing): Brought back the indexing, with conditions to make it easier
* fix: Fixed build error with a forgotten call
* feat: Add Docker development enviroment (#19)
* ci: add a *lot* of new actions
* fix: rename linting action
* fix: invalid yaml begone(?)
* ci: Added cache to speed up build times
* fix(ci): 🦀ed the yaml errors
* fix(ci): fixed a missing hyphen
* ci: Added matrix of rust versions, and changed way to install rust toolchain
* fix(ci): Added names to build with the matrix so it's easier to find the source of the problem
* style(ci): Added eof lines
* refactor: Finished moving the search.rs file to a separate module.
* Search Endpoint
* refactor: Moved around functions and struct for a better understanding of what it does.
* chore: Change env default settings to resolve conversation
* refactor: Removed #[use_macros]
fix: Fixed meilisearch address from env
* chore: Added email to Aeledfyr
* fix: Brought back the dotenv variables
* style: Ran `cargo fmt`
Co-authored-by: Charalampos Fanoulis <charalampos.fanoulis@gmail.com>
Co-authored-by: Jai A <jai.a@tuta.io>
This uses svg <use href="#..."> to avoid having to duplicate the
logo at every use. Surprisingly this just works with the current
theme css, and doesn't require any changes.
Makes the styles of search results work better with narrower
screens. The category badges on each result collapse to just an
icon (with title text) when the screen is too narrow.
Adds a text label for the Forge/Fabric icons.
Adds a message for when a query returns no results.
@ -22,7 +22,7 @@ This repository contains two primary packages. For detailed development informat
## Contributing
We welcome contributions! Before submitting any contributions, please read our [contributing guidelines](https://support.modrinth.com/en/articles/8802215-contributing-to-modrinth).
We welcome contributions! Before submitting any contributions, please read our [contributing guidelines](https://docs.modrinth.com/contributing/getting-started/).
If you plan to fork this repository for your own purposes, please review our [copying guidelines](COPYING.md).
'Permanently deletes an instance from your device, including your worlds, configs, and all installed content. Be careful, as once you delete a instance there is no way to recover it.',
'Repairing reinstalls Minecraft dependencies and checks for corruption. This may resolve issues if your game is not launching due to launcher-related errors, but will not resolve issues or crashes related to installed mods.',
defaultMessage:`This instance is linked to a modpack, which means mods can't be updated and you can't change the mod loader or Minecraft version. Unlinking will permanently disconnect this instance from the modpack.`,
'If you proceed, you will not be able to re-link it without creating an entirely new instance. You will no longer receive modpack updates and it will become a normal.',
defaultMessage:`Reinstalling will reset all installed or modified content to what is provided by the modpack, removing any mods or content you have added on top of the original installation. This may fix unexpected behavior if changes have been made to the instance, but if your worlds now depend on additional installed content, it may break existing worlds.`,
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.