Repository navigation
Make settings clearer, searchable and safe for existing profiles - #1792
Merged
Merged
Conversation
santoshkumarradha
force-pushed
the
settings-clarity-20261007
branch
from
October 7, 2026 19:11
569cf41 to
73d139b
Compare
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.
Settings mixed task behavior, interface preferences, model routing and credentials across ten tabs, with several controls that did not affect live chat. This change organizes the surface around developer work, preserves existing preferences, and makes each control's scope and activation clearer.
What changes
Nine categories: General, Models, Memory, Tasks, AI teams, Permissions, Spending, Connections and Privacy. A sidebar on wide terminals becomes a compact category bar on narrow terminals.
Everyday task controls lead with concurrency, model and result review. Task analysis, machine-resource thresholds and internal model routing live under Advanced.
One visible search covers all categories, Advanced controls and account connections. Existing names and configuration keys still work. Model pickers use a separate Filter models box.
Show hints stays in General and reads positively. Keyboard instructions match the current action, hover uses the same explanation as selection, and opening a view does not claim a setting was saved.
Text-only navigation reads Home · Chats · AI teams · Activity · Memory · Spend · Settings. AI teams means coordinated AI chats. Existing commands and numbered shortcuts are preserved.
Choice settings open an explicit list with the current value marked. Preview and Cancel do not write. Text/number editors group their explanation, field and clickable Save/Cancel controls; pending remote writes say Saving and Close.
Editors keep rejected drafts, place validation beside the field, mask credentials and protect controls behind them. Optional task counts explicitly say blank means no limit.
The document-reader preference now reaches the live chat session. Resident-only controls and legacy model slots that cannot be written here are omitted from this surface.
Chat settings discovery uses the same categories and labels as the TUI. Shared choice labels preserve legacy raw values, including inverse hints semantics; tool details state exact write values.
Chat receipts distinguish saved preferences from activation and project overrides. Chat-written routing, speed guard and pinned-host settings explicitly recommend restarting to ensure activation; the TUI retains its live transport hooks. User-visible notices show readable values. Interface preferences refresh immediately after panel saves and at chat turn completion.
Existing users and architecture
The settings registry still owns the readers, validators and writers. Chat presentation metadata supplies categories, labels, aliases, scope, activation timing and Advanced placement; a display adapter gives raw choices clearer readings. Saved keys, accepted values, defaults, project overrides, environment precedence and unknown profile fields retain their meaning. Opening Settings writes nothing.
Settings captured at startup explicitly require a CLI restart for already-open chats. This includes memory activation and the task-count cap. Turning memory off does not delete saved memories. The built-in manual explains these distinctions, AI team defaults and the new organization.
Examples verified
Open an existing profile with hints and memory disabled, a task cap and team preferences; all values and unknown fields survive.
Find a moved setting using its old name, find an Advanced control without expanding it, or find an account from another category.
Connect an account while a global search is open; its state refreshes even when results point to another category.
Open a choice, preview another value and cancel without writing; choose a value and reopen to verify it. Clipboard and wheel events stay in the open editor.
Enter
invalidfor concurrent tasks; the saved value stays unchanged. Correct it to4, save and reopen it, then clear it to restore no limit.Open saved memories, expand Advanced, choose role models and return from the crew panel without losing the expanded section.
Run with plain terminal output and narrow widths while retaining usable navigation, hover targets and keyboard instructions.
Ask to hide/show hints, expand/collapse completed tool details or change memory: direct tool tests read the setting, write it, read it back and check the saved profile.
Invalid values and protected or resident-only writes leave the profile unchanged. Restart and project-override receipts are verified.
Verification
Passed
make pr-readyon final PR revision87f88a46160368798eefdca30eba87e5951a5045, rebased onto dev6246d7154. Spark job:20261007-204903-001867-settings-selfservice-final(exit 0).Build, vet, packed/manual checks, 139 law/layout files across 30 packages, and the complete affected packages (
cmd/codeaf,internal/config,internal/manual,internal/session,internal/tui3) passed. All affected-package tests passed.The gallery contains 109 real TUI screenshots: 30 baseline and 79 final, covering all categories at 80 and 120 columns plus Advanced, search, hover, and edit states. Final capture job
20261007-202643-001862-settings-interaction-finalbuilt clean source746af81a7, checks choice preview/cancel/save/reopen, and sends real mouse clicks to Save/Cancel while asserting persisted values. The captures show the interaction layout at that revision; subsequent changes align chat settings tools and refresh saved interface preferences.Full suites and builds ran on Spark. Detailed evidence and limitations · complete screenshot gallery and reproduction scripts.
The screenshots use an isolated dummy profile and a loopback endpoint. Live third-party OAuth/provider availability is not claimed. No external model was used for the design or review. Chat-settings validation calls the real tools and runtime boundaries directly; it does not claim a live-model conversation test. The PR remains a draft for owner review.
The first full interaction run caught three tests that still expected silent cycling. Those tests now exercise explicit choice confirmation, preserving the original search, phone-row hit target and changed-marker checks. Another passing test's obsolete setup was corrected as well.
Before and after
Real TUI captures at 120 and 80 columns, with every old category and every new category included in the complete gallery. The following pairs show each category's primary former location. Advanced states, search, hover, navigation and validation have their own captures below.
General — before and after
Former locations: Display and Workspace.
Before · 80 columns · After · 80 columns
Models — before and after
Former locations: Providers and Context.
Before · 80 columns · After · 80 columns
Memory — before and after
Former locations: Session.
Before · 80 columns · After · 80 columns
Tasks — before and after
Former locations: Tasks and Safety.
Before · 80 columns · After · 80 columns
AI teams — before and after
Former locations: Teams.
Before · 80 columns · After · 80 columns
Permissions — before and after
Former locations: Safety.
Before · 80 columns · After · 80 columns
Spending — before and after
Former locations: Spending.
Before · 80 columns · After · 80 columns
Connections — before and after
Former locations: Connections, Providers and Workspace.
Before · 80 columns · After · 80 columns
Privacy — before and after
Former locations: Display and Providers.
Before · 80 columns · After · 80 columns
Validation and saving a task limit
The word
invalidwas intentionally entered to test rejection. The error stays beside the draft; it does not become the saved value.After correcting the draft to
4, saving, closing and reopening Settings:Saved value · Cleared to no limit · Reopened no-limit input
Search, hints, hover and Advanced controls
Old setting name · Find an account · Hints preference · Category hover
Models Advanced · Tasks Advanced · AI teams Advanced · Permissions Advanced · Connections Advanced · Privacy Advanced
All 80-column equivalents and scrolled Advanced views are indexed in the gallery.
Changing a setting
Current values are marked before choosing. Errors stay beside the draft, Save and
Cancel are clickable, and reopening confirms the stored value. Restart requirements
remain visible. Review also caught and fixed paste entering a hidden search,
scrolling the background page, and misleading Cancel wording during remote saves.