62 Commits

Author SHA1 Message Date
a833077f97 Phase 5: Frontend - Use key as primary series identifier
- Updated app.js to use 'key' as primary series identifier
  - selectedSeries Set now uses key instead of folder
  - createSerieCard() uses data-key attribute for identification
  - toggleSerieSelection() uses key for lookups
  - downloadSelected() iterates with key values
  - updateSelectionUI() and toggleSelectAll() use key

- Updated WebSocket service tests
  - Tests now include key and folder in broadcast data
  - Verified both fields are included in messages

- No changes needed for queue.js and other JS files
  - They use download item IDs correctly, not series identifiers

- No template changes needed
  - Series cards rendered dynamically in app.js

All 996 tests passing
2025-11-28 16:18:33 +01:00
9a42442f47 removed downloaded and total mb 2025-11-20 19:34:01 +01:00
57da1f1272 fix: download status 2025-11-20 19:02:04 +01:00
cf503c8d77 fixed empty queu 2025-11-20 18:53:22 +01:00
4c7657ce75 fixed: removed js 2025-11-14 09:51:57 +01:00
a80bfba873 removed useless stuff 2025-11-02 15:25:07 +01:00
64e78bb9b8 chore: removed locks 2025-11-02 15:18:30 +01:00
ca4bf72fde fix progress issues 2025-11-02 08:33:44 +01:00
d5f7b1598f use of websockets 2025-11-01 19:23:32 +01:00
0b5faeffc9 fix adding issues 2025-11-01 18:22:48 +01:00
18faf3fe91 added remove all item from queue 2025-11-01 18:09:23 +01:00
4dba4db344 fix: wrong folder was created 2025-11-01 17:51:30 +01:00
33aeac0141 download the queue 2025-11-01 16:13:28 +01:00
eaf6bb9957 fix queue issues 2025-11-01 16:07:31 +01:00
3be175522f download re implemented 2025-10-30 22:06:41 +01:00
fadd4973da cleanup unused methods 2025-10-30 21:22:43 +01:00
727486795c fix download 2025-10-30 21:13:08 +01:00
627f8b0cc4 fix download 2025-10-30 19:56:22 +01:00
02764f7e6f fix: resolve 422 error and undefined error in anime search endpoint
- Split search endpoint into separate GET and POST handlers
- Add SearchAnimeRequest Pydantic model for POST body validation
- Add 'link' field to AnimeSummary model for frontend compatibility
- Update frontend to handle both array and wrapped response formats
- Extract search logic into shared _perform_search() function

Fixes issue where POST requests with JSON body were failing with 422
Unprocessable Content error because the endpoint expected query params
instead of request body.

Also fixes frontend 'undefined' error by handling direct array responses
in addition to legacy wrapped format.
2025-10-28 19:28:50 +01:00
1a6c37d264 fixed check box size 2025-10-27 20:08:41 +01:00
39991d9ffc fix: anime api 2025-10-26 19:28:23 +01:00
75aa410f98 fixed: recan issues 2025-10-26 19:14:11 +01:00
a3651e0e47 fix: load configuration from config.json and fix authentication
- Load anime_directory and master_password_hash from config.json on startup
- Sync configuration from config.json to settings object in fastapi_app.py
- Update dependencies.py to load config from JSON if not in environment
- Fix app.js to use makeAuthenticatedRequest() for all authenticated API calls
- Fix API endpoint paths from /api/v1/anime to /api/anime
- Update auth_service.py to load master_password_hash from config.json
- Update auth.py setup endpoint to save master_password_hash to config
- Fix rate limiting code to satisfy type checker
- Update config.json with test master password hash

Fixes:
- 401 Unauthorized errors on /api/anime endpoint
- 503 Service Unavailable errors on /api/anime/process/locks
- Configuration not being loaded from config.json file
- Authentication flow now works end-to-end with JWT tokens
2025-10-24 20:55:10 +02:00
4e08d81bb0 websocket fix 2025-10-24 20:10:40 +02:00
731fd56768 feat: implement setup redirect middleware and fix test suite
- Created SetupRedirectMiddleware to redirect unconfigured apps to /setup
- Enhanced /api/auth/setup endpoint to save anime_directory to config
- Updated SetupRequest model to accept optional anime_directory parameter
- Modified setup.html to send anime_directory in setup API call
- Added @pytest.mark.requires_clean_auth marker for tests needing unconfigured state
- Modified conftest.py to conditionally setup auth based on test marker
- Fixed all test failures (846/846 tests now passing)
- Updated instructions.md to mark setup tasks as complete

