feat(ui): Enhanced flag display with color coordination and clean separation

Display Enhancements:
• Added color-coordinated flag lines (bold yellow flags, dim separator)
• Enhanced bottom preview panel (3 lines → 8 lines)
• Implemented bordered box design with flag 🏴 and description 📝 emojis
• Added clean flag/description separation using AWK-based parsing
• Flag section shows ONLY bash input (e.g., -s sig)
• Description section shows ONLY explanation text
• Cyan bold for flags, green for descriptions in preview
• Handles missing descriptions with dimmed "(No description available)"

Technical Improvements:
• Modified extract_all_flags() to add ANSI color codes to output
• Enhanced browse_flags_fuzzy() preview with intelligent parsing
• Uses AWK field separator on em dash (—) for robust splitting
• Replaced xargs with sed for trimming to avoid flag interpretation
• Added fallback handling for flags without descriptions

Project Organization:
• Moved documentation files to docs/ directory for better structure

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
2025-11-01 13:22:46 -07:00
parent f8e31d49e0
commit 3ce1d2ec1f
16 changed files with 2242 additions and 9 deletions
+294
View File
@@ -0,0 +1,294 @@
# Bash Buddy v2.1.0 - AI-Powered Release 🤖
## What's New
### 🤖 AI Mode (NEW!)
Integrated **NL2SH model** for advanced natural language understanding:
```bash
bhelper ai "find all python files modified in last week"
# Generated: find /path/to/directory -type f -name "*.py" -mtime -7
bhelper ai "count lines in all javascript files"
bhelper ai "compress all log files older than 30 days"
```
**Features:**
- Uses your installed `westenfelder/NL2SH:latest` model
- Generates bash commands from complex natural language
- Shows command info and safety warnings
- Works offline with local Ollama
### 📚 90+ Commands in Interactive Mode
Expanded from 11 to **90+ commands** organized by category:
**File Operations (18):** ls, cd, pwd, cp, mv, rm, mkdir, rmdir, touch, cat, less, head, tail, chmod, chown, ln, file, stat
**Text Processing (9):** grep, sed, awk, cut, sort, uniq, tr, wc, diff
**File Search (4):** find, locate, which, whereis
**Compression (5):** tar, gzip, gunzip, zip, unzip
**Network (9):** ping, curl, wget, ssh, scp, netstat, ss, ip, ifconfig
**System Info (8):** top, htop, ps, df, du, free, uname, uptime
**Process Management (6):** kill, pkill, killall, bg, fg, jobs
**System Control (5):** sudo, systemctl, service, reboot, shutdown
**Package Management (4):** apt, apt-get, dpkg, snap
**User Management (7):** useradd, userdel, passwd, su, whoami, w, who
**Misc Utilities (9):** echo, date, cal, history, alias, export, env, man, watch
### 🔧 Fixed Interactive Mode
**Problem:** Filtering didn't work properly - `-v` flag wouldn't show
**Solution:** Completely rewrote `show_flags()` function:
- Better OPTIONS section extraction from man pages
- Improved filtering logic
- Proper fallback when OPTIONS section not found
- Now correctly shows filtered flags
**Before:**
```
Filter: -v
[empty or wrong output]
```
**After:**
```
Filter: -v
-v, --invert-match
Invert the sense of matching, to select non-matching lines.
-V, --version
Print the version number of grep to standard output.
```
## All Modes
### 1. AI Mode (NEW!) 🤖
```bash
bhelper ai "find large files in home directory"
bhelper ai "get network interface information"
```
### 2. Natural Language Queries
```bash
bhelper ask "compress folder" # Database search
bhelper task "disk usage" # Task search
```
### 3. Category Browsing
```bash
bhelper category files
bhelper category network
```
### 4. Command Explanation
```bash
bhelper explain "tar -czf archive.tar.gz folder/"
```
### 5. Interactive Mode (Enhanced!)
```bash
bhelper # Browse 90+ commands with fzf
# Select command → Enter filter → See flags
```
### 6. Direct Flag Lookup
```bash
bhelper grep -v # Show grep flags with 'v'
bhelper ls size # Show ls flags about size
```
## Performance
| Mode | Speed | Status |
|------|-------|--------|
| Database search | ~50ms | ⚡ Fast |
| Interactive mode | Instant | ⚡ Instant |
| Category browse | ~30ms | ⚡ Fast |
| Direct lookup | ~100ms | ✅ Good |
| AI mode (first) | 5-15s | 🤖 Processing |
| AI mode (loaded) | 1-3s | 🤖 Fast |
## Improvements Summary
### Interactive Mode Fixes
✅ Fixed flag filtering (now works correctly)
✅ Better OPTIONS section parsing from man pages
✅ 90+ commands (up from 11)
✅ Organized by category
✅ Improved error messages
### AI Integration
✅ NL2SH model support
✅ Complex query handling
✅ Safety warnings
✅ Command explanation
✅ Model detection
### Code Quality
✅ Better function organization
✅ Improved man page parsing
✅ Enhanced error handling
✅ Clearer code comments
## How to Use
### Try AI Mode
```bash
source ~/.bashrc # Reload alias if needed
bhelper ai "find files larger than 100MB"
```
### Try Enhanced Interactive
```bash
bhelper # Opens fzf with 90+ commands
# Type to filter (e.g., "net" for network commands)
# Select → Enter filter term → See relevant flags
```
### All Commands Available
```bash
bhelper --help # See all modes
bhelper --list # List all 90+ commands
```
## Installation
Already installed! Just reload your bash config:
```bash
source ~/.bashrc
```
Or open a new terminal.
## Examples
### AI Mode Examples
**Find Python files:**
```bash
$ bhelper ai "find python files modified this week"
Generated: find /path/to/directory -type f -name "*.py" -mtime -7
```
**Count lines:**
```bash
$ bhelper ai "count lines in all javascript files"
Generated: find . -name "*.js" -exec wc -l {} + | awk '{sum+=$1} END {print sum}'
```
**Network info:**
```bash
$ bhelper ai "show my IP address"
Generated: ip addr show | grep 'inet ' | grep -v 127.0.0.1
```
### Interactive Mode Example
```bash
$ bhelper
# Type "tar" → Select "tar:Archive files"
# Enter filter: "extract"
Flags for: tar
Filter: extract
-x, --extract, --get
Extract files from an archive.
--extract-over-symlinks
During extraction, follow symlinks.
```
## Models Available
Your Ollama models:
-`westenfelder/NL2SH:latest` (6.2GB) - Natural Language to Shell ⭐
-`llama3.2:3b` (2.0GB) - General purpose
-`qwen2.5:3b` (1.9GB) - General purpose
-`qwen2.5:1.5b` (986MB) - Fast, lightweight
**Default:** NL2SH (specialized for shell commands)
To switch models, edit `mode_ai()` function in bash-helper.sh
## Troubleshooting
### AI Mode Not Working?
Check Ollama is running:
```bash
ollama list
```
If NL2SH not found:
```bash
ollama pull westenfelder/NL2SH
```
### Interactive Mode Filters Not Working?
This is now fixed in v2.1.0! The flag extraction has been completely rewritten.
### Want More Commands in Interactive Mode?
Edit the `COMMANDS` array in bash-helper.sh and add:
```bash
"yourcommand:Description of what it does"
```
## Version History
**v2.1.0** (Current)
- Added AI mode with NL2SH model
- Expanded to 90+ commands
- Fixed interactive mode filtering
- Improved OPTIONS parsing
**v2.0.0**
- Natural language queries
- 20-task database
- Category browsing
- ASCII banner
**v1.0.0**
- Interactive fzf mode
- Direct flag lookup
- 11 basic commands
## Repository
**Location:** `~/coding/bash/bash-buddy/`
**Gitea:** http://localhost:3030/trill-technician/bash-buddy
**Latest commit:** 3e5e431
## What's Next?
**Possible Future Enhancements:**
- Response caching for AI queries
- Command history integration
- Custom prompt templates for AI
- Expand database to 100+ tasks
- Multi-step command generation
- Interactive command builder
---
**Bash Buddy v2.1.0** - Now with AI! 🚀🤖
Try it now:
```bash
bhelper ai "your complex query here"
```