Commit Graph

3 Commits

  • fix(mcp): improve format/submit UX and fix validation errors
    Fixes two critical issues with the MCP JSON input:
    1. Format button failed with wrapped format like "server": {...}
    2. Submit button failed despite input validation passing
    
    Changes:
    - Updated formatJSON to use smart parser (supports wrapped format)
    - Simplified submit validation logic (removed redundant validateJsonConfig call)
    - Improved UX: input preserves original format, cleanup happens on format/submit
      * Prevents confusing "instant disappearance" when pasting wrapped JSON
      * Auto-fills ID/Name fields while keeping input unchanged
      * Format button now strips wrapper key and formats cleanly
      * Submit button correctly extracts config regardless of format
    
    Code quality:
    - Reduced code by 5 lines (20 changes, 11 insertions, 16 deletions)
    - Consistent use of parseSmartMcpJson across all JSON operations
    - No type errors introduced
  • feat(mcp): add smart JSON parser for flexible input formats
    Support multiple MCP configuration input formats:
    - Pure config object: { "command": "npx", ... }
    - Key-value pair fragment: "server-name": { "command": "npx", ... }
    - Wrapped object: { "server-name": { "command": "npx", ... } }
    
    The parser automatically:
    - Detects and wraps JSON fragments into complete objects
    - Extracts server name from single-key objects
    - Auto-fills ID and Name fields when applicable
    - Formats the config for display
    
    This improves UX by allowing users to paste configs directly from
    .claude.json or .codex/config.toml without manual editing.
  • feat(editor): add JSON format button to editors
    Add one-click format functionality for JSON editors with toast notifications:
    
    - Add format button to JsonEditor (CodeMirror)
    - Add format button to CodexAuthSection (auth.json)
    - Add format button to CommonConfigEditor (settings + modal)
    - Add formatJSON utility function
    - Add i18n keys: format, formatSuccess, formatError
    
    Note: TOML formatting was intentionally NOT added to avoid losing comments
    during parse/stringify operations. TOML validation remains available via
    the existing useCodexTomlValidation hook.