Repository navigation
chore: merge Modrinth's released server play and make it work in Amberite - #115
Merged
Merged
Conversation
…#8183) fix: minimal GET charge parsing
…th#8120) * feat: show all shared instances not installed in library page * feat: pass over design + hidden instances feature * fix: hidden instances not exclusive to shared ones * chore: polish hidden instances flows * fix: instance hiding issue * chore: cleanup * fix: report + external files not needed if owner of instance reinstalling on new device * fix: networkMode * fix: p1 * fix: standards * fix: rev * fix: impl limit empty state * fix: qa * fix: qa * fix: qa
fix: use backup counts from backend
fix(labrinth): bound Redis timeouts and add local-only healthz probe Redis commands and connection checkouts had no upper bound, so during a Valkey cluster failover requests to the vanished primary hung. The rate limiter runs on every route, including the one used by Kubernetes probes, which caused readiness failures and liveness kills. Cap every Redis command and connection checkout at 2s, set pool create/recycle timeouts, and set TCP_USER_TIMEOUT on the multiplexed cluster client so dead nodes trigger a slot refresh. Add a /healthz endpoint that touches no backing services, skips rate limiting and only answers requests from loopback, private or link-local peers.
* fix(ci): slow app builds * fix tombi
…age (modrinth#7750) * fix notification card * chore: retrigger CI
* fix(web): broken validation on frontend for file upload * fix(web): skip jar-only loader check for modpacks * fix: fabric validation
* delete loader fields migration * integrate minecraft-meta db into labrinth * wip: new schema and component type for version meta * wip: adapt queries and types for new ModVersion component * wip: remove all loader field references in database module * remove loader fields from models too * use MinecraftMeta instead of fetching daedalus * update dummy fixtures * remove unused games tbls * fix tombi * impl version component fetching * fix how we look up loader during edit * update sqlx prepare * fmt + prepare * fix ci * split migration into 2 * comment out migrations to apply manually * extract out helper for refreshed/cache-stampede-avoidant data * ensure all versions valid * refresh minecraft meta in background * switch to slimmed-down MinecraftVersionEntry type * dedup metadata before storing in cache * fmt * address pr comments
* fix: force tech review pass query to use pg index * sqlx prepare
* feat: shared icon structs for content managament * feat: server icon management * fix: bug
* feat: add more status badges and add user status badges in user page, tech rev cards and report cards * small change * small fix * pnpm prepr
* centralize file size upload limits in backend * make frontend use upload limits from backend * prepr
…losure issue (modrinth#8210) * fix: mark addressed is disabled when remove disclosure for ModifyDisclosure issue * pnpm prepr
Co-authored-by: François-X. T. <fetch@ferrous.ch>
chore: changleog 0.23.0
* feat: server play blog * fix: update images vids and grammar
…odrinth#8213) * fix(content-management): make `minecraft` and `datapacks` loaders universally compatible when normal match by loader yields nothing * chore: tests * fix: centralize file upload limits in backend (modrinth#8204) * centralize file size upload limits in backend * make frontend use upload limits from backend * prepr * fix: mark addressed is disabled when remove disclosure for ModifyDisclosure issue (modrinth#8210) * fix: mark addressed is disabled when remove disclosure for ModifyDisclosure issue * pnpm prepr * feat: server play frontend (modrinth#6968) Co-authored-by: François-X. T. <fetch@ferrous.ch> * chore: changleog 0.23.0 (modrinth#8219) chore: changleog 0.23.0 --------- Co-authored-by: aecsocket <43144841+aecsocket@users.noreply.github.com> Co-authored-by: Truman Gao <106889354+tdgao@users.noreply.github.com> Co-authored-by: Calum H. <calum@modrinth.com>
Merged against our earlier snapshot of the play branch (e190699) so only real differences conflicted. Our design wins where both solved the same thing: the owner's restore keeps what they added, client.rs goes through sharing-client, and Library cards share one process list and one shift listener. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
It advertised Modrinth Hosting from Modrinth billing data and a Modrinth video. Its files are ignored in upstream.json so later syncs leave them out. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Takes upstream's sqlx cache for the queries it changed, passes the new icon config through a restore, and keeps our owner restore rule for which files an update replaces. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream's icon editor saves the settings an icon was made from next to the image. Shares now keep them on the backend (PUT /instances/:id/icon/generated, icon_config on the share and its invites), and Copal keeps them per server with the hash of the icon they made (GET /icon/metadata, PUT /icon/generated), so an icon replaced through the files routes drops them. The Library's share list follows upstream: GET /instances lists the caller's own shares, and with include_joined every share they can play. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Upstream's backups page reads manual_count and auto_count from the server instead of counting itself. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The edit profile modal now disables the avatar upload without max_user_icon_size. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The backend has no owned-share cap and no /instances/limits, so the App never asks. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
From modrinth#8181. Moves the clone's upstream commit to the merged modrinth/main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Restores our revoke-link modal (rename detection had swapped in another file), drops a duplicated type, adds the latest-version call the Library uses, and keys icon thumbnails on a modified time an uninstalled share does not have. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
|
Important Review skippedToo many files! This PR contains 355 files, which is 255 over the limit of 100. To get a review, reduce the PR to 100 files or fewer by splitting it into smaller PRs or changing its base branch. Upgrade to a paid plan to raise the limit. Usage-priced reviews support at most 300 files.
|
…ttings only D1 rows held each share's icon as base64, so most share routes read the image along with the row. Uploaded images now live in R2 under the share and are served from there; an icon editor icon is only its settings, which clients draw themselves. Invite notifications carry the settings too. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The owner's App sends an icon editor icon as its settings alone. A member's App draws it, cached by content, wherever a share's icon first arrives: invite toasts, invite links, and the Library. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The backend serves an uploaded icon with the type it was sent with, and every upload said application/octet-stream. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Modrinth merged server play (modrinth#6968) after force-pushing the branch, so our earlier snapshot of it (#93) was missing 21 play commits and about 28 other
modrinth/maincommits. This mergesmodrinth/mainatfcd4fe1faand makes what upstream added work in Amberite, instead of only resolving conflicts.New features
PUT /instances/:id/icon/generated, about 60 bytes of JSON), and each member's App draws it locally: in invite toasts, invite links, the Library, and the installed instance, which keeps an editable copy. Copal keeps its own settings per server, as upstream's server icon API does, because Minecraft needs a realserver-icon.png.icons/{share}/{upload}, are served with a public immutable cache header without touching D1, and are deleted when replaced or when the share goes.GET /instanceslists your own shares, and withinclude_joinedevery share you can play.Removed or kept dormant
upstream.jsonignore./instances/limits, so the App never asks. Whether we add a cap is for later.Ported to our side
manual_countandauto_count, which the backups page now reads (fix(hosting): use backup counts from backend modrinth/code#8191)./globalscarries upload limits from labrinth (fix: centralize file upload limits in backend modrinth/code#8204). Withoutmax_user_icon_size, the edit-profile avatar upload was disabled.remove_file_storagefrom fix: remove blocking "repair" error modrinth/code#8181 is ported into bedrock's content store clone.Conflicts
I re-merged the 176 conflicted files against our earlier snapshot (
e1906997c), which left 33 real ones. Where both sides solved the same thing, ours stayed: the owner's restore keeps what they added since their last push,client.rsgoes through sharing-client, and Library cards share one process list and one shift listener (now in upstream'suseInstanceActions). Upstream took a migration timestamp we used, so ourapplied-filesmigration moves to20261103120000.Verification
cargo checkfor theseus, copal, bedrock and sharing-client, plus the App with the dev runner's features.icon: nullin the row). The member opened an invite link, saw the icon drawn from those settings, and installed with it plus an editable copy. A custom image went to R2 and was served in 5 ms.Copal's test data in the primary checkout records a migration that was folded into
001_init.sql, so Copal won't start on it, even onmain. This worktree used a fresh Copal database.Merge with a merge commit. Never squash or rebase: the sync needs both parents.
Created with Claude Opus 5.5 in Claude Code (T3 Code).