Skip to content

feat(settings): sync v15.13 feature surfaces and close YAML/UI gaps#2622

Open
metaphorics wants to merge 1 commit into
can1357:mainfrom
metaphorics:settings-ui-surface-sync
Open

feat(settings): sync v15.13 feature surfaces and close YAML/UI gaps#2622
metaphorics wants to merge 1 commit into
can1357:mainfrom
metaphorics:settings-ui-surface-sync

Conversation

@metaphorics

Copy link
Copy Markdown
Contributor

Summary

Brings the settings panel, slash help, and docs back in sync with the features merged in v15.13.x, and closes the YAML/UI gaps found while auditing the settings schema.

Closes #2621.

Settings panel

  • Consolidate all speech settings under Interaction → Speech and gate dependent rows: vocalization Mode/Voice on speech.enabled; Local TTS Voice off under the xAI provider; Local TTS Model on a local-or-vocalization predicate.
  • Gate mnemopi remote-LLM fields to remote mode and embedding-endpoint fields to embeddings-enabled; gate exa sub-tools on the exa.enabled master.
  • Drop the redundant mcp.discoveryMode panel row (subsumed by tools.discoveryMode); the config key is still honored for back-compat.
  • Surface previously config-only settings, each gated on its master where applicable: retry.enabled, skills.enabled, stt.language, shellPath, searxng.categories/searxng.language, compaction.autoContinue, compaction.remoteEndpoint, and the Hindsight recall/retain knobs (recallBudget, bankMission, retainMission, retainContext).

TUI

  • Speech (speech.enabled) and auto-learn (autolearn.enabled) status-line indicators after the model name, across the unicode / nerd-font / ascii symbol presets.

Help & docs

  • /fast help notes fastModeScope controls the target provider family; /guided-goal help describes the guided interview.
  • Document the Ctrl+J newline shortcut (in-app hotkeys + docs/keybindings.md).
  • Sync tool docs: role param in task.md, activity field in irc.md (and the model prompt), new learn/manage-skill tool docs, and fastModeScope/task.eager/todo.eager in docs/settings.md.

Deliberately out of scope

  • memories.enabled stays config-only — it is a legacy back-compat migration flag explicitly superseded by memory.backend (already in the panel).
  • The seven per-source skills.enable* toggles and the granular per-backend number knobs stay config-only.

Tests

  • New settings-layout test asserts every ui.condition resolves to a real CONDITIONS predicate (guards the silent-typo gating failure mode where a bad name disables gating and the row always shows).
  • bun run check:ts green across all workspaces; settings-layout (3/3) and tool-discovery (49/49, incl. mcp.discoveryMode back-compat) pass.

The v15.13.x line merged a large body of features (speech/STT/TTS,
mnemopi memory, auto-learn, exa toggles, guided goals, configurable
/fast scope, task role specialization, work-aware IRC roster) but
several landed without syncing their settings-panel / slash-help / doc
surfaces. Auditing the settings schema also surfaced user-facing
settings reachable only from the YAML config, never the /settings panel.

Settings panel:
- Consolidate all speech settings under Interaction -> Speech and gate
  dependent rows (vocalization Mode/Voice on speech.enabled; Local TTS
  Voice off under the xAI provider; Local TTS Model on the
  local-or-vocalization predicate).
- Gate mnemopi remote-LLM fields to remote mode and embedding-endpoint
  fields to embeddings-enabled; gate exa sub-tools on the exa master.
- Drop the redundant mcp.discoveryMode panel row (subsumed by
  tools.discoveryMode); the config key is still honored for back-compat.
- Surface previously config-only settings: retry.enabled, skills.enabled,
  stt.language, shellPath, searxng.categories/language,
  compaction.autoContinue, compaction.remoteEndpoint (gated on remote
  compaction), and the Hindsight recall/retain knobs (recall budget,
  bank/retain missions, retain context; gated on the Hindsight backend).
- Add a settings-layout test asserting every ui.condition resolves to a
  CONDITIONS predicate (guards the silent-typo gating failure mode).

TUI:
- Add speech (speech.enabled) and auto-learn (autolearn.enabled)
  status-line indicators after the model name, across the unicode,
  nerd-font, and ascii symbol presets.

Help & docs:
- /fast help notes fastModeScope controls the target provider family;
  /guided-goal help describes the guided interview.
- Document the Ctrl+J newline shortcut (in-app hotkeys + keybindings.md).
- Sync tool docs: add the role param to task.md, the activity field to
  irc.md (and the model prompt), add the missing learn/manage-skill tool
  docs, and add settings catalog entries for fastModeScope, task.eager,
  todo.eager.

memories.enabled was deliberately NOT surfaced: it is a legacy
back-compat migration flag explicitly hidden in favor of memory.backend
(the live runtime selector, already in the panel).

