Commit Graph

43 Commits

Author SHA1 Message Date
Estrella Pan
48bf570697 feat(notification): redesign system to support multiple providers
- Add NotificationProvider base class with send() and test() methods
- Add NotificationManager for handling multiple providers simultaneously
- Add new providers: Discord, Gotify, Pushover, generic Webhook
- Migrate existing providers (Telegram, Bark, Server Chan, WeChat Work) to new architecture
- Add API endpoints for testing providers (/notification/test, /notification/test-config)
- Auto-migrate legacy single-provider configs to new multi-provider format
- Update WebUI with card-based multi-provider settings UI
- Add test button for each provider in settings
- Generic webhook supports template variables: {{title}}, {{season}}, {{episode}}, {{poster_url}}

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-28 20:58:42 +01:00
EstrellaXD
f22f5c657f fix(test): correct TypeScript types in frontend test mocks
- Use RSS type instead of non-existent RSSItem/RSSResponse
- Add expire field to mockLoginSuccess
- Replace offset with episode_offset/season_offset in mockBangumiAPI
- Add needs_review_reason field to mockBangumiAPI
- Add missing RSS fields (connection_status, last_checked_at, last_error)
- Fix generic types in test utilities

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 16:24:31 +01:00
EstrellaXD
a137b54b85 test: add comprehensive API tests for backend and frontend
Backend:
- Add API test files for auth, program, downloader, config, log, bangumi extended, search, and passkey endpoints
- Update conftest.py with new fixtures (app, authed_client, unauthed_client, mock_program, mock_webauthn, mock_download_client)
- Update factories.py with make_config and make_passkey functions

