config tab: settings table on top, full expandable lists

Settings is a fixed, short set, so it's a key->value table pinned at the
top, not an accordion. Variable-length groups (skills, agents, commands,
hooks, permissions, MCP servers) expand to their COMPLETE list rather than
a truncated first-N + "…" — a truncated list falsely prioritises its first
entries. Permissions expand grouped by allow/ask/deny. T-183 scope synced.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-05-25 11:35:54 +02:00
co-authored by Claude Opus 4.7
parent da803e17e3
commit 0d377dfbae
4 changed files with 35 additions and 25 deletions
@@ -2238,3 +2238,4 @@ INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by,
INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-178', 'status', 'in_progress', 'done', NULL, '2026-05-25 08:21:46', '2026-05-25 08:21:46', '2026-05-25 08:21:46', NULL, 'ddaad91987208966c2720dee370738ed', 1) ON CONFLICT(hash) DO NOTHING;
INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-179', 'status', 'in_progress', 'done', NULL, '2026-05-25 08:26:21', '2026-05-25 08:26:21', '2026-05-25 08:26:21', NULL, '58dc0afa577b9aee651d683aa1b9bc69', 1) ON CONFLICT(hash) DO NOTHING;
INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-183', 'description', 'A comprehensive read view (with edit affordances where sensible) of the Claude environment, as the Config sub-tab of the sidebar (T-182). Sources: ClaudeConfig (D-76 / T-151, already reads skills, commands, settings, permissions from ~/.claude + .claude layered) plus the stream-json init/initialize payloads (agents, output styles + available styles, MCP servers, models, plugins). Sections: SKILLS, AGENTS, COMMANDS, PERMISSIONS (allow/ask/deny, colour-coded), HOOKS, MCP SERVERS, SETTINGS (model, output style). Show local+global layering (local wins) and that it is watched/live. Covers the interaction-type surfaces documented on anthropic.com so the user can see everything configured for Claude in one place. Acceptance: each section lists its entries from ClaudeConfig + init data; permissions colour-coded by rule kind; layering + source shown; updates live on a watched .claude change; widget tests. Wireframe: docs/design/wireframes/claude-prompts/09-sidebar-config-tab.png. Blocked by T-182 (sub-tab shell).', 'The Config sub-tab (T-182): a browsable view of the Claude environment over ClaudeConfig (D-76 / T-151 — skills, commands, settings, permissions from ~/.claude + .claude, layered) plus the stream-json init/initialize payloads (agents, output styles, MCP servers, models, plugins). Each category is an EXPANDABLE accordion section (no ellipsis truncation): SKILLS, AGENTS, COMMANDS, HOOKS, PERMISSIONS, MCP SERVERS, SETTINGS, each with a count. File-backed entries are CLICKABLE: a skill (SKILL.md), agent (.claude/agents/*.md), or command (.claude/commands/*.md) — clicking fires an open-file action into the right-side markdown reader/editor pane (reusing the existing file-open plumbing, D-6 parity) to show what that skill/agent/command says. Non-file entries render inline: permissions (allow/ask/deny, colour-coded), MCP servers, model, output style; SETTINGS can open settings.json. Show local+global layering (local wins) and that it is watched/live. Acceptance: sections expand/collapse to the full list; clicking a file-backed item opens its .md in the reader; permissions colour-coded by rule kind; updates live on a watched .claude change; widget tests for expand + click-to-open. Wireframe: docs/design/wireframes/claude-prompts/09-sidebar-config-tab.png. Blocked by T-182.', NULL, '2026-05-25 09:31:37', '2026-05-25 09:31:37', '2026-05-25 09:31:37', NULL, '473e88ee9fa895f5dc30fcac5b001fa6', 1) ON CONFLICT(hash) DO NOTHING;
INSERT INTO ticket_history (ticket_id, field, old_value, new_value, changed_by, changed_at, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-183', 'description', 'The Config sub-tab (T-182): a browsable view of the Claude environment over ClaudeConfig (D-76 / T-151 — skills, commands, settings, permissions from ~/.claude + .claude, layered) plus the stream-json init/initialize payloads (agents, output styles, MCP servers, models, plugins). Each category is an EXPANDABLE accordion section (no ellipsis truncation): SKILLS, AGENTS, COMMANDS, HOOKS, PERMISSIONS, MCP SERVERS, SETTINGS, each with a count. File-backed entries are CLICKABLE: a skill (SKILL.md), agent (.claude/agents/*.md), or command (.claude/commands/*.md) — clicking fires an open-file action into the right-side markdown reader/editor pane (reusing the existing file-open plumbing, D-6 parity) to show what that skill/agent/command says. Non-file entries render inline: permissions (allow/ask/deny, colour-coded), MCP servers, model, output style; SETTINGS can open settings.json. Show local+global layering (local wins) and that it is watched/live. Acceptance: sections expand/collapse to the full list; clicking a file-backed item opens its .md in the reader; permissions colour-coded by rule kind; updates live on a watched .claude change; widget tests for expand + click-to-open. Wireframe: docs/design/wireframes/claude-prompts/09-sidebar-config-tab.png. Blocked by T-182.', 'The Config sub-tab (T-182): a browsable view of the Claude environment over ClaudeConfig (D-76 / T-151 — skills, commands, settings, permissions from ~/.claude + .claude, layered, local wins) plus the stream-json init/initialize payloads (agents, output styles, MCP servers, models, plugins). Layout: SETTINGS is a FIXED key->value table pinned at the top (not collapsible) — model, output style, permission mode, source. Everything variable-length is an EXPANDABLE accordion section showing the FULL list when expanded, never truncated (truncating to first-N + ellipsis falsely prioritises the first entries and makes the list pointless): SKILLS, AGENTS, COMMANDS, HOOKS, PERMISSIONS (grouped allow/ask/deny, colour-coded, each rule on its own line), MCP SERVERS — each with a count. File-backed entries are CLICKABLE: a skill (SKILL.md), agent (.claude/agents/*.md), or command (.claude/commands/*.md) — clicking fires an open-file action into the right-side markdown reader/editor pane (reusing the existing file-open plumbing, D-6 parity) to show what it says. Watched/live on .claude changes. Acceptance: settings render as a top table; every variable section expands to its complete list (no ellipsis); clicking a file-backed item opens its .md in the reader; permissions colour-coded by kind; widget tests for table + expand + click-to-open. Wireframe: docs/design/wireframes/claude-prompts/09-sidebar-config-tab.png. Blocked by T-182.', NULL, '2026-05-25 09:35:47', '2026-05-25 09:35:47', '2026-05-25 09:35:47', NULL, '33086bf1d766da9bb8e12ddeeaa8ed92', 1) ON CONFLICT(hash) DO NOTHING;
+1
View File
@@ -2756,3 +2756,4 @@ INSERT INTO tickets (id, type, parent_id, title, description, status, priority,
INSERT INTO tickets (id, type, parent_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-182', 'task', 'T-164', 'Claude sidebar sub-tabs: Activity / Team / Config', 'The Claude meta-sidebar is overloaded (roster + tasks + messages + stats + config do not fit one scroll). Split it into a sub-tab strip (reuse the search-panel mode-strip pattern) with three tabs: (1) Activity — stats + live runtime visibility (T-141/T-157); (2) Team — roster + tasks + message-feed widget (T-171 + T-180), mostly hidden when solo and auto-fronted when a team is live; (3) Config — the Claude-environment view. Default to Activity. Acceptance: a sub-tab strip switches the sidebar body between the three surfaces; existing stats/team content slots into Activity/Team unchanged; Team auto-fronts on team spawn; widget tests for tab switching. Wireframes: docs/design/wireframes/claude-prompts/07-sidebar-activity-tab.png, 08-sidebar-team-tab.png, 09-sidebar-config-tab.png. Relates to T-141, T-157, T-171, T-180.', 'backlog', 'medium', NULL, NULL, 'D-77', '2026-05-25 09:26:31', '2026-05-25 09:26:31', NULL, 'bd3215543c20c774969362dc59dad249', 1) ON CONFLICT(id) DO UPDATE SET type=excluded.type, parent_id=excluded.parent_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash);
INSERT INTO tickets (id, type, parent_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-183', 'task', 'T-164', 'Claude Config sidebar tab — skills/agents/commands/settings/permissions/hooks/MCP', 'A comprehensive read view (with edit affordances where sensible) of the Claude environment, as the Config sub-tab of the sidebar (T-182). Sources: ClaudeConfig (D-76 / T-151, already reads skills, commands, settings, permissions from ~/.claude + .claude layered) plus the stream-json init/initialize payloads (agents, output styles + available styles, MCP servers, models, plugins). Sections: SKILLS, AGENTS, COMMANDS, PERMISSIONS (allow/ask/deny, colour-coded), HOOKS, MCP SERVERS, SETTINGS (model, output style). Show local+global layering (local wins) and that it is watched/live. Covers the interaction-type surfaces documented on anthropic.com so the user can see everything configured for Claude in one place. Acceptance: each section lists its entries from ClaudeConfig + init data; permissions colour-coded by rule kind; layering + source shown; updates live on a watched .claude change; widget tests. Wireframe: docs/design/wireframes/claude-prompts/09-sidebar-config-tab.png. Blocked by T-182 (sub-tab shell).', 'backlog', 'medium', NULL, NULL, 'D-76', '2026-05-25 09:26:40', '2026-05-25 09:26:40', NULL, '9cbe6736b38163e60c448b0e0af3153d', 1) ON CONFLICT(id) DO UPDATE SET type=excluded.type, parent_id=excluded.parent_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash);
INSERT INTO tickets (id, type, parent_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-183', 'task', 'T-164', 'Claude Config sidebar tab — skills/agents/commands/settings/permissions/hooks/MCP', 'The Config sub-tab (T-182): a browsable view of the Claude environment over ClaudeConfig (D-76 / T-151 — skills, commands, settings, permissions from ~/.claude + .claude, layered) plus the stream-json init/initialize payloads (agents, output styles, MCP servers, models, plugins). Each category is an EXPANDABLE accordion section (no ellipsis truncation): SKILLS, AGENTS, COMMANDS, HOOKS, PERMISSIONS, MCP SERVERS, SETTINGS, each with a count. File-backed entries are CLICKABLE: a skill (SKILL.md), agent (.claude/agents/*.md), or command (.claude/commands/*.md) — clicking fires an open-file action into the right-side markdown reader/editor pane (reusing the existing file-open plumbing, D-6 parity) to show what that skill/agent/command says. Non-file entries render inline: permissions (allow/ask/deny, colour-coded), MCP servers, model, output style; SETTINGS can open settings.json. Show local+global layering (local wins) and that it is watched/live. Acceptance: sections expand/collapse to the full list; clicking a file-backed item opens its .md in the reader; permissions colour-coded by rule kind; updates live on a watched .claude change; widget tests for expand + click-to-open. Wireframe: docs/design/wireframes/claude-prompts/09-sidebar-config-tab.png. Blocked by T-182.', 'backlog', 'medium', NULL, NULL, 'D-76', '2026-05-25 09:26:40', '2026-05-25 09:31:37', NULL, '2011edc54063ca86e8418fdb0d4a81ac', 1) ON CONFLICT(id) DO UPDATE SET type=excluded.type, parent_id=excluded.parent_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash);
INSERT INTO tickets (id, type, parent_id, title, description, status, priority, assigned_to, team, decision_ref, created_at, updated_at, deleted_at, hash, canonical_version) VALUES ('T-183', 'task', 'T-164', 'Claude Config sidebar tab — skills/agents/commands/settings/permissions/hooks/MCP', 'The Config sub-tab (T-182): a browsable view of the Claude environment over ClaudeConfig (D-76 / T-151 — skills, commands, settings, permissions from ~/.claude + .claude, layered, local wins) plus the stream-json init/initialize payloads (agents, output styles, MCP servers, models, plugins). Layout: SETTINGS is a FIXED key->value table pinned at the top (not collapsible) — model, output style, permission mode, source. Everything variable-length is an EXPANDABLE accordion section showing the FULL list when expanded, never truncated (truncating to first-N + ellipsis falsely prioritises the first entries and makes the list pointless): SKILLS, AGENTS, COMMANDS, HOOKS, PERMISSIONS (grouped allow/ask/deny, colour-coded, each rule on its own line), MCP SERVERS — each with a count. File-backed entries are CLICKABLE: a skill (SKILL.md), agent (.claude/agents/*.md), or command (.claude/commands/*.md) — clicking fires an open-file action into the right-side markdown reader/editor pane (reusing the existing file-open plumbing, D-6 parity) to show what it says. Watched/live on .claude changes. Acceptance: settings render as a top table; every variable section expands to its complete list (no ellipsis); clicking a file-backed item opens its .md in the reader; permissions colour-coded by kind; widget tests for table + expand + click-to-open. Wireframe: docs/design/wireframes/claude-prompts/09-sidebar-config-tab.png. Blocked by T-182.', 'backlog', 'medium', NULL, NULL, 'D-76', '2026-05-25 09:26:40', '2026-05-25 09:35:47', NULL, 'a4962b8a69cffe93b72275d098251e1c', 1) ON CONFLICT(id) DO UPDATE SET type=excluded.type, parent_id=excluded.parent_id, title=excluded.title, description=excluded.description, status=excluded.status, priority=excluded.priority, assigned_to=excluded.assigned_to, team=excluded.team, decision_ref=excluded.decision_ref, updated_at=excluded.updated_at, deleted_at=excluded.deleted_at, hash=excluded.hash, canonical_version=excluded.canonical_version WHERE excluded.updated_at > tickets.updated_at OR (excluded.updated_at = tickets.updated_at AND excluded.hash > tickets.hash);
@@ -8,36 +8,44 @@
"tab-c": {"type": "Text", "parent": "panel", "left": 210, "top": 40, "text": "Config", "fontColor": "#5aa0e0", "fontSize": 13},
"tab-c-u": {"type": "Rectangle", "parent": "panel", "left": 208, "top": 60, "width": 52, "height": 2, "fillColor": "#5aa0e0", "strokeColor": "#5aa0e0", "corners": [0, 0, 0, 0]},
"strip": {"type": "Line", "parent": "panel", "left": 40, "top": 62, "width": 340, "height": 1, "strokeColor": "#2a3038"},
"scope": {"type": "Text", "parent": "panel", "left": 58, "top": 76, "text": "local + global (layered, local wins)", "fontColor": "#5b6470", "fontSize": 10},
"h-skills": {"type": "Text", "parent": "panel", "left": 58, "top": 100, "text": "▾ SKILLS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-skills": {"type": "Text", "parent": "panel", "left": 340, "top": 100, "text": "14", "fontColor": "#5b6470", "fontSize": 11},
"sk1": {"type": "Text", "parent": "panel", "left": 78, "top": 122, "text": " pql", "fontColor": "#9ec3ef", "fontSize": 12},
"sk2": {"type": "Text", "parent": "panel", "left": 78, "top": 142, "text": " whats-next", "fontColor": "#9ec3ef", "fontSize": 12},
"sk3": {"type": "Text", "parent": "panel", "left": 78, "top": 162, "text": " git-commit", "fontColor": "#9ec3ef", "fontSize": 12},
"sk4": {"type": "Text", "parent": "panel", "left": 78, "top": 182, "text": " ui-design", "fontColor": "#9ec3ef", "fontSize": 12},
"sk5": {"type": "Text", "parent": "panel", "left": 78, "top": 202, "text": " frame0-wireframe", "fontColor": "#9ec3ef", "fontSize": 12},
"sk6": {"type": "Text", "parent": "panel", "left": 78, "top": 222, "text": " security-review", "fontColor": "#9ec3ef", "fontSize": 12},
"sk7": {"type": "Text", "parent": "panel", "left": 78, "top": 242, "text": "+ 8 more", "fontColor": "#5b6470", "fontSize": 11},
"h-set": {"type": "Text", "parent": "panel", "left": 58, "top": 78, "text": "SETTINGS", "fontColor": "#7a8290", "fontSize": 12},
"k1": {"type": "Text", "parent": "panel", "left": 58, "top": 100, "text": "model", "fontColor": "#9aa4b2", "fontSize": 12},
"v1": {"type": "Text", "parent": "panel", "left": 200, "top": 100, "text": "opus", "fontColor": "#c8d0e0", "fontSize": 12},
"k2": {"type": "Text", "parent": "panel", "left": 58, "top": 120, "text": "output style", "fontColor": "#9aa4b2", "fontSize": 12},
"v2": {"type": "Text", "parent": "panel", "left": 200, "top": 120, "text": "default", "fontColor": "#c8d0e0", "fontSize": 12},
"k3": {"type": "Text", "parent": "panel", "left": 58, "top": 140, "text": "permission mode", "fontColor": "#9aa4b2", "fontSize": 12},
"v3": {"type": "Text", "parent": "panel", "left": 200, "top": 140, "text": "default", "fontColor": "#c8d0e0", "fontSize": 12},
"k4": {"type": "Text", "parent": "panel", "left": 58, "top": 160, "text": "source", "fontColor": "#9aa4b2", "fontSize": 12},
"v4": {"type": "Text", "parent": "panel", "left": 200, "top": 160, "text": "~/.claude + .claude", "fontColor": "#c8d0e0", "fontSize": 12},
"h-agents": {"type": "Text", "parent": "panel", "left": 58, "top": 272, "text": "▸ AGENTS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-agents": {"type": "Text", "parent": "panel", "left": 344, "top": 272, "text": "5", "fontColor": "#5b6470", "fontSize": 11},
"h-cmds": {"type": "Text", "parent": "panel", "left": 58, "top": 298, "text": "▸ COMMANDS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-cmds": {"type": "Text", "parent": "panel", "left": 340, "top": 298, "text": "28", "fontColor": "#5b6470", "fontSize": 11},
"h-hooks": {"type": "Text", "parent": "panel", "left": 58, "top": 324, "text": "▸ HOOKS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-hooks": {"type": "Text", "parent": "panel", "left": 344, "top": 324, "text": "3", "fontColor": "#5b6470", "fontSize": 11},
"div1": {"type": "Line", "parent": "panel", "left": 58, "top": 188, "width": 304, "height": 1, "strokeColor": "#2a3038"},
"div1": {"type": "Line", "parent": "panel", "left": 58, "top": 350, "width": 304, "height": 1, "strokeColor": "#2a3038"},
"h-skills": {"type": "Text", "parent": "panel", "left": 58, "top": 202, "text": "▸ SKILLS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-skills": {"type": "Text", "parent": "panel", "left": 340, "top": 202, "text": "14", "fontColor": "#5b6470", "fontSize": 11},
"h-agents": {"type": "Text", "parent": "panel", "left": 58, "top": 226, "text": "▸ AGENTS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-agents": {"type": "Text", "parent": "panel", "left": 344, "top": 226, "text": "5", "fontColor": "#5b6470", "fontSize": 11},
"h-cmds": {"type": "Text", "parent": "panel", "left": 58, "top": 250, "text": "▸ COMMANDS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-cmds": {"type": "Text", "parent": "panel", "left": 340, "top": 250, "text": "28", "fontColor": "#5b6470", "fontSize": 11},
"h-hooks": {"type": "Text", "parent": "panel", "left": 58, "top": 274, "text": "▸ HOOKS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-hooks": {"type": "Text", "parent": "panel", "left": 344, "top": 274, "text": "3", "fontColor": "#5b6470", "fontSize": 11},
"h-perms": {"type": "Text", "parent": "panel", "left": 58, "top": 364, "text": "▾ PERMISSIONS", "fontColor": "#c8d0e0", "fontSize": 12},
"perm-allow": {"type": "Text", "parent": "panel", "left": 78, "top": 386, "text": "allow: Bash(pql *), Bash(git *), Read", "fontColor": "#5cb87a", "fontSize": 12},
"perm-ask": {"type": "Text", "parent": "panel", "left": 78, "top": 406, "text": "ask: Write, Edit, Bash", "fontColor": "#e0a04a", "fontSize": 12},
"perm-deny": {"type": "Text", "parent": "panel", "left": 78, "top": 426, "text": "deny: —", "fontColor": "#9aa4b2", "fontSize": 12},
"h-perms": {"type": "Text", "parent": "panel", "left": 58, "top": 300, "text": "▾ PERMISSIONS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-perms": {"type": "Text", "parent": "panel", "left": 340, "top": 300, "text": "9", "fontColor": "#5b6470", "fontSize": 11},
"pa": {"type": "Text", "parent": "panel", "left": 78, "top": 322, "text": "allow", "fontColor": "#5cb87a", "fontSize": 11},
"pa1": {"type": "Text", "parent": "panel", "left": 130, "top": 322, "text": "Bash(pql *)", "fontColor": "#c8d0e0", "fontSize": 12},
"pa2": {"type": "Text", "parent": "panel", "left": 130, "top": 340, "text": "Bash(git *)", "fontColor": "#c8d0e0", "fontSize": 12},
"pa3": {"type": "Text", "parent": "panel", "left": 130, "top": 358, "text": "Read, Glob, Grep", "fontColor": "#c8d0e0", "fontSize": 12},
"pa4": {"type": "Text", "parent": "panel", "left": 130, "top": 376, "text": "WebFetch(docs.claude.com)", "fontColor": "#c8d0e0", "fontSize": 12},
"pk": {"type": "Text", "parent": "panel", "left": 78, "top": 398, "text": "ask", "fontColor": "#e0a04a", "fontSize": 11},
"pk1": {"type": "Text", "parent": "panel", "left": 130, "top": 398, "text": "Write, Edit", "fontColor": "#c8d0e0", "fontSize": 12},
"pk2": {"type": "Text", "parent": "panel", "left": 130, "top": 416, "text": "Bash", "fontColor": "#c8d0e0", "fontSize": 12},
"pd": {"type": "Text", "parent": "panel", "left": 78, "top": 438, "text": "deny", "fontColor": "#d9667a", "fontSize": 11},
"pd1": {"type": "Text", "parent": "panel", "left": 130, "top": 438, "text": "Bash(rm -rf *)", "fontColor": "#c8d0e0", "fontSize": 12},
"h-mcp": {"type": "Text", "parent": "panel", "left": 58, "top": 452, "text": "▸ MCP SERVERS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-mcp": {"type": "Text", "parent": "panel", "left": 340, "top": 452, "text": "5", "fontColor": "#5b6470", "fontSize": 11},
"h-settings": {"type": "Text", "parent": "panel", "left": 58, "top": 478, "text": "▸ SETTINGS", "fontColor": "#c8d0e0", "fontSize": 12},
"h-mcp": {"type": "Text", "parent": "panel", "left": 58, "top": 466, "text": "▸ MCP SERVERS", "fontColor": "#c8d0e0", "fontSize": 12},
"c-mcp": {"type": "Text", "parent": "panel", "left": 340, "top": 466, "text": "5", "fontColor": "#5b6470", "fontSize": 11},
"hint": {"type": "Text", "parent": "panel", "left": 58, "top": 706, "text": "click a skill / agent / command → opens its .md in the reader →", "fontColor": "#5b6470", "fontSize": 10}
"hint": {"type": "Text", "parent": "panel", "left": 58, "top": 706, "text": "expand a list to see all · click a skill/agent/command → opens its .md →", "fontColor": "#5b6470", "fontSize": 10}
}
}
Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

After

Width:  |  Height:  |  Size: 48 KiB