This implementation ensures users are guided through initial setup
before accessing the application, while maintaining test isolation
and preventing auth state leakage between tests.
2025-10-24 19:55:26 +02:00
0fd9c424cd feat: Complete frontend-backend integration
- Created 4 new API endpoints in anime.py:
  * /api/v1/anime/status - Get library status
  * /api/v1/anime/add - Add new series
  * /api/v1/anime/download - Download folders
  * /api/v1/anime/process/locks - Check process locks

- Updated frontend API calls in app.js to use correct endpoints

- Cleaned up instructions.md by removing completed tasks

- Added comprehensive integration documentation

All tests passing. Core user workflows (list, search, add, download) now fully functional.
2025-10-24 10:27:07 +02:00
0957a6e183 feat: Complete frontend-backend integration with JWT authentication
Implemented full JWT-based authentication integration between frontend and backend:

Frontend Changes:
- Updated login.html to store JWT tokens in localStorage after successful login
- Updated setup.html to use correct API payload format (master_password)
- Modified app.js and queue.js to include Bearer tokens in all authenticated requests
- Updated makeAuthenticatedRequest() to add Authorization header with JWT token
- Enhanced checkAuthentication() to verify token and redirect on 401 responses
- Updated logout() to clear tokens from localStorage

API Endpoint Updates:
- Mapped queue API endpoints to new backend structure
- /api/queue/clear → /api/queue/completed (DELETE) for clearing completed
- /api/queue/remove → /api/queue/{item_id} (DELETE) for single removal
- /api/queue/retry payload changed to {item_ids: []} array format
- /api/download/pause|resume|cancel → /api/queue/pause|resume|stop

Testing:
- Created test_frontend_integration_smoke.py with JWT token validation tests
- Verified login returns access_token, token_type, and expires_at
- Tested Bearer token authentication on protected endpoints
- Smoke tests passing for authentication flow

Documentation:
- Updated infrastructure.md with JWT authentication implementation details
- Documented token storage, API endpoint changes, and response formats
- Marked Frontend Integration task as completed in instructions.md
- Added frontend integration testing section

WebSocket:
- Verified WebSocket integration with new backend (already functional)
- Dual event handlers support both old and new message types
- Room-based subscriptions working correctly

This completes Task 7: Frontend Integration from the development instructions.
2025-10-17 19:27:52 +02:00
8f7c489bd2 feat: Complete frontend integration with native WebSocket and FastAPI backend
- Created websocket_client.js: Native WebSocket wrapper with Socket.IO-compatible interface
  - Automatic reconnection with exponential backoff
  - Room-based subscriptions for targeted updates
  - Message queueing during disconnection

- Updated HTML templates (index.html, queue.html):
  - Replaced Socket.IO CDN with native websocket_client.js
  - No external dependencies needed

- Updated JavaScript files (app.js, queue.js):
  - Added room subscriptions on WebSocket connect (scan_progress, download_progress, downloads)
  - Added dual event handlers for backward compatibility
  - Support both old (scan_completed) and new (scan_complete) message types
  - Support both old (download_error) and new (download_failed) message types
  - Support both old (queue_updated) and new (queue_status) message types

- Registered anime router in fastapi_app.py:
  - Added anime_router import and registration
  - All API routers now properly included

- Documentation:
  - Created FRONTEND_INTEGRATION.md with comprehensive integration guide
  - Updated infrastructure.md with frontend integration section
  - Updated instructions.md to mark task as completed

- Testing:
  - Verified anime endpoint tests pass (pytest)
  - API endpoint mapping documented
  - WebSocket message format changes documented

Benefits:
  - Native WebSocket API (faster, smaller footprint)
  - No external CDN dependencies
  - Full backward compatibility with existing code
  - Proper integration with backend services
  - Real-time updates via room-based messaging
2025-10-17 12:12:47 +02:00
99e24a2fc3 feat: Integrate HTML templates with FastAPI
- Created template_helpers.py for centralized template rendering
- Added ux_features.css for enhanced UX styling
- Implemented JavaScript modules for:
  - Keyboard shortcuts (Ctrl+K, Ctrl+R navigation)
  - User preferences persistence
  - Undo/redo functionality (Ctrl+Z/Ctrl+Y)
  - Mobile responsive features
  - Touch gesture support
  - Accessibility features (ARIA, focus management)
  - Screen reader support
  - Color contrast compliance (WCAG)
  - Multi-screen support
