feat(rust): Dynamic PVP's zones on the feed and the map (PLAN_REDESIGNS §14.3.3) #46

Merged
whitlocktech merged 1 commits from feat/dynamic-pvp into edge 2026-10-15 06:18:01 -05:00
Member

Stage 4 of the §14.3 integration plan, on protocol 14. Spec: docs rust-link/PROTOCOL.md §20.7 (docs PR alongside). Record: modules/rust/PLAN_REDESIGNS.md §14.3.17.

  • pvp.zone.created is a public kind, pvp.zone.deleted a staff kind. Each row is read per viewer by the new server/dynamicPvp.js:
    • the grid goes to everyone
    • the event's name goes to everyone only for Dynamic PVP's eleven vanilla events, since a monument's or an operator's name is the operator's own text
    • position and zone id go to staff only (D111)
  • Feed: the world filter now carries the opening. Example: "A PvP zone opened around the downed patrol helicopter · G7 · for 10 min". The line names nobody. The closing isn't on the public feed's list, because the client only asks for public kinds. The map shows a zone closing by its ring disappearing.
  • Map: a fifth layer, pvp (PvP zones), with its own audience in Admin → Rust visibility, public by default. It is drawn as a red ring with its event's name. An older plugin's answer gives an empty layer.
  • Server settings' plugin line names Dynamic PVP.
  • The swagger schemas and route descriptions now cover the layer and the integration (fragment regenerated).
  • ci/bundle.json ships dynamicPvp.js, and the README lists the plugin.

No step, no trigger, no core change (coreApi stays ^1.14.0).

Tested:

  • Server 611/611:
    • dynamicPvp.test.js is new, with six tests
    • catalogue.test.js holds the two kinds and their classes
    • map.test.js gained two layer tests and the new defaults
  • All server checks pass: imports, bundle, swagger, engagement.
  • Client 89/89: four new feed tests and one map-tooltip test. Both of the latter two are held against the server's list of vanilla events. The build and externals pass.

AI-assisted: written with Claude Code (disclosed per org policy).

🤖 Generated with Claude Code

https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY

Stage 4 of the §14.3 integration plan, on protocol 14. Spec: docs `rust-link/PROTOCOL.md` §20.7 (docs PR alongside). Record: `modules/rust/PLAN_REDESIGNS.md` §14.3.17. - **`pvp.zone.created` is a public kind, `pvp.zone.deleted` a staff kind.** Each row is read per viewer by the new `server/dynamicPvp.js`: - the grid goes to everyone - the event's name goes to everyone only for Dynamic PVP's eleven vanilla events, since a monument's or an operator's name is the operator's own text - position and zone id go to staff only (D111) - **Feed:** the world filter now carries the opening. Example: *"A PvP zone opened around the downed patrol helicopter · G7 · for 10 min"*. The line names nobody. The closing isn't on the public feed's list, because the client only asks for public kinds. The map shows a zone closing by its ring disappearing. - **Map:** a fifth layer, **`pvp`** (*PvP zones*), with its own audience in Admin → Rust visibility, public by default. It is drawn as a red ring with its event's name. An older plugin's answer gives an empty layer. - Server settings' plugin line names Dynamic PVP. - The swagger schemas and route descriptions now cover the layer and the integration (fragment regenerated). - `ci/bundle.json` ships `dynamicPvp.js`, and the README lists the plugin. No step, no trigger, no core change (`coreApi` stays `^1.14.0`). **Tested:** - Server 611/611: - `dynamicPvp.test.js` is new, with six tests - `catalogue.test.js` holds the two kinds and their classes - `map.test.js` gained two layer tests and the new defaults - All server checks pass: imports, bundle, swagger, engagement. - Client 89/89: four new feed tests and one map-tooltip test. Both of the latter two are held against the server's list of vanilla events. The build and externals pass. AI-assisted: written with Claude Code (disclosed per org policy). 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
wtclaude added 1 commit 2026-10-15 06:13:01 -05:00
feat(rust): Dynamic PVP's zones on the feed and the map (PLAN_REDESIGNS §14.3.3)
All checks were successful
PR Checks / client-build (pull_request) Successful in 25s
PR Checks / server-tests (pull_request) Successful in 31s
PR Checks / frozen-manifest (pull_request) Successful in 44s
549b3a5ffd
Stage 4 of the §14.3 integration plan, on protocol 14 (docs
rust-link/PROTOCOL.md §20.7).

- pvp.zone.created is a public kind, pvp.zone.deleted a staff kind. Each row
  is read per viewer by the new dynamicPvp.js: grid for everyone, the event's
  name only for Dynamic PVP's own vanilla events, position and zone id for
  staff only.
- The feed's world filter carries the opening: "A PvP zone opened around the
  downed patrol helicopter · G7 · for 10 min". It names nobody.
- The map gains a fifth layer, `pvp` (PvP zones), public by default with its
  own audience in Admin → Rust visibility, drawn as a red ring with its
  event's name.
- Server settings' plugin line names Dynamic PVP; the swagger schemas and
  route descriptions carry the layer and the integration (fragment
  regenerated); ci/bundle.json ships dynamicPvp.js; README lists it.

Tests: server 611/611 (dynamicPvp.test.js new, catalogue and map extended)
and every check; client 89/89 (feed and map tooltip), build and externals.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01E14m6SuuY6i1vASFeGDBeY
whitlocktech merged commit 6802dbf5f9 into edge 2026-10-15 06:18:01 -05:00
whitlocktech deleted branch feat/dynamic-pvp 2026-10-15 06:18:02 -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#46
No description provided.