feat(settings): make the per-harness SDK Features sections tabs - #779
Draft
Nowaker wants to merge 1 commit into
Draft
feat(settings): make the per-harness SDK Features sections tabs#779Nowaker wants to merge 1 commit into
Nowaker wants to merge 1 commit into
Conversation
SDK Features rendered one card per harness, stacked. With ten adapters that is a long scroll whose only structure is repetition, and it pushed everything below it off the first screen. The harnesses become a tab strip over one body: picking a tab shows that harness's settings and nothing else, including the two system-prompt toggles - the built-in Claude Code prompt and the connecting agent's own. The tab strip is built from the same Object.keys(currentConfig) the flat list used, so an adapter the API returns still appears the moment it exists, labelled by ADAPTER_LABELS or by its raw name. Tabs reuse dashboard.ts's .tab rules verbatim so the two pages read alike. They wrap rather than scroll: ten labels do not fit 900px on one row, and a strip that hides harnesses off-screen would reintroduce the discoverability problem it is meant to fix. Stacked cards showed every harness's Active/Default badge at once and one body at a time cannot, so a tab whose harness is off its defaults carries a small dot.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
DRAFT - please do not review or merge yet
Nowaker is still iterating on this. Filed early so the change is visible and
reviewable when it is ready; please hold off until the DRAFT marker is gone.
What
Turns the per-harness SDK Features cards on
/settingsinto a tab stripover one body. Picking a tab shows that harness's settings and nothing else,
including its two system-prompt toggles - the built-in Claude Code prompt and
the connecting agent's own.
Why
Ten adapters rendered as ten stacked cards is a long scroll whose only structure
is repetition, and it pushes everything below it off the first screen. That is
also what buried the Routing controls (sibling PR).
Details worth a reviewer's attention
Object.keys(currentConfig)the flat listused, so an adapter the API returns appears the moment it exists, labelled by
ADAPTER_LABELSor by its raw name. No hardcoded list to keep in sync.dashboard.ts's.tabrules verbatim, so the two pages readalike rather than gaining a second tab style.
strip that hides harnesses off-screen would reintroduce the discoverability
problem this is meant to fix.
showed every harness's Active/Default badge at once; one body at a time cannot,
and losing that signal silently would be a regression.
Verification
bunx tsc --noEmitexit 0, 0 errorsbun run test(the project's own chain) - 2494 pass, 0 fail, pipeline exit 0dir: every harness tab selects and shows its own toggles, no console errors
Scope
Presentation only - no adapter behaviour, no settings API change.
Cut from
main, one commit, independent of the sibling Routing PR. They touchthe same file and will conflict if both are taken; the conflict is textual and
trivial, and either can be taken alone.
This PR is AI generated, but under direct supervision and on request of Nowaker.