docs: update documentation for 3.2 beta features
- Update changelog/3.2.md with beta.5-10 features: - Season/episode offset auto-detection - Bangumi archive functionality - Search provider configuration API - RSS connection status tracking - iOS-style notification badges - Performance improvements (backend & frontend) - Update feature documentation: - search.md: Add search provider settings panel docs - bangumi.md: Add archive, offset detection, badges docs - rss.md: Add connection status documentation - rename.md: Add episode offset section - calendar.md: New documentation for calendar view - Add screenshots for new features: - Login page (glassmorphism design) - Bangumi list and edit modals - Rule selection popup - RSS manager with connection status - Calendar view - Search panel and provider settings - Update VitePress config to include Calendar in sidebar 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>
@@ -87,6 +87,7 @@ export default defineConfig({
|
||||
items: [
|
||||
{ text: 'RSS Management', link: '/feature/rss' },
|
||||
{ text: 'Bangumi Management', link: '/feature/bangumi' },
|
||||
{ text: 'Calendar View', link: '/feature/calendar' },
|
||||
{ text: 'File Renaming', link: '/feature/rename' },
|
||||
{ text: 'Torrent Search', link: '/feature/search' },
|
||||
],
|
||||
|
||||
@@ -10,6 +10,21 @@
|
||||
- Clone attack protection (sign_count verification)
|
||||
- Authentication strategy pattern unifying password and Passkey login interfaces
|
||||
- Usernameless login support via discoverable credentials (resident keys)
|
||||
- Added season/episode offset auto-detection
|
||||
- Analyzes TMDB episode air dates to detect "virtual seasons" (e.g., Frieren S1 split into two parts)
|
||||
- Auto-identifies different parts when broadcast gap exceeds 6 months
|
||||
- Calculates episode offset (e.g., RSS shows S2E1 → TMDB S1E29)
|
||||
- Background scan thread automatically detects offset issues in existing subscriptions
|
||||
- New API endpoints: `POST /bangumi/detect-offset`, `PATCH /bangumi/dismiss-review/{id}`
|
||||
- Added bangumi archive functionality
|
||||
- Manual archive/unarchive support
|
||||
- Auto-archive completed series
|
||||
- New API endpoints: `PATCH /bangumi/archive/{id}`, `PATCH /bangumi/unarchive/{id}`, `GET /bangumi/refresh/metadata`
|
||||
- Added search provider configuration API
|
||||
- `GET /search/provider/config` - Get search provider config
|
||||
- `PUT /search/provider/config` - Update search provider config
|
||||
- Added RSS connection status tracking
|
||||
- Records `connection_status` (healthy/error), `last_checked_at`, and `last_error` after each refresh
|
||||
- Added first-run setup wizard
|
||||
- 7-step guided configuration: account, downloader, RSS source, media path, notifications
|
||||
- Downloader connection test, RSS source validation
|
||||
@@ -27,6 +42,22 @@
|
||||
- Backend migrated to `uv` package manager (pyproject.toml + uv.lock)
|
||||
- Server startup uses background tasks to avoid blocking (fixes #891, #929)
|
||||
- Database migration auto-fills NULL values with model defaults
|
||||
- Database adds `needs_review` and `needs_review_reason` fields for offset detection
|
||||
|
||||
### Performance
|
||||
|
||||
- Shared HTTP client connection pool, reuses TCP/SSL connections
|
||||
- RSS refresh now concurrent (`asyncio.gather`), ~10x faster with multiple sources
|
||||
- Torrent file download now concurrent, ~5x faster for multiple torrents
|
||||
- Rename module concurrent file list fetching, ~20x faster
|
||||
- Notification sending now concurrent, removed 2-second hardcoded delay
|
||||
- Added TMDB and Mikan parser result caching to avoid duplicate API calls
|
||||
- Database indexes added for `Torrent.url`, `Torrent.rss_id`, `Bangumi.title_raw`, `Bangumi.deleted`, `RSSItem.url`
|
||||
- RSS batch enable/disable uses single transaction instead of per-item commits
|
||||
- Pre-compiled regex patterns for torrent name parsing and filter matching
|
||||
- `SeasonCollector` created outside loops, reuses single authentication
|
||||
- RSS parsing deduplication changed from O(n²) list lookup to O(1) set lookup
|
||||
- `Episode`/`SeasonInfo` dataclasses use `__slots__` for reduced memory footprint
|
||||
|
||||
### Changes
|
||||
|
||||
@@ -89,6 +120,21 @@
|
||||
- Added log level filter in log view
|
||||
- Redesigned LLM settings panel (fixes #938)
|
||||
- Redesigned settings, downloader, player, and log page styles
|
||||
- Added search provider settings panel
|
||||
- View, add, edit, delete search sources in UI
|
||||
- Default sources (mikan, nyaa, dmhy) cannot be deleted
|
||||
- URL template validation ensures `%s` placeholder
|
||||
- Added iOS-style notification badge system
|
||||
- Yellow badge + purple border for subscriptions needing review
|
||||
- Combined display support (e.g., `! | 2` for warning + multiple rules)
|
||||
- Yellow glow animation on cards needing attention
|
||||
- Edit modal warning banner with one-click auto-detect and dismiss
|
||||
- Rule selection modal highlights rules with warnings
|
||||
- Calendar page bangumi grouping: same anime with multiple rules merged, click to select specific rule
|
||||
- Bangumi list page collapsible "Archived" section
|
||||
- Bangumi list page skeleton loading animation
|
||||
- Rule editor episode offset field with "Auto Detect" button
|
||||
- RSS management page connection status labels: green "Connected" when healthy, red "Error" with tooltip for details
|
||||
- New mobile-first responsive design
|
||||
- Three-tier breakpoint system: mobile (<640px), tablet (640-1023px), desktop (≥1024px)
|
||||
- Mobile bottom navigation bar (with icons and text labels)
|
||||
@@ -114,6 +160,16 @@
|
||||
- `ab-mobile-nav` — Enhanced bottom navigation bar (icon + label + active indicator)
|
||||
- `useSafeArea` — Safe area composable
|
||||
|
||||
### Performance
|
||||
|
||||
- Downloader store uses `shallowRef` instead of `ref` to avoid deep reactive proxy on large arrays
|
||||
- Table column definitions moved to `computed` to avoid rebuilding on each render
|
||||
- RSS table columns separated from data, column config not rebuilt on data changes
|
||||
- Calendar page removed duplicate `getAll()` calls
|
||||
- `ab-select` `watchEffect` changed to `watch`, eliminates invalid emit on mount
|
||||
- `useClipboard` hoisted to store top level, avoids creating new instance on each `copy()`
|
||||
- `setInterval` replaced with `useIntervalFn` for automatic lifecycle management
|
||||
|
||||
### Changes
|
||||
|
||||
- Refactored search logic, removed rxjs dependency
|
||||
|
||||
@@ -2,7 +2,67 @@
|
||||
|
||||
Click an anime poster on the homepage to manage individual anime entries.
|
||||
|
||||

|
||||

|
||||
|
||||
If an anime has multiple download rules (e.g., different subtitle groups), a rule selection popup will appear:
|
||||
|
||||

|
||||
|
||||
After selecting a rule, the edit modal opens:
|
||||
|
||||

|
||||
|
||||
## Notification Badges
|
||||
|
||||
Since v3.2, bangumi cards display iOS-style notification badges to indicate status:
|
||||
|
||||
- **Yellow badge with `!`**: Subscription needs review (e.g., offset issues detected)
|
||||
- **Number badge**: Multiple rules exist for this anime
|
||||
- **Combined badge** (e.g., `! | 2`): Has warning and multiple rules
|
||||
|
||||
Cards with warnings also display a yellow glow animation to draw attention.
|
||||
|
||||
## Episode Offset Auto-Detection
|
||||
|
||||
Some anime have complex season structures that cause mismatches between RSS episode numbers and TMDB data. For example:
|
||||
- "Frieren: Beyond Journey's End" Season 1 was broadcast in two parts with a 6-month gap
|
||||
- RSS may show "S2E01" while TMDB considers it "S1E29"
|
||||
|
||||
AB v3.2 can automatically detect these issues:
|
||||
|
||||
1. Click the **Auto Detect** button in the edit modal
|
||||
2. AB analyzes TMDB episode air dates to identify "virtual seasons"
|
||||
3. If a mismatch is found, AB suggests the correct offset values
|
||||
4. Click **Apply** to save the offset
|
||||
|
||||
The background scan thread also periodically checks existing subscriptions for offset issues and marks them for review.
|
||||
|
||||
## Archive / Unarchive Anime
|
||||
|
||||
Since v3.2, you can archive completed or inactive anime to keep your list organized.
|
||||
|
||||
### Manual Archive
|
||||
|
||||
1. Click on an anime poster
|
||||
2. In the edit modal, click the **Archive** button
|
||||
3. The anime moves to the "Archived" section at the bottom of the list
|
||||
|
||||
### Automatic Archive
|
||||
|
||||
AB can automatically archive anime when:
|
||||
- The series status on TMDB shows as "Ended" or "Canceled"
|
||||
- Use **Config** → refresh metadata to trigger auto-archive
|
||||
|
||||
### Viewing Archived Anime
|
||||
|
||||
Archived anime appear in a collapsible "Archived" section at the bottom of the bangumi list. Click to expand and view archived items.
|
||||
|
||||
### Unarchive
|
||||
|
||||
To restore an archived anime:
|
||||
1. Expand the "Archived" section
|
||||
2. Click on the anime poster
|
||||
3. Click the **Unarchive** button
|
||||
|
||||
## Disable / Delete Anime
|
||||
|
||||
@@ -11,3 +71,13 @@ Since AB continuously parses **aggregated RSS** feeds, for download rules from a
|
||||
- Remove the subscription from the aggregated RSS
|
||||
|
||||
If you delete the anime entry, it will be recreated on the next parse cycle.
|
||||
|
||||
## Advanced Settings
|
||||
|
||||
Click **Advanced Settings** in the edit modal to access additional options:
|
||||
|
||||

|
||||
|
||||
- **Season Offset**: Adjust the season number offset
|
||||
- **Episode Offset**: Adjust the episode number offset
|
||||
- **Filter**: Custom regex filter for torrent matching
|
||||
|
||||
40
docs/feature/calendar.md
Normal file
@@ -0,0 +1,40 @@
|
||||
# Calendar View
|
||||
|
||||
Since v3.2, AB includes a calendar view that shows your subscribed anime organized by broadcast day.
|
||||
|
||||

|
||||
|
||||
## Features
|
||||
|
||||
### Weekly Schedule
|
||||
|
||||
The calendar displays anime organized by their broadcast weekday (Monday through Sunday), plus an "Unknown" column for anime without broadcast schedule data.
|
||||
|
||||
### Bangumi.tv Integration
|
||||
|
||||
AB fetches broadcast schedule data from Bangumi.tv to accurately display when each anime airs.
|
||||
|
||||
Click the **Refresh schedule** button to update the broadcast data.
|
||||
|
||||
### Grouped Display
|
||||
|
||||
Since v3.2, anime with multiple download rules are grouped together:
|
||||
|
||||
- Same anime appears once, even with multiple subtitle group rules
|
||||
- Click on a grouped anime to see all available rules
|
||||
- Select a specific rule to edit
|
||||
|
||||
This keeps the calendar clean while still providing access to all your rules.
|
||||
|
||||
## Navigation
|
||||
|
||||
Click on any anime poster in the calendar to:
|
||||
- View anime details
|
||||
- Edit download rules
|
||||
- Access archive/disable options
|
||||
|
||||
## Tips
|
||||
|
||||
::: tip
|
||||
If an anime appears in the "Unknown" column, it may not have broadcast data on Bangumi.tv, or the anime title couldn't be matched.
|
||||
:::
|
||||
@@ -38,3 +38,24 @@ AB can also rename subtitle files in the first-level directory.
|
||||
After renaming, episodes and directories are placed in the `Season` folder.
|
||||
|
||||
Renamed collections are moved and categorized under `BangumiCollection`.
|
||||
|
||||
## Episode Offset
|
||||
|
||||
Since v3.2, AB supports episode offset for renaming. This is useful when:
|
||||
- RSS shows different episode numbers than expected (e.g., S2E01 should be S1E29)
|
||||
- Anime has "virtual seasons" due to broadcast gaps
|
||||
|
||||
When an offset is configured for a bangumi, AB automatically applies it during renaming:
|
||||
|
||||
```
|
||||
Original: S02E01.mkv
|
||||
With offset (season: -1, episode: +28): S01E29.mkv
|
||||
```
|
||||
|
||||
To configure offset:
|
||||
1. Click on the anime poster
|
||||
2. Open Advanced Settings
|
||||
3. Set Season Offset and/or Episode Offset values
|
||||
4. Or use "Auto Detect" to let AB suggest the correct offset
|
||||
|
||||
See [Bangumi Management](./bangumi.md#episode-offset-auto-detection) for more details on auto-detection.
|
||||
|
||||
@@ -4,6 +4,25 @@ title: RSS Management
|
||||
|
||||
# RSS Management
|
||||
|
||||
## RSS Manager Page
|
||||
|
||||
The RSS Manager page displays all your RSS subscriptions with their connection status.
|
||||
|
||||

|
||||
|
||||
### Connection Status
|
||||
|
||||
Since v3.2, AB tracks the connection status of each RSS source:
|
||||
|
||||
| Status | Description |
|
||||
|--------|-------------|
|
||||
| **Connected** (green) | RSS source is reachable and returning valid data |
|
||||
| **Error** (red) | RSS source failed to respond or returned invalid data |
|
||||
|
||||
When a source shows an error, hover over the status label to see the error details in a tooltip.
|
||||
|
||||
AB automatically updates the connection status on each RSS refresh cycle.
|
||||
|
||||
## Adding Collections
|
||||
|
||||
AB provides two manual download methods:
|
||||
|
||||
@@ -8,7 +8,9 @@ Since v3.1, AB includes a search feature for quickly finding anime.
|
||||
The search feature relies on the main program's parser. The current version does not support parsing collections. A `warning` when parsing collections is normal behavior.
|
||||
:::
|
||||
|
||||
The search bar is located in the AB top bar. You can select the source site on the right side of the search bar, such as: Mikan Project, Nyaa, etc.
|
||||
The search bar is located in the AB top bar. Click to open the search panel.
|
||||
|
||||

|
||||
|
||||
Select the source site, enter keywords, and AB will automatically parse and display search results. To add an anime, click the add button on the right side of the card.
|
||||
|
||||
@@ -16,11 +18,47 @@ Select the source site, enter keywords, and AB will automatically parse and disp
|
||||
When the source is **Mikan**, AB uses the `mikan` parser by default. For other sources, the TMDB parser is used.
|
||||
:::
|
||||
|
||||
## Adding Custom Sources
|
||||
## Managing Search Sources
|
||||
|
||||
Users can manually add source sites by editing `config/search_provider.json`.
|
||||
Since v3.2, you can manage search sources directly in the Settings page without editing JSON files.
|
||||
|
||||
### Search Provider Settings Panel
|
||||
|
||||
Navigate to **Config** → **Search Provider** to access the settings panel.
|
||||
|
||||

|
||||
|
||||
From here you can:
|
||||
- **View** all configured search sources
|
||||
- **Add** new search sources with the "Add Provider" button
|
||||
- **Edit** existing source URLs
|
||||
- **Delete** custom sources (default sources mikan, nyaa, dmhy cannot be deleted)
|
||||
|
||||
### URL Template Format
|
||||
|
||||
When adding a custom source, the URL must contain `%s` as a placeholder for the search keyword.
|
||||
|
||||
Example:
|
||||
```
|
||||
https://example.com/rss/search?q=%s
|
||||
```
|
||||
|
||||
The `%s` will be replaced with the user's search query.
|
||||
|
||||
### Default Sources
|
||||
|
||||
The following sources are built-in and cannot be deleted:
|
||||
|
||||
| Source | URL Template |
|
||||
|--------|--------------|
|
||||
| mikan | `https://mikanani.me/RSS/Search?searchstr=%s` |
|
||||
| nyaa | `https://nyaa.si/?page=rss&q=%s&c=0_0&f=0` |
|
||||
| dmhy | `http://dmhy.org/topics/rss/rss.xml?keyword=%s` |
|
||||
|
||||
### Adding Sources via Config File
|
||||
|
||||
You can also manually add sources by editing `config/search_provider.json`:
|
||||
|
||||
Default configuration:
|
||||
```json
|
||||
{
|
||||
"mikan": "https://mikanani.me/RSS/Search?searchstr=%s",
|
||||
|
||||
BIN
docs/image/feature/bangumi-edit-advanced.png
Normal file
|
After Width: | Height: | Size: 640 KiB |
BIN
docs/image/feature/bangumi-edit.png
Normal file
|
After Width: | Height: | Size: 579 KiB |
BIN
docs/image/feature/bangumi-list.png
Normal file
|
After Width: | Height: | Size: 942 KiB |
BIN
docs/image/feature/calendar.png
Normal file
|
After Width: | Height: | Size: 102 KiB |
BIN
docs/image/feature/login.png
Normal file
|
After Width: | Height: | Size: 86 KiB |
BIN
docs/image/feature/rss-manager.png
Normal file
|
After Width: | Height: | Size: 52 KiB |
BIN
docs/image/feature/rule-select.png
Normal file
|
After Width: | Height: | Size: 506 KiB |
BIN
docs/image/feature/search-panel.png
Normal file
|
After Width: | Height: | Size: 29 KiB |
BIN
docs/image/feature/search-provider.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
docs/image/feature/settings.png
Normal file
|
After Width: | Height: | Size: 38 KiB |