sql-cli 1.73.1

SQL query tool for CSV/JSON with both interactive TUI and non-interactive CLI modes - perfect for exploration and automation
Documentation
# Final Column Search Fix - Complete Solution

## The Problem Chain
1. Column search was triggered twice (duplicate key handlers)
2. Tab/Shift-Tab didn't work after search (mode issues)  
3. SQL query wasn't restored when exiting column search

## Final Solution

### 1. Removed Duplicate Key Handlers
- Removed duplicate handlers for `\`, `/`, `F`, `f` keys
- Now only dispatcher handles these keys

### 2. Fixed Tab Navigation
- Tab/Shift-Tab now properly cycle through matching columns
- Mode stays in ColumnSearch until explicitly exited

### 3. Fixed SQL Query Restoration
**Key insight**: The SearchModesWidget saves the original SQL when entering search mode and returns it when exiting. We must restore this saved SQL to `input_text`!

```rust
// When exiting search mode (Apply or Cancel)
if let Some((sql, cursor)) = self.search_modes_widget.exit_mode() {
    // Restore the saved SQL to input_text
    self.buffer_mut().set_input_text(sql.clone());
    self.buffer_mut().set_input_cursor_position(cursor);
    self.input = tui_input::Input::new(sql).with_cursor(cursor);
}
```

### 4. Enhanced Logging
Added comprehensive logging to track all input_text changes:
- Every call to `set_input_text()` logs the before/after values
- Shows current mode for context
- Helps debug state transitions

## How It Works Now

1. **Enter Column Search**: Press `\` in Results mode
   - Saves current SQL to widget
   - Clears input for search pattern

2. **Search & Navigate**: Type pattern, use Tab/Shift-Tab
   - Debounced search finds matching columns
   - Tab/Shift-Tab cycle through matches
   - Mode stays in ColumnSearch

3. **Exit Column Search**: Press Enter or Esc
   - Widget returns the saved SQL
   - SQL is restored to input_text
   - Returns to Results mode

4. **Return to Command Mode**: Press `c` or up arrow
   - input_text already has the SQL query
   - Query is shown in command prompt

## Debug Helpers

The F5 debug view shows:
- Current Mode
- Last Executed Query  
- Input Text (what's in the input field)
- Column Search State (pattern, matches, current match)
- Search Modes Widget State
- Complete trace logs

## Testing
1. Execute: `SELECT * FROM table`
2. Press `\` for column search
3. Type pattern (e.g., "order")
4. Tab/Shift-Tab to navigate matches
5. Enter to apply, Esc to cancel
6. Press `c` to return to Command mode
7. Original SQL query is restored!

## Key Code Locations
- `src/enhanced_tui.rs`:
  - `handle_search_modes_input()` - Main search mode handler
  - `set_input_text()` - Centralized input text setter with logging
  - `SearchModesAction::Apply` - Restores saved SQL on exit
  - `exit_results_mode` - Restores last_query when going to Command mode
  
- `src/search_modes_widget.rs`:
  - `enter_mode()` - Saves SQL when entering
  - `exit_mode()` - Returns saved SQL when exiting