feat(rust): Backpacks — staff and player views, the Bigger backpack step (PLAN_REDESIGNS §11.3) #41

Merged
whitlocktech merged 1 commits from feat/rust-backpacks into edge 2026-10-12 14:41:23 -05:00
Member

The site half of PLAN_REDESIGNS §11.3.2, on protocol 14.

The rust.backpack.size step ("Bigger backpack"). It is a kit reward with a different permission (D337).

  • It writes one rust_perm_run_grants row per website user, with backpacks.size.N, no kit and no credit. The permission mirror pushes it, and the run's revert deletes it.
  • Risk change, reversible ledger, and a new rust.backpacks budget. It uses rust.kit.entitle's recipient modes, linked included.
  • On a server without Backpacks it refuses with "Backpacks is not installed on this server", in the dry run too (D199). A size the server does not offer is refused, and the refusal lists the sizes it does offer.
  • Its message is never silent: left empty, it is the take-back warning (D338).
  • The size picker, rust.options.backpacksizes, lists each server's sizes above its smallest, grouped by server.

Two read routes, live and never stored:

  • GET /player/rust/backpacks?serverId=&steamId= serves only the caller's own linked accounts, at 20 reads a minute.
  • GET /admin/users/:id/rust/backpacks?serverId=&steamId= serves only that user's linked accounts.
  • A Steam id outside those links gets a 404 and never reaches the game.

Client. One shared Backpack panel (pick a server and an account, open, read once) appears on the account page and on the admin user page. The grid draws pages of pageSize. Each slot shows the item's name from the game, with no icons (D340), and a blueprint shows what it makes (D341). Overflow is marked. Backpacks also joins the server's mod line.

Tested:

  • Server 548/548, 13 of them new in test/backpacks.test.js.
  • Client 79/79, 5 of them new.
  • routes.manifest.json regenerated against the pinned core (89 routes) and the swagger fragment regenerated; check:imports, check:bundle and check:externals pass.

The walk rows are §11.3.3, deferred to the end (D331).

Companions: Rust-Plugins, Rust-Link, Android-app (feat/rust-backpacks), docs (docs/rust-backpacks-build).

  • AI-assisted: written by Claude Code (Claude Opus 5.5)

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

The site half of PLAN_REDESIGNS §11.3.2, on protocol 14. **The `rust.backpack.size` step ("Bigger backpack").** It is a kit reward with a different permission (D337). - It writes one `rust_perm_run_grants` row per website user, with `backpacks.size.N`, no kit and no credit. The permission mirror pushes it, and the run's revert deletes it. - Risk `change`, reversible `ledger`, and a new `rust.backpacks` budget. It uses `rust.kit.entitle`'s recipient modes, `linked` included. - On a server without Backpacks it refuses with "Backpacks is not installed on this server", in the dry run too (D199). A size the server does not offer is refused, and the refusal lists the sizes it does offer. - Its message is never silent: left empty, it is the take-back warning (D338). - The size picker, `rust.options.backpacksizes`, lists each server's sizes above its smallest, grouped by server. **Two read routes, live and never stored:** - `GET /player/rust/backpacks?serverId=&steamId=` serves only the caller's own linked accounts, at 20 reads a minute. - `GET /admin/users/:id/rust/backpacks?serverId=&steamId=` serves only that user's linked accounts. - A Steam id outside those links gets a 404 and never reaches the game. **Client.** One shared Backpack panel (pick a server and an account, open, read once) appears on the account page and on the admin user page. The grid draws pages of `pageSize`. Each slot shows the item's name from the game, with no icons (**D340**), and a blueprint shows what it makes (**D341**). Overflow is marked. Backpacks also joins the server's mod line. **Tested:** - Server 548/548, 13 of them new in `test/backpacks.test.js`. - Client 79/79, 5 of them new. - `routes.manifest.json` regenerated against the pinned core (89 routes) and the swagger fragment regenerated; `check:imports`, `check:bundle` and `check:externals` pass. The walk rows are §11.3.3, deferred to the end (D331). Companions: Rust-Plugins, Rust-Link, Android-app (`feat/rust-backpacks`), docs (`docs/rust-backpacks-build`). - [x] AI-assisted: written by Claude Code (Claude Opus 5.5) 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-12 14:37:26 -05:00
feat(rust): Backpacks — staff and player views, the Bigger backpack step (PLAN_REDESIGNS §11.3)
All checks were successful
PR Checks / server-tests (pull_request) Successful in 37s
PR Checks / frozen-manifest (pull_request) Successful in 1m0s
PR Checks / client-build (pull_request) Successful in 7m23s
e4591af906
The site half of §11.3.2, on protocol 14:

- `rust.backpack.size` ("Bigger backpack"): a kit reward with a different
  permission (D337) — one rust_perm_run_grants row per website user with
  backpacks.size.N, no kit, no credit; the perm mirror pushes it and the run's
  revert deletes it. risk change, reversible ledger, a new `rust.backpacks`
  budget, rust.kit.entitle's recipient modes including `linked`. Refused with
  "Backpacks is not installed on this server" in the dry run too (D199), and a
  size the server does not offer is refused by name. Its message is never
  silent: empty is the take-back warning (D338).
- `rust.options.backpacksizes`: each server's sizes above its smallest, from
  the last hello, grouped by server.
- GET /player/rust/backpacks (own links only, 20 reads a minute) and
  GET /admin/users/:id/rust/backpacks (that user's links only). Live, never
  stored; a stranger's id is a 404 and never reaches the game.
- Client: a shared Backpack panel (pick server and account, open, read once)
  on the account page and the admin user page; the grid draws pages of
  pageSize, each slot named by the game (D340, no icons), blueprints by what
  they make (D341), overflow marked. Backpacks joins the server's mod line.

Server 548/548 (13 new in test/backpacks.test.js), client 79/79 (5 new),
routes.manifest regenerated against the pinned core (89 routes), swagger
fragment regenerated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit 89557ddf66 into edge 2026-10-12 14:41:23 -05:00
whitlocktech deleted branch feat/rust-backpacks 2026-10-12 14:41:23 -05:00
Sign in to join this conversation.
No Reviewers
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: RunicGateway/Module-Rust#41
No description provided.