pdfx 0.2.0

A lightning-fast terminal-native PDF indexing and search toolkit
Documentation
# Release Notes

## v0.2.0 - List & Export Features πŸ“‹  
*Released: January 2025*

### πŸŽ‰ **Major Feature Release**

We're excited to announce **pdfx v0.2.0** with powerful new list and export capabilities! This release transforms pdfx from a simple indexer into a comprehensive PDF library management tool.

### ✨ **What's New**

#### **πŸ“‹ List Command**
- **πŸ“„ Browse All PDFs**: Display all indexed PDFs with detailed information
- **πŸ“Š Rich Details**: Shows filename, size, path, and modification date
- **🎨 Beautiful Formatting**: Color-coded output with hyperlinks and progress indicators
- **πŸ“ Human-Readable Sizes**: File sizes displayed in KB, MB, GB format
- **πŸ”— Clickable Paths**: Terminal hyperlinks for easy file access

#### **πŸ“€ Export Command**
- **πŸ”„ Multiple Formats**: Export to JSON, CSV, Markdown, YAML, and HTML
- **πŸ“ Smart Location**: Exports to Downloads folder by default
- **βš™οΈ Format Selection**: Choose specific formats with `--format` flag
- **πŸ“Š Complete Metadata**: Includes all PDF information in exports
- **🎯 Batch Export**: Export all formats at once or select specific ones

#### **πŸ”§ Technical Improvements**
- **πŸ“¦ Enhanced Data Structures**: Added `size_human` field for consistent formatting
- **πŸ—οΈ Modular Architecture**: New `src/export/` module for clean separation
- **πŸ“ Better Documentation**: Comprehensive README updates with examples
- **🎨 Improved CLI**: Better help text and command descriptions

### **πŸ–₯️ New Commands Available**
```bash
pdfx list                    # Display all indexed PDFs with details
pdfx export                  # Export all formats to Downloads folder
pdfx export --format json    # Export only JSON format
pdfx export --format csv,yaml # Export multiple specific formats
```

### **πŸ“Š Export Formats**
- **JSON**: Machine-readable format with full metadata
- **CSV**: Spreadsheet-compatible format for data analysis  
- **Markdown**: Human-readable format with tables
- **YAML**: Structured format for configuration files
- **HTML**: Web-ready format for sharing online

### **πŸš€ Getting Started with New Features**

1. **List your PDFs**:
   ```bash
   pdfx list
   # πŸ“‹ All Indexed PDFs
   # πŸ“Š Total: 170 PDFs
   # πŸ“„ 1. The Rust Programming Language.pdf
   #     Size: 14.37 MB
   #     Path: /Users/user/Documents/books/rust.pdf
   ```

2. **Export your library**:
   ```bash
   pdfx export
   # Exporting 170 PDFs to /Users/user/Downloads/pdfx_exports
   #   βœ… Generated pdfs.json
   #   βœ… Generated pdfs.csv
   #   βœ… Generated pdfs.md
   #   βœ… Generated pdfs.yaml
   #   βœ… Generated pdfs.html
   # πŸŽ‰ Export complete!
   ```

---

## v0.1.0 - Initial Release πŸš€  
*Released: January 2025*

### πŸŽ‰ **First Official Release**

We're excited to introduce **pdfx** - a lightning-fast terminal-native PDF indexing and search toolkit built with Rust!

### ✨ **What's New**

#### **πŸ”§ Build System Improvements**
- **πŸͺŸ Windows Build Fix**: Added bundled SQLite feature to resolve Windows linking issues
- **πŸš€ Automated Releases**: GitHub Actions now automatically builds binaries for all platforms
- **πŸ“¦ Four Platform Support**: Linux x86_64, Windows x86_64, macOS Intel, macOS Apple Silicon
- **πŸ”„ GitHub Actions v4 Compatibility**: Updated to `actions/upload-artifact@v4` and `actions/download-artifact@v4`
- **🚫 Artifact Conflicts**: Resolved v4 immutability issues with matrix build strategy  
- **πŸ”’ Reproducible Builds**: Updated `Cargo.lock` for consistent dependency versions
- **πŸ” Release Permissions**: Granted `contents: write` to GitHub Token for release creation

#### **🧹 Repository Cleanup**
- **πŸ“ Code Formatting**: Applied `rustfmt` standards across entire codebase
- **πŸ” Linter Compliance**: Fixed all `clippy` warnings for better code quality
- **πŸ—‚οΈ Module Organization**: Resolved module inception issues (`database.rs` β†’ `db.rs`, `indexer.rs` β†’ `scanner.rs`)
- **πŸ“‹ Enhanced `.gitignore`**: Prevents accidental commit of binaries and temporary files

#### **βš™οΈ CI/CD Pipeline**
- **βœ… Continuous Integration**: Automated testing, formatting, and linting on every commit
- **πŸ” Security Auditing**: Daily dependency vulnerability scanning
- **πŸ“Š Build Status**: Real-time build status badges
- **πŸ—οΈ Multi-Platform Builds**: Simultaneous building across Linux, Windows, and macOS

