Title: Searchable/filterable settings navigation · Issue #39 · modelstudioai/openwork · GitHub
Open Graph Title: Searchable/filterable settings navigation · Issue #39 · modelstudioai/openwork
X Title: Searchable/filterable settings navigation · Issue #39 · modelstudioai/openwork
Description: Problem or Motivation The settings navigator (SettingsNavigator) renders a flat, ever-growing list of settings sections (General, Appearance, App, AI, Input, Shortcuts, Memory, MCP Servers, Hooks, Extensions, Permissions, Labels, Messagi...
Open Graph Description: Problem or Motivation The settings navigator (SettingsNavigator) renders a flat, ever-growing list of settings sections (General, Appearance, App, AI, Input, Shortcuts, Memory, MCP Servers, Hooks, ...
X Description: Problem or Motivation The settings navigator (SettingsNavigator) renders a flat, ever-growing list of settings sections (General, Appearance, App, AI, Input, Shortcuts, Memory, MCP Servers, Hooks, ...
Opengraph URL: https://github.com/modelstudioai/openwork/issues/39
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"Searchable/filterable settings navigation","articleBody":"## Problem or Motivation\n\nThe settings navigator (`SettingsNavigator`) renders a flat, ever-growing list\nof settings sections (General, Appearance, App, AI, Input, Shortcuts, Memory,\nMCP Servers, Hooks, Extensions, Permissions, Labels, Messaging, Server,\nWorkspace, Preferences — 16 sections today). There is no way to filter it.\n\nComparable desktop apps (Claude Code Desktop, VS Code, Codex desktop) all ship a\n**search box at the top of their settings** so users can jump to a setting by\ntyping part of its name instead of scanning the whole list. OpenWork's session\nlist, sources list, model picker, and tools list already have search affordances\n— settings is the conspicuous exception.\n\n## Proposed Solution\n\nAdd a search box at the top of `SettingsNavigator` that filters the section list\nby **title and description** (case-insensitive, substring). It mirrors the\nexisting `SessionSearchHeader` styling (search icon, clear button, focus ring)\nfor visual consistency, shows a \"No results found\" empty state when nothing\nmatches, and supports `Esc` to clear.\n\nThis is a **frontend-only** change:\n- `SettingsNavigator` already has all section metadata (`SETTINGS_ITEMS`,\n resolved labels/descriptions) in the renderer. Filtering is pure client-side\n React state — no backend, no qwen-code change.\n- Reuses existing i18n keys (`common.search`, `common.noResultsFound`), so no\n new locale strings are introduced.\n\n## Alternatives Considered\n\n- Command-palette navigation already exists, but it is a separate global\n surface; users in the settings panel expect to filter the list they are\n looking at, the way every comparable app does.\n\n## Additional Context\n\nFeasibility: **frontend-only / doable.** Verified against `apps/electron` and\n`packages/ui` — the navigator is a pure renderer component and the data it\nneeds is already in memory.\n\n### Acceptance criteria (CDP e2e assertion)\n\nA new `e2e/assertions/settings-search.assert.ts` drives the real built app over\nCDP and asserts the full path:\n\n1. Open **Settings** from the sidebar; the search box renders and the section\n list shows more than one row.\n2. Typing the first section's title narrows the list to exactly the predicted\n matches, every visible row actually contains the query, and the list shrinks.\n3. A no-match query (`zzqqxxnomatchzzqqxx`) shows the empty state and hides every\n row.\n4. Clearing the query restores the full list.\n\nPart of the autonomous desktop-feature loop (`loop-bot`).","author":{"url":"https://github.com/DragonnZhang","@type":"Person","name":"DragonnZhang"},"datePublished":"2026-06-30T13:08:53.000Z","interactionStatistic":{"@type":"InteractionCounter","interactionType":"https://schema.org/CommentAction","userInteractionCount":0},"url":"https://github.com/39/openwork/issues/39"}
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:55891617-b8d8-e35a-edad-e2834a9e82c1 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | D976:16373F:23C45:304AA:6A52767C |
| html-safe-nonce | c1b8f92b6acac15438dca8604a553d7e5595cc50cfbe1ee8d441dc3f3f262664 |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEOTc2OjE2MzczRjoyM0M0NTozMDRBQTo2QTUyNzY3QyIsInZpc2l0b3JfaWQiOiIyNDk2ODkxMTEwNjAyOTk1MzI0IiwicmVnaW9uX2VkZ2UiOiJpYWQiLCJyZWdpb25fcmVuZGVyIjoiaWFkIn0= |
| visitor-hmac | 37f23cecca62561f46759e6c4a1d63b985397a688204b4584e38b281d44618c7 |
| hovercard-subject-tag | issue:4777042344 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/modelstudioai/openwork/39/issue_layout |
| twitter:image | https://opengraph.githubassets.com/d921d886a68314730255fc05c795e997eede943c75f8eb1f5309760d681b4d8c/modelstudioai/openwork/issues/39 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/d921d886a68314730255fc05c795e997eede943c75f8eb1f5309760d681b4d8c/modelstudioai/openwork/issues/39 |
| og:image:alt | Problem or Motivation The settings navigator (SettingsNavigator) renders a flat, ever-growing list of settings sections (General, Appearance, App, AI, Input, Shortcuts, Memory, MCP Servers, Hooks, ... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | DragonnZhang |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| go-import | github.com/modelstudioai/openwork git https://github.com/modelstudioai/openwork.git |
| octolytics-dimension-user_id | 283556804 |
| octolytics-dimension-user_login | modelstudioai |
| octolytics-dimension-repository_id | 1256697754 |
| octolytics-dimension-repository_nwo | modelstudioai/openwork |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 1256697754 |
| octolytics-dimension-repository_network_root_nwo | modelstudioai/openwork |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width