Skip to content

feat(web): configure Prism role preferences and view capacity - #23

Merged
lukemaj merged 5 commits into
mainfrom
feat/21-prism-settings
Sep 25, 2026
Merged

lukemaj merged 5 commits into
mainfrom
feat/21-prism-settings

Conversation

@lukemaj

@lukemaj lukemaj commented Sep 25, 2026 •

Copy link
Copy Markdown

Adds Settings → Prism (Model Router) directly below Providers. Each of the six roles shows easy, medium and hard lanes. Each lane stores an ordered list of enabled provider models and effort: primary first, then fallbacks. The same model can appear at different efforts. No capability tags.

The page uses the existing project/environment scope, preserves other lanes and role-kit fields, displays real provider usage windows and reset times, and links the recent-jobs placeholder to a thread's Agents panel. Saves and reset-to-environment share a guard that survives scope navigation and waits for the refreshed settings snapshot.

Closes #21; settings slice of toolboxmd/model-router#115. Rebased onto main after #22 merged. This PR changes no server or contract files.

Validation at deafe1b0bdbf2741c696c35f3a2b6acd06285dfc:

  • 93 focused web tests; web typecheck; scoped lint and formatting; fork stack check.
  • Independent GPT-6-Astra high review: no remaining blockers after correcting save concurrency across scope changes.
  • Isolated live server (T3CODE_HOME under /tmp, separate ports), Playwright bundled Chromium: all 18 lanes, add/remove/reorder, distinct effort entries, independent drafts, save/reload, project override isolation and reset, real provider capacity, and Agents navigation. Zero page errors; narrow web viewport has no horizontal overflow.
  • Screenshots captured locally with bundled Chromium. Image attachment to GitHub remains unavailable through the tools used here; no screenshot files were committed.

Upstream edits, recorded in both fork maintenance owners:

  • apps/web/src/components/settings/SettingsSidebarNav.tsx
  • apps/web/src/components/settings/settingsSearch.ts
  • apps/web/src/routeTree.gen.ts (generated)

The route, page, logic, save state and tests are fork-owned files. No public website/SEO change. The fork has no version policy; upstream package versions remain unchanged.

Implemented with GPT-6-Astra in Codex; independently reviewed with GPT-6-Astra high in read-only Codex.

@github-actions github-actions Bot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL labels Sep 25, 2026
@github-actions

github-actions Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Thread transfer impact

✅ Thread transfer remains within every enforced ceiling.

Provider Metric Main baseline This PR Impact PR ceiling
Codex Total thread wire 13.5 KiB 13.5 KiB −28 B (−0.2%) 15.1 KiB ✅
Codex Thread snapshot wire 7.1 KiB 7.1 KiB −6 B (−0.1%) 7.3 KiB ✅
Codex Live turn WebSocket wire 6.5 KiB 6.4 KiB −22 B (−0.3%) 7.8 KiB ✅
Codex Live turn WebSocket decoded 56.3 KiB 56.2 KiB −44 B (−0.1%) 66.4 KiB ✅
Codex Live turn messages 10 9 −1 (−10.0%) 21 ✅
Claude Total thread wire 13.5 KiB 13.5 KiB 0 B (0.0%) 15.1 KiB ✅
Claude Thread snapshot wire 7.1 KiB 7.1 KiB −7 B (−0.1%) 7.3 KiB ✅
Claude Live turn WebSocket wire 6.4 KiB 6.4 KiB +7 B (+0.1%) 7.8 KiB ✅
Claude Live turn WebSocket decoded 57.0 KiB 57.0 KiB 0 B (0.0%) 66.4 KiB ✅
Claude Live turn messages 9 9 0 (0.0%) 21 ✅

Baseline: 6f9364f · PR result: deafe1b · Source CI: success

Scenario and decoded snapshot size

10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.

  • Codex decoded thread snapshot: 113.9 KiB
  • Claude decoded thread snapshot: 114.6 KiB

Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed.

@lukemaj
lukemaj force-pushed the feat/21-prism-settings branch from 3276ee9 to 0c6ca61 Compare September 25, 2026 18:24
@github-actions github-actions Bot added size:XXL and removed size:XL labels Sep 25, 2026
@lukemaj
lukemaj force-pushed the feat/21-prism-settings branch from c7ce678 to 0bef691 Compare September 25, 2026 18:33
@github-actions github-actions Bot added size:XL and removed size:XXL labels Sep 25, 2026
@lukemaj
lukemaj marked this pull request as ready for review September 25, 2026 18:45
@lukemaj
lukemaj merged commit 1ab79b5 into main Sep 25, 2026
22 checks passed
@lukemaj
lukemaj deleted the feat/21-prism-settings branch September 25, 2026 18:45
lukemaj added a commit that referenced this pull request Sep 27, 2026
* wip: add Prism role preferences and capacity settings (#21)

* wip: edit easy medium and hard lanes for every Prism role

* wip: derive Prism lanes from the exported schema

* wip: serialize Prism saves through the settings snapshot

* wip: retain Prism save guard across scope navigation
lukemaj added a commit that referenced this pull request Sep 27, 2026
* wip: add Prism role preferences and capacity settings (#21)

* wip: edit easy medium and hard lanes for every Prism role

* wip: derive Prism lanes from the exported schema

* wip: serialize Prism saves through the settings snapshot

* wip: retain Prism save guard across scope navigation
lukemaj added a commit that referenced this pull request Sep 27, 2026
* wip: add Prism role preferences and capacity settings (#21)

* wip: edit easy medium and hard lanes for every Prism role

* wip: derive Prism lanes from the exported schema

* wip: serialize Prism saves through the settings snapshot

* wip: retain Prism save guard across scope navigation
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL vouch:trusted PR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Prism (Model Router) settings page: roles, model preferences, lanes, capacity

1 participant