- Updated page_controller.py and error_controller.py to use template helpers
- Created comprehensive template integration tests
- All templates verified: index.html, login.html, setup.html, queue.html, error.html
- Maintained responsive layout and theme switching
- Updated instructions.md (removed completed task)
- Updated infrastructure.md with template integration details
2025-10-17 12:01:22 +02:00
2867ebae09 health check 2025-10-12 23:06:29 +02:00
7481a33c15 instruction2 2025-10-12 22:39:51 +02:00
7a71715183 backup 2025-10-12 18:05:31 +02:00
57d49bcf78 Fix setup to login redirect issue
- Fix setup.html to use redirect_url from API response instead of hardcoded '/'
- Add database creation (aniworld.db, cache.db) during setup process
- Setup now properly creates all required files for validation
- After setup completion, users are correctly redirected to /login
- Tested: setup API returns correct redirect_url, database files created, redirect works
2025-10-06 13:32:35 +02:00
90dc5f11d2 Fix middleware file corruption issues and enable FastAPI server startup 2025-10-06 10:20:19 +02:00
00a68deb7b Fix SeriesApp: Add missing class variable and clean up unused imports 2025-10-06 09:17:35 +02:00
888acfd33d Remove unused Flask imports and dependencies - Cleaned up old Flask middleware files and updated requirements.txt with FastAPI dependencies 2025-10-06 09:08:49 +02:00
2199d256b6 Update logging middleware for FastAPI - Enhanced logging with request tracking, performance monitoring, and security logging 2025-10-06 08:45:07 +02:00
721326ecaf Migrate request/response interceptors to FastAPI middleware - Created FastAPI-compatible auth and validation middleware 2025-10-06 08:42:42 +02:00
e0c80c178d Complete responsive design testing - CSS patterns verified and working 2025-10-06 08:39:49 +02:00
1fe8482349 Task 4: Added missing API endpoints for JavaScript compatibility - Added /api/add_series and /api/download endpoints to FastAPI app to match JavaScript expectations 2025-10-06 08:30:33 +02:00
8121031969 Task 1: Converted form and file upload handling in config.py to FastAPI - Updated upload endpoint to use UploadFile instead of Flask request.files 2025-10-06 08:27:31 +02:00
e3b752a2a7 Add /api/auth/status endpoint for JavaScript compatibility 2025-10-05 23:42:59 +02:00
2c8c9a788c Update HTML templates and JavaScript for FastAPI compatibility
- Replace Flask url_for() with direct /static/ paths in all HTML templates
- Update CSS and JavaScript file references to use FastAPI static mount
- Convert Flask-specific template patterns to FastAPI-compatible syntax
- Update JavaScript API endpoints to match new FastAPI route structure:
  * /api/series -> /api/v1/anime
  * /api/search -> /api/v1/anime/search
  * /api/rescan -> /api/v1/anime/rescan
- Add web interface routes for serving HTML templates
- Add template response endpoints for /app, /login, /setup, /queue
- Mark HTML template and JavaScript migration tasks as completed
- Maintain Jinja2 template compatibility with FastAPI
2025-10-05 23:14:31 +02:00
6e136e832b Add comprehensive Pydantic models and configure templates/static files
- Create detailed Pydantic models for anime requests and responses
- Add AnimeCreateRequest, AnimeUpdateRequest, PaginatedAnimeResponse, etc.
- Update route signatures to use proper response models
- Convert return values to use Pydantic models instead of raw dicts
- Configure Jinja2Templates in FastAPI application
- Mount StaticFiles for CSS, JS, images at /static endpoint
- Update anime search and list endpoints to use typed responses
- Mark completed Pydantic models and template configuration tasks in web_todo.md
2025-10-05 23:10:11 +02:00
e15c0a21e0 Convert Flask routes to FastAPI in anime controller
- Convert Flask Blueprint to FastAPI router
- Replace @app.route() with FastAPI route decorators (@router.get, @router.post)
- Update route parameter syntax from <int:id> to {id: int} format
- Convert Flask request object usage to FastAPI Query/Depends parameters
- Update response handling to return dicts instead of Flask jsonify()
- Integrate SeriesApp as business logic layer for anime operations
- Add anime list, search, and rescan endpoints using SeriesApp
- Include anime router in main FastAPI application
- Mark route conversion tasks as completed in web_todo.md
2025-10-05 23:05:37 +02:00
969533f1de logfile 2025-10-05 22:29:22 +02:00
85f2d2c6f7 cleanup 2 2025-10-05 22:22:04 +02:00
d30aa7cfea latest api use 2025-10-05 21:42:08 +02:00
64434ccd44 cleanup contollers 2025-10-05 11:39:33 +02:00
94e6b77456 backup 2025-10-04 20:24:00 +02:00