Verified with `bun run check:ts` (all workspaces) plus the settings-layout
and tool-discovery test suites.
Copilot AI review requested due to automatic review settings June 15, 2026 05:32

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Note

Copilot was unable to run its full agentic suite in this review.

Surfaces additional config-only settings in the /settings UI, adds status-line glyph indicators for speech/auto-learn, and updates/help-syncs various docs and command descriptions.

Changes:

  • Add UI metadata (tab/group/label/description/conditions) for multiple settings keys and introduce/extend condition predicates.
  • Add theme-aware status-line icons for speech.enabled and autolearn.enabled.
  • Update tool/docs/help text (IRC list output fields, hotkeys/keybindings, slash-command descriptions) and add new tool docs for learn and manage_skill.

Reviewed changes

Copilot reviewed 15 out of 15 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
packages/coding-agent/test/modes/components/settings-layout.test.ts Adds a regression test ensuring ui.condition strings map to a CONDITIONS predicate.
packages/coding-agent/src/slash-commands/builtin-registry.ts Updates help text for /guided-goal and /fast.
packages/coding-agent/src/prompts/tools/irc.md Updates model-facing IRC tool prompt to include peer activity in list output.
packages/coding-agent/src/modes/utils/hotkeys-markdown.ts Documents Ctrl+J as an additional newline shortcut.
packages/coding-agent/src/modes/theme/theme.ts Adds new theme symbols and icon mappings for “speak” and “learn”.
packages/coding-agent/src/modes/components/status-line/segments.ts Displays speech/auto-learn indicators in the status line when enabled.
packages/coding-agent/src/modes/components/settings-defs.ts Exports CONDITIONS and adds multiple new condition predicates.
packages/coding-agent/src/config/settings-schema.ts Adds UI metadata and conditional visibility for many settings, reorganizes speech settings, and removes a redundant UI row.
packages/coding-agent/CHANGELOG.md Documents user-visible additions/changes/fixes introduced by this PR.
docs/tools/task.md Documents the role field for task items.
docs/tools/manage-skill.md Adds user-facing documentation for the manage_skill tool.
docs/tools/learn.md Adds user-facing documentation for the learn tool.
docs/tools/irc.md Updates IRC tool docs to include peer activity in list.
docs/settings.md Adds catalog entries for fastModeScope, task.eager, and todo.eager.
docs/keybindings.md Documents tui.input.newLine (Shift+Enter, Ctrl+J).

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment on lines +107 to +113
speechEnabled: () => {
try {
return Settings.instance.get("speech.enabled") === true;
} catch {
return false;
}
},
Comment on lines +148 to +161
exaEnabled: () => {
try {
return Settings.instance.get("exa.enabled") === true;
} catch {
return false;
}
},
compactionRemoteActive: () => {
try {
return Settings.instance.get("compaction.remoteEnabled") === true;
} catch {
return false;
}
},
Comment on lines +114 to +127
localTtsActive: () => {
try {
return Settings.instance.get("providers.tts") !== "xai";
} catch {
return false;
}
},
localTtsModelActive: () => {
try {
return Settings.instance.get("providers.tts") !== "xai" || Settings.instance.get("speech.enabled") === true;
} catch {
return false;
}
},
Comment on lines 10 to 14
interface UiShape {
tab: SettingTab;
group?: string;
condition?: string;
}
@roboomp roboomp added cli CLI commands and arguments feat prompting Prompt templates and prompt assembly review:p2 tool Tool behavior and integrations triaged tui Terminal UI rendering and display ux User experience improvements labels Jun 15, 2026

@roboomp roboomp left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2: coherent settings/help/docs surface sync, but it changes default UI/status-line surfaces and needs maintainer confirmation.
Found one should-fix: stt.language is surfaced without the stt.enabled gate promised by the PR premise.
Verification: inspected diff and surrounding code; targeted settings-layout test could not run in this checkout because Bun cannot resolve workspace package imports (@oh-my-pi/pi-ai / @oh-my-pi/pi-tui).
Thanks for the broad sync work.

Comment on lines 1466 to +1469
"stt.language": {
type: "string",
default: "en",
ui: {

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

should-fix: stt.language is now surfaced unconditionally. The PR premise says newly surfaced dependent settings are gated on their master where applicable, and this language hint has no effect unless stt.enabled is true. Add a sttEnabled predicate in CONDITIONS and set condition: "sttEnabled" here so the Speech tab does not show an inactive STT-only knob when speech-to-text is off.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

cli CLI commands and arguments feat prompting Prompt templates and prompt assembly review:p2 tool Tool behavior and integrations triaged tui Terminal UI rendering and display ux User experience improvements

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Settings-UI / help / doc surfaces out of sync with merged v15.13 features (+ config-only setting gaps)

3 participants