Commit Graph

18 Commits

  • revert: remove unnecessary themeOverride params from theme functions
    The optional theme parameter was added as a workaround for tsx dev mode,
    but that's a dev-only issue. Users running the built package don't need it.
  • fix(theme): add optional themeOverride param to getSettingsListTheme/getSelectListTheme
    When hooks are loaded via jiti, they get a separate module instance from
    the main app. This means the global 'theme' variable in the hook's module
    is never initialized. Adding an optional theme parameter allows hooks to
    pass the theme from ctx.ui.custom() callback.
    
    Usage in hooks:
      getSettingsListTheme(theme)  // theme from ctx.ui.custom callback
  • feat(hooks): add setWidget API for multi-line status displays
    - ctx.ui.setWidget(key, lines) for multi-line displays above editor
    - Widgets appear below 'Working...' indicator, above editor
    - Supports ANSI styling including strikethrough
    - Added theme.strikethrough() method
    - Plan-mode hook now shows todo list with checkboxes
    - Completed items show checked box and strikethrough text
  • Add theme-configurable HTML export colors (from PR #387)
    - Add optional 'export' section to theme JSON with pageBg, cardBg, infoBg
    - If not specified, colors are auto-derived from userMessageBg
    - Add export colors to dark.json and light.json
    - Update theme-schema.json and TypeBox schema
    - Add documentation to docs/theme.md
    - Add margin-top back to tool-output for spacing between header and content
  • WIP: Rewrite export-html with tree sidebar, client-side rendering
    - Add tree sidebar with search and filter (Default/All/Labels)
    - Client-side markdown/syntax highlighting via vendored marked.js + highlight.js
    - Base64 encode session data to avoid escaping issues
    - Reuse theme.ts color tokens via getResolvedThemeColors()
    - Sticky sidebar, responsive mobile layout with overlay
    - Click tree node to scroll to message
    - Keyboard shortcuts: Esc to reset, Ctrl/Cmd+F to search
  • Add thinkingText theme token, fix streaming toggle bug
    - Add configurable thinkingText color for thinking blocks (defaults to muted)
    - Make 'Thinking...' label italic when collapsed
    - Fix Ctrl+T during streaming hiding the current message
    - Track streamingMessage to properly re-render on toggle
    
    Based on #366 by @paulbettner
  • Fix tree selector: proper selectedBg theme color, correct filter logic
    - Add selectedBg theme color for active line highlight
    - Fix filter modes:
      - no-tools: default minus tool results (still hides label/custom)
      - user-only: just user messages
      - labeled-only: just labeled entries
      - all: everything
    - Update theme.md with new color tokens (50 total)
  • Add TUI rendering for CustomMessageEntry
    - Add CustomMessageComponent with purple-tinted styling
    - Add theme colors: customMessageBg, customMessageText, customMessageLabel
    - Rename renderMessages to renderSessionContext taking SessionContext directly
    - renderInitialMessages now gets context from sessionManager
    - Skip rendering for display: false entries
  • Add /settings command with unified settings menu (#312)
    * Add /settings command with unified settings menu
    
    - Add SettingsList component to tui package with support for:
      - Inline value cycling (Enter/Space toggles)
      - Submenus for complex selections
      - Selection preservation when returning from submenu
    
    - Add /settings slash command consolidating:
      - Auto-compact (toggle)
      - Show images (toggle)
      - Queue mode (cycle)
      - Hide thinking (toggle)
      - Collapse changelog (toggle)
      - Thinking level (submenu)
      - Theme (submenu with preview)
    
    - Update AGENTS.md to clarify no inline imports rule
    
    Fixes #310
    
    * Add /settings to README slash commands table
    
    * Remove old settings slash commands, consolidate into /settings
    
    - Remove /thinking, /queue, /theme, /autocompact, /show-images commands
    - Remove unused selector methods and imports
    - Update README references to use /settings
  • Add intra-line diff highlighting for edit tool
    - Extract diff rendering to dedicated diff.ts component
    - Show word-level changes with inverse highlighting when a single line is modified
    - Use diffWords for cleaner token grouping (includes adjacent whitespace)
    - Only apply intra-line diff when exactly 1 removed and 1 added line (true modification)
    - Multi-line changes show all removed then all added without incorrect pairing
    - Add theme.inverse() method for inverse text styling
  • Syntax highlighting improvements
    - Fix cli-highlight import (use static import instead of dynamic require)
    - Add syntax highlighting to read/write tool output
    - Update dark/light themes with VS Code default syntax colors
    - Add highlightCode and getLanguageFromPath exports
    - Upgrade @google/genai to 1.34.0 for IMAGE_RECITATION/IMAGE_OTHER FinishReason
    - Add AGENTS.md rule: never downgrade code to fix type errors from outdated deps
  • fixes #161: disable theme watcher in print mode
    The theme file watcher was keeping the Node.js process alive indefinitely
    even in print mode where hot-reload is unnecessary. This fix adds an
    enableWatcher parameter to initTheme() and setTheme() functions, and only
    enables watchers in interactive mode.
    
    - Modified initTheme() to accept enableWatcher parameter (default: false)
    - Modified setTheme() to accept enableWatcher parameter (default: false)
    - Updated main.ts to only enable watchers in interactive mode
    - Updated InteractiveMode to enable watchers when changing themes