Files
browser/platform_web/pages
npc0-hue a822e9250a Store SCUM facts in typed platform tables
Run pushes typed SCUM facts through POST /api/v1/run/scum/facts, but the
production router rejected that path before the signature middleware because
runServiceRequest listed individual Run channel prefixes, and MySQL kept SCUM
rows inside the whole metadata snapshot instead of platform tables.

- /api/v1/run/ is now the signed machine channel space while
  /api/v1/run/endpoints keeps normal bearer/admin authorization.
- MySQL gets real scum_user, scum_user_trajectory, scum_vehicle,
  scum_vehicle_trajectory and scum_vehicle_lock tables with parameterized
  per-row repositories instead of full snapshot rewrites. Snapshot-shaped
  tables from the unreleased interim build are replaced, and SCUM rows still
  inside a metadata snapshot are migrated once.
- Facts ingest verifies the target server plugin type and converges stale
  online users to offline after SCUMUserOfflineAfter.
- The plugin page and browser read one bounded /scum/surface response instead
  of five list calls per refresh.

Call-count budget for one server: per 5s facts batch, one SELECT plus one
INSERT/UPDATE per reported user and vehicle, one INSERT per moved trajectory
sample or new lock row, one bounded stale-user SELECT, and a trajectory
retention DELETE at most once per hour. One browser refresh issues one surface
request every 15s instead of five list requests.
2026-09-15 12:12:11 +08:00
..
2026-07-20 16:42:33 +08:00
2026-07-20 16:42:33 +08:00
2026-09-07 20:26:20 +08:00
2026-07-20 16:42:33 +08:00
2026-07-20 16:42:33 +08:00

platform_web/pages

First-party page implementations live here after routes and contracts are defined.

Required page groups:

  • home
  • servers
  • plugins
  • users
  • ai-providers
  • plugin-pages

Do not put shared API clients, shared DTOs, route definitions, or bridge contracts in page files.

Visual Rules

Pages must use the shared black-mecha / magical-girl visual system from ../theme/ instead of page-local card systems or unrelated palettes.

  • Reuse shared shell, card, panel, table, drawer, dialog, status, command, log, diff, plugin group, and operation history classes from theme/base.css.
  • Keep management lists, grids, and tables full-width. Create, edit, and detail workflows belong in modals, drawers, or detail routes, not in permanent right-side panes or inline form panels beside/above the list.
  • Keep page surfaces translucent enough for the selected built-in or uploaded background desktop to remain visible.
  • Ambient magical particles are global shell chrome. Pages must not add fixed decorative sparkles, hearts, moons, snowflakes, sigils, or custom backdrop layers.
  • Do not introduce opaque white cards, heavy dark dashboards, stock marketing layouts, or single-page custom gradients that bypass the theme tokens.
  • Preserve text/icons for status and operation results; do not rely on color-only cues.
  • Read ../theme/README.md before adding a new page surface pattern.

Server Detail operations behavior

The Server Detail workspace consumes safe Platform projections for lifecycle, plugin-owned pages, terminal/log streams, and run distribution actions. Action buttons remain compact and disabled with the Platform-provided reason when declaration, permission, endpoint, artifact, target, or lifecycle state is not ready.