Commit Graph
29 Commits
Author SHA1 Message Date
bvandeusen b03fd215a0 feat(ui): configured vs unconfigured visual treatment on Credentials cards 2026-03-19 18:33:24 -04:00
bvandeusenandClaude Sonnet 4.6 0f8dbfe5c2 feat(ui): add exclude superseded failures filter toggle to Downloads
Adds a new filter toggle to the Downloads view that allows users to hide
superseded failed downloads. The filter is enabled by default and passes
exclude_superseded=true to the API when active.

Changes:
- Add filterExcludeSuperseded ref initialized to true
- Add filterExcludeSuperseded to watch dependencies
- Include exclude_superseded param in loadDownloads() when true
- Add v-switch toggle UI control below date filters

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:32:41 -04:00
bvandeusen b039f82255 fix(ui): use bg-surface on expanded subscription rows for dark mode compat 2026-03-19 18:32:03 -04:00
bvandeusenandClaude Sonnet 4.6 294ccdc748 feat(ui): consistent empty states and running pulse on Dashboard
- Updated empty state messages to include descriptive icons, main text (body-1), and helper text (caption)
- Active Downloads: shows idle status with check-circle icon
- Recent Activity: shows history icon with context about failures/new downloads
- Sources Needing Attention: shows check-all icon confirming 7-day health check
- Added pulse animation to running downloads with left border animation
- Consistent styling across all empty states with py-8 padding and secondary color icons

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 18:31:03 -04:00
bvandeusen b419ee8b32 feat(ui): number-forward stat cards and split action bar on Dashboard 2026-03-19 18:29:19 -04:00
bvandeusen f132c115c9 fix(ui): use div instead of button for WS status indicator 2026-03-19 18:28:14 -04:00
bvandeusen 34d4482f6d feat(ui): lift nav branding and add WebSocket status indicator 2026-03-19 18:26:46 -04:00
bvandeusen 8b189d72f4 feat(ui): replace palette with slate/navy monitoring dashboard theme 2026-03-19 18:25:19 -04:00
bvandeusenandClaude Sonnet 4.6 a25c332cda docs: add UI improvement pass implementation plan
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 17:51:00 -04:00
bvandeusenandClaude Sonnet 4.6 728a8bb529 docs: fix spec review issues in UI improvement pass spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 17:45:22 -04:00
bvandeusenandClaude Sonnet 4.6 fc79996468 docs: add UI improvement pass design spec
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 08:50:36 -04:00
bvandeusenandClaude Sonnet 4.6 9db27ddaae chore: sane ignore files, update summary, bump base images
- Add .claude/ to .gitignore and untrack settings.local.json
- Create .dockerignore to exclude docs, extension, analysis, scripts,
  node_modules, and other noise from the Docker build context
- Dockerfile: Node 20→22-alpine, Python 3.11→3.13-slim, DEBIAN_FRONTEND
  set, pip upgrade before install
- Track frontend/package-lock.json for reproducible builds
- Update summary.md: date, db.py in project structure, superseded column
  in schema, two new key patterns (12/13), full 2026-03-19 changelog

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-19 08:20:24 -04:00
bvandeusenandClaude Sonnet 4.6 8cd0ce4ecb fix: restore AsyncSession import and fix dead regex patterns in NOT_FOUND_PATTERNS
- Added missing 'from sqlalchemy.ext.asyncio import AsyncSession' import in downloads.py
  This fixes the NameError at module load time that was breaking all download tasks

- Replaced regex patterns with plain-string equivalents in NOT_FOUND_PATTERNS:
  * 'account.*deleted' → 'account deleted' (. and * are literal in substring search)
  * 'profile.*not.*exist' → 'profile does not exist' (same issue)

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 23:43:01 -04:00
bvandeusen 48d10ec21e fix: count only absolute path lines in _count_downloaded_files 2026-03-18 23:39:45 -04:00
bvandeusenandClaude Sonnet 4.6 080a1254c7 fix: wrap AsyncSession in context manager across all API blueprints
Replace all bare `session = AsyncSession(bind=conn)` assignments with
`async with AsyncSession(bind=conn) as session:` in downloads.py,
credentials.py, settings.py, sources.py, and subscriptions.py to
ensure sessions are properly closed on all code paths.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 23:38:58 -04:00
bvandeusenandClaude Sonnet 4.6 dc146f4a16 refactor: extract error patterns to constants, add debug logging, fix rc1 no_new_content
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 23:37:04 -04:00
bvandeusenandClaude Sonnet 4.6 6432210a36 refactor: extract shared DB helpers to tasks/db.py
Extract identical get_async_session() and cleanup_engine() functions
from downloads.py and maintenance.py into a shared db.py module.
This eliminates code duplication and improves maintainability.

db.py imports only from app.config and SQLAlchemy to avoid circular
dependencies with the task modules that import from it.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 23:36:42 -04:00
bvandeusen 4eac527f0f perf: parallelize checkAllSources with Promise.allSettled 2026-03-18 23:36:33 -04:00
bvandeusen 0f2901ef58 feat: mark prior failures as superseded on successful download 2026-03-18 23:32:51 -04:00
bvandeusen 2c95374edc feat: replace _not_superseded_condition subquery with superseded column filter 2026-03-18 23:32:06 -04:00
bvandeusen 7268d06b4f feat: migration to add superseded column with backfill and partial index 2026-03-18 23:31:17 -04:00
bvandeusen f84b20269a feat: add superseded column to Download model 2026-03-18 23:30:35 -04:00
bvandeusen cdee69947d fix: replace get_event_loop with get_running_loop and utcnow consistently 2026-03-18 23:28:00 -04:00
bvandeusen c9ac163a4b fix: capture started_at before clearing in orphaned job reset message 2026-03-18 23:27:23 -04:00
bvandeusen 6036c34680 fix: pass download_id in process_download to prevent retry skip 2026-03-18 23:27:15 -04:00
bvandeusenandClaude Sonnet 4.6 a50677efd0 Add comprehensive review implementation plan
12 tasks covering all spec items: 4 bug fixes, superseded
column migration, error classification refactor, and code
quality cleanup across backend and frontend.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 23:21:09 -04:00
bvandeusenandClaude Sonnet 4.6 0698ee1fa7 Add comprehensive review design spec
Covers four confirmed bugs, superseded-at-write-time refactor,
error classification improvements, and code quality cleanup.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-03-18 23:14:19 -04:00
bvandeusen 055808ea6d polish for failed retry mechanic and consistent sub naming 2026-02-04 15:02:50 -05:00
bvandeusen 2190a9c16b correcting pixiv connection functionality 2026-02-04 12:45:31 -05:00