Commit Graph

60 Commits

Author SHA1 Message Date
Estrella Pan
2fb82a5a27 refactor(setup): remove redundant media library step from wizard
The media library path is now taken directly from the downloader path
field, eliminating the unnecessary separate step.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-26 20:11:44 +01:00
Estrella Pan
f764279a51 fix(webui): improve mobile UI/UX layout and responsiveness
Mobile Layout Fixes:
- Fix config page horizontal overflow by adding min-width: 0 constraints
- Fix sticky action buttons positioning on config page
- Add loading states to config save/cancel buttons
- Reduce topbar padding and icon spacing for mobile
- Make search button fill space between logo and action icons
- Fix search modal header layout with close button visibility

Component Improvements:
- ab-topbar: Flex search button with "Click to search" text on mobile
- ab-status-bar: Reduce button sizes and gaps on mobile
- ab-fold-panel: Add max-width and overflow constraints
- ab-setting: Add max-width: 100% to prevent input overflow
- ab-search-modal: Reduce padding and element sizes on mobile
- ab-mobile-nav: Increase label font-size from 10px to 11px
- ab-sidebar: Fix toggle animation (rotateY → rotate)

Calendar & Bangumi Pages:
- Add lazy loading to poster images for better performance
- Move unknown air day items to separate section below grid
- Add actionable CTA button to empty state with useAddRss hook

Login Page:
- Add will-change: transform for background animation performance

i18n:
- Add click_to_search translation key for mobile search button
- Add add_rss_btn translation for empty state CTA

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 23:09:53 +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
22870b8ae3 feat(auth): support usernameless passkey login (discoverable credentials)
- Change resident key requirement from PREFERRED to REQUIRED during registration
- Add discoverable authentication options (empty allowCredentials)
- Add verify_discoverable_authentication method in WebAuthn service
- Update auth strategy to lookup user from credential when username not provided
- Make username optional in frontend passkey login flow

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-25 19:23:39 +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
c5f4919e15 feat(rss): add connection status tracking and display
Track RSS feed reachability during refresh cycles. Each feed now stores
connection_status (healthy/error), last_checked_at, and last_error.
The RSS management page shows a green "Connected" tag for healthy feeds
and a red "Error" tag with tooltip for failed feeds.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-24 21:45:04 +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
3ff0a64e89 feat(webui): mobile-first responsive redesign with 3-tier breakpoints
Implement a comprehensive mobile-first UI redesign with touch-friendly
navigation, responsive data display, and proper device adaptation.

