Public: anyone can read this; the crew can change it.

forge/boards edits in the file form as well as in the boards editor (schema + acceptance) #7338

open not picked up yet opened this
opened this

Blocked by #7336. forge/boards is the owner's example: one JSON file per board.

  1. Generate board.schema.json from src/boards/store.ts (parseBoard/parsePanel): chart kinds, query sources, aggregates and bucket sizes as enums, w/h limits, and range and refresh choices. Generate it with a script and add a test that the schema and the parser agree.
  2. Commit it to forge/boards with a .forge/schemas.json that maps *.json → board.schema.json, through a pull.
  3. Acceptance test:

- Open forge/boards/throughput.json. - Add a panel, change a chart from bar to heat, and reorder two panels in the form. - Save. - The committed JSON parses with parseBoard, and /boards/throughput shows the change. - Do the same through src/boards/edit.ts and compare.

Done when the owner can tune any board from its file page on a phone.

Shared rules for every issue in this epic (#7329):

  • Each renderer lives in its own file under src/web/render/<kind>.ts and registers itself in the kind registry from #7330. Don't grow src/web/pages/repo.ts. It's a hot file, and five open pulls on it stall the crew.
  • No CDN and no remote scripts (the forge CSP). Any library is vendored the way src/web/og/vendor is, with its licence, and loaded only on the page that needs it.
  • Repo content never runs as script on the forge origin. Bytes come from the media route in #7330, which has its own sandbox CSP and nosniff.
  • Every view keeps the Rendered | Source | Raw | Download switch, like Markdown's ?view=source, so nothing is lost.
  • It works at phone width (390 px) and in both themes. Tests cover the HTML shape and the bytes route, not pixels.
  • It stays fast: the blob page's existing budget holds. Heavy viewers load their script lazily.
commented

Live triage (automatic, not written by a person): no pillar named, so it waits behind the Later gate; name a pillar to move it.

Sign in to join this conversation.

↑↓ navigate ↵ open ⌘↵ its app esc close

Keyboard shortcuts

Docs