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
# How to Update the Release Action

## Location
The file to update is in the root repository:
`.github/workflows/manual-release.yml` (or `release.yml`)

## What to Replace

### Find this section (around line 56-98):
```yaml
      - name: Generate release notes
        id: notes
        run: |
          VERSION="${{ steps.version.outputs.new_version }}"
          LAST_TAG=$(git tag --sort=-version:refname | head -n 1 || echo "")
          
          {
            echo "# SQL CLI v${VERSION}"
            # ... basic release notes generation ...
          } > RELEASE_NOTES.md
```

### Replace with this enhanced version:
```yaml
      - name: Generate comprehensive release notes
        id: notes
        run: |
          VERSION="${{ steps.version.outputs.new_version }}"
          LAST_TAG=$(git tag --sort=-version:refname | head -n 1 || echo "")
          
          # Get commit statistics
          if [ -n "$LAST_TAG" ]; then
            COMMIT_COUNT=$(git rev-list --count ${LAST_TAG}..HEAD 2>/dev/null || echo "0")
            FILES_CHANGED=$(git diff --name-only ${LAST_TAG}..HEAD 2>/dev/null | wc -l || echo "0")
            COMMITS=$(git log ${LAST_TAG}..HEAD --pretty=format:"%H|%s|%b" 2>/dev/null || echo "")
          else
            COMMIT_COUNT=$(git rev-list --count HEAD 2>/dev/null || echo "0")
            FILES_CHANGED=$(git ls-files | wc -l || echo "0")
            COMMITS=$(git log --pretty=format:"%H|%s|%b" 2>/dev/null || echo "")
          fi
          
          {
            echo "# SQL CLI v${VERSION}"
            echo ""
            echo "**Release Date:** $(date +'%B %d, %Y')"
            echo ""
            
            # Add custom notes if provided
            if [ -n "${{ github.event.inputs.release_notes }}" ]; then
              echo "## 📢 Release Notes"
              echo "${{ github.event.inputs.release_notes }}"
              echo ""
            fi
            
            # Add statistics
            echo "## 📊 Release Overview"
            echo "- **Commits in this release:** $COMMIT_COUNT"
            echo "- **Files updated:** $FILES_CHANGED"
            echo ""
            
            # Detect and highlight features
            echo "## ✨ Highlights"
            echo ""
            
            # Check for visual enhancements
            if echo "$COMMITS" | grep -qi "cell.*render\|visual\|key.*indicator\|fade\|theme"; then
              echo "### 🎨 Visual Improvements"
              if echo "$COMMITS" | grep -qi "key.*indicator"; then
                echo "- **Key Press Indicator**: Visual feedback for key presses with fade effects (F12 to toggle)"
              fi
              if echo "$COMMITS" | grep -qi "cell.*highlight"; then
                echo "- **Enhanced Cell Selection**: Multiple rendering modes for better visual feedback"
              fi
              echo ""
            fi
            
            # Check for debugging improvements
            if echo "$COMMITS" | grep -qi "debug\|log\|diagnostic"; then
              echo "### 🔍 Enhanced Debugging"
              if echo "$COMMITS" | grep -qi "dual.*log"; then
                echo "- **Dual Logging**: Simultaneous file and in-memory logging"
              fi
              echo "- **Better Diagnostics**: Improved error messages and state dumps"
              echo ""
            fi
            
            # Check for state management
            if echo "$COMMITS" | grep -qi "state.*container\|refactor.*v[0-9]"; then
              echo "### 🏗️ Architecture Improvements"
              echo "- **State Management**: Continued migration to centralized AppStateContainer"
              echo "- **Code Quality**: Transaction-like state updates for better consistency"
              echo ""
            fi
            
            # Check for data integrity
            if echo "$COMMITS" | grep -qi "history.*protect\|corrupt\|atomic"; then
              echo "### 💾 Data Protection"
              echo "- **History Recovery**: Automatic recovery from corrupted files"
              echo "- **Atomic Writes**: Safer file operations to prevent data loss"
              echo ""
            fi
            
            # Traditional categorized changes
            echo "## 📝 Changes by Category"
            echo ""
            
            # Features
            if [ -n "$LAST_TAG" ]; then
              FEATURES=$(git log ${LAST_TAG}..HEAD --pretty=format:"%s" | grep -E "^feat(\(.*\))?:" | sed 's/^feat[^:]*: //' | grep -v "bump version" || true)
              if [ -n "$FEATURES" ]; then
                echo "### 🚀 New Features"
                echo "$FEATURES" | while IFS= read -r line; do
                  [ -n "$line" ] && echo "- $line"
                done
                echo ""
              fi
              
              # Bug Fixes
              FIXES=$(git log ${LAST_TAG}..HEAD --pretty=format:"%s" | grep -E "^fix(\(.*\))?:" | sed 's/^fix[^:]*: //' | grep -v "bump version" || true)
              if [ -n "$FIXES" ]; then
                echo "### 🐛 Bug Fixes"
                echo "$FIXES" | while IFS= read -r line; do
                  [ -n "$line" ] && echo "- $line"
                done
                echo ""
              fi
              
              # Refactoring
              REFACTORS=$(git log ${LAST_TAG}..HEAD --pretty=format:"%s" | grep -E "^refactor(\(.*\))?:" | sed 's/^refactor[^:]*: //' | grep -v "bump version" || true)
              if [ -n "$REFACTORS" ]; then
                echo "### 🔧 Refactoring"
                echo "$REFACTORS" | while IFS= read -r line; do
                  [ -n "$line" ] && echo "- $line"
                done
                echo ""
              fi
              
              # Documentation
              DOCS=$(git log ${LAST_TAG}..HEAD --pretty=format:"%s" | grep -E "^docs(\(.*\))?:" | sed 's/^docs[^:]*: //' | grep -v "bump version" || true)
              if [ -n "$DOCS" ]; then
                echo "### 📚 Documentation"
                echo "$DOCS" | while IFS= read -r line; do
                  [ -n "$line" ] && echo "- $line"
                done
                echo ""
              fi
            fi
            
            # Collapsible full commit list
            echo "<details>"
            echo "<summary>📋 View all commits</summary>"
            echo ""
            if [ -n "$LAST_TAG" ]; then
              git log ${LAST_TAG}..HEAD --pretty=format:"- %s (%an)" | grep -v "bump version"
            else
              git log --pretty=format:"- %s (%an)" | head -20
            fi
            echo ""
            echo "</details>"
            echo ""
            
            # Key features section
            echo "## 🎯 Key Features"
            echo ""
            echo "- **Instant Data Preview**: CSV/JSON files load immediately"
            echo "- **Visual Feedback**: Key press indicator, cell highlighting"
            echo "- **Advanced Navigation**: Vim-style keys, viewport/cursor lock"
            echo "- **Powerful Search**: Regular search (Ctrl+F), fuzzy filter (Ctrl+/)"
            echo "- **Data Export**: Save as CSV or JSON"
            echo "- **Debug Mode**: Press F5 for comprehensive state information"
            echo ""
            
            # Installation
            echo "## 📦 Installation"
            echo ""
            echo "Download the binary for your platform from the assets below."
            echo ""
            
            echo "---"
            echo "**Thank you for using SQL CLI!** 🎉"
            echo ""
            echo "Report issues: [GitHub Issues](https://github.com/TimelordUK/sql-cli/issues)"
            
          } > RELEASE_NOTES.md
          
          # Save to output
          echo "notes<<EOF" >> $GITHUB_OUTPUT
          cat RELEASE_NOTES.md >> $GITHUB_OUTPUT
          echo "EOF" >> $GITHUB_OUTPUT
```

## Summary of Changes

The enhanced version adds:
1. **Statistics**: Commit count, files changed
2. **Feature Detection**: Scans commits for keywords to detect:
   - Visual improvements (key indicator, cell highlighting)
   - Debugging enhancements (dual logging, F5 mode)
   - Architecture improvements (state management)
   - Data protection (history recovery)
3. **Better Formatting**: Organized into meaningful sections
4. **Collapsible Details**: Full commit list in expandable section
5. **Key Features**: Highlights main capabilities

## Benefits

With this change, your release notes will automatically detect and highlight:
- ✅ Key press indicator and visual feedback features
- ✅ Dual logging system
- ✅ State management refactoring progress
- ✅ History protection improvements
- ✅ Transaction-like updates
- ✅ All the "hidden" work that doesn't show in commit prefixes

Instead of just seeing "refactor: ..." you'll get meaningful descriptions of what was actually improved!