fix: migrations, auth, providers health check, E2E tests, remove neko-sama
CI / Test (Python 3.11) (push) Has been cancelled
CI / Test (Python 3.12) (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Type Check (push) Has been cancelled
CI / Summary (push) Has been cancelled

- Add proper Alembic initial migration (0001_initial_schema.py)
- Migrate refresh tokens from JSON file to SQLite (RefreshTokenTable)
- Remove Neko-Sama provider entirely (redirects to Gupy, not a host)
- Fix provider health check always showing UNKNOWN
  - Run check_all_health() on startup
  - Fix POST /providers/health/check background task bug
  - Add HTMX refresh after manual health check trigger
- Fix anime search relevance scoring with MIN_RELEVANCE_THRESHOLD=0.5
- Replace bare 'except:' with 'except Exception:' across codebase
- Add Playwright E2E test suite (12 tests, auth setup, helpers)
- Fix toast container blocking clicks via pointer-events: none
- Remove obsolete Jest/Vite test files and config
- Clean up obsolete test_watchlist scripts
- Update sonarr model comment for active providers
This commit is contained in:
Kimi Agent
2026-05-12 11:45:56 +00:00
parent 693615a7dc
commit 520be53901
47 changed files with 654 additions and 3437 deletions
+4 -4
View File
@@ -335,7 +335,7 @@ The downloaders are organized into three categories with separate base classes:
- User authentication and last login tracking
- **JWT Tokens** - Stateless authentication with refresh token support
- Access tokens: 24-hour expiration (configurable via `ACCESS_TOKEN_EXPIRE_MINUTES`)
- Refresh tokens: 30-day expiration (stored in `config/refresh_tokens.json`)
- Refresh tokens: 30-day expiration (stored in SQLite `refresh_tokens` table)
- HS256 algorithm with JWT_SECRET_KEY (change in production!)
- Token verification and user extraction
- **Password Security**
@@ -348,7 +348,7 @@ The downloaders are organized into three categories with separate base classes:
- **Configuration**
- `JWT_SECRET_KEY` environment variable (MUST be changed from default)
- Users stored in `config/users.json`
- Refresh tokens stored in `config/refresh_tokens.json`
- Refresh tokens stored in SQLite `refresh_tokens` table
**Authentication Endpoints:**
- `POST /api/auth/register` - User registration
@@ -709,7 +709,7 @@ JWT_SECRET_KEY=change-me-in-production # JWT signing key (MUST be changed, min
**Configuration Files:**
- `.env` - Environment configuration (create from .env.example)
- `config/users.json` - User authentication database (created automatically)
- `config/refresh_tokens.json` - Refresh token storage (created automatically)
- `refresh_tokens` table - Refresh token storage (SQLite database)
- `config/sonarr.json` - Sonarr webhook configuration (created automatically)
- `config/sonarr_mappings.json` - Sonarr to anime provider mappings (created automatically)
- `config/watchlist.json` - User watchlist items (created automatically)
@@ -746,7 +746,7 @@ JWT_SECRET_KEY=change-me-in-production # JWT signing key (MUST be changed, min
- Passwords truncated to 72 bytes (bcrypt limitation)
- JWT secret key validation (minimum 32 characters, default rejected)
- Credentials stored in `config/users.json`
- Refresh tokens stored in `config/refresh_tokens.json`
- Refresh tokens stored in SQLite `refresh_tokens` table
## Key Implementation Details