Commit graph

13 commits

Author SHA1 Message Date
jlightner
3e21acfe2b fix: unmonitored items incorrectly set to status=monitored; autofocus channel URL input
All checks were successful
CI / test (push) Successful in 19s
- 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
2026-04-04 16:38:29 +00:00
jlightner
0f42a4b269 feat: Add Generic platform, per-platform NFO toggle, and default view s…
- "src/db/schema/platform-settings.ts"
- "drizzle/0018_platform_settings_nfo_view.sql"
- "src/types/index.ts"
- "src/db/repositories/platform-settings-repository.ts"
- "src/server/routes/platform-settings.ts"
- "src/frontend/src/components/PlatformSettingsForm.tsx"
- "src/frontend/src/pages/Settings.tsx"
- "src/__tests__/platform-settings-api.test.ts"

GSD-Task: S04/T01
2026-04-04 09:56:53 +00:00
jlightner
e0b6424932 chore: Added nullable contentRating columns to channels and content_ite…
- "src/db/schema/channels.ts"
- "src/db/schema/content.ts"
- "src/types/index.ts"
- "src/db/repositories/system-config-repository.ts"
- "src/db/repositories/content-repository.ts"
- "src/__tests__/scheduler.test.ts"
- "drizzle/0017_wild_havok.sql"

GSD-Task: S05/T01
2026-04-04 06:08:16 +00:00
jlightner
6aa7e21b90 feat: Added media_servers table, MediaServer type, and CRUD repository…
- "src/db/schema/media-servers.ts"
- "src/db/repositories/media-server-repository.ts"
- "src/types/index.ts"
- "drizzle/0016_right_galactus.sql"

GSD-Task: S04/T01
2026-04-04 05:50:33 +00:00
jlightner
8d133024a5 feat: Add includeKeywords and excludeKeywords nullable text columns to…
- "src/db/schema/channels.ts"
- "src/types/index.ts"
- "src/db/repositories/channel-repository.ts"
- "drizzle/0015_perfect_lethal_legion.sql"
- "src/__tests__/sources.test.ts"

GSD-Task: S03/T01
2026-04-04 05:35:13 +00:00
jlightner
e6371ba196 chore: Add outputTemplate column to format_profiles schema and app.outp…
- "src/db/schema/content.ts"
- "src/types/index.ts"
- "src/db/repositories/system-config-repository.ts"
- "src/db/repositories/format-profile-repository.ts"
- "drizzle/0014_adorable_miek.sql"

GSD-Task: S02/T01
2026-04-04 05:20:18 +00:00
jlightner
373a2ee649 test: Created POST /api/v1/download/url/preview endpoint that resolves…
- "src/server/routes/adhoc-download.ts"
- "src/__tests__/adhoc-download-api.test.ts"
- "src/server/index.ts"
- "drizzle/0013_flat_lady_deathstrike.sql"

GSD-Task: S01/T02
2026-04-04 05:07:24 +00:00
jlightner
8150b1f6cf chore: Made content_items.channelId nullable via SQLite table recreatio…
- "src/db/schema/content.ts"
- "src/types/index.ts"
- "src/db/repositories/content-repository.ts"
- "src/services/queue.ts"
- "drizzle/0012_adhoc_nullable_channel.sql"
- "drizzle/meta/_journal.json"

GSD-Task: S01/T01
2026-04-04 05:03:40 +00:00
jlightner
aa09bc089c feat: Generic platform + YouTube enhancements (chapters, SponsorBlock, thumbnails)
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
2026-04-04 02:45:02 +00:00
jlightner
6a5402ce8d feat: Added banner_url, description, subscriber_count columns with Driz…
- "src/db/schema/channels.ts"
- "drizzle/0010_special_ghost_rider.sql"
- "src/types/index.ts"
- "src/sources/youtube.ts"
- "src/sources/soundcloud.ts"
- "src/db/repositories/channel-repository.ts"
- "src/server/routes/channel.ts"
- "src/__tests__/sources.test.ts"

GSD-Task: S01/T01
2026-04-03 07:23:39 +00:00
John Lightner
dbe163bdbb chore(M007/S01): auto-commit after research-slice 2026-03-24 23:04:09 -05:00
John Lightner
6715c9b6fe test(S02/T01): Added default_monitoring_mode column to platform_setti…
- drizzle/0008_add_default_monitoring_mode.sql
- src/db/schema/platform-settings.ts
- src/db/repositories/platform-settings-repository.ts
- src/types/index.ts
- src/server/routes/platform-settings.ts
- src/frontend/src/components/PlatformSettingsForm.tsx
- src/frontend/src/api/hooks/usePlatformSettings.ts
- src/__tests__/platform-settings-api.test.ts
2026-03-24 20:27:41 -05:00
John Lightner
4606dce553 feat: Tubearr — full project state through M006/S01
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)
2026-03-24 20:20:10 -05:00