Skip to content

Make settings clearer, searchable and safe for existing profiles - #1792

Merged
santoshkumarradha merged 31 commits into
devfrom
settings-clarity-20261007
Oct 7, 2026
Merged

santoshkumarradha merged 31 commits into
devfrom
settings-clarity-20261007

Conversation

@santoshkumarradha

@santoshkumarradha santoshkumarradha commented Oct 7, 2026 •

Copy link
Copy Markdown
Member

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 invalid for concurrent tasks; the saved value stays unchanged. Correct it to 4, 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-ready on final PR revision 87f88a46160368798eefdca30eba87e5951a5045, rebased onto dev 6246d7154. 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-final built clean source 746af81a7, 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 · 120 columns After · 120 columns
Before General After General

Before · 80 columns · After · 80 columns

Models — before and after

Former locations: Providers and Context.

Before · 120 columns After · 120 columns
Before Models After Models

Before · 80 columns · After · 80 columns

Memory — before and after

Former locations: Session.

Before · 120 columns After · 120 columns
Before Memory After Memory

Before · 80 columns · After · 80 columns

Tasks — before and after

Former locations: Tasks and Safety.

Before · 120 columns After · 120 columns
Before Tasks After Tasks

Before · 80 columns · After · 80 columns

AI teams — before and after

Former locations: Teams.

Before · 120 columns After · 120 columns
Before AI teams After AI teams

Before · 80 columns · After · 80 columns

Permissions — before and after

Former locations: Safety.

Before · 120 columns After · 120 columns
Before Permissions After Permissions

Before · 80 columns · After · 80 columns

Spending — before and after

Former locations: Spending.

Before · 120 columns After · 120 columns
Before Spending After Spending

Before · 80 columns · After · 80 columns

Connections — before and after

Former locations: Connections, Providers and Workspace.

Before · 120 columns After · 120 columns
Before Connections After Connections

Before · 80 columns · After · 80 columns

Privacy — before and after

Former locations: Display and Providers.

Before · 120 columns After · 120 columns
Before Privacy After Privacy

Before · 80 columns · After · 80 columns

Validation and saving a task limit

The word invalid was intentionally entered to test rejection. The error stays beside the draft; it does not become the saved value.

Invalid draft with adjacent error

After correcting the draft to 4, saving, closing and reopening Settings:

Reopened saved task limit

Saved value · Cleared to no limit · Reopened no-limit input

Search, hints, hover and Advanced controls

Global settings search

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

Choose a value Edit a number
Choose a value Edit a number

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.

@santoshkumarradha santoshkumarradha added this to the Chat & connections milestone Oct 7, 2026
@santoshkumarradha santoshkumarradha added feature Work that adds a capability; developers break it into tasks area:chat The v3 surface a person sits in front of (internal/tui3) labels Oct 7, 2026
@santoshkumarradha santoshkumarradha self-assigned this Oct 7, 2026
@santoshkumarradha
santoshkumarradha force-pushed the settings-clarity-20261007 branch from 569cf41 to 73d139b Compare October 7, 2026 19:11
@santoshkumarradha
santoshkumarradha marked this pull request as ready for review October 7, 2026 20:56
@santoshkumarradha
santoshkumarradha merged commit d0a6f49 into dev Oct 7, 2026
9 checks passed
@santoshkumarradha
santoshkumarradha deleted the settings-clarity-20261007 branch October 7, 2026 21:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:chat The v3 surface a person sits in front of (internal/tui3) feature Work that adds a capability; developers break it into tasks

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant