Commit Graph

242 Commits

Author SHA1 Message Date
EstrellaXD
0408ecdd61 fix(backend): use background task for startup to avoid blocking server
Change program.startup() to run via asyncio.create_task() so uvicorn
accepts connections immediately while downloader check runs in background.
Also add .claude/ project settings.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 18:00:06 +01:00
EstrellaXD
3edddfec09 Merge branch 'feature/uv-migration' into 3.2-dev
# Conflicts:
#	backend/pyproject.toml
#	backend/requirements.txt
#	backend/src/module/api/passkey.py
#	backend/src/module/database/combine.py
#	backend/src/module/database/engine.py
#	backend/src/module/security/auth_strategy.py
#	backend/src/module/security/webauthn.py
#	webui/src/components/setting/config-passkey.vue
#	webui/src/hooks/usePasskey.ts
#	webui/src/pages/index/config.vue
#	webui/src/pages/login.vue
#	webui/src/services/webauthn.ts
2026-01-23 17:58:37 +01:00
EstrellaXD
2a757e8f2c feat: add calendar view with Bangumi.tv schedule integration
Add weekly broadcast schedule page showing subscribed anime grouped by
day-of-week. Backend fetches air_weekday from Bangumi.tv calendar API
and matches titles. Frontend displays responsive grid (desktop) and
vertical list (mobile). Edit popup moved to parent layout to fix
KeepAlive conflicts, and restyled with purple theme.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 17:51:19 +01:00
EstrellaXD
b3be217e4f chore: add passkey test server and v3.2 changelog
- Add minimal test server for passkey development (no downloader check)
- Add changelog for version 3.2 features

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 16:15:37 +01:00
EstrellaXD
cd233881bd fix(backend): restore sync Database interface, isolate async for passkey
The previous refactoring broke backward compatibility by converting
Database from Session-extending sync class to a standalone async class.
This broke RSSEngine, startup code, and auth flows.

- Restore Database(Session) with sync interface for legacy code
- Restore UserDatabase to sync methods
- Restore security/api.py and auth.py to sync calls
- Passkey API now uses async_session_factory directly
- PasskeyAuthStrategy uses async sessions independently
- Remove unused db_session from engine.py

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 15:59:26 +01:00
EstrellaXD
027222a24d fix: resolve WebAuthn passkey compatibility with py_webauthn 2.7.0
- Fix aaguid type (str not bytes) in registration verification
- Fix missing credential_backup_eligible field (use credential_device_type)
- Remove invalid credential_id param from verify_authentication_response
- Fix origin detection to use browser Origin header for WebAuthn verification
- Add async database engine support (aiosqlite) for passkey operations
- Convert UserDatabase to async-compatible with sync/async session detection
- Update Database class to support both sync and async context managers

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 15:07:18 +01:00
EstrellaXD
d2cfd9b150 feat: add WebAuthn passkey authentication support
- Add passkey login as alternative authentication method
- Support multiple passkeys per user with custom names
- Backend: WebAuthn service, auth strategy pattern, API endpoints
- Frontend: passkey management UI in settings, login option
- Fix: convert downloader check from sync requests to async httpx
  to prevent blocking the event loop when downloader unavailable

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 14:57:00 +01:00
EstrellaXD
0c69498089 fix: requirements problem 2026-01-23 14:57:00 +01:00
EstrellaXD
c7f793a9f6 fix: secure problem, openai.py 2026-01-23 14:57:00 +01:00
EstrellaXD
9c5474d8e9 feat: migrate backend to uv package manager
Replace pip + requirements.txt with uv for dependency management.