Frontend:
- Setup vitest testing infrastructure with happy-dom environment
- Add test setup file with mocks for axios, router, i18n, localStorage
- Add mock API data for testing
- Add tests for API logic, store logic, hooks, and basic components
- Add @vue/test-utils and happy-dom dev dependencies

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 16:20:39 +01:00
Estrella Pan
66c7127f21 feat(offset): add automatic season/episode offset detection
- Add offset detector to identify season mismatches between RSS and TMDB
- Only suggest season_offset (user sets episode_offset manually)
- Add background scanner for existing bangumi rules
- Add detect-offset and dismiss-review API endpoints
- Add warning banner in edit dialog with auto-detect button
- Add iOS-style notification badge for needs_review items
- Yellow badge with "!" for warnings, purple badge for multi-rule count
- Combined badge shows "! | 2" when both conditions apply
- Yellow glow animation on cards needing review
- Highlight warning items in rule selection popup

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 21:03:18 +01:00
Estrella Pan
c044b65fef chore: bump version to 3.2.0-beta.9
Fix TypeScript error in ab-search-bar.vue and include pending changes.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 19:29:12 +01:00
Estrella Pan
55b15ea8fe feat: add bangumi archive and episode offset features (#958)
* feat: add bangumi archive and episode offset features

Archive Feature:
- Add archived field to Bangumi model with database migration (v4)
- Add archive/unarchive API endpoints (PATCH /bangumi/archive/{id})
- Add auto-archive for ended series via TMDB metadata refresh
- Add collapsible archived section in UI with visual styling
- Add archive/unarchive button in edit rule popup

Episode Offset Feature:
- Extract series_status and season_episode_counts from TMDB API
- Add suggest-offset API endpoint with auto-detection logic
- Apply offset in renamer gen_path() for episode numbering
- Add offset field with "Auto Detect" button in rule editor
- Look up offset from database when renaming files

The offset auto-detection calculates the sum of episodes from all
previous seasons (e.g., if S01 has 13 episodes, S02E18 → S02E05
with offset=-13).

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

* docs: add changelog for bangumi archive and episode offset features

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 09:13:49 +01:00
Estrella Pan
5382aec8dc feat: add first-run setup wizard with guided configuration
Add a multi-step setup wizard that guides new users through initial
configuration on first run. The wizard covers account credentials,
download client connection (with test), RSS source, media paths,
and optional notification setup.

Backend: new /api/v1/setup/ endpoints with sentinel file mechanism.
Frontend: 7-step wizard with validation and i18n (en/zh-CN).

Generated with [Claude Code](https://claude.ai/code)
via [Happy](https://happy.engineering)

Co-Authored-By: Claude <noreply@anthropic.com>
Co-Authored-By: Happy <yesreply@happy.engineering>
2026-01-24 08:16:41 +01:00
Estrella Pan
a98a162500 feat: fix search, poster serving, and add hover overlay UI for cards
- Fix search store exports to match component expectations (inputValue,
  bangumiList, onSearch) and transform data to SearchResult format
- Fix poster endpoint path check that incorrectly blocked all requests
- Add resolvePosterUrl utility to handle both external URLs and local paths
- Move tags into hover overlay on homepage cards and calendar cards
- Show title and tags on poster hover with dark semi-transparent styling
- Add downloader API, store, and page
- Update backend to async patterns and uv migration changes
- Remove .claude/settings.local.json from tracking

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 21:20:12 +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
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
Rewrite0
94329ae544 fix: #855 2024-09-24 19:08:50 +08:00
Rewrite0
ec2856bf5a refactor: refactor search logic & remove rxjs 2024-09-23 16:07:48 +08:00
Rewrite0
31631214bd feat: lodash 更换为 radash 2024-04-23 10:46:44 +08:00
EstrellaXD
006b5190f9 Merge remote-tracking branch 'origin/3.1-dev' into 3.1-dev
# Conflicts:
#	webui/src/components/ab-add-rss.vue
2024-04-10 15:28:45 +08:00
Rewrite0
c95fe89d5d refactor: 整理unocss,重构useApi,完善通知i18n,调整了一些代码写法,调整了一些样式,清理了一些无用依赖和代码 2024-03-07 15:58:33 +08:00
KotaHv
2149182a54 fix: rss.parser set to default value when subscribe Bangumi 2024-01-24 21:09:25 +08:00
Rewrite0
edf697e68a feat: lint & format 2023-10-06 04:32:33 +00:00
EstrellaXD
bf6fda7be8 feat: add refresh poster api. 2023-09-26 16:12:15 +08:00
EstrellaXD
0177a8999a Merge branch 'webui-model-update' into 3.1-dev 2023-09-08 13:38:39 +08:00
EstrellaXD
978e0d37e0 webui: search api model change. 2023-09-08 13:38:11 +08:00
zthxxx
bec27b29e6 fix: 搜索接口后端关闭连接时会触发 error 事件,前端需要手动调用 close 不再自动重连 2023-09-08 13:24:59 +08:00
zthxxx
ff69990daa fix: 修复搜索番剧输入框报错后中断问题
- 报错信息改为 console 中展示,不打断 observer
- input 输入框改为 v-model 绑定,解决 IME 输入法输入时打断问题

待优化:
- 后端解析时报错信息应该和重新约定接口格式,将解析数据或报错信息都能返回到前端解析和提示
- 搜索项数据没限制,条数太多等时间太长没有意义
- 列表项的 UI 待优化,比如展示样式和点击添加/关闭啥的
2023-09-08 01:32:24 +08:00
EstrellaXD
fdd67697bd webui: add rss manage function. 2023-09-05 00:37:36 +08:00
EstrellaXD
20c3c42f8a webui: update search card.
backend: update api url and rss manage api route.
2023-09-04 20:53:25 +08:00
EstrellaXD
cbd3322a0d webui: change search bar style. 2023-09-03 22:04:38 +08:00
zthxxx
7d50e360ed fix: 修复 bangumi search API 中的流式接口,webui 对应接口定义方法改造
- StreamingResponse 换成 EventSourceResponse,即 Server Send Event Source 方式发送数据
- webui 中 search 接口改成 rxjs Observable 方式,
  这次来不及改到 vue 里,但是写了接口 usage example;
- 顺手补了一些 vscode 通用的开发配置,
  补了之前配置文件解析漏了一个可用环境变量的 host 字段
2023-08-31 23:48:07 +08:00
EstrellaXD
4eacbc81ff fix: reset all api in frontend. 2023-08-30 01:26:48 +08:00
EstrellaXD
e5af3d9924 fix: collect api bug. 2023-08-30 01:18:54 +08:00
EstrellaXD
ce8baff938 fix: rss api bug. fix ui. 2023-08-29 21:27:18 +08:00
EstrellaXD
7ccee98e2e fix: bugs, add disable rss api. 2023-08-29 19:28:44 +08:00
EstrellaXD
b60526d552 fix: frontend build issue. 2023-08-28 21:51:05 +08:00
EstrellaXD
da937d46f6 webui: fix bugs. adjust api model. 2023-08-22 16:28:30 +08:00
EstrellaXD
a872622b57 change: add universal api response model in src. 2023-08-20 15:11:16 +08:00
EstrellaXD
bb05f40df8 change: webui api accept model. 2023-08-20 12:20:12 +08:00
Rewrite0
5b30aaa4ea feat: new api 2023-08-13 17:18:23 +08:00
Rewrite0
67f8487561 save 2023-08-13 15:06:35 +08:00
Rewrite0
ae832e5bb4 feat: status api & ui change 2023-08-13 14:43:20 +08:00
Rewrite0
830ed99dfa feat: updateRule omit 'id' 2023-08-10 12:15:45 +08:00
Rewrite0
34a065f05e refactor: analysis fn 2023-08-10 10:13:06 +08:00
Rewrite0
e5a81efad5 feat: clean types 2023-08-10 09:19:35 +08:00
SaschR
6a4d980790 fix type error of bangumi.vue in line 112 2023-08-09 23:18:10 +08:00
EstrellaXD
69a4daca0c chore: small change in api. 2023-08-08 14:12:19 +08:00
zthxxx
684e124480 chore: move Auto_Bangumi_WebUI -> Auto_Bangumi_WebUI/webui/, prepare for merge into AutoBangumi repo 2023-06-05 23:47:00 +08:00