Part of #919. Phase 3. LP-012.
Independent of the other phases; can run in parallel.
Summary
Reduce the console to what a browser is genuinely better at — conversation and observability — and move configuration toward file- and CLI-first, so the remaining surface can be designed rather than merely maintained.
Problem
The console has grown to 41.5k LOC across 66 Svelte components. The distribution is the issue:
| Component |
LOC |
Config.svelte |
3200 |
Chat.svelte |
2167 |
TasksPanel.svelte |
1962 |
SessionConfigPanel.svelte |
1862 |
ChatPanel.svelte |
1861 |
AgentRuntimeRunView.svelte |
1763 |
lib/api.ts |
1825 |
Config.svelte at 3200 lines is the largest file in the frontend and mirrors a YAML file that is already the source of truth (workspace/config/tars.config.yaml), already documented (config/tars.config.example.yaml), and already validated server-side. Every new config field costs a form control, and the config surface is 60+ fields and growing — #923 and #925 each add more.
The CLI shows the same pattern: 37 registered subcommands.
This is the "simplify and sharpen" problem, and it is worth stating plainly that it is not a repository-layout problem — see #930. Moving code does not reduce it.
Scope
This issue is a decision plus a first cut, not a blanket rewrite.
Acceptance Criteria
Validation
Out of Scope
Part of #919. Phase 3. LP-012.
Independent of the other phases; can run in parallel.
Summary
Reduce the console to what a browser is genuinely better at — conversation and observability — and move configuration toward file- and CLI-first, so the remaining surface can be designed rather than merely maintained.
Problem
The console has grown to 41.5k LOC across 66 Svelte components. The distribution is the issue:
Config.svelteChat.svelteTasksPanel.svelteSessionConfigPanel.svelteChatPanel.svelteAgentRuntimeRunView.sveltelib/api.tsConfig.svelteat 3200 lines is the largest file in the frontend and mirrors a YAML file that is already the source of truth (workspace/config/tars.config.yaml), already documented (config/tars.config.example.yaml), and already validated server-side. Every new config field costs a form control, and the config surface is 60+ fields and growing — #923 and #925 each add more.The CLI shows the same pattern: 37 registered subcommands.
This is the "simplify and sharpen" problem, and it is worth stating plainly that it is not a repository-layout problem — see #930. Moving code does not reduce it.
Scope
This issue is a decision plus a first cut, not a blanket rewrite.
Config.svelteagainst actual usage: which fields are edited in the console versus the YAML file. Keep onboarding and credential entry — those genuinely need a UI.lib/api.tsby domain.frontend/console/DESIGN.mdbefore any visual change, and update it in the same PR where the result deviates.Acceptance Criteria
Config.svelteis materially smaller, with the removed surface either relocated or documented as file-first.DESIGN.mdreflects the result.Validation
cd frontend/console && npm run checkcd frontend/console && npm run test:cimake console-build && make dev-serve, walking onboarding and each remaining routemake testOut of Scope