refactor: Remove old decorators and integrate caching into the new cache subsystem
- Deleted the `renamer.decorators` package, including `caching.py` and `__init__.py`, to streamline the codebase. - Updated tests to reflect changes in import paths for caching decorators. - Added a comprehensive changelog to document major refactoring efforts and future plans. - Introduced an engineering guide detailing architecture, core components, and development setup.
This commit is contained in:
272
ToDo.md
272
ToDo.md
@@ -1,135 +1,165 @@
|
||||
Project: Media File Renamer and Metadata Viewer (Python TUI with Textual)
|
||||
# Renamer - Future Tasks
|
||||
|
||||
**Current Version**: 0.5.10
|
||||
**Version**: 0.7.0-dev
|
||||
**Last Updated**: 2026-01-01
|
||||
|
||||
## TODO Steps:
|
||||
1. ✅ Set up Python project structure with UV package manager
|
||||
2. ✅ Install dependencies: textual, mutagen, pymediainfo, python-magic, pathlib for file handling
|
||||
3. ✅ Implement recursive directory scanning for video files (*.mkv, *.avi, *.mov, *.mp4, *.wmv, *.flv, *.webm, etc.)
|
||||
4. ✅ Detect real media container type using mutagen and python-magic
|
||||
5. ✅ Create Textual TUI application with split layout (left: file tree, right: file details)
|
||||
6. ✅ Implement file tree display with navigation (keyboard arrows, mouse support)
|
||||
7. ✅ Add bottom command bar with 'quit', 'open directory', 'scan' commands
|
||||
8. ✅ Display file details on right side: file size, extension from filename, extension from metadata, file date
|
||||
9. ✅ Add functionality to select files in the tree and update right panel
|
||||
10. ✅ Implement detailed metadata display including video/audio/subtitle tracks with colors
|
||||
11. ✅ Add custom tree styling with file icons and colored guides
|
||||
12. ✅ Add scrollable details panel
|
||||
13. ✅ Handle markup escaping for file names with brackets
|
||||
14. ✅ Implement file renaming functionality with confirmation dialog
|
||||
15. ✅ Add proposed name generation based on metadata extraction
|
||||
16. ✅ Add help screen with key bindings and usage information
|
||||
17. ✅ Add tree expansion/collapse toggle functionality
|
||||
18. ✅ Add file refresh functionality to reload metadata for selected file
|
||||
19. ✅ Optimize tree updates to avoid full reloads after renaming
|
||||
20. ✅ Add loading indicators for metadata extraction
|
||||
21. ✅ Add error handling for file operations and metadata extraction
|
||||
22. 🔄 Implement blue highlighting for changed parts in proposed filename display (show differences between current and proposed names)
|
||||
23. 🔄 Implement build script to exclude dev commands (bump-version, release) from distributed package
|
||||
24. 📋 Implement metadata editing capabilities (future enhancement)
|
||||
25. 📋 Add batch rename operations (future enhancement)
|
||||
27. 📋 Add advanced search and filtering capabilities (future enhancement)
|
||||
28. 📋 Implement undo/redo functionality for file operations (future enhancement)
|
||||
> **📋 For completed work, see [CHANGELOG.md](CHANGELOG.md)**
|
||||
>
|
||||
> **📋 For refactoring plans, see [REFACTORING_PROGRESS.md](REFACTORING_PROGRESS.md)**
|
||||
|
||||
This file tracks future feature enhancements and improvements.
|
||||
|
||||
---
|
||||
|
||||
## Media Catalog Mode Implementation Plan
|
||||
|
||||
**New big app evolution step: Add media catalog mode with settings, caching, and enhanced TMDB display.**
|
||||
|
||||
### Phase 1: Settings Management Foundation
|
||||
1. ✅ Create settings module (`renamer/settings.py`) for JSON config in `~/.config/renamer/config.json` with schema: mode, cache TTLs
|
||||
2. ✅ Integrate settings into app startup (load/save on launch/exit)
|
||||
3. ✅ Add settings window to UI with fields for mode and TTLs
|
||||
4. ✅ Add "Open Settings" command to command panel
|
||||
5. ✅ Order setting menu item in the action bar by right side, close to the sysytem menu item ^p palette
|
||||
|
||||
### Phase 2: Mode Toggle and UI Switching
|
||||
5. ✅ Add "Toggle Mode" command to switch between "technical" and "catalog" modes
|
||||
6. ✅ Modify right pane for mode-aware display (technical vs catalog info)
|
||||
7. ✅ Persist and restore mode state from settings
|
||||
|
||||
### Phase 3: Caching System
|
||||
8. ✅ Create caching module (`renamer/cache.py`) for file-based cache with TTL support
|
||||
9. ✅ Integrate caching into extractors (check cache first, store results)
|
||||
10. ✅ Add refresh command to force re-extraction and cache update
|
||||
11. ✅ Handle cache cleanup on file rename (invalidate old filename)
|
||||
|
||||
### Phase 4: Media Catalog Display
|
||||
12. ✅ Update TMDB extractor for catalog data: title, year, duration, rates, overview, genres codes, poster_path
|
||||
13. ✅ Create catalog formatter (`formatters/catalog_formatter.py`) for beautiful display
|
||||
14. ✅ Integrate catalog display into right pane
|
||||
|
||||
### Phase 5: Poster Handling and Display
|
||||
15. ✅ Add poster caching (images in cache dir with 1-month TTL)
|
||||
16. ✅ Implement terminal image display (using rich-pixels library)
|
||||
|
||||
### Phase 6: Polish and Documentation
|
||||
17. ✅ Create comprehensive CLAUDE.md for AI assistants
|
||||
18. ✅ Update all markdown documentation files
|
||||
19. ✅ Ensure version consistency across all files
|
||||
|
||||
### Additional TODOs from Plan
|
||||
- 📋 Retrieve full movie details from TMDB (currently basic data only)
|
||||
- 📋 Expand genres to full names instead of codes (currently shows genre IDs)
|
||||
- 📋 Optimize poster quality and display (improve image rendering)
|
||||
- 📋 Add TV show support (currently movie-focused)
|
||||
- 📋 Implement blue highlighting for filename differences
|
||||
- 📋 Build script to exclude dev commands from distribution
|
||||
|
||||
---
|
||||
|
||||
## Recently Completed (v0.5.x)
|
||||
|
||||
### Version 0.5.10
|
||||
- Complete media catalog mode implementation
|
||||
- TMDB integration with poster display
|
||||
- Settings system with persistent JSON storage
|
||||
- Advanced caching with TTL support
|
||||
- Dual-mode display (technical/catalog)
|
||||
- Settings UI screen
|
||||
|
||||
### Version 0.4.x
|
||||
- Enhanced extractor system
|
||||
- TMDB extractor foundation
|
||||
- Improved formatter architecture
|
||||
|
||||
### Version 0.3.x
|
||||
- Expanded metadata extraction
|
||||
- Multiple formatter types
|
||||
- Special edition detection
|
||||
|
||||
### Version 0.2.x
|
||||
- Initial TUI implementation
|
||||
- Basic metadata extraction
|
||||
- File tree navigation
|
||||
- Rename functionality
|
||||
|
||||
---
|
||||
|
||||
## Development Priorities
|
||||
## Priority Tasks
|
||||
|
||||
### High Priority
|
||||
1. 🔄 Blue highlighting for filename differences (UX improvement)
|
||||
2. 🔄 Build script for clean distribution packages
|
||||
3. 📋 Genre ID to name expansion (TMDB lookup)
|
||||
|
||||
- [ ] **Phase 4: Refactor to New Architecture**
|
||||
- Refactor existing extractors to use Protocol
|
||||
- Refactor existing formatters to use base classes
|
||||
- Integrate RenamerApp with services
|
||||
- Update all imports and dependencies
|
||||
- See [REFACTORING_PROGRESS.md](REFACTORING_PROGRESS.md) for details
|
||||
|
||||
- [ ] **Complete Test Coverage**
|
||||
- Add UI screen tests
|
||||
- Add app integration tests
|
||||
- Increase coverage to >90%
|
||||
|
||||
### Medium Priority
|
||||
1. 📋 Batch rename operations
|
||||
2. 📋 Advanced search/filtering
|
||||
3. 📋 TV show support
|
||||
|
||||
### Low Priority (Future)
|
||||
1. 📋 Metadata editing
|
||||
2. 📋 Plugin system
|
||||
3. 📋 Undo/redo functionality
|
||||
4. 📋 Configuration profiles
|
||||
- [ ] **Metadata Editing Capabilities**
|
||||
- Edit embedded metadata tags
|
||||
- Batch editing support
|
||||
- Validation and preview
|
||||
|
||||
- [ ] **Batch Rename Operations**
|
||||
- Select multiple files
|
||||
- Preview all changes
|
||||
- Bulk rename with rollback
|
||||
|
||||
- [ ] **Advanced Search and Filtering**
|
||||
- Filter by resolution, codec, year
|
||||
- Search by TMDB metadata
|
||||
- Save filter presets
|
||||
|
||||
---
|
||||
|
||||
**Legend:**
|
||||
- ✅ Completed
|
||||
- 🔄 In Progress / Partially Complete
|
||||
- 📋 Planned / Future Enhancement
|
||||
## Feature Enhancements
|
||||
|
||||
**Last Updated**: 2025-12-31
|
||||
### UI Improvements
|
||||
|
||||
- [ ] **Blue Highlighting for Filename Differences**
|
||||
- Show changed parts in proposed filename
|
||||
- Color-code additions, removals, changes
|
||||
- Side-by-side comparison view
|
||||
|
||||
- [ ] **Enhanced Poster Display**
|
||||
- Optimize image quality
|
||||
- Support for fanart/backdrops
|
||||
- Poster cache management UI
|
||||
|
||||
- [ ] **Progress Indicators**
|
||||
- Show scan progress
|
||||
- Batch operation progress bars
|
||||
- Background task status
|
||||
|
||||
### TMDB Integration
|
||||
|
||||
- [ ] **Full Movie Details**
|
||||
- Cast and crew information
|
||||
- Production companies
|
||||
- Budget and revenue data
|
||||
- Release dates by region
|
||||
|
||||
- [ ] **Genre Name Expansion**
|
||||
- Show full genre names instead of IDs
|
||||
- Genre-based filtering
|
||||
- Multi-genre support
|
||||
|
||||
- [ ] **TV Show Support**
|
||||
- Episode and season metadata
|
||||
- TV show renaming patterns
|
||||
- Episode numbering detection
|
||||
|
||||
- [ ] **Collection/Series Support**
|
||||
- Detect movie collections
|
||||
- Group related media
|
||||
- Collection-based renaming
|
||||
|
||||
### Technical Improvements
|
||||
|
||||
- [ ] **Undo/Redo Functionality**
|
||||
- Track file operations history
|
||||
- Undo renames
|
||||
- Redo operations
|
||||
- Operation log
|
||||
|
||||
- [ ] **Performance Optimization**
|
||||
- Lazy loading for large directories
|
||||
- Virtual scrolling in tree view
|
||||
- Background metadata extraction
|
||||
- Smart cache invalidation
|
||||
|
||||
### Build and Distribution
|
||||
|
||||
- [ ] **Build Script Improvements**
|
||||
- Exclude dev commands from distribution
|
||||
- Automated release workflow
|
||||
- Cross-platform testing
|
||||
|
||||
- [ ] **Package Distribution**
|
||||
- PyPI publication
|
||||
- Homebrew formula
|
||||
- AUR package
|
||||
- Docker image
|
||||
|
||||
---
|
||||
|
||||
## Potential Future Features
|
||||
|
||||
### Advanced Features
|
||||
|
||||
- [ ] Subtitle downloading and management
|
||||
- [ ] NFO file generation
|
||||
- [ ] Integration with media servers (Plex, Jellyfin, Emby)
|
||||
- [ ] Watch history tracking
|
||||
- [ ] Duplicate detection
|
||||
- [ ] Quality comparison (upgrade detection)
|
||||
|
||||
### Integrations
|
||||
|
||||
- [ ] Multiple database support (TVDB, Trakt, AniDB)
|
||||
- [ ] Custom API integrations
|
||||
- [ ] Local database option (offline mode)
|
||||
- [ ] Webhook support for automation
|
||||
|
||||
### Export/Import
|
||||
|
||||
- [ ] Export catalog to CSV/JSON
|
||||
- [ ] Import rename mappings
|
||||
- [ ] Backup/restore settings
|
||||
- [ ] Configuration profiles
|
||||
|
||||
---
|
||||
|
||||
## Known Issues
|
||||
|
||||
See [REFACTORING_PROGRESS.md](REFACTORING_PROGRESS.md) for current limitations and planned fixes.
|
||||
|
||||
---
|
||||
|
||||
## Contributing
|
||||
|
||||
Before working on any task:
|
||||
|
||||
1. Check [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md) for architecture details
|
||||
2. Review [CHANGELOG.md](CHANGELOG.md) for recent changes
|
||||
3. Read [DEVELOP.md](DEVELOP.md) for development setup
|
||||
4. Run tests: `uv run pytest`
|
||||
5. Follow code standards in [ENGINEERING_GUIDE.md](ENGINEERING_GUIDE.md#code-standards)
|
||||
|
||||
---
|
||||
|
||||
**Last Updated**: 2026-01-01
|
||||
|
||||
Reference in New Issue
Block a user