#### **πŸ“¦ Core Features** *(Stable)*
- **πŸ” Smart PDF Indexing**: SQLite-powered database with metadata extraction
- **⚑ Lightning Fast**: Two-phase scanning with accurate progress tracking  
- **🎨 Beautiful Progress Bars**: Custom Braille character indicators (`β£Ώβ£·β£―β£Ÿβ‘Ώβ’Ώβ Ώβ Ÿβ ›β ‹`)
- **πŸ“Š Zero Duplicates**: Intelligent `INSERT OR REPLACE` prevents duplicate entries
- **πŸ›‘οΈ System-Aware**: Gracefully skips protected directories (Photos, System, etc.)
- **🧹 Clean Uninstall**: Complete data removal with `pdfx cleanup`
- **πŸ”’ Security Fixed**: Removed unused `rust-bert` dependency to resolve `protobuf` vulnerability

### **πŸ–₯️ Commands Available**
```bash
pdfx init [path]        # Index PDFs in specified directory (one-time setup)
pdfx search "query"     # Search indexed PDFs (coming in v0.2.0)
pdfx list [-a]          # List indexed PDFs (coming in v0.2.0)  
pdfx recent [-l N]      # Show recent PDFs (coming in v0.2.0)
pdfx cleanup            # Complete data cleanup and uninstall
```

#### **Database & Storage**
- **Local SQLite Database**: Stored in OS-appropriate data directories
- **Complete Privacy**: No cloud storage, no tracking, no data sharing
- **Clean Uninstall**: `pdfx cleanup` removes all traces

### πŸš€ **Getting Started**

1. **Install**:
   ```bash
   cargo install --git https://github.com/ionnss/pdfx
   ```

2. **Index your PDFs**:
   ```bash
   pdfx init ~/Documents
   ```

3. **Enjoy lightning-fast PDF management!**

### πŸ“‹ **System Requirements**
- **Operating System**: Linux, macOS, or Windows  
- **Architecture**: x86_64 (Intel/AMD64) or ARM64 (Apple Silicon)
- **Terminal**: Modern terminal with Unicode/UTF-8 support
- **Storage**: ~50MB for installation, variable for database (depends on PDF count)

---

## πŸ—ΊοΈ **Roadmap**

### **v0.2.0 - List & Export Features** *(βœ… Completed)*
- **βœ… List Command**: Display and filter indexed PDFs with sorting options
- **βœ… Export Command**: Export to multiple formats (JSON, CSV, Markdown, YAML, HTML)
- **βœ… Human-Readable Sizes**: Consistent file size formatting across all outputs
- **βœ… Downloads Integration**: Smart export location to user's Downloads folder
- **βœ… Format Selection**: Choose specific export formats with CLI flags

### **v0.3.0 - Search & Discovery** *(Next Release)*
- **πŸ” Search Implementation**: Full-text search through indexed PDFs
- **πŸ“… Recent Command**: Show recently modified PDFs with timestamps
- **🎯 Enhanced Filtering**: Search by file size, modification date, path patterns
- **πŸ“Š Statistics**: Show indexing statistics and storage usage

### **v0.4.0 - Content Intelligence** *(Future)*
- **πŸ“„ PDF Content Extraction**: Index text content for full-text search
- **πŸ” Advanced Search**: Search inside PDF content, not just filenames  
- **🏷️ Auto-Tagging**: Automatic categorization based on content
- **πŸ“ˆ Analytics Dashboard**: Visual statistics and insights

### **v0.5.0 - AI Integration** *(Vision)*
- **πŸ€– AI Summaries**: Automatic PDF content summarization
- **❓ Question Generation**: Study questions from PDF content
- **🎯 Key Point Extraction**: Highlight important information
- **πŸ”— Smart Linking**: Connect related PDFs automatically

---

## πŸ“‹ **System Requirements**
- **Operating System**: Linux, macOS, or Windows  
- **Architecture**: x86_64 (Intel/AMD64) or ARM64 (Apple Silicon)
- **Terminal**: Modern terminal with Unicode/UTF-8 support
- **Storage**: ~50MB for installation, variable for database (depends on PDF count)

---

## πŸ™ **Acknowledgments**
Built with excellence using:
- **[Rust]https://rust-lang.org** πŸ¦€ - Systems programming language
- **[rusqlite]https://crates.io/crates/rusqlite** - SQLite database operations
- **[clap]https://crates.io/crates/clap** - Command-line argument parsing
- **[indicatif]https://crates.io/crates/indicatif** - Progress bars and spinners
- **[walkdir]https://crates.io/crates/walkdir** - Recursive directory traversal
- **[chrono]https://crates.io/crates/chrono** - Date and time handling
- **[dirs]https://crates.io/crates/dirs** - Cross-platform directory paths

---

## πŸ› **Known Issues**
- **Command Placeholders**: Search, List, and Recent commands show "not implemented" messages
- **System Permissions**: Some directories may show permission warnings (this is normal)
- **Large Directories**: Very large directory trees (>100k files) may take longer to scan
- **Unicode Filenames**: Some special Unicode characters in filenames may display incorrectly

---

## πŸ”— **Links**
- **πŸ“¦ Download**: [GitHub Releases]https://github.com/ionnss/pdfx/releases
- **πŸ’» Source Code**: [GitHub Repository]https://github.com/ionnss/pdfx  
- **πŸ› Bug Reports**: [GitHub Issues]https://github.com/ionnss/pdfx/issues
- **πŸ“š Documentation**: [README.md]https://github.com/ionnss/pdfx/blob/main/README.md