* fix: fixed height on modal
* fix: conditional auto padding being applied on user avatars
* feat: allow ungrouped to be dragged
* feat: add drag handle to resize num items in jump in
* qa
* feat: add context menu submenus
* feat: hook up icon editing in sub menu
* fix: breadcrumb and sidebar not matching
* fix: bring back signal icon for ping and players online
* feat: add compact mode for library
* smaller checkmark
* pnpm prepr
* feat: bring back loader/game version sort
* add loader symbols
* refactor: compact mode with sync'd app settings
* pnpm prepr
* move loaders up
* qa
* feat: exclude loaders from randomizing
* feat(labrinth): project disclosures model
* feat(labrinth): project disclosures database model
* feat(labrinth): project disclosures get endpoint
* feat(labrinth): censor user ids if set by moderator
* feat(labrinth): wrap disclosures in struct
* feat(labrinth): edit project disclosures endpoint
* style(labrinth): cargo fmt
* style(labrinth): fix typo
* feat(labrinth): add fields for ai content disclosure
* fix(labrinth): field typo
* chore(labrinth): update query cache
* feat(labrinth): index disclosures in search
* refactor(labrinth): use enum instead of bools
* feat(labrinth): trigger incremental index on disclosure change
* feat(labrinth): change archived status to disclosure
* feat(labrinth): use disclosure for archival status
* fix(labrinth): error type for deserialization
* fix(labrinth): migration timestamp
* fix(labrinth): add disclosures to elasticsearch schema
* fix(labrinth): don't remove archival disclosure when changing status via v3 api
* feat(labrinth): derive str for ai usages and telemtry consent
* feat(labrinth): include ai usages and telemetry consent in disclosure types
* refactor(labrinth): move disclosure parsing to document creation
* fix(labrinth): prevent removing moderator added archival disclosures
* fix(labrinth): dedupe ai usages
* fix(labrinth): auth logic on archived disclosure removal
* feat(labrinth): add interactions field
* style(labrinth): cargo fmt
* feat(labrinth): soft delete disclosures
* feat(labrinth): return soft-deleted disclosures
* fix(labrinth): update disclosure on removal
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* feat(labrinth): shared instance report type
* style(labrinth): cargo fmt
* feat(labrinth): check that instance exists when reporting
* style(labrinth): cleanup unused import
* feat(labrinth): store version id for shared instance reports
* style(labrinth): satisfy clippy
* fix(labrinth): use string id instead of int
* feat(labrinth): encode/decode redis values with postcard, add version in namespaces
* chore(labrinth): split cache ex special cases without version
* chore(labrinth): simplify get_many
* fix: tombi
* feat(labrinth): compression support
* chore(labrinth): cleanup redis ser/de
* fix(labrinth): use get_deserialized in tests
* wip
* ui edits
* better logic for syncing tech review state in a single centralized place
* never automatically finish a tech review report
* fix css
* fix clippy
* prepr
* Backend routes for choosing username in OAuth flow
* fix up oauth flow routes
* improve URL-related OAuth code
* Use user-provided callback addr instead of SELF_ADDR
* Revert "Use user-provided callback addr instead of SELF_ADDR"
This reverts commit 7ea0635d86.
* fix flow
* fix: backend response for create oauth account
* feat: new auth flow (#5840)
* update auth with new designs
* refactor: auth.js to auth.ts
* refactor: componentize auth pages
* fix: auth pages height
* feat: initial implementation of new sign-in oauth
* fix create account flow
* fix checkbox
* remove hard coded username
* implement create user validation endpoint and add more specific error responses
* feat: implement under 13 DOB guard and email/password validation route
* fix: TOCTOU issue
* refactor: pnpm prepr
* fix: make sure staging uses staging
* fix: hcaptcha styles
* fix: copy
* remove: auth/welcome page as its no longer used
* refactor: bring root page card styles into individual components and use tailwind
* fix: account settings modals to use new modal and fix lots of bad styles
* refactor: pnpm prepr
* feat: implement last signed in indicator
* fix: append number when generated name from email is taken
* refactor: pnpm prepr
* fix: last sign in badge color
* fix: qa issues
* refactor: pnpm prepr
* fix: hover effect on native date picker
* chore: temp staging undo
* Revert "chore: temp staging undo"
This reverts commit cad6bd4f92.
* feat: handle app create account
* fix: last signed in style
* fix: add initOnMounted for SSR race
* refactor: use typescript
* refactor: pnpm prepr
* refactor: use typescript for reset-password
* refactor: convert verify-email to use typescript
* refactor: convert authorize.vue to use typescript
* fix: authorize.vue error states
* feat: small style updates
* feat: implement date picker component
* feat: improve UX and styles for range select
* refactor: pnpm prepr
* fix: range select border styles
* feat: implement date picker component in create account
* feat: implement preserve date for date picker
* update rust toolchain
* increase recursion limit
* fix: date picker can be null
* fix: calculate age based on user's timezone
* fix: number input icons color
* fix: date picker icons
* feat: improve styles
* fix: add width on date
* fix: hover color bad on number input
* fix lints
* feat: add default date open view
* fmt
* fix: account.vue
* fix: remove default date to open 13 years ago
* fix: edit copy on info banner
* fix: cannot hover over project card tooltip items (#6071)
fix: cannot hover over project cards
* feat: improve add dependency flow (#6075)
* fix: shadow on nav
* feat: improve add dependency flow
* feat: update suggested dependency style
* feat: update dependency rows to use version number and update styles
* feat: implement combobox select searched text on focus
* feat: add Tabs.vue
* feat: update nav tabs to use tabs
* feat: improve project search dropdown
* fix: dependency search not clearing inbound query
* fix: combobox no options open state bug
* feat: improve dependency project and version search
* fix: open modrinth project links in the app (#6072)
* pin tanstack versions + set pnpm min age to 7 days
* squash commits
* fix: 2 factor auth enter code screen styles
* update copy
* update copy
* improve reset password
* feat: update sign in screen
* fix: unused import
* Merge branch 'main' into boris/dev-908-backend-changes
* Revert "Merge branch 'main' into boris/dev-908-backend-changes"
This reverts commit b9b03796e3.
* fix: add stroke
* feat: add passkey support (#6375)
* feat: add passkey backend
* feat: passkey frontend
* invalidate sessions on compromised passkey
* chore: run sqlx prepare
* fix: make passkey button use both collumns to prevent empty space
* fix: correctly verify max passkeys in finish route
* fix: use structs for response
* fix: add rp name default
* style: use web::Json
* fmt
* feat: improve manage passkeys UI
* fix copy
* pnpm prepr
---------
Co-authored-by: tdgao <mr.trumgao@gmail.com>
Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com>
Co-authored-by: Michael H. <michael@iptables.sh>
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
Co-authored-by: Calum H. <calum@modrinth.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: DeDiamondPro <67508414+DeDiamondPro@users.noreply.github.com>
* Begin external projects moderator database frontend
* add copy link button
* begin project page permissions settings
* MEL database backend routes
* include filename in external files
* wip: when uploading a version file, fetch its overrides as a list
* wip: override license checks
* improve FileHost ref counting
* file host read capability
* scan files when inserting version file
* add dependency sha1 field
* clean up version files
* wip: attributions
* update s3 file host
* attribution scanning basic works
* works
* insert attribution info after resolving
* add routes
* remove dep sha1 stuff
* prepr
* wip: override file sources
* add files_missing_attributions to versions
* return extended version info + attributed at/by
* hook up frontend to backend (mostly)
* expose version date published
* withholding version visibility
* frontend work
* prepr
* use api-client for img upload
* moar frontend
* prepr
* Add schema to attribution resolution and Flame project results
* sqlx prepare
* changes
* remove feature flag, fix optional proof images
* fix schema
* fmt
* fix deletion and file fetch
* prepare
* fix admonition
* update frontend stuff to new schema
* prepr
* attribution on dependencies
* fixes
* sqlx prepare
* fixes
* routes
* fix routes
* Version grandfathering
* prepare
* wip: bulk routes
* pushing what i've got rn
* include link in NoPermission
* change hash insert to bulk route
* query flame even if entry in MEL
* delete file with weird name
* Prioritise putting override files in existing groups even with ExternalLicense
* fix how hex bytes are handled in route
* feat: coolbot moderation changes (#6215)
* Update moderator checklist
* move permissions stage order
* Updated nagContext.versions to v3, added nag for permissions
* Update permissions.vue default messages
* prepr
---------
Co-authored-by: coolbot100s <76798835+coolbot100s@users.noreply.github.com>
* QA
* prepr
* should group by project
* return attribution resolution correctly
* updated by moderator info
* Track what moderator reviewed an attribution moderation status
* default deser FMA field
* new version page
* clean up fetching + add a couple missing features
* qa items
* prepr
* provide moderation package stuff with DI
* format?
* don't redact moderated_at
* move supplementary resources
* Reorganize moderation messages.
* Quick replies for external content permissions.
* prepare
* QA
* allow exempting projects
* Ignore Flame projects which 404
* fix ci
* fix cross project attribution stuff
* Fix permission error
* change what files get cscanned
* add more logging
* QA Jun 22
* fix
* idempotency
* Expose route for rescanning
* update blog link
---------
Co-authored-by: aecsocket <aecsocket@tutanota.com>
Co-authored-by: coolbot100s <76798835+coolbot100s@users.noreply.github.com>
Co-authored-by: aecsocket <43144841+aecsocket@users.noreply.github.com>
* Allow filtering by project IDs in analytics route
* Download meta info in header
* add recursion limit
* Track playtime country
* fix clickhouse migrations
* fix: link to user using id instead of username
* feat: show org in project card
* fix: account for outdated documents
* refactor: use struct to store owner information
* fix: default new fields
* fix lint
* wip: add v2 docs, routes to config, paths
* fix up path prefixes
* fix leading slashes
* fix slash route
* fix more slashes
* wip: full utopification of v2
* convert last few v2 routes to utoipa
* Improve ping impl to bring parity to app lib impl
* Fix issue with new impl
* fix labrinth compile
* wip: why do servers not provide server info..
* Fix ping impl overriding port
* fix theseus_gui
* remove unneeded recursion lmit
* initial elasticsearch impl
* working elastic cluster
* replace SearchError with ApiError for preparation of search backend
* start factoring meili out to trait
* move meili to backend
* update routes to use search backend trait
* wip
* Update projects.rs
* search backend is only init'd once in config
* wip
* wip: backend agnostic
* change search internal routes to delegate to backend
* initial elasticsearch impl
* fix filtering
* elastic impl
* refactor indexing into its own module
* clean up elastic code
* fix ci
* fix tests
* fix elastic health check
* fix up env rebase
* fix compile
* dummy commit to update github pr
* Fix rebase
* Elastic basic https auth
* Fix duplicate projects showing up
* Fix up tests
* Replace search `ApiErrors` with `eyre::Reports`, propagate background task errors
* clean up agents files
* make index chunk size configurable
* make `match_phrase` in elastic case-insensitive
* use current/next indices and swap between them
* test case for error body
* Fix failing case
* da merge
* factor out common stuff from search backends
* allow fetching hit metadata from search results
* allow customising elasticsearch search config
* bit of docs
* add mappings to indices for elastic
* Implement Typesense
* wip
* fix up some sort fields stuff
* use different approach to filterable field sets
* remove a bunch of search fields which weren't used for filtering
* bucket text matches
* Bucketing by text_match for typesense
* fix tombi lint
* fix some sentry errors and dont prioritise 2+ term matches
* tweak ts query settings
* expose some more search settings
* query sort changes
* small fixes
* should fix pagination stuff
* fix healthcheck maybe
* ragebait ci
* tests
* tests
* revert environment
* Harden minecraft-server-play analytics
* Verify based on mc token
* Fail for non-server projects
* Nitpicks and factor out HTTP client
* Allow passing old minecraft_uuid field for clients
* Remove server play analytics test since it relies on auth against Minecraft API which I don't want to mock :(
* Switch to using hasJoined for uuid validation
* Fix formatting
* Fix sessionserver status code
* Ensure profile name and queried username matches
* replace some wrap_request_errs with internal errs
* add HTTP client into web::Data
* short timeout on client-side session join query
* further fixes
* sqlx prepare
* fix clippy
---------
Co-authored-by: Creeperkatze <178587183+Creeperkatze@users.noreply.github.com>
Co-authored-by: aecsocket <aecsocket@tutanota.com>
* Vendor async-minecraft-ping and fix servers returning protocol version -1
* Don't have automod reject server projects
* fmt
* Add region to search facets
* remove AMP .github
* Tweak search sorting
* Tweak search sorting
* fix ping impl
* remove port field, add server regions
* fix compile
* fix tests
* update frontend banner upload size limit
* feat: use server project region instead of country
* remove java and bedrock port in frontend
* add helper text
* allow filtering by if server is online
* add server status online offline filter
* use region in instance
* pre-collapse status in app discovery
* pnpm prepr
* remove server discovery flag
* add servers into mobile nav tabs
* parse port from address if present
---------
Co-authored-by: tdgao <mr.trumgao@gmail.com>