Skip to content

feat(commands): slash commands should directly apply settings, not just display them #104

@akougkas

Description

@akougkas

Problem

Every configurable slash command is display-only:

  • /modes build shows "To switch to Build, ask Panos: 'switch to build mode'"
  • /safety suggest shows "To apply suggest, ask Panos: 'change safety to suggest'"
  • /reasoning high shows "To apply high, ask Panos: 'set reasoning to high'"
  • /models <ref> shows "To switch to X, ask Panos: 'use X'"
  • /preset <name> shows preset config but does not apply it
  • /theme <name> shows theme list but does not switch

Users must either use keyboard shortcuts (only 3 exist) or ask the LLM to call pan_apply_config. This creates a slow feedback loop for simple operations and couples basic configuration to LLM reliability.

The readOnlyBanner() function explicitly states: "Read-only view. Ask Panos to change any setting, or use keyboard shortcuts."

Meanwhile, the keyboard shortcuts DO apply changes directly: Shift+Tab switches mode, Ctrl+Y switches safety. This inconsistency means commands are second-class to shortcuts.

Audit Reference

AUDIT-ISSUES.md: F1, C1, C10

Objective

Make slash commands direct-action when given arguments. Display-only when called without arguments.

Deliverables

  • /modes <mode> directly calls setCurrentMode + setActiveTools + emits CONFIG_CHANGED
  • /safety <level> directly sets PANCODE_SAFETY + persists + emits CONFIG_CHANGED
  • /reasoning <level> directly applies reasoning level
  • /theme <name> directly switches theme
  • /preset <name> applies preset at runtime (sets model, worker, scout, reasoning, safety)
  • /models <ref> calls pi.setModel() directly when exact match found
  • All commands remain display-only when called without arguments (current behavior preserved)

Metadata

Metadata

Assignees

No one assigned

    Labels

    auditIssues from command/keybinding auditcommandsSlash command surface issueenhancementNew feature or request

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions