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)
* 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.
* 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 33500c564e.
* 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 0155262ddd.
* 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.
* 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
157647faf2.
* 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 e4adbb9469.
* 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 https://github.com/modrinth/code/commit/c39bb78e38cb9cfe13f01f4a9bee277881b52efb
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
https://github.com/modrinth/code/commit/d6a72fbfc4613a45acaa38e0e73da9bcc455e87a.
* 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>
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`.
* 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 3caad59bb4.
* 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>
* 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>
* 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 3ba5c0b4f7.
* 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 d7c0d1196f.
* 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>
* 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: 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>
* 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 7fb3a6c6a6.
* 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>
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
* 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>
* Begin sidebar refinement, change back to left as default
* New filters proof of concept
* Hide if only one option
* Version filters
* Update changelog page
* Use new cosmetic variable for sidebar position
* Fix safari issue and change defaults to left filters, right sidebars
* Fix download modal on safari and firefox
* Add date published tooltip to versions page
* Improve selection consistency
* Fix lint and extract i18n
* Remove unnecessary observer options
Previously, the Exclude button was removed from the the element tree
entirely until the group is hovered. Only when the group is hovered, the
button element was being switched to a proper display form. This has
caused the layout shift which was very visible when quickly moving
cursor over the filter options.
This commit makes it so that the Exclude button is always in its proper
display form (flex), however is transparent until the group is hovered.
The repeated transparency classes were removed from the icon as well to
prevent jarringly-looking double transition.
* New project page
* fix silly icon tailwind classes
* Start new versions page, add new ButtonStyled component
* Pagination and finish mocking up versions page functionality
* green download button
* hover animation
* New Modal, Avatar refactor, subpages in NavTabs
* lint
* Download modal
* New user page + fix lint
* fix ui lint
* Download animation fix
* Versions filter + finish project page
* Improve consistency of buttons on home page
* Fix ButtonStyled breaking
* Fix margin on version summary
* finish search, new modals, user + project page mobile
* fix gallery image pages
* New project header
* Fix gallery tab showing improperly
* Use auto direction + position for all popouts
* Preliminary user page
* test to see if this fixes login stuff
* remove extra slash
* Add version actions, move download button on versions page
* Listed -> public
* Shorten download modal selector height
* Fix user menu open direction
* Change breakpoint for header collapse
* Only underline title
* Tighten padding on stats a little
* New nav
* Make mobile breakpoint more consistent
* fix header breakpoint regression
* Add sign in button
* Fix edit icon color
* Fix margin at top of screen
* Fix user bios and ad width
* Fix user nav showing when there's only one type of project
* Fix plural projects on user page & extract i18n
* Remove ads on mobile for now
* Fix overflow menu showing hidden items
* NavTabs on mobile
* Fix navbar z index
* Search filter overhaul + negative filters
* fix no-max-height
* port version filters, fix following/collections, lint
* hide promos
* ui lint
* Disable modal background animation to reduce reported motion sickness
* Hide install with modrinth app button on mobile
---------
Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
Co-authored-by: Prospector <prospectordev@gmail.com>
* initial fixes
* 0.8.0 beta fixes
* run actions
* run fmt
* Fix windows build
* Add purge cache opt
* add must revalidate to project req
* lint + clippy
* fix processes, open folder
* Update migrator to use old launcher cache for perf
* fix empty dirs not moving
* fix lint + create natives dir if not exist
* fix large request batches
* finish
* Fix deep linking on mac
* fix comp err
* fix comp err (2)
---------
Signed-off-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
- Cosmetics and theme preferences are now only stored in cookies instead
of a combination of both cookies and state.
- The theme plugin now supports client hints. This allows the server
to render a page using the client-preferred theme provided it supplies
this information (any browser other than Firefox), helping to avoid an
annoying flash while the page is hydrating.
- For the future, the theme plugin now supports additional light themes.
Light theme preferences are currently not stored, but this can easily
be fixed if the need arises.
- The previous workaround using the Nitro plugin has been removed. Its
functionality is now handled by the Nuxt theme plugin with cleaner
code.
- All pages and components now use the new plugins.
- Compared to the previous attempt, this commit has been improved to be
more robust in cases where the theme cookie contains invalid values.
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* fix(theseus): Resolve log tab freezing entire app (#1127, #1237)
Switched to `vue-typed-virtual-list` due to freezing issues in WebKit caused by `vue-virtual-scroller`, which were difficult to resolve with the previous library.
* fix(theseus): Double opening of Socials Share link (#1136, #1074)
* fix(theseus): Proper symlinks resolution (#1236)
Ensures correct symlink resolution for specific mods, the mods directory, and the entire profile directory.
* fix(theseus): Correctly recognize NeoForge mods (#1215)
* fix(theseus): Corrected `Environments` and `Loaders` filters (#899)
* fix(theseus): Remove `_JAVA_OPTIONS` when testing JRE (#1171)
* fix(theseus): Fixed opening files using `show_in_folder`
Previously, opening a mod would display the contents of the JAR file instead of its location.
* fix(theseus): Hide `.DS_Store` files (#1274, #1002, #1174)
* fix(theseus): Corrected tooltip color
* fix(theseus): Fixed white mode issues (#1144, #1010)
* fix: Corrected `Slider` min and max value handling (#1008)
* fix: Fixed rebase problems
* fix: Fixed `:deep` usage warning
* chore: Updated eslint plugins to fix conflicts with Prettier
- Cosmetics and theme preferences are now only stored in cookies instead
of a combination of both cookies and state.
- The theme plugin now supports client hints. This allows the server
to render a page using the client-preferred theme provided it supplies
this information (any browser other than Firefox), helping to avoid an
annoying flash while the page is hydrating.
- The previous workaround using the Nitro plugin has been removed. Its
functionality is now handled by the Nuxt theme plugin with cleaner
code.
- All pages and components now use the new plugins.
* fix(temp): remove box shadows from tailwind config
* fix(temp): "polyfill" global during build process
* refactor: use `import.meta` instead of deprecated `process`
* oops: replace `process.server` as well
To connect your workspace to Nx Cloud, push your repository
to your git hosting provider and go to the following URL:
https://cloud.nx.app/connect/BTN2S5oDFZ
This pushes bottom transition to a background level while setting it so
that any z-indexes are isolated within the hero to avoid any other
weirdness from happenning.
It seems that Nuxt Turnstile's way of setting the key in `runtimeConfig`
is broken and doesn't work properly, resulting in an error in runtime,
because it has to be set. This commit sets the key in `runtimeConfig`
manually instead, which seems to fix the issue.
It seems that Rollup node-resolve module doesn't properly deal with
trailing slashes, causing it to thing that `string_decoder` is a
built-in Node.js dependency and attempt to import it from `unenv`, which
will obviously fail, because `string_decoder` is not, in fact, a Node.js
dependency, but an individual dependency of `readable-stream`.
This adds a small patch for `readable-stream@2.3.8` dependency, which
removes the leading slash, which seems to fix the builds.
This probably should be reported to relevant developers (Rollup
node-resolve plugin or Nitro?).
* Update Nuxt dependencies
* Fix ref access in ChartDisplay
* Fix feature flags cookie options type error
* Specify type-only imports
* Fix shorthands access to tags outside of reactive scope
* Replace most useRoute calls with useRoute from vue-router
Nuxt's version of this composable is horrendously broken (nuxt/nuxt#21340)
* Import all svgs with ?component parameter
Fixes weird hydration issues + gives correct type
* Add new links card and feature flag system for incremental dev.
* Switch to env variable for dev flags
* Add members card
* fix order of creators card
* Fix owner icon color and bring org owner to top of list
* lint + other fixes
* Revamp feature flag system, add flag config page
* Add button to flags page in dev mode
* fix env overrides
* make typescript happy with the refs
* Include crash reports and attempt to order by age.
* Do all sorting within rust.
* Remove excess debug.
* Remove new once_cell dep.
* Use EPOCH as fallback instead of now()
* Fix prettier lint warnings.
Many people contacting support forget to provide the debug information,
which significantly delays the resolution time because we're forced to
ask for this information anyway, as without it we cannot tell with
certainty the issue the person is facing.
Ideally in the future it would probably make sense to give a link to the
article describing the common issues for self-help, but there's no such
article yet. Perseus however is able to give suggestion for a few issues
given that it has the debug information.
* Further auth requests consistency fixes
- Generated device UUIDs are lowercase, whereas they're uppercase in MCL
- TitleId in SISU authenticate is supposed to be a string (it is in MCL)
- UseModernGamertag in SISU authorize, on the other hand, is a boolean
- Clarified charset of our requests like MCL does
- Specified rng gen call to generate u8 to fix compile error (???)
* Enable deflate, gzip and brotli compression support
* new settings work
* Polishing work on settings refactor
* Run intl:extract
* List view -> Rows view
* Remove current preferred system theme indicator to make the themes fit on one line
* Remove extra margin on top of navstack
* Convert default.vue to composition API
* Add translations to default page layout
* Generate index.json
* Fix sign up page
* Generate index.json
* Fix atUserLabel
* Fix composition API port
* Follow-up fixes for #1616 (#1618)
* Re-organize default layout messages
- Group some of the messages by their appearance (like banners)
Grouping makes avoids having to think too much about the property
names, keeps declarations clean, and also can be minified better,
since variable names, unlike property names, can be easily mangled.
- Remove needless type specification in property name[^1]
It's already clear from where the message is formatted what it does,
and if you need clarification, you can Ctrl+hover and see the type in
the key.
- Change some keys to conform to conventions
We generally follow the pattern location > kind?. Things like 'label'
are unnecessary, as everything is assumed to be label by default; the
same applies to things like 'button', which are also often unnecessary
as they're part of the location compound.
- Remove message for handle, which should not be translatable
It's very unlikely user handle format changes between any of the
locales.
[^1]: Common messages are pending restructuring that would fix this
* Fix navRoutes not being computed in default layout
* Fix untranslated Get Modrinth App buttons in default layout
* Make legal disclaimer in the default layout translatable
It wouldn't make much sense to leave it untranslated since it is meant
for the end users too. It is also so small that it's unlikely to be
mistranslated.
* Extract missed legal disclaimer message from default layout
* Make SEO strings in default layout translatable
---------
Co-authored-by: Sasha Sorokin <10401817+brawaru@users.noreply.github.com>
* Begin Work
* More work
* Fix lint error
* More work on label
* Fix mistake
* Finish adding delete pat modal keys
* More label and button
* More label keys
* Fix lint error
* Description key
* Finish page
* Forgot this
* Fix lint error
* Add to navstack
* Apply suggestions from brawaru
* Normalization
* Re-organize PATs page messages (#10)
- Group messages by their usage
- Fix spelling mistakes in some of the property names and keys
- Change some of the keys to conform to keying conventions
- Change variable name in token.expires-in message to inTime
* Regenrate index.json
---------
Co-authored-by: Sasha Sorokin <10401817+brawaru@users.noreply.github.com>
* Begin Work
* WIP
* WIP
* WIP
* Use error notification keys
* Finish & fix error
* Fix lint error
* Normalize message IDs (#9)
It makes sense to compose message IDs in order:
- Place (page, sub page / "modal")
- Thing
- (optionally) Relation to the thing
For example, a label for a password field would be:
- auth.sign-in (on sign-in subpage of auth)
- password (password field)
- label (is a label for the field)
Another example - button to sign in:
- auth.sign-in
- action (this is an action to do something)
- sign-in (action to sign in)
This helps keep the IDs closer to the actual structure of the page,
oftentimes smaller in the code, and easier to understand by translators.
---------
Co-authored-by: Sasha Sorokin <10401817+brawaru@users.noreply.github.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Begin Work
* Begin Work
* WIP
* Finish Work
* Fix lint error
* Re-organize keys on E-mail verification page (#12)
- Group messages by the step
- Use simpler keys for message properties as they're not public
- Change message keys to conform to conventions
---------
Co-authored-by: Sasha Sorokin <10401817+brawaru@users.noreply.github.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Begin Work
* Add email sent notification keys
* Finish adding notification keys
* Fix lint error
* Finish work (I think)
* Remove password label (generic)
* Add password label key
* Re-organize Reset password page messages (#11)
- Group messages by their use
- Change some of the keys for clarity
- Change some keys to conform to conventions
---------
Co-authored-by: Sasha Sorokin <10401817+brawaru@users.noreply.github.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Begin Work
* Add more common messages
* Work on modal
* Add more keys
* Add keys for icon buttons
* Add more keys
* Handle error keys
* Add more keys
* Add more keys
* Edit fields keys
* Finish (almost)
* Finish work for collection page
* Dashboard Nav stack & Format
* WIP
* Move some messages to common
* Finish work
* Format
* Reorganization
* Fix some mistake
* add common collections label
* Add collections label key to default layout
* Make title and description reactive (#8)
---------
Co-authored-by: Sasha Sorokin <10401817+brawaru@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>
* Rip out external color state
* Fix styling errors
* Allow charts to display personal/entity perspectives on routes
* Refactor analytics data processing and selection
* Include custom color icon
* Revert "Add API indicator and staging banner (#1563)"
This reverts commit a75de51198.
* Revert "Revert "Add API indicator and staging banner (#1563)""
This reverts commit b4d3b56b33ca4080fa3bc1b7a2dde7b21ba18e51.
* Fix banner to only show on staging
---------
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
* Adjust colors to be controlled from outside chart component
* Access colors from source of truth
* Change access method to omit projects from params
* Just omit projects from query
* Fix donation link submission
* Refactor Charts to fit edgecase bugs in design
* edge and mobile bug fixes
* remove dead code
* fix width on mobile
* Update omorphia version to 0.7.3
* Refactor legend item styling in ChartDisplay.vue
* Update package dependencies
* Add withdrawal amount validation and display transfer details
* Fixed amt should be consistent
* Empty amount rather than clamp
* Only mutate amount if fixed or 1 value
* Add badge to giftcard withdraw methods
* [WIP] Transfer collections to own branch
* fixes
* rewrite js
* Add visibility dropdown to collection edit modal
* Add visibility badges to collection page
* Update visibility options and icons in collection
page
* Add delete functionality to collection modal
* Collection project deletion flow
* remove "visit project" button on overflow
* Remove via checklist not individually
* Update manage title in settings.vue
* remove collections from settings page
* hook up collections page
* collection header to look like project header
* Refactor layout.scss and collections.vue
* fix omorphia
* Update
* Conform collections to old design structure
* Update navigation links and remove unused code
* Add collection view and collections to user page
* Refactor user project display logic
* Add collection creation functionality and update profile labels
* Add function calls to initialize user collections
* Refactor collection page layout and functionality
* Add initialization of user collections in create function
* Fix styling issue in collection page
* Update collection status to private
* remove name
* Refactor card component and update grid layout
* Finish collections
---------
Co-authored-by: Carter <safe@fea.st>
* [WIP] Transfer analytics to own branch
* code style changes
* Refactor country name conversion
* Clean up api and ssr for settings page
* refactor analytics into reusables
* Refactor chart tooltip and reset functionality
* Update dayjs import and formatTimestamp function
* Fix bug in login functionality
* Abstract data fetching
* Refactor analytics data formatting
* Refactor useFetchAllAnalytics function signature
* Refactor analytics processing functions
* Fix chart data in ChartDisplay.vue
* Refactor analytics pages
* Refactor delete labrinth.ts test types
* Fix import statement for dayjs and update usage of
unix function
* Fix dropdown select in ChartDisplay.vue and add
Analytics link in creations.vue
* Update chart colors in ChartDisplay.vue and
analytics.js
* Update defaultRanges in ChartDisplay.vue
* Add colors to chart
* Update legend position in ChartDisplay.vue
* Refactor color conversion functions in
analytics.js
* Bug fixes
* Use softer colors
* Import dayjs unix module for analytics.js
* Refactor chart tooltip generation
* Fix calculation of total value in generateTooltip
function
* Fix button-base styling in ChartDisplay.vue
* Adopt intl standard rather than iso-3166-1
* Add support for potential flags
* Analytics rebased
* fix cf pages
* now?
* try now
* now?
* Fix this time
* address rev
* Finish analytics
* fix api url
---------
Co-authored-by: Carter <safe@fea.st>
* 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>
This commit adds a fallback to getProjectTypeMessage function to return
a generic project type whenever it encounters an unknown project type,
ensuring there are no errors when the new project types are added.
* adjust existing sign-in flow
* test fetching of oauth client
* allow for apiversion override
* getAuthUrl refactor
* Adjust auth to accept complex url redirections
* introduce scopes
* accept oauth flow
* rename login/oauth to authorize
* conform to labrinth spec and oauth2 spec
* use cute icons for scope items
* applications pages
* Modal for copy client secret on creation
* rip out old state
* add authorizations
* add flow error state and implement feedback
* implement error notifications on error
* Client secret modal flow aligned with PAT copy
* Authorized scopes now aligned with Authorize screen
* Fix spelling and capitalization
* change redirect uris to include the input field
* refactor 2fa flow to be more stable
* visual adjustments for authorizations
* Fix empty field submission bug
* Add file upload for application icon
* Change shape of editing/create application
* replace icon with Avatar component
* Refactor authorization card styling
* UI feedback
* clean up spacing, styling
* Create a "Developer" section of user settings
* Fix spacing and scope access
* app description and url implementations
* clean up imports
* Update authorization endpoint
* Update placeholder URL in applications.vue
* Remove app information from authorization page
* Remove max scopes from application settings
* Fix import statement and update label styles
* Replace useless headers
* Update pages/auth/authorize.vue
Co-authored-by: Calum H. <contact@mineblock11.dev>
* Update pages/auth/authorize.vue
Co-authored-by: Calum H. <contact@mineblock11.dev>
* Finish PR
---------
Co-authored-by: Calum H. <contact@mineblock11.dev>
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Implements loading of all locale files shipped with Omorphia package by
globbing and registering them during the `vintl:extendOptions` hook.
Also updated VIntl for Nuxt to ensure those files are properly loaded.
Previous version of VIntl for Nuxt had a somewhat broken module ID
tracking, preventing Omorphia locale files to be properly transformed
during the build; at least on systems like Windows, don't know about
*nix. The tracking approach was replaced in 1.8.0, and it seems to be
working now.
* Accept image pasting functionality
* Bump to 0.7.1
* Default alt text should be like github
* sync modelValue changes to codemirror state
* Refactor image uploading in paste
* Fix error handling in image upload
* 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>
* Add spoiler tag functionality to CodeMirror
* Refactor image insertion logic in
MarkdownEditor.vue
* Refactor modal state reset functions in
MarkdownEditor.vue
Currently Omorphia's index file has both the default and named exports.
While this is totally supported by native ESM, it's pretty hard for
transpilers to process and may lead to situations where named exports
cannot be imported directly, requiring destructuring on the default
import. For this and just consistency reasons, you'd usually avoid
mixing default and named exports.
This commit removes the default export, making it just an another named
export called `plugin`.
BREAKING CHANGE: plugin is now exported using `plugin` export, rather
than the default export.
* Begin Work
* Ordering
* Add all keys to JSON file
* Add accepted, approved, archived & closed keys to vue component
* Add draft, failed, listed keys to vue component
* Format (fix lint) & improve documentation
* Finish the work
* 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
* placeholder
* max length & placeholder
* remove default placeholder
* remove scoped css
* allow for throwing in the upload process
* explicit import of info
* fix aggressive card input selection
* Migrate DropArea to composition
* remove hardcoded button styling
* let markdown editor call for image upload
* allow for local testing in the docs
* validate url on set
* add chips to modal with correct defaults
* update docs to show example url doesn't load
* Bump version 0.6.4
This commit enables TypeScript support in Omorphia. It reconfigures
Vite, adds two new TSConfig files as a replacement for the old JSConfig,
adds TypeScript linting to ESLint configuration.
Why?
====
TypeScript has became a standard in modern web development. In makes
JavaScript a more type-safe language, makes code more maintaible and
boosts effeciency by empowering development tools.
What's included in this commit?
===============================
TypeScript config files
-----------------------
Old and plain JSConfig has been replaced with two TSConfigs: one
designed for the code, and the other for the Vite configuration file.
JavaScript support is still enabled, therefore TypeScript files can
import JavaScript files as well, and vice versa. However, it is
recommended that all the new files will be written in TypeScript, and
old files are slowly converted over to TypeScript, so this option can be
disabled in the future, making this a safe TypeScript only project.
UMD output is replaced with CJS
-------------------------------
UMD is an old format that tries to stay compatible with both the Node.js
CJS, as well as Require.js. However, nowadays almost everyone is using a
transpiler where this format won't be beneficial.
To avoid it being a breaking change, it has been replaced with CJS. But
in the future it's worth considering removing CJS output as well and
making Omorphia an ESM module only, as it's designed only to be
consumed by the Modrinth project, and all of these projects are already
ESM-first.
Minification is disabled
------------------------
Because this is a library, the responsibility of minifying its code lies
solely on the consumer. Just like with CJS, all of the supported
consumers of this library are already performing minification, so
minifying this library beforehand is rather wasteful and harmful, as it
negatively impacts debugging experience.
More dependencies are now externalised
--------------------------------------
Disabling UMD output allows more easily externalise dependencies based
on the package.json file, making it way more approachable.
Vue is now a peer dependency
----------------------------
Because this is a component library, Vue is not a direct dependency of
this project. Instead, this library relies on consumer having a Vue as
its dependency.
`lib` is no longer included in package
--------------------------------------
`lib` folder contains sources for the imports, but it's outside of
export map and cannot be imported by the consumers. It is now excluded
from the package to reduce the package size and installation time.
Typings
-------
Consumers of this library should also be able to benefit from the type
safety. To achieve this, there's now a Vite plugin that generates type
declarations that represent the project structure.
To lesser the incompatibility with the consumers, some of the files were
changed to import `index.js` from folders rather than folders
themselves.
While both will work for building, not doing this requires consumer to
opt in to bundler module dependency, whereas if `index.js` is imported,
the consumer can use both the normal ESM / Node16 module resolution, as
well as the bundler module resolution.
ESLint configuration changes
----------------------------
ESLint has been reconfigured to support TypeScript, and include rules
recommended by the TypeScript ESLint package. In the future it would be
good to review the rules and override rules for TypeScript files to
disable rules that would conflict with ones from TypeScript ESLint.
Entry file is now a TypeScript file
-----------------------------------
To test the changes and begin the slow conversion, the entry point file
is now a proper TypeScript file.
SVG imports use `?component` parameter
--------------------------------------
All components are now imported with `?component` URL parameter so that
they have a proper file. By default, Vite imports all files like .svg
as strings containing path to the file.
Unfortunately, `vite-svg-loader` overrides this behaviour without
overriding the Vite import type declaration, leading to incorrect types.
However, it does expose a new parameter `?component`, which is properly
typed and does the same thing you'd expect - export a Vue component, so
most of the SVG imports have been converted to use this parameter.
* 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
* SEO/Metadata cleanup
May split rules changes into its own PR
* Revert rules/terms changes as they are now on a separate branch
* Update [searchProjectType].vue
* Update terms.vue
Icons in project pages with featured images and in search results with gallery view have borders that resize their 96x96 icons to 88x92.
These box-shadow replacements preserve icon size while retaining visual equivalency (rounded 4px border around left, top, and right).
* Add initial language picker prototype
* Heap o' improvements and Pirate tongue
* Move .visually-hidden to shared utils and add copyright notice
* Add a little space before categories names
* Simplify search to input focus logic
* Remove larger font size and padding from the search field
* Some refactors
* Braw's descent into madness
Thanks web development!
In seriousness though, tried to make the list more accessible. Making it
fully accessible feels like unbearable task, so at least that.
* Litol refactoring
* Extract new strings and remove old ones
* Update @vintl/nuxt to 1.3.0
This fixes the bug where default locale won't be saved.
* A buncha refactorings and cleanup
* Scuttle the Pirate lingo
'Twas employed 'ere for testin' purposes, but fear not, for it shall be
returnin' in the days to come. Should ye require it fer testin', simply
roll back this here commit.
* Clean languages source file
* Change "US" to "United States"
I think it would make distinguishing two languages simpler as now
there's more than one letter of difference (US/UK vs United States/
United Kingdom).
* Refine the auth design; clean up the layout and styles there
* It doesn't really sing, does it
* Tweak auth form spacing and wording
* Final tweaks to improved auth design
* Merge
* fix lockfile
---------
Co-authored-by: Prospector <prospectordev@gmail.com>
* Get the App button
* Get the App button
* Get the app -> Get Modrinth App & Add this button to account dropdown
* Using normal styles instead of inline styles
* Addressed all changes and bug fixes
* Run lint
* Delete linux.svg
* buttons are no longer tabbable
* Fix os issue
* Run lint
* Fix grid issues
* Update meta
* Run lint
* Add support for all semver and forge maven range.
* Fix that old forge was checking version as an object
* Fix new version range checking not being applied to quilt.mod.jsons
* run fix
* Begin UI for threads and moderation overhaul
* Hide close button on non-report threads
* Fix review age coloring
* Add project count
* Remove action buttons from queue page and add queued date to project page
* Hook up to actual data
* Remove unused icon
* Get up to 1000 projects in queue
* prettier
* more prettier
* Changed all the things
* lint
* rebuild
* Add omorphia
* Workaround formatjs bug in ThreadSummary.vue
* Fix notifications page on prod
* Fix a few notifications and threads bugs
* lockfile
* Fix duplicate button styles
* more fixes and polishing
* More fixes
* Remove legacy pages
* More bugfixes
* Add some error catching for reports and notifications
* More error handling
* fix lint
* Add inbox links
* Remove loading component and rename member header
* Rely on threads always existing
* Handle if project update notifs are not grouped
* oops
* Fix chips on notifications page
* Import ModalModeration
* finish threads
* New authentication (#1234)
* Initial new auth work
* more auth pages
* Finish most
* more
* fix on landing page
* Finish everything but PATs + Sessions
* fix threads merge bugs
* fix cf pages ssr
* fix most issues
* Finish authentication
* Fix merge
---------
Co-authored-by: triphora <emma@modrinth.com>
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Begin UI for threads and moderation overhaul
* Hide close button on non-report threads
* Fix review age coloring
* Add project count
* Remove action buttons from queue page and add queued date to project page
* Hook up to actual data
* Remove unused icon
* Get up to 1000 projects in queue
* prettier
* more prettier
* Changed all the things
* lint
* rebuild
* Add omorphia
* Workaround formatjs bug in ThreadSummary.vue
* Fix notifications page on prod
* Fix a few notifications and threads bugs
* lockfile
* Fix duplicate button styles
* more fixes and polishing
* More fixes
* Remove legacy pages
* More bugfixes
* Add some error catching for reports and notifications
* More error handling
* fix lint
* Add inbox links
* Remove loading component and rename member header
* Rely on threads always existing
* Handle if project update notifs are not grouped
* oops
* Fix chips on notifications page
* Import ModalModeration
* finish threads
---------
Co-authored-by: triphora <emma@modrinth.com>
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
* 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
* Revert "fix: featured version ui shifts (#1191)"
This reverts commit 3036f43b75.
* Revert "Fix CTRL clicking on versions issue (#1189)"
This reverts commit f4560bd7d8.
* Fix search filters being hidden (#1165)
Previously, `max-width` was used to hide the sidebar on mobile, which
meant that at exactly 1024 pixels wide, the sidebar would be hidden.
However, this breakpoint is also as a
`min-width` other media queries, notably the ones used to enable viewing
filters on mobile sizes. This has caused issue #1024.
To fix this, I have swapped the logic of the rule that hides the filters
on mobile: it is now hidden by default and a `min-width` query is used
to show it on wider viewports. This is more consistent with similar media
queries in the same file.
Looking to the future, these issues should become less common if we
switch to range-based media queries:
https://caniuse.com/css-media-range-syntax
* Delete package-lock.json
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Miscellaneous fixes/improvements to landing page
* The downsides of not being able to set up a local testing env, in a commit
* Update how stats are retrieved
* Fix prettier
* Make requested changes
* Restore nuxt.config.js
* Restore composables/tag.js
* Update index.vue
* Renovate the config files
* Return Vue and TS ESLint plugins
* Revert Prettier config
Add typing to ESLint config
Re-revert package.json
* Re-add ESLint plugin for Prettier
(it went missing during merge, oops)
* Try to fix CI by explicit dependency
* Try to fix CI by explicit dependency x2
* Try to fix CI magically
Additionally, remove unneeded jsconfig.json
* Brawaru found the reason
Co-authored-by: Sasha Sorokin <10401817+brawaru@users.noreply.github.com>
---------
Co-authored-by: Sasha Sorokin <10401817+brawaru@users.noreply.github.com>
* Disableability, Up or down rendering
* Switch to scale animation
* Update DropdownSelect.vue
* Fix animation
* bump
* adjustments
---------
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Adds card-divider and table styles.
* Adds parent table class. Adds button-span fix.
* Adds super-raised-bg vars.
* Changes super-raised var to use own value for light-mode.
* Removes erroneous var.
* Add transfer history and unify back elements with breadcrumbs
* Increase padding of breadcrumbs, include previous query params, more consistent link underlining
* Prettier
* Add project type text and link to project pages
* Remove console.log
* fix(project): update follower count client side
* move following increment to user composable
---------
Co-authored-by: MagnusHJensen <magnus.holm.jensen@lego.dk>
* Migrate to Nuxt 3
* Update vercel config
* remove tsconfig comment
* Changelog experiment + working proj pages
* Fix package json
* Prevent vercel complaining
* fix deploy (hopefully)
* Tag generator
* Switch to yarn
* Vercel pls 🙏
* Fix tag generation bug
* Make (most) non-logged in pages work
* fix base build
* Linting + state
* Eradicate axios, make most user pages work
* Fix checkbox state being set incorrectly
* Make most things work
* Final stretch
* Finish (most) things
* Move to update model value
* Fix modal text getting blurred from transforms (#964)
* Adjust nav-link border radius when focused (#961)
* Transition between animation states on TextLogo (#955)
* Transition between animation states on TextLogo
* Remove unused refs
* Fixes from review
* Disable tabbing to pagination arrows when disabled (#972)
* Make position of the "no results" text on grid/gallery views consistent (fixes#963) (#965)
* Fix position of the "no results" text on grid view
* fix padding
* Remove extra margin on main page, fixes#957 (#959)
* Fix layout shift and placeholder line height (#973)
* Fix a lot of issues
* Fix more nuxt 3 issues
* fix not all versions showing up (temp)
* inline inter css file
* More nuxt 3 fixes
* [skip ci] broken- backup changes
* Change modpack warnings to blue instead of red (#991)
* Fix some hydration issues
* Update nuxt
* Fix some images not showing
* Add pagination to versions page + fix lag
* Make changelog page consistent with versions page
* sync before merge
* Delete old file
* Fix actions failing
* update branch
* Fixes navbar transition animation. (#1012)
* Fixes navbar transition animation.
* Fixes Y-axis animation. Fixes mobile menu. Removes highlightjs prop.
* Changes xss call to renderString.
* Fixes renderString call.
* Removes unnecessary styling.
* Reverts mobile nav change.
* Nuxt 3 Lazy Loading Search (#1022)
* Uses lazyFetch for results. onSearchChange refreshes. Adds loading circle.
* Removes console.log
* Preserves old page when paging.
* Diagnosing filtering bugs.
* Fix single facet filtering
* Implements useAuth in settings/account.
* tiny ssr fix
* Updating nuxt.config checklist.
* Implements useAuth in revenue, moneitzation, and dashboard index pages.
* Fixes setups.
* Eliminates results when path changes. Adds animated logo.
* Ensures loading animation renders on search page.
---------
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
* Fix navigation issues
* Square button fix (#1023)
* Removes checklist from nuxt.config.
* Modifies Nuxt CI to build after linting.
* Fixes prettierignore file.
* bug fixes
* Update whitelist domains
* Page improvements, fix CLS
* Fix a lot of things
* Fix project type redirect
* Fix 404 errors
* Fix user settings + hydration error
* Final fixes
* fix(creator-section): border radius on icons not aligning with bg (#1027)
Co-authored-by: MagnusHJensen <magnus.holm.jensen@lego.dk>
* Improvements to the mobile navbar (#984)
* Transition between animation states on TextLogo
* Remove unused refs
* Fixes from review
* Improvements to the mobile nav menu
* fix avatar alt text
* Nevermind, got confused for a moment
* Tab bar, menu layout improvements
* Highlight search icon when menu is open
* Update layouts/default.vue
Co-authored-by: Magnus Jensen <magnushjensen.mail@gmail.com>
* Fix some issues
* Use caret instead
* Run prettier
* Add create a project
---------
Co-authored-by: Magnus Jensen <magnushjensen.mail@gmail.com>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
* Fix mobile menu issues
* More issues
* Fix lint
---------
Co-authored-by: Kaeden Murphy <kmurphy@kaedenmurphy.dev>
Co-authored-by: triphora <emmaffle@modrinth.com>
Co-authored-by: Zach Baird <30800863+ZachBaird@users.noreply.github.com>
Co-authored-by: stairman06 <36215135+stairman06@users.noreply.github.com>
Co-authored-by: Zachary Baird <zdb1994@yahoo.com>
Co-authored-by: Magnus Jensen <magnushjensen.mail@gmail.com>
Co-authored-by: MagnusHJensen <magnus.holm.jensen@lego.dk>
* Update privacy policy
* fix prettier weirdness
* Fixes, modifications, and changes
* We don't prevent automated access, we monitor it
* Fix wonky link and fix header hierarchy
* Update address
* Fix lint
* Transfer over three sections from old policy
---------
Co-authored-by: Emma Triphora <emma@modrinth.com>
* initial impl
* merge from main
* No more crashy
* Almost there
* fix import
* fix more imports
* Code cleanup, Fixed components, Added Tooltip
* Added Env ind and Category pages
---------
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Fool behavior
* Add leading underscore to packaged datapack package if it starts with a number
* Hide mod status card for all approved statuses without mod messages
* Fix project id sanitization
* Fix for a couple of random bugs I noticed
* Add project status update to NOTIFICATION_TYPES
* Update wording
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
* Balance search pages to have view mode-aware max search results
* Remove console.log
* Implement #829 to prevent invalid pages when changing the max results
* dammit
* Remove default description, remove default license, and add a checklist nag for setting a license
* Make Unknown license display nicer in License settings
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Add support for loading Implementation-Version from MANIFEST.MF for Forge mods
* Remove debug lines
* Replace just the key instead of the whole version number
* Account for new statuses
More work is going to be needed for scheduling projects, but this is a stopgap measure to fix#852
* Fix lint
* Why, Prettier, why?
* Projects page
* Continue work on bulk edit
* editLinks is now bulkEdit
* Bulk Edit Links completed
* Edit URL clear fields.
* Create project button + other bulk buttons.
* Pagination (w/o reactivity.)
* Apply suggestions from code review
Co-authored-by: triphora <emmaffle@modrinth.com>
* Sorting fixed, broken page count though?
* Only make editable projects selectable + remove delete button
* Shorthand
* Start using computed
* Fix pagination
* Add Pagination Switching
* Final Style Changes
* Cleanup
* Action Affects dropdown
* Switch to checkbox swizzle
* Projects dashboard, the most hellish thing I have ever worked on
* Rewrite project dashboard without tables
* why's that there
* Fix mod message icon
* New project settings page
* Remove extra slash
* Bulk project route and improve styling of links UI
* Remove beta label from Monetization
* Relevant page links in project settings
* Don't vertically center header rows
* Improve error messages, add remove project icon button, add saving feedback, begin project checklist, fix license settings
* Remove contextual link from project settings, disable WIP checklist
* Fix bulk edit
* Project checklist, add featured gallery image to project pages, fix random bugs
* Remove old check
* Remove icon border on grid mode and hide project status card when unnecessary
* Fix build
* Make checklist progress smaller and add collapsing
* Remove uneven gap on nav cards
* Improve wrapping of checklist
* Replace project settings header link with status
* Fix bugs + status stuff
* Fix warns + compile error
* Update wording
* Hide environment type nag for project types without it
* Make member dropdown match
Co-authored-by: mineblock11 <93472213+mineblock11@users.noreply.github.com>
Co-authored-by: triphora <emmaffle@modrinth.com>
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* 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>
* Shader support PR
* Make search page work
* Fix env showing
* Make moderation look reasonable
* Fix search for shaders
* Datapack support
* Make file types work + datapack inferring
* Add editing to file types
* Finish datapack file generation
* Fix bugs, make forge support work
* Fix inconsistent data pack label
* Final fixes
* Redo version page
* More work on editing page
* Make saving work
* Finish version editing
* Version creation (base)
* Add creation buttons
* Add file uploader to versions page
* Add version file parsing
* Finish PR
* Fix version page responsiveness and use more consistent card design
* Whoops that wasn't supposed to be there
* Fixes + allow whole page dragging
* Re-add lost merge data
* Remove debug line
* Move back to list btm
Co-authored-by: Prospector <prospectordev@gmail.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
* Rewrite Parity
* Update SEO, fix modals, add dashes to changelog
* Edit create version title
* Cache tags, SEO for search/partial noscript support, notifications fix
* Deploy?
* Fix vercel config
* Fix it again
* Finish user editing
* Remove broken docker build
* Switch reports to modals
* Update project card
* Navbar line animation in most places
* Add chips
* Move to navlink query params
* remove autogen file
* Add copy code
* Fix webkit text box outlines, port report modal
* Update error page
* Switch to avatar component
* Make keyboard nav work
* Fix team member spacing
* improve project ID display (#676)
* Bug fixes
* Update OG site title
* More fixes
* Design tweaks
* Fix card wrapping on mobile
* Darken light theme color a little
* Sidebar navigation for settings, notifications, and moderation
* Change follow icon from a heart to a bell
* Revert "Change follow icon from a heart to a bell"
This reverts commit e30b46ec5d93c57df847be88eba123c7419dd03b.
* Change follows icon in settings
* AaaaUUUUUUUGghghhhhhhhh
* Project sidebar transparent button animations
* Update file input button styling and change icon remove button text
* Fix environments filter condition being inverted
* Remove -> revert
* Improve readability of warning banners on light mode
* Fix mobile menu button colors
* Clean up notifications page more
* Creator dashboard and monetization work
* Add processing fees declarations and acknowledgement box
* Beta badges
* Downgrade Nuxt Vercel Builder
* Update the style of button groups to be more consistent
* More button consistency
* Remove desktop navbar on mobile
* Update home page progress indicators
* Fix page jumping (Thanks @stairman06)
* Make checkbox checked style consistent with other selection indicators
* More home page updates
* Properly reset NavRows
* Move filters menu on mobile
* Stylized checkbox updated to match active styling
* Filters icon
* Respect prefers-reduced-motion
* Add most backend payouts changes (untested)
* Finish tested payouts code
* Allow monetization unenrolling
* No longer use brand color for active highlights on standard nav elements
* More consistent button group on project page
* Rounded tables
* Fix some things (#716)
* Team member fixes + re-add changelog/versions stuff
* Remove dummy data
* The great CSS refactor
* Remove commented out css
* Give modals the legacy label styles and update profile edit labels
* Fix active chip size
* Remove shadow from selected chip
* Require email set for CMP
* Update styles of notifications to universal-card
* Equivalent exchange, trading some jank for some less bad jank
* Fix all gallery buttons being missing when there is only 1 image
* Update project creation modal
* Make beta badge less bright
* Beta badge heading styling
* Update withdraw processing fees info
* Remove redundant label
* be
* Fix inverted logic
* 2% is 0.02
* Add toggle to turn off alpha modpacks banner
* Why warning button?
* Add more footer links (#719)
* Add more footer links
* Move twitter
* Make items on user pages less comically large and move ad above navigation
* Bump text down a little on home page
* Update favicon colors
* Remove task list package and change default description to use bullet points
* I don't remember why I made this important but let's not
* Ah, yes
* this doesn't actually need to be important
* Align items in input groups
* Adjust some spacings and clear creation modal on opening
* Versions now clickable
* Add link to edit page to default description
* Improve monetization information text
* Make wrapped text inputs not shrink
* Make chips work better
* smol margin on clear mod message button
* Allow non-authenticated users to access settings
* Remove settings anchors
* Fix versions page button style on firefox
* Add advanced rendering toggle
* Update slug input and icon card in project edit page
* Legal sidebar
* h1 at beginning of description no longer has top margin
* Use universal card for legal pages
* Update email addresses on legal pages
* Update various page titles and descriptions for consistency
* Various fixes and consolidation to API URL retrieval
Prevents a bug where it's possible to generate the tags under one API, switch the API, and still have tags leftover from the old API
Also finally fixes staging URL being jank
* Make the theme button show regardless of login state
Also remove the change theme from the user dropdown because it's very redundant with the several other ways of changing theme
* Make mobile profile dropdown ordering consistent with desktop
* Change the base url back
* Revert "Change the base url back"
This reverts commit c1da89fddb83776b39f626eab33c8dc67f8a75e4.
* constantize
* Tiny fixes (#722)
* Box-shadow chip outlines
* Show settings when signed out
* mods -> projects
* space
* Beta badge border
* Slug input overflow fix, scrollable
* 🙈 it will all be okay 🙊 this is just temporary 🙉😭😭 forgive me
* Fix minor bugs
* fix moderation page
* More fixes
* Temp fix for download button
* BEGONE TABLES
* Fix download button
Co-authored-by: Ryan Cao <70191398+ryanccn@users.noreply.github.com>
Co-authored-by: Prospector <prospectordev@gmail.com>
Co-authored-by: stairman06 <36215135+stairman06@users.noreply.github.com>
Co-authored-by: triphora <emmaffle@modrinth.com>
Detecting that ad has failed to load with timeout is not accurate and
won't work on slow connections. This commit fixes that by changing
detection to use 'onerror' event on <script> tag instead, which will be
triggered if ad script fails to load due to blocking.
* Try CarbonAds
* Move location
* add border, fix adblock msg
* Fix advertisement label look (#636)
Ever since changes for Carbon ads were introduced, the label did not
match the appearance of the card, leaving the bottom right corner of the
card not round. With more recent changes, where border was added, that
became even more apparent - now the border covers the label, which does
not look good; this effect only becomes worse when zooming.
This commit attempts to mitigate these issues with the following:
- To fix the border issues, label's absolute position is now calculated
from the card wrapper, where the border is applied. This allows label
to cover the border for seamless look. That is done by changing
position of the card wrapper to relative instead of doing so for the
ad contents container.
- The label now tries to take over the border, to do so the bottom and
right relative positions have been changed to -3px.
- To account for the position change, the label is now a bit more
padded, to make text content of it to look more or less as before,
otherwise it would shift a bit. Not sure if the padding changes are
accurate, but it does look close to how it looked before.
* Fix message again
* Update user ads position
* Remove privacy toggles (placebo and didn't do anything)
* Remove other code
* Link docs page
Co-authored-by: Sasha Sorokin <10401817+Brawaru@users.noreply.github.com>
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.
- Now styled as a proper link.
- Change :focus to :focus-visible to avoid link getting stuck in that
'hovered' state because focus does not actually change (it deffo
should though, something to fix in the future - should be one
fragment change).
- Removed all padding and transition.
resolved#608
* fixes Inconsistent donation icons and colours #608
replaces all donation png's with svg's from https://simpleicons.org
removes svg files with "-svg" at the end
* fixes the issues due to vscode formatting the code
* fixes Discord icon
fixes some formatting errors, caused by copy& from the previous commit with wrong formatting
* fixed else-if's
added Open Collective Icon
I couldn't find the icon for the Economy Category from Feather
* added unknown_donation.svg
replaced unknown donation icon
removed old unknown.svg icon
* renamed unkown donation icon for consistency
* somehow the cmmits before didn't add the new Icon
Fixed formatting issues (again)
* fixes formatting issues (I need to look into that)
* fixed else-if's that somehow got reverted
* Fix lint
* Strict equals
* Fix lint again
* New features
* Lots of bug fixes
* Fix respack creation
* Improve mobile nav with more project types
* Fix resolution sorting and remove icons
* Move cookie consent to top on small devices to get out of the way of navigation
* Move cookie consent + fix hydration
* Fix project editing + update search features
* Centralize hardcoding of loader/category names, fix cookie consent shadow, fix mobile navbar rounding
* Fix plugin platforms formatting
* Kitchen sink!
* Add support for display names
* LiteLoader formatting
* Fixed "show all loaders" toggle not resetting when changing pages
* Allow multiple loaders in version filter controls
* Fix clear filters button
* Revert "Add support for display names"
This reverts commit 370838763d86bcae51bf06c304248f7a1f8fc28f.
* Let's see how this goes. Upstream filters, attempt 1
* github? hello?
* No more "Server mod" on plugins
* Fix formatting of project types in project creation
* Move where project creation sets the resource pack loader
* Allow setting pixelated image-rendering
Allows to apply 'style' attribute to IMG tags with value
'image-rendering' set to 'pixelated', which can be useful for people who
use pixel art in their READMEs (to demonstrate items, for example).
* fix user page + hydration issue fix from Brawaru
* Rename to proxies
* Make categories use title case
* Always show project type on moderation page, improve project type display on project pages
* Remove invalid key
* Missed a check
* Fix browse menu animation
* Fix disabled button condition and minimum width for 2 lines
* Body -> Description in edit pages
* More casing consistency issues
* Fix duplicate version URLs
* Fix version creation
* Edit URLs, fix privacy page buttons
* Fix notifications popup overlaying
* Final merge fixes
Co-authored-by: Prospector <prospectordev@gmail.com>
Co-authored-by: Sasha Sorokin <10401817+Brawaru@users.noreply.github.com>
* 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>
* Overhaul of the legal pages (rules, terms, privacy policy)
Resolves MOD-90
Resolves MOD-91
* Revert changes to privacy policy & terms
The privacy policy and terms are gonna require a lot more effort to review and we just want the rules stuff in ASAP
* CI fix
* Fix the headings of all things
* Update content section of terms
* 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>
* Add note about adding multiple files to a version
Closes#545 as not planned
Related to modrinth/docs#50
* Fix note showing on version.vue when it shouldn't
* 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>
* Fix#485 by removing default loader from version filters
It's really not our place to be imposing a default loader on people, especially as we start adding more loaders
* Fix Clear Filters button and capitalise loaders
* Dependency Add fields now only accepts letters
No more annoying spaces, numbers or special characters
* Fixed problem(s)
Now it only disallows spaces
* Redo gallery controls
* Remove old css
* Geo's fixes to the gallery
* Fix filters not updating when clearing them
* Add max width to expanded images
* Center text as it gets super long
* Object-fit: cover
* Fix extra margin 😱
* Fix version dropdowns and add link hover/active colors in markdown
* Add 'Clear filters' button to version filtering
* *Actually* fix#394
* semicolon
* Improve links and search page controls... I know it looks kinda insane
* Fix donation padding Fixes#393
* Improve text field styling
* white icon
* Improve pagination and disabled button colors
* Round tab indicator
* Fix rounding of home page points card
* I hate browsers
* Change verbiage of legacy options
* Make syntax highlighting green match the brand color
* Fix version filter control wrapping and not obeying snapshot filter
* Fix checkbox hover state Closes#390
* Update components/ui/VersionFilterControl.vue
Co-authored-by: Emma Pointer-Null <emmaffle@modrinth.com>
* Fix missing hover and active states for various buttons
Co-authored-by: Emma Pointer-Null <emmaffle@modrinth.com>
* Random css variable cleanup
* Add an option for developers to temporarily switch between staging and production API
* Added a feature to expand gallery images to view them larger.
* Bundle of small fixes

- List items in project body may overflow
- Reduce margin between pagination buttons for better mobile support
- Prevent titles from overflowing in search for better mobile support
- Don't show ThisOrThats with only one item
- Fix style inconsistencies on homepage
- Add more links to homepage to docs, GH, and discord, so they can't be missed
* Appease lint
* Dryer lint isn't even the worst type of lint. It's this.
* Functionally implement modpacks
* Add LogoAnimated to logo license
* Fix eslint errors
* Add `z-index: 20` to user dropdown (#287)
* Fix pages not working, add changelog page, redesign versions page
* Update theme colors, add OLED theme, update some project creation text. (#292)
* Update theme colors, add OLED theme, update some project creation text.
* Make summary normal text color
* Update favicons, update logos to use dynamic colors, updated filters panel a bit
* Update wording from #250
* Version page rework
* Manually apply some commits from master, other minor v2 fixes (#296)
* Homepage styling improvements (#285)
* Add border radius to video + example code colors
* Change color + allow overflow scroll
* Minor v2 fixes
- Makes multiple loaders display correctly (used to be `Fabric,Forge` is now `Fabric, Forge`
- Fix oopses in #292
- Allow .jar and .zip in file prompt
- Apply 30cbd3a6c372940d1e86cc8134d0dfc7e8e5ee9c to pages/create/project.vue
- Display `fabric, forge` instead of broken icons on pages/create/project.vue
* Markdown styling fixes (#268)
* Add table color variables (+ prettier fixes)
* Add details and table styling to .markdown-body
* Add indexing meta value depending on the status of the mod. (#261)
* General UI Improvement (again) (#255)
* Add and fix some stuff
* Add warning when leaving to `mod/create`
* Fix mods/create not working
* Fix a bug & add improvements to a couple moderation aspects (#278)
This PR fixes reports on the moderation dashboard going to `/dashboard/mod/_id` instead of to `/mod/_id`.
It also allows the ability for moderators to unlist mods in the queue from the frontend instead of having to do it via the backend.

Unlisted mods should have the ability to resubmit for approval, so I've also changed "Submit for Review" to "Submit for approval", allowing unlisted mods to do that as well.

* Add project guidelines to Terms page (#275)
* Add project guidelines to Terms page
This adds the project guidelines as outlined [here](https://discord.com/channels/734077874708938864/734077874708938867/806556531491471368).
NOTE: I've made a few tweaks in wording to accommodate this format, so this is not an exact copy.
* Move rules to its own page
* Allow users to login from search page when it is rendered serverside (#272)
* Change `this.$route.fullPath` → `this.$route.path`
* Closesmodrinth/knossos#256
* Wrap mod icon and title in link (#273)
* Wrap mod icon and title in link
* Fixes#218
* Editor's note
Skipped #249 (search was rewritten), #266 (couldn't figure out how to apply it), #270 (didn't seem to apply properly), #252 (manually merged in with #292), #262 (superceded by #270), #282, #271, #277, #283, and #281 (those five didn't get wiped)
Co-authored-by: venashial <venashial.levo@aleeas.com>
Co-authored-by: Redblueflame <contact@redblueflame.com>
Co-authored-by: Johan Novak <wickedtree@wickedtree.codes>
* SSR descriptions, version edit page
* Working version editing + dependency management (besides files)
* Version create page, file functionality
* Fix some issues with the version page
* More versions page fixes
* Project gallery
* Box shadows, user profile page, WIP header
* Finish user dashboard
* Finish search and fix minor issues
* Moderator page + messages, notifications page
* Fix dropdown menu, fix XSS, fix team members page
* Change doc url on main page (#309)
* Re-Fix docs url (#313)
* Clean up. Part 1: Fix immediate problems (#316)
* Clean up tabs and cards CSS a little
* Fix project page; Remove bad styles from search
* Yeet and flatten lots of styles; fix font sizes
* Restyle search; fix moderation
* Fix profile page
* Remove injected SCSS entirely
* Fix a mobile layout overflowing
* Apiv2-support fixes (#320)
* Fix member user_id -> user.id
* Fix incorrect report redirect
* Change theme switcher from button to multiselect
* Fix remaining items
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
* Fix bugs
* Full mobile support, update create project page, fix various bugs
* New Dark Mode brand colors (#325)
* Use "color-brand-hover" for auth-prompt when hover over
* New dark mode brand colors
* Fix new version featured bug
* Remove old home page, other fixes
* Fix error when merging
* Fix prettier error :(
Co-authored-by: Jai A <jaiagr+gpg@pm.me>
Co-authored-by: venashial <venashial.levo@aleeas.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: Emma <emmaffle@modrinth.com>
Co-authored-by: Johan Novak <wickedtree@wickedtree.codes>
Co-authored-by: Jai A <jaiagr@pm.me>
Co-authored-by: Mysterious_Dev <40738104+Mysterious-Dev@users.noreply.github.com>
Co-authored-by: Mikhail Oleynikov <contact@falseresync.ru>
Co-authored-by: Christian Popov <30723811+Xrey274@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>
* Fixed xss sanitizer config for checkboxes
* Fixed typo in version navigation tree href
* Fixed navigation tabs' margins with pure css
* Prettier
For some weird reason my prettier config seems to be different
Co-authored-by: Redblueflame <contact@redblueflame.com>
* Allow iframes in markdown from acceptable sources
* Remove Discord from allowed sources
* Make youtube regex more specific
* Fix prettier not wanting new line for regex
* Extend image syntax to autodetect youtube links
* Fix image rendering to support normal images
* Specify which application file types are allowed
* Attempt two
* attempt 3
* Update version edit too
good thing these commits will be squashed!
* Fix warnings
* Remove all uses of `process.env.domain`
* Revert "Remove all uses of `process.env.domain`"
This reverts commit 5af9b83091f395d3a0f954cf6776494c1cfe7a04.
* Increase minimum amount of pages for pagination
Fixesmodrinth/knossos#231
* Detect mod search query removal
Fixesmodrinth/knossos#240
* Increase margin on project card categories mobile
Fixesmodrinth/knossos#230
This PR fixes reports on the moderation dashboard going to `/dashboard/mod/_id` instead of to `/mod/_id`.
It also allows the ability for moderators to unlist mods in the queue from the frontend instead of having to do it via the backend.

Unlisted mods should have the ability to resubmit for approval, so I've also changed "Submit for Review" to "Submit for approval", allowing unlisted mods to do that as well.

* Adjust quite a bit of wording
Also converts many title case things to sentence case (fixes#238)
* Change advised to recommended
* Oops, I missed a page
* That page too
* Missed a spot
* 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>
* Switch site to use axios base url
* Fix team invites
* Fix find/replace setting the wrong thing
* Fix analytics being blocking, small issues
* Allow base url to be set by env variable
* Order notifications and followed mods
Fixesmodrinth/knossos#195
* Add user notification badge on avatar
Closesmodrinth/knossos#145
* Add loading animation
* Chain calls, remove console.log
* Chain calls
* Fix formatting to match prettier
* Remove unused userFollows
* Create user vuex store
* Add notification count indication on dashboard
* Fix background for light mode
* Move delay check to action, add force parameter
* Slightly decrease notification badge opacity on dashboard
* Remove SVG for image masking, use border around bubble
Also adds CSS for when the dropdown is opened/hovered
* Fix merge conflicts
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.com>
* Make project cards right-align their last element
Spaces out elements in a `.project-card` using `justify-content: space-between;`.
Fixesmodrinth/knossos#170
* Automatically set URL for auth redirect
* Make login button use base url or current origin
Allows the login button to work in dev environment
* Remove Axios base URL trailing slash
* Update authUrl() on dashboard to match default
* Remove 'code' query from URL on page load
Allow non-exact paths to highlight mod & dashboard tabs
Fixesmodrinth/knossos#200
* Make page 5 button visible on page 4 (pagination)
Fixesmodrinth/knossos#184
* Color links on legal pages
Fixesmodrinth/knossos#166
* Set max notifications to 5 and ignore duplicates
Fixesmodrinth/knossos#175
* Add space above report button when no user desc
Fixesmodrinth/knossos#143
* Better text spacing from edge of mobile screen
Fixesmodrinth/knossos#179
* Fix slanted bars in modrinth/knossos#57
* Fix checkbox grid and role label
Fixesmodrinth/knossos#191
* Move mod 'settings' button to the far right
Fixesmodrinth/knossos#138
* Abbreviate minutes to min. when time is too long
Not a perfect solution imo, but works for now
Fixesmodrinth/knossos#193
* Fix mobile header margins & add breakpoints
Fixesmodrinth/knossos#203
* Clean up nuxt config
Silence babel warning & styleResources
* Upgrade sass-loader to 10.1.1 and remove warning
* Remove added horizontal footer padding
https://github.com/modrinth/knossos/pull/199#discussion_r629011624
* Improve mobile header fix
* Fix up minor inconsistencies in mod header
* Remove hard coded date
* Cleans up pagination to be more intuitive
* Fixes member invite input on moble
* Fix login button when searching mods
* Improved mobile mod search
Consistently sized pagination buttons
Breakpoint for sort buttons on smaller screens
* Consistent link style on text-only pages
* Better 4k support
* Slightly better mobile project-card support
Shuffles categories under mod icon when there is room
* Animate homepage typewriter effect backwards
* Tiny commit to align mod icons in mod headers
* Make processing status include 'Under Review'
This can be later updated once the backend has a separate status
* Create vercel.json
* Update domain auto detection
* Test vercel NODE_ENV
* Remove console.log for debugging hosting services
* Make mobile first + fix shrinked text circle size
* Optimize SVG
* Change media queries to be more mobile first
* Remove `|| window.location.origin`
* re-deploy vercel
* Change "Processing" message to "Under review"
* Add show snapshots to URL + Add snapshot checkbox
* Revert spacing changes
* Make checkbox more reusable
* Use new checkbox for team permissions
* Remove XMLNS from imags/utils SVGs
* Add client and server side categories
* Quick fix for mistyped facet
* Get rid of console.logs used for debugging
* Re-add eslint overrides
* Optimize SVG
* Simplify .includes() checks
* Add 'Switch to Dark/Light Mode' to footer (Fixes#174)
* Cursed mess
* Adds mobile header dark/light mode toggle
I do not like CSS.
Mobile works fine, desktop does not
* Remove unused div & other things I don't remember
* Fixes dark/light mode toggles on desktop
Also simplifies css for footer slightly.
Sometimes a good night's sleep really does do ya good.
https://cdn.discordapp.com/attachments/745980892735864953/835256687803367464/modrinth-2021-04-23_16.50.59.webm
* that was a mistake for the login button but it actually works well
* Fix spacing issues on mobile
* Added back linting on modules directory.
Please don't look at the dirty fixes :x
* Add support for responsive ads.
* Add lazy loading of images.
* Fix accept all button simply not working
* Switched privacy settings icons to a shield
Fixed auth changing the theme and consent
Fixed server error on log in / out
* Fixed scrolling issue on mobile
* Fixed GPDR concerns
* Add GAM integration & base for GPDR consent
* Moved consent to a specific page.
* Added functionality to the privacy page, and desactivate tracking if consent is not given.
* Added GeoEdge support, and fixed auth issues
* Fix actions issue
* Fix actions issue, attempt 2
* Added a module for analytics with consent support.
* Remove unnecessary function
* Add support for runtime config
* Added confirmation popup for account deletion
(I nearly deleted my account twice, please help me)
Added component for easy adding of new confirmation popups.
* Add confirmation popup for mod deleting
* Add confirmation popup for version & file deletion
* Changed the placeholder to a generic value
* Remove Nuxt Auth from the project, and switch to a custom solution
* Replace old testing code
* Remove warnings
* Add comments to hard to understand function calls in middleware
* Use arrow functions
* Initial tests for ghcr.io integration
* Fixed login issue
* Try with only GHCR
* Removed unused system
* Time to break everything with hub.docker.com support
* Fix format error
* Update dockerfile to use latest recommended version of nodejs.
* WIP: Added base for follow page
* Updated style for moderation page, and added label for unfollow button (not sure about that one)
* Fixed overflow issue, and width of element
* Updated npm to restore the package-lock.json file
* Created developer tools dashboard
* Remove PopUp and use inline version
* Moved developer tools to the settings tab
At request of Geo
* Fixed some bugs.
* Fix Typos and flex on buttons
* Lowercased token
* Fix button styles
* Move screenshot in-house.
* Move screenshot in-house.
* Completed Developer Settings and Added features to Settings Tab.
Also fixed the about page, updated the "alpha" mention to beta.
* Update revoke-token.vue
* Semantic HTML: Cards are now articles.
* Semantic HTML: Changed aside to header.
* Changed some references from aside to header.
* Added aria-label to left and right buttons.
* Added aria-hidden to catergory icons.
* Added aria-label to the logo.
* Added aria-hidden on more icons.
* Added aria-hidden to some icons.
* WIP: Redesign the default layout
* Merge old & new default layouts
* Fix login logic; add proper user controls dropdown
* Fix latest version listing (#31) (#32)
Co-authored-by: Aeledfyr <45501007+Aeledfyr@users.noreply.github.com>
* First pass of design cleanup
* Improve ad integration and fix light theme
* Begin splitting up variables, change some styling to new mockup
* Continue redesign progress
* Work on some more pages
* Add missing dark theme variables for text
* Continue working on modularizing
* Continue progress, redo pagination
* Fix auth buttons in navbar layout
* Continue progress
* Continue progress more
* Redo ModResult
* Scope ModPage :irritater:
* Continue Dashboard
* Continue progress on Dashboard and cleanup
* Add missing variables for dark theme
* Small tweaks, cleanup, and continue mod page progress
* Fix user not being able to see hidden mods that they own
* Start reworking mod creation
* Continue revamp of mod creation page
* Yank v-html out
* Hotfix markdown rendering and some spacing issues
* Move legal; continue with mod creation; create reusable footer
* Create README.md
* Update README.md
* Update README.md
* Add in basic usage instructions
* Fix some stuff
* Continue with mod creation; fix some CSS errors
* Start user page
* Start transition to vue-select; fix a few bugs
* Continue mod creation page
* Finish mod pages
* Add very raw version editing
* Mod editing + creation
* Fixed versions that were in processing causing a 404 (#39)
Co-authored-by: Mikhail Oleynikov <falseresync@gmail.com>
Co-authored-by: Aeledfyr <45501007+Aeledfyr@users.noreply.github.com>
Co-authored-by: Jai A <jai.a@tuta.io>
Co-authored-by: MulverineX <mulverin3@gmail.com>
Co-authored-by: diabolical17 <calumproh28@gmail.com>
Co-authored-by: Geometrically <18202329+Geometrically@users.noreply.github.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
* Replace runkit GIF with actual code on index.vue
Sometimes the GIF will not load due to a slow or crappy connection.
Syntax highlighting could be added at a later date.
* Added syntax highlighting with vue highlightJS
* Move scss to highlightjs.scss
* Introduce better syntax highlighting.
* Changed to monospace font
* 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
* Refactor ModResult to use CSS Grid
* Mobile support for ModResult
* Mobile navbar
* Mobile fixes, get rid of x overflow
* Mobile filter support
* Fully responsive
* Collapse categories view later
* Mobile-first
* Fix version selector width
* 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.
The source code of the theseus repository is licensed under the GNU General Public License, Version 3 only, which is provided in the file [LICENSE](./LICENSE). However, some files listed below are licensed under a different license.
All packages in this repository are licensed under their respective licenses. For more information, refer to the LICENSE file in each package.
## Modrinth logo
For detailed information, consult each package's COPYING.md file, if available.
Any files depicting the Modrinth branding, including the wrench-in-labyrinth logo, the landing image, and variations thereof, are licensed as follows:
The use of Modrinth branding elements, including but not limited to the wrench-in-labyrinth logo, the landing image, and any variations thereof, is strictly prohibited without explicit written permission from Rinth, Inc. This includes trademarks, logos, or other branding elements.
This includes, but may not be limited to, the following files:
Welcome to the Modrinth Monorepo, the primary codebase for the Modrinth web interface and app. It contains  lines of code and has  contributors!
If you're not a developer and you've stumbled upon this repository, you can access the web interface on the [Modrinth website](https://modrinth.com) and download the latest release of the app [here](https://modrinth.com/app).
## Development
This repository contains two primary packages. For detailed development information, please refer to their respective READMEs:
- [Web Interface](apps/frontend/README.md)
- [Desktop App](apps/app/README.md)
## Contributing
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).
## Security
If you discover a security vulnerability within our codebase, please follow our [responsible disclosure guidelines](https://modrinth.com/legal/security).
## Support
If you need help with the Modrinth web interface or app, please visit our [support page](https://support.modrinth.com). For general inquiries, you can also join our [Discord server](https://discord.modrinth.com).
## License
All packages in this repository are licensed under their respective licenses. Refer to the LICENSE file in each package for more information.
The source code of the theseus repository is licensed under the GNU General Public License, Version 3 only, which is provided in the file [LICENSE](./LICENSE). However, some files listed below are licensed under a different license.
## Modrinth logo
The use of Modrinth branding elements, including but not limited to the wrench-in-labyrinth logo, the landing image, and any variations thereof, is strictly prohibited without explicit written permission from Rinth, Inc. This includes trademarks, logos, or other branding elements.
Loaded 100 of 2503 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user
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.