* feat: start on blogpost
* feat: images for post
* fix: grammar + prerender news + changelog
* feat: add discovery in app vid
* fix lint
* rename new blog md to match title
* fix assets directories
* remove left over compiled files
* update thumbnail
---------
Co-authored-by: tdgao <mr.trumgao@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* 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>
* fixes
* #[serde(untagged)] my BEHATED (still kinda broken)
* remove unused hasContent ref
* clean up code in fetch instance
* ping 3 times for average latency
* fix: pinging to be more accurate
TCP_NODELAY — Set on the TCP stream right after connect, preventing Nagle's algorithm from buffering the small ping packet (could save up to ~40ms)
Instant over Utc::now() — Switched to monotonic std::time::Instant for timing, which is more precise and designed for measuring elapsed time (still using chrono just for the ping magic value)
* delete useFetch util and just use native fetch
* rename worlds until functions for more clarity
* fix lint
* fix cache.rs logic
* make backend ping use both impls
* Add optional timeout to server ping
* fix gallery appearing in nav with no items
* remove EU countries and add EU option for server country
* add uk to europe
---------
Co-authored-by: aecsocket <aecsocket@tutanota.com>
* ping queue with tests
* mc ping server info + timeout
* sqlx prepare
* tombi fmt
* tombi fmt
* allow querying server ping data
* fix shear
* wip: resolve comments with pings
* Switch to Redis for server pings
* tombi fmt
* fix compile error
* clear cache on project ping, add server store link
* Schema changes
* Improve server messages for app pinging
* synthetic server project version for search indexing
* wip: clean up server ping, background tasks
* fix migration to sync with main, propagate background task errors
* wip: server modpack content query, components in search
* wip: massive component query refactor
* fix more defaults stuff
* sqlx
* fix serde deser flatten
* fix search indexing not showing fields
* remove leftover prompt
* fix import
* add diff detection for version dependencies without version_id/project_id
* move servers tab to end
* hide app nav tabs if only one tab
* fix undefined property
* on click link for server side bar info
* show recommended & supported versions for vanilla
* fix how install.js installs instance with modpack content title instead of server project title and dont fetch icon when installing to existing instance
* use large play button instance
* show update success instead of launching right into the game
* add global installing server project state
* add comment
* small change: open discover to modpack
* implement ping server projects for latency in app
* add projectV3 to nag context for moderation package
* fix play server project button when instance is launched
* add ping to project header
* wip: server verified plays
* server verified plays compiling
* queue up server plays in batches
* report server plays improved in frontend
* fixes to tracking server joins
* fix: server project detection to do loose null check
* fix server projects showing license
* fix empty server info card
* fix server projects links title
* Fix backend impl for server player count analytics
* fix: allow for links to be set to empty
* hook up server recent plays
* cargo sqlx prepare
* add project sidebar stories
* feat: update project sidebar server info card to new design
* update server project header and project card
* feat: add hide label for project cards
* feat: add tags sidebar card
* small fix to keep color consistent
* fix: remove required content tab from server project page
* many small fixes
* handle locking server instance content
* fix hiding modal after saving server compatibility version
* copy content card item and table from content tab update branch
* fix nav tabs active tag
* fix switching between server instance vs regular instance persisted invalid state
* fix a lot of the bugginess of navtabs when theres hidden/shown tabs between instances. match frontend nav tabs
* hook up backend searchfor frontend in websiet
* fix: server project card tags
* hook up search v3 in app backend for app frontend
* Don't return missing components in project query
* Add game versions to server filters
* move reporting server joins to backend
* send account UUID along with server play analytics
* update java server ping schema
* feat: implement use server search for search sorting and filter facets
* pnpm prepr
* fix game version filter facet
* fix: allow java and bedrock addresses to be deleted
* feat: hook up languages
* Default deserialize `ProjectSerial`
* feat: show server project tags
* small fix on languages multi select
* also default java server content
* fix: update compatibility modal not closing after successful upload
* remove play button in website discovery for servers
* reenable fence in app backend
* update online/offline tag
* add online status indicator pulsing
* revert pulsing
* disable link for custom modpack project and show tooltip
* change modpack to modded type
* update ip address entire button to be clickable
* polish server info card styles
* make offline tag red and properly hook up online tag
* move server related settings into own tab
* fix setting project compatibility resets unsaved changes
* fix javaServerPatchaData wiping content field
* updates to compatibility card, add download button and display supported versions better
* fix unsaved changes popup for tags
* remove console.log
* fix incorrect project type in projects in dashboard
* fix: savable.ts to reset currentValues to data() after save
* upload server banner as gallery image with title == "__mc_server_banner__" and filter it from frontend gallery
* fix error handling and helper text copy
* ensure gallery banners are filtered in app backend gallery display
* add grouped filters for search
* add query params for server search
* feat: deep linking to open server project page then open install to play
* fix search in app frontend
* fix: server project showing offline
* fix: profile create error app backend
Here's what was happening and the fix:
Root cause: In create.rs:107, profile_create assumed the icon_path parameter was always a local filename relative to the caches directory. It did caches_dir().join(icon) which produced a path like ...\caches\https://staging-cdn.modrinth.com/... — the colons in https:// are illegal in Windows paths (OS error 123).
The frontend's installServerProject and createVanillaInstance in install.js:290 both pass project.icon_url (a full URL) directly as the icon parameter.
Fix: Modified profile_create to detect when the icon parameter is a URL (starts with http:// or https://). When it is, it downloads the icon via fetch(), extracts the filename from the URL path, and passes the downloaded bytes and filename to set_icon() which hashes and caches it properly. The existing local-file path continues to work as before.
* pass undefined instead of unknown for modpack content modal
* fix: wrong way to determine offline status
* delete required content page placeholder
* fix: redirect running function instead of passing function
* add in wiki page
* fix diffs which have unknown project/filename
* pnpm prepr
* feat: add handling for "stop" instance state for server project card and page play button
* fix updating modpack shouldn't launch right into game
* small fix on external icon
* fix refresh search causing infinite rerender i.e. maximum call stack size exceeded
watch(route) → watch(() => [route.query.i, route.query.ai, route.path]) (line 102): The deep watch on the entire Vue Router route object was the most likely cause of the stack overflow. Vue Router's route object contains matched records with component definitions and other deeply nested structures. Deep-watching it triggers recursive traversal on every route change (including those from router.replace() inside refreshSearch()). Now it only watches the specific properties that updateInstanceContext() actually needs.
ref → shallowRef for serverHits and serverPings (line 189-190): The v3 search results can be deeply nested objects (minecraft_java_server.ping.data, content, etc.). Using shallowRef prevents Vue from creating deep reactive proxies on these objects, which is consistent with how results already uses shallowRef on line 295.
Re-entrance guard + try/catch on refreshSearch() (line 310): The watcher calls refreshSearch() without awaiting, so state changes during the async execution could trigger the watcher again, causing concurrent calls. The guard prevents overlapping calls, and the try/catch ensures loading.value = false is always reached (fixing the infinite loading).
* don't require auth token for logging server play
* fetch latest server player count from redis instead of search doc
* remove components. in search facet
* Category and search sort fixes
* add logging for refreshSearch in browse.vue
* fix: use windows.history.replace instead of router.replace due to vue production bug and remove logs
* fix: server refresh search reactivity
* fix: type errors
* conquer the type errors in Browse.vue
* update search input background
* fix tags location
* slight change to color
* feat: add linked to modpack project for regular modpack instances
* feat: installation tab updates
* fix: copy ip missing hover effect
* feat: implement category and countries negative filters
* fix servers tab label in profile page
* implement add server to instance
* feat: implement allow editing server instances
* update installation settings to handle vanilla server instance case
* hide servers tab when installing content to instance
* add sorting for user installed content to be top of list in content
* update categories filters from one group filter card to separate filters cards
* add active scale
* fix offline server showing online
* update language display
* update tooltip
* hide navtabs if theres only one tab
* fix: modpack content name truncate in project card
* feat: add server projects to moderation queue
* update redirect middleware no longer needs projectV3
* update comment
* fix: server tags labels
* feat: add the mf icons finally
* Revert "update redirect middleware no longer needs projectV3"
This reverts commit 1289cb5286.
* fix open in browser
* revert any handling for handling base linked modpack content for content tab
* update instance online players to be client ping
* fix showing modpack/loader version for server instance in installation settings
* server projects are not marked as modpacks
* skip license check for server projects
* feat: add the concept of linked worlds for server instances and keep in sync with server project
* fix: router.push doesn't add history state, use nagivateTo instead
* fix: get server modpack content wrong link
* update some categories to default collapse
* small fixes
* optional languages & bedrock
* move creator below tags
* sort linked worlds to be first
* add red orange and green ping variants
* bring back content tab
* add download button in required content in app
* fix: server info card loading
* fix: brief flash of normal project before server project stuff loads in
* misc fixes
* invalidate project v3
* fix unused imports
* Quick pass for moderation related changes (#5429)
* filter certain nags out from server projects.
* move add-links nag to links.ts
* first few server related nags
* moderation checklist groundwork
* Prevent undefined stage from appearing on servers.
* add projectV3 to shouldShow callback
* Filter buttons by server project type
* fix, revert private use msg, adjust server & link nags
* starting tags + servers msg
* fix no projectV3
* fix: router.push doesn't add history state, use nagivateTo instead
* Tags nag works with servers now
* support servers' v3 exclusive links
* reupload, and status messages + nag tweaks.
* fixes
* Update tags.vue warning for server projects.
* don't suggest adding a bedrock IP
* Tweak phrasing on servers alert msg
---------
Signed-off-by: Truman Gao <106889354+tdgao@users.noreply.github.com>
Co-authored-by: tdgao <mr.trumgao@gmail.com>
Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com>
* only show unique tags in project card
* add projectV3 to cache purge
* fix type: add projectV3 to cache purge
* update caching behaviour for installing
* max 3 plays per user
* accept date_modified and date_created for sorting
* add locking environment filter for server instance and update copy
* custom pack button only shows when needed (#5444)
* expose server pinging route to frontend
* feat: add server field validation with pinging on unfocus
* improve pinging logs
* try another pinging crate
* small fixes
* prefill published project id for updating published project
* fix running app bar for mac
* cargo sqlx prepare
* fix app login avatar
* pnpm prepr
* fix download menu for mac
* FIX CI
* fix lint errors
* cargo fmt
* fix toml
* fix more lint
* add server copy
* more lint
* fix any types
* also ping unlisted and private servers
* fix lint
* remove option for showTypeSelector
* fix cannot read user from undefined
* pnpm prepr
* update pinging to make it better
* update copy
* fix login cache issue
* add project select default icon
* fix: minecraft_java_server not redirecting
* pnpm prepr
* fix required content card in project page for custom modpack
* fix app project cards custom modpacks
* update pre-collapsed for app frontend
* don't send server projects to discord webhook
* add lock icon to linked world managed by server project
* pnpm prepr
* make automod msgs on server projects private
* fix pagination for server projects tab
* fix recent plays copy
* fix sync linked world with server project
* pnpm prepr
* add 0.11.0 changelog
* update date
---------
Signed-off-by: Truman Gao <106889354+tdgao@users.noreply.github.com>
Co-authored-by: aecsocket <aecsocket@tutanota.com>
Co-authored-by: coolbot <76798835+coolbot100s@users.noreply.github.com>
* fix FK violation when inserting rows into `notifications_deliveries`
* add test for FK violation when inserting into notifications_deliveries
* sqlx prepare
* add migration to prevent stale notifications from being dequeued all at once upon fix
* Revert "add migration to prevent stale notifications from being dequeued all at once upon fix"
This reverts commit 446f398752.
* fix: session refresh works as intended now
* use code-defined defaults for expires and session_expires
* fix sqlx
* database migration drop defaults
* run fmt
* remove comment in migration
Signed-off-by: Xander <xander@isxander.dev>
---------
Signed-off-by: Xander <xander@isxander.dev>
* Don't enter project into tech review if no new traces
* Send tech review exited message if files are deleted
* change PATCH /issue-detail/{id} to batch update details
* Fix sorting
* store delphi jar in backend
* show jar in tech review card
* improve jar display in frontend
* Fix live/in review label for tech review cards
* sqlx prepare
* polish: decode segments + code qual fix
* fix: skip first seg
* fix: only slice if needed
* Fix tech rev card styling
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
* wip: better env var reading
* move most env vars to env.rs
* migrate more env vars
* more migration
* more migrations
* More migration
* 🦀 dotenvy is gone (almost)
* 🦀 dotenvy is gone 🦀
* Fix mural source account env var handling
* Remove defaults from admin key vars
* dummy commit to update github pr
* fix ci
* handle modpack upload with no loaders
* restrict loaders for modpack
* actually, dont allow modpack loaders to be editable
* revert loader picker changes
* fixmodrinth/code#5243: detect file data on multi-part uploads
* fix return early not making handlingNewFiles = false
---------
Co-authored-by: Calum H. <calum@modrinth.com>
* fix: dev-741 currency exchanging bug
* fix: remove redundant balance available check
* fix: lint/fmt
* fix: #5245
* fix: hide max if it's less than min
* Workflow changes
* Propagate app_identifier via State
* Remove old updater stuff
* Remove patch file
* Remove unused binding
* Fix application loading
* Don't sign windows binaries by default
* Remove the damn emojis
* Figure out where windows artifacts are
* Fix windows artifacts
* fix: environment not showing when has mod loaders
* fix: weird snapshot format by only grouping consecutive tags with 3 or more
* fix: 26.1 snapshots not grouped properly in mc version picker
* remove debug console.log
* feat: base content card component
* fix: tooltips + colors
* feat: fix orgs
* feat: add ContentModpackCard
* fix: extract types
* feat: selection v-model
* add show icon in selected for combobox with stories
* feat: add project combobox
* clean up project combobox
* feat: start install to play modal
* fix: events
* feat: figma alignments
* feat: migrate toggle to tailwind
* fix: row borders
* feat: disabled state
* feat: virtual list impl for card table based on window scroll
* fix: lint
* feat: virtualization + smaller contentcard items
* feat: fix gap + border issues on last elm
* fix: use TeleportOverflowMenu
* fix: hasUpdate type
* fix: fallback to svg if src is invalid on avatar component
* fix: storybook
* feat: start on updater modal
* feat: finish content updater modal
* feat: i18n pass
* remove install to play modal from ui package
* pnpm prepr
* feat: reusable table component
* feat: add column width prop for table and fix stories
* feat: add table overflow menu story example
* feat: add surface-1.5 and use in table
* chore: export table in index
* fix: allow more loose typing on columns
* feat: update table component to derive key from column instead of data
* feat: surface 1.5 for oled + refactor story for contentcardtable + yeet sorting funcs
* fix: lint
* feat: add no padding story for new modal
---------
Signed-off-by: Calum H. <contact@cal.engineer>
Co-authored-by: tdgao <mr.trumgao@gmail.com>
* Make tags translatable, move icons to frontend, a few other things
* Migrate more things
* fix import
* more import fixes
* export tag-messages
* lint
* fix: project data saving not visually shown immediately
* feat: useSavable improvements
* feat: migrate where possible to useSavable
* fix: gitignore
* feat: use es-toolkit
* feat: show update available notif for modrinth app in linux
* remove changelog button
* update copy
* pnpm prepr
* add restart app changelog
* pnpm prepr
* use env var to check for updates are disabled
* update copy
* pnpm prepr
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* feat: ssr fixes
* feat: lazy load non-core data
* feat: ssr timing debugging
* feat: go back to all parallel
* feat: migrate to DI + set up mutators
* feat: remove double get versions request, only call v3
* refactor: [version].vue page to use composition API and typescript
* feat: gallery.vue start
* fix: remove left behind console log
* fix: type issues + gallery
* fix: versionsummary modal + version page direct join
* fix: projectRaw guard
* fix: currentMember val fix
* fix: actualProjectType
* fix: vers summary link same page
* fix: lint
---------
Co-authored-by: tdgao <mr.trumgao@gmail.com>
* feat: make hosting marketing page translatable, part 1
* format what we've got so far
* lint and fix locale setting
* the rest of the owl, almost
still one more message in MedalPlanPromotion that's a bit annoying because of all the inline styles
* finishing touches
some things just shouldn't be questioned, i guess. that's two for two on issues that occur even though i seem to have done everything right. i give up
* whoops, that's literal
* get back in the span, you
* fix typo + lint
* and now it works
* one more fix
* feat: filtering + sorting alignment
* polish: malicious summary modal changes
* feat: better filter row using floating panel
* fix: re-enable request
* fix: lint
* polish: jump back to files tab qol
* feat: scroll to top of next card when done
* fix: show lock icon on preview msg
* feat: download no _blank
* feat: show also marked in notif
* feat: auto expand if only one class in the file
* feat: proper page titles
* fix: text-contrast typo
* fix: lint
* feat: QA changes
* feat: individual report page + more qa
* fix: back btn
* fix: broken import
* feat: quick reply msgs
* fix: in other queue filter
* fix: caching threads wrongly
* fix: flag filter
* feat: toggle enabled by default
* fix: dont make btns opacity 50
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Implement replied/unreplied filter for tech review
* project status filter
* wip: issue type filter
* correct filter field
* wip: break up tech review query
* Improve tech review query
* Get tech review working more properly
* Add get single project reports endpoint
* Write to many Meilisearch write addrs
* Keep client results ordered
* Attach Read Meilisearch client to actix data
* Load balanced meilisearch Compose profile
* Nginx config (round_robin)
* Fix nginx
* Meilisearch + nginx in same net
* Fix env vars example
* Fix env example again
* Fix env again
* Use try_collect with FuturesOrdered
* maybe fix remove_documents
* Clippy
* fix: dont remount components for project page every time route changes
* remove ts from macro
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* update dependencies step to show when cannot detect suggested dependencies
* rollback environment to previous copy
* implement disable close when uploading in modal
* pnpm prepr
* update add files copy and go to next step on just one file
* rename and reorder stages
* add metadata stage and update details stage
* implement files inside metadata stage
* use regular prettier instead of prettier eslint
* remove changelog stage config
* save button on details stage
* update edit buttons in versions table
* add collapse environment selector
* implement dependencies list in metadata step
* move dependencies into provider
* add suggested dependencies to metadata stage
* pnpm prepr
* fix unused var
* Revert "add collapse environment selector"
This reverts commit f90fabc7a5.
* hide resource pack loader only when its the only loader
* fix no dependencies for modpack
* add breadcrumbs with hide breadcrumb option
* wider stages
* add proper horizonal scroll breadcrumbs
* fix titles
* handle save version in version page
* remove box shadow
* add notification provider to storybook
* add drop area for versions to drop file right into page
* fix mobile versions table buttons overflowing
* pnpm prepr
* fix drop file opening modal in wrong stage
* implement invalid file for dropping files
* allow horizontal scroll on breadcrumbs
* update infer.js as best as possible
* add create version button uploading version state
* add extractVersionFromFilename for resource pack and datapack
* allow jars for datapack project
* detect multiple loaders when possible
* iris means compatible with optifine too
* infer environment on loader change as well
* add tooltip
* prevent navigate forward when cannot go to next step
* larger breadcrumb click targets
* hide loaders and mc versions stage until files added
* fix max width in header
* fix add files from metadata step jumping steps
* define width in NewModal instead
* disable remove dependency in metadata stage
* switch metadata and details buttons positions
* fix remove button spacing
* do not allow duplicate suggested dependencies
* fix version detection for fabric minecraft version semvar
* better verion number detection based on filename
* show resource pack loader but uneditable
* remove vanilla shader detection
* refactor: break up large infer.js into ts and modules
* remove duplicated types
* add fill missing from file name step
* pnpm prepr
* fix neoforge loader parse failing and not adding neoforge loader
* add missing pack formats
* handle new pack format
* pnpm prepr
* add another regex where it is version in anywhere in filename
* only show resource pack or data pack options for filetype on datapack project
* add redundant zip folder check
* reject RP and DP if has redundant folder
* fix hide stage in breadcrumb
* add snapshot group key in case no release version. brings out 26.1 snapshots
* pnpm prepr
* open in group if has something selected
* fix resource pack loader uneditable if accidentally selected on different project type
* add new environment tags
* add unknown and not applicable environment tags
* pnpm prepr
* use shared constant on labels
* use ref for timeout
* remove console logs
* remove box shadow only for cm-content
* feat: xhr upload + fix wrangler prettierignore
* fix: upload content type fix
* fix dependencies version width
* fix already added dependencies logic
* add changelog minheight
* set progress percentage on button
* add legacy fabric detection logic
* lint
* small update on create version button label
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Worker migration
* Deploy on pnpm changes
* Specify package manager
* Manually bump Wrangler to 4.54
* Get rid of useless Wranglers worker
* I take it back
* Set account ID
* Fix preview alias
* feat: use workers api key
* feat: try fix
* fix: missing imports
* fix: again
* fix: only run push workflow on main or prod
* feat: remove store id?
* Populate secret store IDs
* Use correct key name
* Fix setting PREVIEW variable
* Inject variables from wrangler into shell
* Inject variables from wrangler into shell
* Add git- prefix to preview-alias
* No need to use environments now
* fix: remove test as it's covered by staging deploy
---------
Co-authored-by: Michael H. <michael@iptables.sh>
* fix hydration error in moderation queue
* disabled moderation button when no projects
* fix circular prop type issue
* Make moderation checklist clientonly
* Change input mode and types and modes for sign-in form
-Added the inputmode of "email" to tell mobile browsers to change to the email keyboard for username/email input
-Added the inputmode of "numeric" to tell mobile browsers to change to the numeric keyboard for 2fa input (https://www.w3schools.com/TAgs/att_inputmode.asp)
-Changed two-factor code input type to "numeric" to provide a greater hint to autofill that this is where they should fill in 2fa codes
Signed-off-by: MIfoodie <94649676+MIfoodie@users.noreply.github.com>
* Clean up whitespace in sign-in.vue that I accidently added :)
Removed extra whitespace before the Google authentication link.
Signed-off-by: MIfoodie <94649676+MIfoodie@users.noreply.github.com>
* Change input type from 'number' to 'text'
Signed-off-by: MIfoodie <94649676+MIfoodie@users.noreply.github.com>
---------
Signed-off-by: MIfoodie <94649676+MIfoodie@users.noreply.github.com>
Co-authored-by: Calum H. <contact@cal.engineer>
* add a throttle on populate jump back in list
* Revert "add a throttle on populate jump back in list"
This reverts commit b3e7f51b34.
* only allow populate jump back in list to run 3x on linux
* add temp debug logs
* Revert "add temp debug logs"
This reverts commit 8c5ec42fa3.
* only allow 3x refresh limit for worlds list as well
* Provide more specific payout method names on frontend
Been getting a lot of confused tickets recently of people withdrawing to PayPal but then not recognizing what "Tremendous" means. This should clarify things.
* feat: improve icons + names for withdrawals
* Update apps/frontend/src/components/ui/dashboard/RevenueTransaction.vue
Co-authored-by: Emma Alexia <emma@modrinth.com>
Signed-off-by: Calum H. <hendersoncal117@gmail.com>
* fix: icons
* fix: object cover
* feat: icons for crypto + bank
* fix: remove empty null
* fix: qa
---------
Signed-off-by: Calum H. <hendersoncal117@gmail.com>
Co-authored-by: Calum H. <contact@cal.engineer>
* update reports message to the correct support bubble color
* update checklist to direct to new settings pages and use v3 env info
* fix: project v2 + v3 in moderation checklist funcs
* Split environment stage if project uses mixed environments.
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
* add edit versions dropdown menu
* implement improved edit version with individual edit stages
* make changelog bigger
* update button styles
* remove hover button when hover on row
* bring editing versions back to project settings
* bring back gallery edit and upload in project page
* fix progress value
* fix admonition import
* fix v3 upload for modpacks
* fix modpack loader display for editing version and better open edit/create modal handling
* fix currentMember prop
* fix modpack loader displaying incorrectly
* fix max length
* fix version url after making an edit to version and fix delete
* small max height fix
* hide edit dependencies for modpack
* pnpm run fix
* fix import
* add tooltip
* update icons
* update copy and create version button style
This would conflict with the flattened kind: PaymentRequestMetadataKind
enum, which itself is internally tagged with "type", leading to two
"type" fields being serialized, confusing the deserializer.
Deserialization would fail, be silenced in the stripe webhook and lead
to the incorrect region being assigned to a server.
* start modal, working show modal
* add stages and implement MultiModalStage component
* add project versions context and add file button
* implement add files stage
* export interfaces
* move MultiStageModal to /base
* small update to file input
* add version types to api-client
* wrap version namespace under v3
* implement add details stage fields and loaders component
* start create MC versions stage
* implement changelog stage and bring width into a per stage concern
* implement loader picker with grouping
* improve grouping and sorting for loader picker
* use chips component
* small updaets
* fix loader icon color
* componentize mc version picker
* initial version of shift click to select range
* use newModal for markdown editor
* start add dependencies stage with search
* implement showing mod options in search
* componentize modselect and add version/dependency relation select
* hide version and dependency relation when no project selected
* fix project facet search
* implement api-client versions requests
* fix search api request facet type to be string
* fix new modal outer container scroll
* implement add dependency stage
* fix parse error
* add placeholders
* fix types
* update dependency row styles
* small change
* fix the types on manage versions to be correct with labrinth request bodies
* fix create version file parts
* use draft version ref in flow and implement proper file handlling
* use draft version ref for mc versions select
* implement reactive modal state and conditionally disabled next buttons
* ensure all data is using draftVersion ref
* remove shift click to select range since it sucks
* fix up add dependencies stage state/types
* small fixes
* implement adding dependencies connected to api calls and make adding dependencies work
* add final create version button config
* start create version backend call and bring versions table to project settings
* set add files stage width
* remove version file upload in project page
* small fix
* fix create version api call
* implement error handling
* implement mc versions search
* implement showing all mc versions
* small fix
* implement prefill data
* add success notification
* add cancel button
* add new dropzone file input
* run pnpm run fix
* add tailwind preset in ui package
* polish file version row
* fix modal widths
* hide added versions when no versions added
* implement add loaders stage
* implement small chips and small fixes
* implement grouping for all releases
* implement new all releases grouping
* implement better shift click for version select
* small fixes
* fix search input style
* delete versions provider and start project type inferring
* implement getting project type
* add versions empty state, add folder up icon and pnpm run fix
* implement create version in project versions table
* update side nav
* implement dynamic create version flow depending on project type and detected data
* add id to stages and fix calling setStage not working
* move added loaded out of loader picker
* remove selected and detected MC versions
* add loading message to dependency search and fix dependency type always being "required"
* fix components in ref
* fix width on dropdown
* implement toggle all mc versions based on state of last in range
* fix mc version text colour
* do proper clean up
* update loaders to use tag item
* update UI to use TagItem and better match styles
* handle detected data when setting primary file
* add progress bar
* hide progress bar for non-progress stage
* add loading state on submit
* properly cache dependencies projects/versions
* pnpm run fix
* add dragover show purple border on dropzone file input
* better handle added dependencies
* move versions in side nav
* implement adding file type
* fix api body format for file type
* implement working edit existing version
- working add/remove file
- working edit version details
* a step towards proper versions refresh
* add gallery to project settings
* actually figured out refresh versions
* move checklist into settings page
* remove editing version from version page and add button to versions table in project settings
* remove edit and delete buttons from gallery in project page
* add empty state messages for project page
* add default scroll bar styles
* implement support for new file types
* remove edit from dropdown in project page versions table
* redirect to settings page
* move changelog to row with actions
* fix overflow on added dependencies
* fix redirect
* update scroll styles
* implement add environment stage (create and modify version not persisting environment to backend)
* small style fixes
* small spacing fix
* small style fixes
* add a flag for loading dependency projects
* address PR comments
* fix modrinth ui imports
* use magic keys instead of window.addeventlistener
* add spacing in bottom of settings page
* useDebounceFn from vue
* fix inconsistent stroke
* persist scroll through
* fix remove button
* fix api fields
* fix version file dropdown: hide primary option in edit mode and fix setting initial value
* fix links in nags
* implement skipped field for skipping steps instead of mutating stages array's elements
* implement suggested dependencies components
* implement suggested dependencies api call
* refactor cached get project and get version calls
* always hide environments
* update links
* set scroll in 10ms
* update links
* fix links pt2
* fix shadow
* fix progress bar
* dont include mc versions in suggested versions finder
* fix text overflow styles
* use tooltip
* fix change version name api
* implement set environment api call
* delete unused vue pages
* implement detected environment, edit environment step, and fix showing loaders in details for no loader projects
* small fix
* no loaders project wrong check
* fix not having 'minecraft' loader for resource pack
* implement updating existing files file type
* move add minecraft loader outside try catch
* add datapack to have environment
* fix being able to select duplicate MC versions
* remove datapack project from environment
* fix version fetch
* fix having detected environment not properly skipping step
* only add detected data when primary file changes
* fix unknown environemtn
* implement gallery and versions have moved admonition
* update project page for creator view
* small copy update
* merge fixes
* pnpm run fix
* fix checkmark squished
* fix version type can be deselected
* refactor: DI context + better typed MultistageModal
* fix type import
* Misc QA fixes
* fix allowed file types with no project type
* implement new add files stage
* fix versiosn header with new pagination
* hide buttons when no files for add file stage
* use prettier formatter
* allow signature file types
* add detecting primary file
* fix progress bar in firefox
* fix environment not correctly being hidden/shown
* remove environment missing nag
* temp bring back environment page
* remove delete version action from project page
* replace "continue" next button label with actual next step
* fix types
* pnpm run fix
* move supplementary files alert up and update border radius style on dropzone
* copy updates
* small update on version num placeholder
* update placeholder
* make timeout on upload routes 2 minutes
* fix lint issues
* run pnpm intl:extract
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
* Refactor search page, migrate to /discover/
* Add NormalPage component for common layouts, refactor Collections page as an example, misc ui pkg cleanup
* intl:extract
* lint
* lint
* remove old components
* Refactor search page, migrate to /discover/
* Add NormalPage component for common layouts, refactor Collections page as an example, misc ui pkg cleanup
* intl:extract
* lint
* lint
* remove old components
* wip: affiliate payouts again
* Implement affiliate payout queue
* Deactivate subscription affiliations on cancellation
* Remove a test that never compiled in the first place
* Update sqlx cache
* address some PR comments
* more comments
* wip: handle refund charges
* cargo sqlx prepare
* Address PR comments
* cargo sqlx prepare
* Add auth servers unreachable warning to app
* Check auth status every 5 minutes
* Use admonition in auth server warning
* feat: tanstack
* Fix auth server reachability query
* Format
* intl extract
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
* Fix DEV-466, Fixes#4692 as well as a bunch of other poor contrast and inconsistency issues in light mode. Adds shadows to buttons and makes scrollbar gutter stable.
* lintttt & only do scrollbar gutter on website
* try to fix following hydration issue
* try another clientonly approach
* fix home page link animation
* lint
* remove dropdown style from checkbox & improve shadow consistency
* liiiint
* wip: gotenberg
* Generate and provide supporting docs for Mural payouts
* Correct docs
* shear
* update cargo lock because r-a complains otherwise
* Remove local Gotenberg queue and use Redis instead
* Store platform_id in database correctly
* Address PR comments
* Fix up CI
* fix rebase
* Add timeout to default env vars
* Account list is not scrollable
Fixes#4688
* Selecting Glitch in the log Screen
Fixes#4687 by explicitly defining the buffer
* When sorting or grouping your instance, the option you choose does not get saved
Fixes#4647
* use label prop to specify specific local storage for grid display state
* Implement persistent filters on mods page
Fixes#4517
* fix lint errors
* update schemastore links
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* fix: negative value stuff
* fix: mobile responsiveness for modal min-w
* feat: better error handling on withdraw
* fix: empty state positioning + svg sizing
* fix: title case -> sentence case
* fix: re-add virtual visa under gift cards
* fix: hide <1% segments
* wip: muralpay integration
* Basic Mural Pay API bindings
* Fix clippy
* use dotenvy in muralpay example
* Refactor payout creation code
* wip: muralpay payout requests
* Mural Pay payouts work
* Fix clippy
* add mural pay fees API
* Work on payout fee API
* Fees API for more payment methods
* Fix CI
* Temporarily disable Venmo and PayPal methods from frontend
* wip: counterparties
* Start on counterparties and payment methods API
* Mural Pay multiple methods when fetching
* Don't send supported_countries to frontend
* Add countries to muralpay fiat methods
* Compile fix
* Add exchange rate info to fees endpoint
* Add fees to premium Tremendous options
* Add delivery email field to Tremendous payouts
* Add Tremendous product category to payout methods
* Add bank details API to muralpay
* Fix CI
* Fix CI
* Remove prepaid visa, compute fees properly for Tremendous methods
* Add more details to Tremendous errors
* Add fees to Mural
* Payout history route and bank details
* Re-add legacy PayPal/Venmo options for US
* move the mural bank details route
* Add utoipa support to payout endpoints
* address some PR comments
* add CORS to new utoipa routes
* Immediately approve mural payouts
* Add currency support to Tremendous payouts
* Currency forex
* add forex to tremendous fee request
* Add Mural balance to bank balance info
* Add more Tremendous currencies support
* Transaction payouts available use the correct date
* Address my own review comment
* Address PR comments
* Change Mural withdrawal limit to 3k
* maybe fix tremendous gift cards
* Change how Mural minimum withdrawals are calculated
* Tweak min/max withdrawal values
---------
Co-authored-by: Calum H. <contact@cal.engineer>
Co-authored-by: Alejandro González <me@alegon.dev>
* Begin affiliates frontend
* Significant work on hooking up affiliates ui
* Clean up server nodes menu
* affiliates work
* update affiliate time
* oops
* fix local import
* fix local import x2
* remove line in dashboard
* lint
* Decouple project deletion from thread deletion
* Allow a thread to exist without a project
* attempt 2
* Modify migration to set orphaned threads' mods to NULL instead of removing constraint entirely
* Use mod PAT for mod threads
* Fix inconsistent PAT display order
Closes#4661
* Fix side effect in computed property
* Fix lint
---------
Co-authored-by: Calum H. <contact@cal.engineer>
* feat: split wrapper command on linux
* feat: use code from #3900
* feat: also use shlex on Windows
* feat: add a version number to global settings
* feat(app): add settings v2, where wrapper command are split
* Expose utilities for setting up the database
* Expose migrator directly
* Make some test utils publicly accessible
* expose migrator
* more test fixture utils
* more test fixture utils
* more test fixture utils
* fix
* fix lint
* feat: blog
* feat: creator withdraw overhaul blog
* fix: bullet points
* fix: title
* fix: blog
* feat: autoplay on scroll & fix encoding of videos
* fix: class on first video
* fix: authors + summary + title
* fix: title + summary
* fix: lint
* fix: rev page mp4
* update formatting + phrasing
* some more formatting changes
* unify hr colors
* update opening line
* update blog time
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Update 1-app-bug.yml
Signed-off-by: Prospector <6166773+Prospector@users.noreply.github.com>
* update the rest of the templates
* Update issue template formatting further
* Disable blank issue + get rid of some contact links
* fix issue location id
* more updates
---------
Signed-off-by: Prospector <6166773+Prospector@users.noreply.github.com>
* Update ad placeholders to new green graphic
* Remove rounded corners from app ad frame
* Improve web ad placeholder styling
* Revamp app sidebar to match mockups more closely, greatly improve friends UX, fix up context menus and typify shit
* only show overflow on hover
* lint
* intl:extract
* clean up the inline code in FriendsSection
* Clearer error on TIN mismatch
* Remove ctoken code (how did that end up there)
* polish: frontend for TIN/SSN mismatch
* fix: lint
* polish: only banner + change text
* fix: logic
* fix: lint
---------
Co-authored-by: Calum H. (IMB11) <contact@cal.engineer>
While researching and fixing other issue, it caught my attention that we
are embedding a library patches JSON file from the PrismLauncher meta
repository. However, since we copied that file, a new revision of it was
published with patches that improve compatibility with Apple Silicon
macOS platforms.
These changes update such a file and, perhaps most importantly, add a
comment explaining the provenance and licensing of such a file.
I made a typo on PR https://github.com/modrinth/code/pull/4426 by making
the corresponding SQL query filter by projects with an unexisting
`public` status, instead of `approved`. During my testing, I used the
`archived` status, so I didn't notice it back then.
* Reapply "refactor(app): reduce tech debt by eliminating `wry` fork (#4500)"
This reverts commit 2535156dac.
* test: temporarily replace ad link by something with sound
* Revert "test: temporarily replace ad link by something with sound"
This reverts commit 74bb7eecb7.
* Reapply "test: temporarily replace ad link by something with sound"
This reverts commit f1b0e9f2c4.
* test: also disable ads init muting script for good measure
* Revert "test: also disable ads init muting script for good measure"
This reverts commit 4ac7a81e17.
* Revert "Reapply "test: temporarily replace ad link by something with sound""
This reverts commit c5f1b9f242.
* Taplo and typos in CI
* Clean up Cargo.toml files
* Fix CI
* Fix CI
* Run typos in CI
* Loosen typos a bit
* Fix typos
* Fix taplo
* Switch to Tombi
* Fix Tombi errors
* Remove unused typos config
* Tombi fmt
* Remove extraneous cargo fmt
* fix typos
* start with analytics v2
* the big ass SQL query™
* downloads and views analytics working
* Implement analytics bucketing API
* allow filtering by monetization
* Use a new format for project metrics and bucketing
* revenue API works
* Add country data to analytics API
* Add checks for number of slices and time slice resolution
* work on docs
* wip: fix tests and add docs
* Fix tests
* Fix tests
* Uncomment crates
* feat: frontend CLAUDE.md (#4433)
* Slight tweaks to time slicing logic
* More tweaks
* Fix error messages
* Fix sqlx cache
---------
Co-authored-by: Calum H. <contact@cal.engineer>
* feat: surface variables & gradients
* feat: text vars
* fix: lint
* chore: remove L from surface vars
* fix: fully remove L from surface vars
---------
Co-authored-by: --global <--global>
* Mark transactions with unresolvable addresses as unresolved
* Add customer_name + customer_id to anrok transactions
* Increase rate of Anrok syn
* Remove timer from update_tax_transactions
* chore: query cache, clippy, fmt
PR #4270 modified the internal `fetch` function used by the application
to download version artifacts in a way that 4xx HTTP errors also caused
an abnormal return, instead of just 5xx errors. That was a good change,
but it had the unintended side effect of exposing our faulty logic
elsewhere of trying to download non-native JAR library artifacts when
only native artifacts are appropriate, at least according to the
PrismLauncher source code I've read. Such a download always returned a
404 error, but because such error was considered successful, a dummy
library file was still created and things worked seemingly fine.
These changes bring the Modrinth App behavior in this regard more in
line with PrismLauncher's, avoiding downloading non-native artifacts for
dependencies that have native artifacts available. (Reference:
https://github.com/PrismLauncher/PrismLauncher/blob/8b5e91920dda7324ad3db98f56b209bba0f4e57d/launcher/minecraft/Library.cpp#L163)
I've tested these changes to work successfully with a variety of old
vanilla and modded Minecraft versions.
Fixes#4464.
PR #3960 reverted the Cranelift usage introduced in #4388 due to its
codegen not being up to standard when compiling some pieces of code
under some platforms. However, it didn't revert the switch to a nightly
Rust toolchain, which is now unnecessary, and produces unnecessary drift
between what's declared in the `rust-toolchain.toml` and the Docker
image manifests, causing inefficiencies.
These changes bring back the usage of stable Rust for the time being to
correct those inefficiencies.
* tweak(path-util): addendum to #4482
These changes improve on those introduced in #4482 in two ways:
- The serialization logic for `SafeRelativeUtf8UnixPathBuf` now more
closely mirrors the deserialization checks, reducing the chance that a
generated path will fail to deserialize. While unlikely in practice,
catching such theoretical cases earlier improves the experience for
users and developers.
- After deeper testing on a clean Windows 10 VM, I found that reserved
device names can have both an extension and an alternate data stream
appended, not just one or the other. These changes handle that case
more gracefully.
* chore: fix typos, add tests
* fix(path-util): extend `SafeRelativeUtf8UnixPathBuf` contract to allow `.` components
While quite useless, they were accepted by previous app versions, the
`.mrpack` specification does not forbid them, and they do not pose
security issues, so accept them for backwards compatibility.
* Use price's currency rather than inferred stripe currency in PaymentIntent
* Correctly convert to stripe::Currency
* Include original currency code in error message
Maybe this will work? I dunno but users are still saying they're getting errors deleting accs. In theory it shouldn't matter if the transaction all gets committed at the same time, though, right? I can't really test this so I would like someone to tell me whether this will actually make a difference.
Co-authored-by: François-X. T <fetch@ferrous.ch>
* Replace actix tracing with custom error tracing
* Fix logging
* wip: JSON logging
* Use LABRINTH_FORMAT to change to JSON output
* sqlx fix?
* CI fix
* Add tracing span info to HTTP requests
* Merge Result and Option error wrapping
* Add http.authorized to tracing
This is a follow-up to PR #4426. I initially didn't consider the
organizations an user belongs to as worth hiding, but given that user
profiles can be public, I suppose there technically is a way to exploit
them for SEO abuse. Overall, it also seems more consistent to hide them
here too.
`cargo sqlx prepare` should be run in the directory of the crate that
contains the database queries instead, as that's what we're documenting
and have standarized on.
* Make theseus capable of logging messages from the `log` crate
* Move update checking entirely into JS and open a modal if an update is available
* Fix formatjs on Windows and run formatjs
* Add in the buttons and body
* Fix lint
* Show update size in modal
* Fix update not being rechecked if the update modal was directly dismissed
* Slight UI tweaks
* Fix lint
* Implement skipping the update
* Implement the Update Now button
* Implement updating at next exit
* Turn download progress into an error bar on failure
* Restore 5 minute update check instead of 30 seconds
* Fix PendingUpdateData being seen as a unit struct
* Fix lint
* Make CI also lint updater code
* feat: create AppearingProgressBar component
* feat: polish update available modal
* feat: add error handling
* Open changelog with tauri-plugin-opener
* Run intl:extract
* Update completion toasts (#3978)
* Use single LAUNCHER_USER_AGENT constant for all user agents
* Fix build on Mac
* Request the update size with HEAD instead of GET
* UI tweaks
* lint
* Fix lint
* fix: hide modal header & add "Hide update reminder" button w/ tooltip
* Run intl:extract
* fix: lint issues
* fix: merge issues
* notifications.js no longer exists
* Add metered network checking
* Add a timeout to macOS is_network_metered
* Fix tauri.conf.json
* vibe debugging
* Set a dispatch queue
* Have a popup that asks you if you'd like to disable automatic file downloads if you're on a metered network
* Move UpdateModal to modal package
* Fix lint
* Add a toggle for automatic downloads
* Fix type
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Signed-off-by: Josiah Glosson <soujournme@gmail.com>
* Redo updating UI and experience
* lint
* fix unlistener issue
* remove unneeded translation keys
* Fix expose issue
* temp disable cranelift, tweak some messages
* change version back
* Clean up App.vue
* move toast to top right
* update reload icon
* Fixed the bug!!!!!!!!!!!!
* improve messages
* intl:extract
* Add liquid glass icon file
* not you!
* use dependency injection
* lint on apple icon
* Fix imports, move download size to button
* change update check back to 5 mins
* lint + move to providers
* intl:extract
---------
Signed-off-by: Cal H. <hendersoncal117@gmail.com>
Signed-off-by: Josiah Glosson <soujournme@gmail.com>
Co-authored-by: Calum <calum@modrinth.com>
Co-authored-by: Prospector <prospectordev@gmail.com>
Co-authored-by: Cal H. <hendersoncal117@gmail.com>
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
Co-authored-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
* Only update the PaymentMethod ID if not using placeholder ID
* comment
* Create Anrok transactions for all charges
* Fix comment
* Prefer using payment method's address rather than customer address
* chore: query cache, clippy, fmt
* Retrieve stripe address from PM
* chore: query cache, clippy, fmt
* fmt
* bring back the query cache
* Better address retrieval for updating tax amounts, always update tax_last_updated
* chore: query cache, clippy, fmt
* Don't set PM in ctoken interactive session for new PIs
* draft: layout for alert
* feat: simplify
* feat: remove dummy data
* fix: lint and widths
* feat: use chips rather than dropdown select
* feat: remove gap from admonition header v body
* Revert "feat: remove gap from admonition header v body"
This reverts commit 46cce52799.
* fix: niche fixes
* feat: update for new backend structure
* fix: i18n
* Only update the PaymentMethod ID if not using placeholder ID
* comment
* Create Anrok transactions for all charges
* Fix comment
* Prefer using payment method's address rather than customer address
* chore: query cache, clippy, fmt
* Retrieve stripe address from PM
* chore: query cache, clippy, fmt
* fmt
* bring back the query cache
* chore(labrinth): set `DELPHI_URL` to a valid default in `.env.local`
* feat(labrinth): make orgs not publicly visible until they meet some conditions
* Revert "Org disabled frontend (#4424)"
This reverts commit 2492b11ec0.
* changelog: update for re-enabling organization creation
* chore: run `sqlx prepare`
* chore(labrinth): tweak tests to work with new org changes
* tweak: apply @triphora's suggestion
Co-authored-by: Emma Alexia <emma@modrinth.com>
Signed-off-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
* tweak: document `is_visible_organization` relationship with `Project#is_searchable`
---------
Signed-off-by: Alejandro González <7822554+AlexTMjugador@users.noreply.github.com>
Co-authored-by: Emma Alexia <emma@modrinth.com>
* Only update the PaymentMethod ID if not using placeholder ID
* comment
* Create Anrok transactions for all charges
* Fix comment
* Prefer using payment method's address rather than customer address
* chore: query cache, clippy, fmt
* "Submit for review" button translation
* Fix invitation message in the code
* Run web:fix
* Run intl:extract
---------
Co-authored-by: Calum H. <contact@cal.engineer>
* Switch to nightly + cranelift
* Fail on warnings only in CI
* Fix check errors
* Don't use mold on Linux to fix CI
* Pin nightly toolchain and add default rustup components
* Fix another CI thing
* PR comment
* Initial affiliate codes implementation
* some more docs to codes
* sqlx prepare
* Address PR comments
* Address more PR comments
* fix clippy
* Switch to using Json<T> for type-safe responses
* Some new notification types
* Fix error
* Use existing DB models rather than inline queries
* Fix template fillout
* Fix ModerationThreadMessageReceived
* Insert more notifications, fix some formatting
* chore: query cache, clippy, fmt
* chore: query cache, clippy, fmt
* Use outer transactions to insert notifications instead of creating a new one
* Join futures
* Slack webhook for payout alerts
* add PAYOUT_ALERT_SLACK_WEBHOOK to check_env_vars
* Fix commit
* Fix webhook format
* Add new env vars in .env.local
* Rename env vars, fire webhook on error
* Fix compilation
* Clippy
* Fix CI
* Add env vars to .env.docker-compose
* Fix error when trying to delete user with uploaded images
`{"error":"database_error","description":"Database Error: Error while interacting with the database: error returned from database: update or delete on table \"users\" violates foreign key constraint \"uploaded_images_owner_id_fkey\" on table \"uploaded_images\""}`
* Update certain things to use Ghost instead of deleting entirely
* Fix mistake
* Make it slightly clearer that the app is in beta and add linux disclaimer. Also changed the way Modrinth App was being referred to as a regular noun instead of a proper noun
* i18n for app page
* update home page to use ~content
* Improve project page performance by removing unnecessary slow request for featured versions
* Allow existing featured versions users to continue using it with deprecation warning.
* Fix redirect from project ID
* improve fix
* improve accessibility of environment selector
* lint
* fix mobile accessibility of project settings and improve message for those without permission
* disable envs when multiple + lint
This reconciles a couple of differences between the frontend and backend regarding gallery image uploads.
- Frontend: The frontend thought that the limit should be 500 MiB for gallery images. This is obviously not right. It has been updated to 5 MiB.
- Backend: The backend has been rejecting anything between 2 MiB and 5 MiB, but this is inconsistent with prior usage, where the limit used to be 5 MiB. It has been updated to allow anything under 5 MiB.
Fixes#4291
* Ensure that fetch errors are properly propagated
* Handle user not found errors better in add_friend
* Cargo fmt
* Introduce new LabrinthError returnable by fetch_advanced
* Allow enter key to send a friend request
These changes add a layered hook to the `markdown-it` renderer rules to
resolve `<img>` element `src` attributes and `<a>` element `href`
attributes to a path-absolute relative URL, to ensure that such URLs
always point to the same resource URL even when the URL the current
resource is being viewed from changes.
This fixes an issue with relative links and image source URLs being
broken when a blog post was watched from a URL that lacked a trailing
slash, as web browsers adjust the path relative URLs are resolved from
depending on whether such character is present, and we didn't account
for that.
While at it, I've rebuilt all the blog posts and their associated RSS
feed.
* New envs frontend
* lint fix
* Add blog post, user-facing changes, dashboard warning, project page member warning, and migration reviewing. maybe some other misc stuff
* lint
* lint
* ignore .data in .prettierignore
* i18n as fuck
* fix proj page
* Improve news markdown rendering
* improve phrasing of initial paragraph
* Fix environments not reloading after save
* index.ts instead of underscored name
* shrink-0 back on these icons
* Fix and unify version selection when installing mods
* Update version list filters to match install version selection logic
* Fix lint issues
---------
Co-authored-by: Cal H. <contact@cal.engineer>
* Revert "Revert "feat: medal promotion on servers page (#4117)""
This reverts commit 2e6cff7efc.
* Revert "Revert "update changelog""
This reverts commit b2ff2d8737.
* Revert "Revert "turn off medal promo""
This reverts commit eaa4b44a16.
* Revert "Revert "Revert "turn off medal promo"""
This reverts commit 76d0ef03e7.
* Revert "Revert "fix medal thing showing up for everyone""
This reverts commit ee8c47adcb.
* New medal colors
* Update medal server listings
* Upgrade modal enhancements & more medal consistency
* undo app promo changes
* Only apply medal promo with flag on
* remove unneessary files
* lint
* disable medal flag
* Reapply "Implement a more robust IPC system between the launcher and client (#4159)"
This reverts commit e25d726da4.
* Put game JAR and theseus JAR ahead of other JARs in classpath
* Fix 1.17-1.20 Forge by forcefully removing Multi-Release manifest entry
* Fix formatting
---------
Co-authored-by: Prospector <6166773+Prospector@users.noreply.github.com>
* remove "experimental" color vars, remove conflicting styles from frontend-specific css
* lint
---------
Co-authored-by: Cal H. <hendersoncal117@gmail.com>
* feat: consistently format all HTML, XML, JSON, CSS, JS, TS, SQL, TOML, YAML, and Markdown files
* chore: deal with VS Code not being able to parse valid editorconfig syntax
Sometimes I'm surprised that computers even work.
* chore: get rid of IntelliJ IDE config files that should not be there
These were already added to the `.gitignore` a long time ago, and now
are being ignored by Prettier.
* fix: rename `tooling-config` `format` script to `fix` for it to run with Turbo
You are given a Nuxt/Vue single-file component (.vue). Your task is to convert every hard-coded natural-language string in the <template> into our localization system using vue-i18n with utilities from `@modrinth/ui`.
Please follow these rules precisely:
1. Identify translatable strings
- Scan the <template> for all user-visible strings (inner text, alt attributes, placeholders, button labels, etc.). Do not extract dynamic expressions (like {{ user.name }}) or HTML tags. Only extract static human-readable text.
- There may be strings within the <script> block, e.g dropdown option labels, notifications etc.
2. Create message definitions
- In the <script setup> block, import `defineMessage` or `defineMessages` from `@modrinth/ui`.
- For each extracted string, define a message with a unique `id` (use a descriptive prefix based on the component path, e.g. `auth.welcome.long-title`) and a `defaultMessage` equal to the original English string.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
There are two similar frontends in the Modrinth monorepo, the website (apps/frontend) and the app frontend (apps/app-frontend).
Both use Tailwind v3, and their respective configs can be seen at `tailwind.config.ts` and `tailwind.config.js` respectively.
Both utilize shared and common components from `@modrinth/ui` which can be found at `packages/ui`, and stylings from `@modrinth/assets` which can be found at `packages/assets`.
Both can utilize icons from `@modrinth/assets`, which are automatically generated based on what's available within the `icons` folder of the `packages/assets` directory. You can see the generated icons list in `generated-icons.ts`.
Both have access to our dependency injection framework, examples as seen in `packages/ui/src/providers/`. Ideally any state which is shared between a page and it's subpages should be shared using this dependency injection framework.
### Website (apps/frontend)
Before a pull request can be opened for the website, run `pnpm prepr:frontend:web` from the root folder, otherwise CI will fail.
To run a development version of the frontend, you must first copy over the relevant `.env` template file (prod, staging or local, usually prod) within the `apps/frontend` folder into `apps/frontend/.env`. Then you can run the frontend by running `pnpm web:dev` in the root folder.
### App Frontend (apps/app-frontend)
Before a pull request can be opened for the app frontend, run `pnpm prepr:frontend:app` from the root folder, otherwise CI will fail.
To run a development version of the app frontend, you must first copy over the relevant `.env` template file (prod, staging or local, usually prod) within `packages/app-lib` into `packages/app-lib/.env`. Then you must run the app itself by running `pnpm app:dev` in the root folder.
### Localization
Refer to `.github/instructions/i18n-convert.instructions.md` if the user asks you to perform any i18n conversion work on a component, set of components, pages or sets of pages.
## Labrinth
Labrinth is the backend API service for Modrinth.
### Testing
Before a pull request can be opened, run `cargo clippy -p labrinth --all-targets` and make sure there are ZERO warnings, otherwise CI will fail.
Use `cargo test -p labrinth --all-targets` to test your changes. All tests must pass, otherwise CI will fail.
To prepare the sqlx cache, cd into `apps/labrinth` and run `cargo sqlx prepare`. Make sure to NEVER run `cargo sqlx prepare --workspace`.
Read the root `docker-compose.yml` to see what running services are available while developing. Use `docker exec` to access these services.
When the user refers to "performing pre-PR checks", do the following:
- Run clippy as described above
- DO NOT run tests unless explicitly requested (they take a long time)
- Prepare the sqlx cache
### Clickhouse
Use `docker exec labrinth-clickhouse clickhouse-client` to access the Clickhouse instance. We use the `staging_ariadne` database to store data in testing.
### Postgres
Use `docker exec labrinth-postgres psql -U labrinth -d labrinth -c "SELECT 1"` to access the PostgreSQL instance, replacing the `SELECT 1` with your query.
# Guidelines
- Do not create new non-source code files (e.g. Bash scripts, SQL scripts) unless explicitly prompted to.
All packages in this repository are licensed under their respective licenses. For more information, refer to the LICENSE file in each package.
For detailed information, consult each package's COPYING.md file, if available.
For detailed information, consult each package's COPYING.md, LICENSE.txt, or LICENSE file, if available.
## Modrinth Branding
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.
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.
The source code of Modrinth App's frontend 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.
'Your Minecraft/Xbox Live account requires age verification to comply with UK regulations. You must complete this before signing in.',
stepsToFix:[
'Go to the <a href="https://www.minecraft.net/en-us/login">Minecraft Login</a> page and sign in',
'Follow the instructions to verify your age',
'Once verified, try signing in again',
'For additional help, visit <a href="https://support.xbox.com/en-GB/help/family-online-safety/online-safety/UK-age-verification">UK age verification on Xbox</a>',
],
},
{
errorCode:'2148916233',
whatHappened:"This account doesn't have an Xbox profile set up or doesn't own Minecraft.",
stepsToFix:[
'Make sure Minecraft is purchased on this account',
'Visit <a href="https://www.minecraft.net/en-us/login">Minecraft Login</a> and sign in',
'Complete Xbox profile setup if prompted',
'Once finished, try signing in again',
],
},
{
errorCode:'2148916235',
whatHappened:"Xbox Live isn't available in your region, so sign-in is blocked.",
stepsToFix:[
'Xbox services must be supported in your country before you can sign in',
'Check <a href="https://www.xbox.com/en-US/regions">Xbox Availability</a> for supported regions',
],
},
{
errorCode:'2148916236',
whatHappened:'This account requires adult verification under South Korean regulations.',
stepsToFix:[
'Visit <a href="https://www.xbox.com">Xbox</a> and sign in',
'Complete the identity verification process',
'Once finished, try signing in again',
],
},
{
errorCode:'2148916237',
whatHappened:'This account requires adult verification under South Korean regulations.',
stepsToFix:[
'Visit <a href="https://www.xbox.com">Xbox</a> and sign in',
'Complete the identity verification process',
'Once finished, try signing in again',
],
},
{
errorCode:'2148916238',
whatHappened:'This account is underage and not linked to a Microsoft family group.',
stepsToFix:[
'Review the <a href="https://help.minecraft.net/hc/en-us/articles/4408968616077">Family Setup Guide</a>',
'Join or create a family group as instructed',
'Once finished, try signing in again',
],
},
{
errorCode:'2148916227',
whatHappened:'This account was suspended for violating Xbox Community Standards.',
stepsToFix:[
'Visit <a href="https://support.xbox.com">Xbox Support</a> and review the enforcement details',
'Submit an appeal if one is available',
],
},
{
errorCode:'2148916229',
whatHappened:"This account is restricted and doesn't have permission to play online.",
stepsToFix:[
'Have a guardian sign in to <a href="https://account.microsoft.com/family/">Microsoft Family</a>',
'Update online play permissions',
'Once finished, try signing in again',
],
},
{
errorCode:'2148916234',
whatHappened:"This account hasn't accepted Xbox's Terms of Service.",
stepsToFix:[
'Visit <a href="https://www.xbox.com">Xbox</a> and sign in',
Some 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.