- Enable contextIsolation, disable nodeIntegration, remove enableRemoteModule
- Add preload.js with safe contextBridge API exposure
- Fix OS command injection: exec() → execFile() in open-file-in-player
- Fix DOM XSS: replace innerHTML with textContent/createElement in FileListManager, UIManager, ModalManager
- Remove direct fs/electron access from renderer, route through IPC
- Add validate-folder and get-file-stats IPC handlers
- Load renderer modules via script tags with require polyfill
- Implement core Rust backend with FFmpeg integration
- Add TheTVDB API client with token caching
- Implement directory scanner with progress callbacks
- Create file manager with rename and move operations
- Add audit logging functionality
- Implement file mapping for TV episode renaming
- Build Node.js native addon via NAPI
- Include comprehensive unit and integration tests
- Update gitignore to exclude build artifacts and temp files
Resolves #TBD
- Add double-click handler to make file names editable in UI
- Remove duplicate IPC handler for rename-file in renderer.js
- Fix checkEpisodeCountMatch to properly validate sequential episodes
- Fix begin-mapping to handle both season folder and show folder cases
- Improve open-file-in-player handler to properly log results
- Fix handleTagClick to unselect other tags when selecting new tag
- Add handlePlayButtonClick to move individual tagged files
- Add 'behind-the-scenes' tag support to main.js
- Map tag types to Jellyfin-compatible folder names
- Add comprehensive test coverage (24 new tests)
- Fix displayCreatedFolder folder name mapping issue
This implements the full tagging workflow: tag a file with extra/
behind-the-scenes/delete, then click play button to move it to the
appropriate folder.
- Improved mock element implementation with proper innerHTML/textContent support
- Added getElementById mock that returns different elements based on ID
- Enhanced querySelectorAll mock for episode number queries
- Fixed isUpdatingEpisodeNumbers test to access property directly
- Tests now show 41/70 passing with improved mocks
- Split renderer.js into 9 manager classes following SOLID principles:
* AppState - State management
* EpisodeManager - Episode numbering and range editing
* TagManager - File tagging system
* SearchManager - TheTVDB search integration
* FileManager - Directory and file operations
* ModalManager - Video preview modals
* ProgressManager - Progress display
* FileListManager - File list rendering and drag/drop
* UIManager - Main UI coordinator
- Add comprehensive test suite (test-renderer-classes-comprehensive.js)
with 100+ tests covering all business logic
- Fix drag/drop handler 'this' binding issues
- Add CSS for highlighted episodes and improved file list styling
- Restore all original functionality including episode cascading,
tagging system, TVDB search, and Jellyfin naming
- Added test-renderer-classes.js with tests for all 8 new class files
- Updated test-functional.js to match new code structure
- All tests passing:
* 4 renderer class tests (AppState, EpisodeManager, ProgressManager, imports)
* 9 audit system tests
* 4 functional tests
- Syntax verified with node --check
- Split large renderer.js file into 8 separate class files:
- AppState.js: Manages application state
- FileListManager.js: Handles file list display and manipulation
- TagManager.js: Manages file tagging functionality
- EpisodeManager.js: Handles episode number editing and highlighting
- SearchManager.js: Manages TVDB search and show selection
- FileManager.js: Handles file operations
- ModalManager.js: Manages video preview modal
- ProgressManager.js: Manages progress display
- UIManager.js: Main coordinator for UI functionality
- Follows SOLID principles and single responsibility
- Improves code maintainability and testability
- All syntax verified with node --check