Key changes:
- Add 3-tier breakpoint system: mobile (<640px), tablet (640-1023px), desktop (1024px+)
- Create core mobile components: bottom-sheet, pull-refresh, swipe-container, data-list, adaptive-modal
- Redesign navigation: bottom nav with labels on mobile, mini sidebar on tablet
- Mobile-first layout with dvh units, safe area insets, and column-reverse flex
- Forms stack labels vertically on mobile, inputs go full-width
- Popups render as bottom sheets on mobile devices
- Bangumi grid uses CSS Grid with responsive minmax columns
- RSS page uses card-based data-list on mobile instead of NDataTable
- Config actions get safe area padding and full-width buttons on mobile/tablet
- Touch targets enforced at 44px minimum throughout
- Add sheet/overlay/swipe CSS transitions
- Topbar search visible on tablet (previously desktop-only)

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 07:37:50 +01:00
Estrella Pan
2a3a53449c feat(webui): redesign LLM settings section
- Rename "Experimental Setting" to "LLM Settings" with cleaner labels
- Replace jarring yellow warning banner with subtle themed notice
- Only show config fields when LLM is enabled (slide-fade transition)
- Add gpt-4o and gpt-4o-mini to model options
- Use scoped CSS instead of UnoCSS utility classes for the section
- Update i18n labels for both en and zh-CN

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 21:26:06 +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
29e4c16b40 fix(webui): improve passkey UI and error handling
- Add secondary button type to ab-button with proper styling
- Fix small button sizing (min-width instead of fixed width)
- Add btn-content wrapper for icon+text alignment in buttons
- Add config-passkey panel to settings page
- Improve WebAuthn error messages with DOMException handling
- Prevent duplicate error messages from axios interceptor
- Fix Vite proxy to preserve Origin header for WebAuthn

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 15:49:42 +01:00
EstrellaXD
41397bd676 Merge branch 'feature/passkey-login' into feature/ui-redesign
# Conflicts:
#	webui/src/components/ab-bangumi-card.vue
#	webui/src/components/ab-container.vue
#	webui/src/components/ab-fold-panel.vue
#	webui/src/components/ab-search-bar.vue
#	webui/src/components/basic/ab-search.vue
#	webui/src/components/basic/ab-tag.vue
#	webui/src/components/layout/ab-topbar.vue
#	webui/src/pages/index.vue
#	webui/src/pages/index/bangumi.vue
#	webui/src/pages/index/config.vue
#	webui/src/pages/index/player.vue
#	webui/src/pages/login.vue
#	webui/types/dts/auto-imports.d.ts
#	webui/vite.config.ts
2026-01-23 15:08:16 +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
72679cca59 feat(webui): complete UI redesign with design system, dark mode, and accessibility
Implement a comprehensive UI overhaul using CSS custom properties for theming,
scoped SCSS for all components and pages, dark/light mode toggle with flash
prevention, page transitions, ARIA accessibility attributes, and responsive
layout fixes. Fix VueUse auto-import configuration and dev proxy target.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-23 14:54:26 +01:00
Rewrite0
a2eb8d3537 fix: type error 2024-09-23 16:04:31 +08:00
Rewrite0
fcdcde07ed feat: update deps 2024-09-23 15:49:52 +08:00
Rewrite0
fa3d5a158a feat: add image component with adjustable aspect ratio 2024-09-23 11:55:50 +08:00
Rewrite0
ae43989bc8 feat: 移动端响应式布局 2024-05-29 15:25:10 +08:00
EstrellaXD
004b1cefeb fix: error in build webui 2024-04-10 15:58:53 +08:00
Rewrite0
c95fe89d5d refactor: 整理unocss,重构useApi,完善通知i18n,调整了一些代码写法,调整了一些样式,清理了一些无用依赖和代码 2024-03-07 15:58:33 +08:00
Rewrite0
abd946b0f2 feat: add qb iframe page 2023-10-24 13:26:46 +08:00
EstrellaXD
155496f93a webui: change delete/disable button style. 2023-10-12 16:34:05 +08:00
100gle
94a32b3af3 feat(openai): support azure openai 2023-10-08 16:15:16 +08:00
Rewrite0
7113335b18 refactor: Move transition group style 2023-10-06 07:31:04 +00:00
Rewrite0
c403e266ea fix: fix openAI settings form & file rename 2023-10-06 05:12:10 +00:00
Rewrite0
edf697e68a feat: lint & format 2023-10-06 04:32:33 +00:00
100gle
2751bcabb2 refactor: flatten openai configuration options 2023-10-01 13:00:05 +08:00
100gle
03304baea6 feat: add openai configuration to web ui 2023-09-28 09:08:17 +08:00
100gle
bfbf7aed56 feat: add experimental openai configuration 2023-09-27 21:46:38 +08:00
EstrellaXD
06e903e069 fix: frontend build error. 2023-09-23 23:25:33 +08:00
EstrellaXD
6a73d9ec41 fix: user update issue, tmdb leak poster issue. 2023-09-23 22:32:57 +08:00
EstrellaXD
57009b537e webui: add search animation. 2023-09-20 22:01:59 +08:00
EstrellaXD
daadcb2d82 fix:
- ui problem.
- return rss link of searcher
2023-09-09 19:27:11 +08:00
EstrellaXD
6367cc22a2 webui: move search component to ab-search-bar.vue 2023-09-08 20:18:21 +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
f204bcd6b6 webui: add story in bangumi card. 2023-09-01 17:10:02 +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
b60526d552 fix: frontend build issue. 2023-08-28 21:51:05 +08:00
EstrellaXD
ea97218855 webui: change some component style. Add tag components. 2023-08-28 20:18:43 +08:00
EstrellaXD
11dc78de3e webui: temp save in rss view. 2023-08-22 22:14:27 +08:00
EstrellaXD
da937d46f6 webui: fix bugs. adjust api model. 2023-08-22 16:28:30 +08:00
EstrellaXD
0714722b08 feat: change rss add card, add aggregation rss judgment conditions 2023-08-20 17:13:53 +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
3425e38bb1 feat: create RSS page 2023-08-13 19:49:43 +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