- scheduler.ts and back-catalog-import.ts now set status='ignored' when
monitored=false (channel monitoring mode excludes the item)
- Migration 0019 fixes existing data: UPDATE status='ignored' WHERE monitored=0
- Modal.tsx focuses first [autofocus] element instead of the container div
- Rewrote scheduler enrichNewItems to fetch metadata per-video directly
instead of redundantly re-running Phase 1 discovery. Background enrichment
now calls yt-dlp --dump-json per video ID, updating publishedAt and
duration on DB records. Emits scan:complete when enrichment finishes
so clients know to refetch.
- Added missing --> statement-breakpoint markers to migration 0011.
Without them, Drizzle concatenated the three ALTER TABLE statements
and SQLite only executed the first one, leaving embed_thumbnail and
sponsor_block_remove columns missing from format_profiles.
Migration 0011 already adds these columns to format_profiles. The duplicate
ALTER TABLE statements in 0013 cause SQLITE_ERROR on production DB where 0011
was already applied.
Generic Platform:
- New 'generic' platform type — catch-all for any URL yt-dlp supports
- GenericSource resolves channel metadata from any URL via yt-dlp extractors
- Content type auto-detection (video/audio/livestream) from yt-dlp metadata
- Works with Vimeo, Twitch, Bandcamp, Dailymotion, and 1000+ other sites
- Registered in both scheduler registry and channel route registry
- Frontend: indigo badge, URL detection fallback, AddChannelModal support
YouTube Enhancements:
- embedChapters: --embed-chapters flag on FormatProfile
- embedThumbnail: --embed-thumbnail flag on FormatProfile
- sponsorBlockRemove: --sponsorblock-remove with configurable categories
(sponsor, selfpromo, interaction, intro, outro, preview, music_offtopic, filler)
- Migration 0011: adds columns to format_profiles table
- All three configurable per format profile via API and (future) Settings UI
Migrated git root from W:/programming/Projects/ to W:/programming/Projects/Tubearr/.
Previous history preserved in Tubearr-full-backup.bundle at parent directory.
Completed milestones: M001 through M005
Active: M006/S02 (Add Channel UX)