5.4 KiB
5.4 KiB
Changelog
Document Purpose
This document tracks all notable changes to the Aniworld project.
What This Document Contains
- Version History: All released versions with dates
- Added Features: New functionality in each release
- Changed Features: Modifications to existing features
- Deprecated Features: Features marked for removal
- Removed Features: Features removed from the codebase
- Fixed Bugs: Bug fixes with issue references
- Security Fixes: Security-related changes
- Breaking Changes: Changes requiring user action
What This Document Does NOT Contain
- Internal refactoring details (unless user-facing)
- Commit-level changes
- Work-in-progress features
- Roadmap or planned features
Target Audience
- All users and stakeholders
- Operators planning upgrades
- Developers tracking changes
- Support personnel
Format
This changelog follows Keep a Changelog principles and adheres to Semantic Versioning.
[Unreleased] - 2026-01-18
Fixed
- Series Visibility: Fixed issue where series added to the database weren't appearing in the API/UI
- Series are now loaded from database into SeriesApp's in-memory cache on startup
- Added
_load_series_from_db()call after initial database sync in FastAPI lifespan
- Episode Tracking: Fixed missing episodes not being saved to database when adding new series
- Missing episodes are now persisted to the
episodestable after the targeted scan - Episodes are properly synced during rescan operations (added/removed based on filesystem state)
- Missing episodes are now persisted to the
- Database Synchronization: Improved data consistency between database and in-memory cache
- Rescan process properly updates episodes: adds new missing episodes, removes downloaded ones
- All series operations now maintain database and cache synchronization
Technical Details
- Modified
src/server/fastapi_app.pyto load series from database after sync - Modified
src/server/api/anime.pyto save scanned episodes to database - Episodes table properly tracks missing episodes with automatic cleanup
Sections for Each Release
## [Version] - YYYY-MM-DD
### Added
- New features
### Changed
- Changes to existing functionality
### Deprecated
- Features that will be removed in future versions
### Removed
- Features removed in this release
### Fixed
- Bug fixes
### Security
- Security-related fixes
Unreleased
Changes that are in development but not yet released.
Added
- Comprehensive Test Suite: Created 1,070+ tests across 4 priority tiers
- TIER 1 (Critical): 159 tests - Scheduler, NFO batch operations, download queue, persistence
- TIER 2 (High Priority): 390 tests - JavaScript framework, dark mode, setup page, settings modal, WebSocket, queue UI
- TIER 3 (Medium Priority): 156 tests - WebSocket load, concurrent operations, retry logic, NFO performance, series parsing, TMDB integration
- TIER 4 (Polish): 426 tests - Internationalization (89), user preferences (68), accessibility (250+), media server compatibility (19)
- Frontend Testing Infrastructure: Vitest for unit tests, Playwright for E2E tests
- Security Test Coverage: Complete testing for authentication, authorization, CSRF, XSS, SQL injection
- Performance Validation: WebSocket load (200+ concurrent clients), batch operations, concurrent access
- Accessibility Tests: WCAG 2.1 AA compliance testing (keyboard navigation, ARIA labels, screen readers)
- Media Server Compatibility: NFO format validation for Kodi, Plex, Jellyfin, and Emby
Changed
- Updated testing documentation (TESTING_COMPLETE.md, instructions.md) to reflect 100% completion of all test tiers
Fixed
- Enhanced Anime Add Flow: Automatic database persistence, targeted episode scanning, and folder creation with sanitized names
- Filesystem utility module (
src/server/utils/filesystem.py) withsanitize_folder_name(),is_safe_path(), andcreate_safe_folder()functions Serie.sanitized_folderproperty for generating filesystem-safe folder names from display namesSerieScanner.scan_single_series()method for targeted scanning of individual anime without full library rescan- Add series API response now includes
missing_episodeslist andtotal_missingcount - Database transaction support with
@transactionaldecorator andatomic()context manager - Transaction propagation modes (REQUIRED, REQUIRES_NEW, NESTED) for fine-grained control
- Savepoint support for nested transactions with partial rollback capability
TransactionManagerhelper class for manual transaction control- Bulk operations:
bulk_mark_downloaded,bulk_delete,clear_allfor batch processing rotate_sessionatomic operation for secure session rotation- Transaction utilities:
is_session_in_transaction,get_session_transaction_depth get_transactional_sessionfor sessions without auto-commit
Changed
QueueRepository.save_item()now uses atomic transactions for data consistencyQueueRepository.clear_all()now uses atomic transactions for all-or-nothing behavior- Service layer documentation updated to reflect transaction-aware design
Fixed
- Scan status indicator now correctly shows running state after page reload during active scan
- Improved reliability of process status updates in the UI header
Version History
To be documented as versions are released.