- Multi-stage Dockerfile using ghcr.io/astral-sh/uv builder image
- CI updated to use astral-sh/setup-uv@v4
- Ruff config moved to [tool.ruff.lint] (fixes deprecation)
- Transitive deps removed, missing direct deps added (requests, PySocks, urllib3)
- Database layer migrated to async (AsyncSession + aiosqlite)
- Tests updated to match async database interface

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 12:56:23 +01:00
EstrellaXD
bfba010471 feat: add WebAuthn passkey authentication support
- Add passkey login as alternative authentication method
- Support multiple passkeys per user with custom names
- Backend: WebAuthn service, auth strategy pattern, API endpoints
- Frontend: passkey management UI in settings, login option
- Fix: convert downloader check from sync requests to async httpx
  to prevent blocking the event loop when downloader unavailable

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-22 11:50:55 +01:00
EstrellaXD
b4d90e2a11 fix: requirements problem 2025-04-29 15:11:10 +02:00
EstrellaXD
1ed87b3dfd fix: secure problem, openai.py 2025-04-29 15:05:25 +02:00
Rewrite0
c7dc25f2f3 fix: program start error 2024-09-26 11:41:09 +08:00
Rewrite0
22dfed741e fix: program restart error 2024-09-26 09:15:54 +08:00
EstrellaXD
d5b84b9085 fix: test openai problem. 2024-09-23 18:09:16 +08:00
EstrellaXD
cbc3f1f91e fix: temp fix ab cannot startup without qb live.
Close #839
2024-09-15 11:22:01 +08:00
Estrella Pan
073e809bae Merge pull request #784 from KotaHv/fix-filter
Fix: changed the global RSS parser filter requires program restart to take effect
2024-09-15 11:00:40 +08:00
Estrella Pan
0f3479c236 Merge pull request #816 from KotaHv/fix-805
fix: #805 and support episode as int or float
2024-09-15 10:56:30 +08:00
KotaHv
2b6fa65a9f test: add new cases for test_torrent_parser 2024-07-24 15:11:05 +08:00
KotaHv
ee36b05f95 fix: support episode as int or float 2024-07-24 14:03:20 +08:00
KotaHv
6f43949585 fix: Resolve issue #805 2024-07-24 13:53:34 +08:00
Jeremy-Hibiki
89f0754d69 fix: fix multi-line title post-processing in raw_parser
close #679, #794
related pr #685
2024-07-14 17:47:41 +08:00
KotaHv
29f5617e78 fix: changed the global RSS parser filter requires program restart to take effect 2024-06-11 01:15:12 +08:00
EstrellaXD
66518fdbfc fix: model test failed. 2024-05-31 15:48:16 +08:00
Estrella Pan
ca676f9082 Merge pull request #623 from 100gle/bugfix-openai-baseurl
bugfix(experimental): add api version for openai api base automatically
2024-04-12 12:13:15 +08:00
Estrella Pan
5c1c5e2ebe Merge pull request #676 from KotaHv/fix-subtitles
fix: subtitle file rename failure in collection
2024-04-12 12:10:41 +08:00
EstrellaXD
459bc4f749 fix: temp fix third part webui cannot let ab start problem 2024-04-10 15:34:25 +08:00
Estrella Pan
6bd18fbe8b Merge pull request #675 from KotaHv/fix-2
fix: rss.parser set to default value when subscribe Bangumi
2024-04-10 15:26:46 +08:00
KotaHv
690335c4ef fix: Resolve issue #679 2024-02-01 10:33:19 +08:00
KotaHv
3fb6cf6a2e fix: subtitle file rename failure in collection 2024-01-24 22:26:31 +08:00
KotaHv
2149182a54 fix: rss.parser set to default value when subscribe Bangumi 2024-01-24 21:09:25 +08:00
2huo
0c2b1b1c3b fix: incorrect password format 2024-01-14 21:37:01 +08:00
EstrellaXD
df0292672c fix: mikan poster problem. 2024-01-09 15:25:16 +08:00
Geeksun2018
f96aa03449 setting qbittorrent doesn't create sub folders 2023-11-22 14:27:21 +08:00
100gle
e6f029ba72 bugfix(experimental): add api version for openai api base automatically 2023-11-21 21:40:16 +08:00
EstrellaXD
7bee913953 change: change network connect err log level. 2023-10-31 21:27:13 +08:00
EstrellaXD
410b4c2207 fix: rss parser problem. 2023-10-31 21:22:42 +08:00
EstrellaXD
f296021d93 fix: analyser api error.
eps complete logic.
2023-10-30 20:29:00 +08:00
EstrellaXD
c7c1cac3ad feat: add refresh poster api. 2023-10-12 11:57:54 +08:00
EstrellaXD
9521686c3b fix: mikan official title encode problem. 2023-10-12 11:38:02 +08:00
EstrellaXD
cf7424b9ad fix: bug of delete bangumi. 2023-10-11 18:38:45 +08:00
EstrellaXD
bed3757bb7 fix: 通过订阅获得的番剧后续下载出现问题的情况。 2023-10-11 16:35:03 +08:00
EstrellaXD
f5d8790454 change: remove season info in mikan parser. 2023-10-11 16:16:48 +08:00
EstrellaXD
de63a5b0b5 fix: analyser log error. 2023-10-11 13:09:17 +08:00
EstrellaXD
87a49c49b1 fix: first run not create poster folder problem. 2023-10-10 13:53:56 +08:00
EstrellaXD
9d9b243d97 fix: first run not create poster folder problem. 2023-10-10 13:52:08 +08:00
Estrella Pan
86a4fd40f7 Merge pull request #553 from shininome/3.1-dev
fix telegram notification wrong when  no image
2023-10-09 10:11:52 +08:00
shininome
521d3f20d8 fix telegram notification wrong when no image 2023-10-09 09:44:04 +08:00
Estrella Pan
67fbfe8bc0 Merge pull request #547 from 100gle/support-azure-openai
feat(openai): support Microsoft Azure OpenAI
2023-10-08 19:56:46 +08:00