jlightner
daf892edad
feat: Add pause/resume buttons, paused status badge, and Paused filter…
...
- "src/frontend/src/pages/Queue.tsx"
- "src/frontend/src/api/hooks/useQueue.ts"
- "src/frontend/src/components/StatusBadge.tsx"
GSD-Task: S07/T04
2026-04-04 07:13:13 +00:00
jlightner
69ec5841e7
test: Added getContentCountsByType repository function and GET /api/v1/…
...
- "src/db/repositories/content-repository.ts"
- "src/server/routes/content.ts"
- "src/types/api.ts"
- "src/__tests__/content-api.test.ts"
GSD-Task: S07/T01
2026-04-04 06:44:04 +00:00
jlightner
a11c4c56c5
test: Added missing-scan API (trigger + status) and content requeue end…
...
- "src/server/routes/system.ts"
- "src/server/index.ts"
- "src/index.ts"
- "src/__tests__/missing-scan-api.test.ts"
GSD-Task: S06/T02
2026-04-04 06:35:58 +00:00
jlightner
61da729fa4
feat: Add MissingFileScanner service with cursor-based batched filesyst…
...
- "src/services/missing-file-scanner.ts"
- "src/__tests__/missing-file-scanner.test.ts"
- "src/types/index.ts"
- "src/db/schema/content.ts"
GSD-Task: S06/T01
2026-04-04 06:31:11 +00:00
jlightner
b4d730d42f
feat: Wired NFO generation into DownloadService with feature flag check…
...
- "src/services/download.ts"
- "src/__tests__/download.test.ts"
GSD-Task: S05/T03
2026-04-04 06:16:03 +00:00
jlightner
7f6f3dcccf
feat: Built NfoGenerator service producing Kodi-compatible NFO XML with…
...
- "src/services/nfo-generator.ts"
- "src/__tests__/nfo-generator.test.ts"
- "src/types/index.ts"
- "src/db/repositories/channel-repository.ts"
- "src/__tests__/sources.test.ts"
GSD-Task: S05/T02
2026-04-04 06:12:35 +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
9ef0323480
test: Built media server CRUD routes, connection test/sections endpoint…
...
- "src/server/routes/media-server.ts"
- "src/__tests__/media-server-api.test.ts"
- "src/index.ts"
- "src/server/index.ts"
GSD-Task: S04/T03
2026-04-04 05:57:39 +00:00
jlightner
73c232a845
test: Built stateless MediaServerService with scan triggering, connecti…
...
- "src/services/media-server.ts"
- "src/__tests__/media-server.test.ts"
GSD-Task: S04/T02
2026-04-04 05:53:30 +00:00
jlightner
05045828d8
feat: Wire keyword filter into scheduler scan flow — exclude/include pa…
...
- "src/services/scheduler.ts"
- "src/__tests__/scheduler.test.ts"
- "src/db/repositories/channel-repository.ts"
GSD-Task: S03/T03
2026-04-04 05:41:55 +00:00
jlightner
cc031a78a9
test: Implement matchesKeywordFilter engine with pipe-separated pattern…
...
- "src/services/keyword-filter.ts"
- "src/__tests__/keyword-filter.test.ts"
GSD-Task: S03/T02
2026-04-04 05:38:37 +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
71175198bd
test: Add resolveTemplate and validateTemplate methods to FileOrganizer…
...
- "src/services/file-organizer.ts"
- "src/__tests__/file-organizer.test.ts"
GSD-Task: S02/T02
2026-04-04 05:23:22 +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
22077e0eb1
feat: Add POST /api/v1/download/url/confirm endpoint for ad-hoc downloa…
...
- "src/server/routes/adhoc-download.ts"
- "src/services/download.ts"
- "src/services/queue.ts"
- "src/__tests__/adhoc-download-api.test.ts"
GSD-Task: S01/T03
2026-04-04 05:12:11 +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
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
b1e90ea8d6
refactor: consolidate format utils, extract route helpers, remove dead code
...
- Consolidate 5 duplicate format functions (formatDuration, formatRelativeTime,
formatFileSize, formatSubscriberCount) into shared utils/format.ts
- Extract parseIdParam() route helper, replacing 22 copy-paste blocks across 9 route files
- Remove dead exports: useScanStatus, useChannelContent (non-paginated),
getContentItemsByStatus, deleteQueueItem, deletePlaylistsByChannelId
- Fix as-any type assertion in system.ts (queueService already typed on FastifyInstance)
- Net: -411 lines, 23 files touched
2026-04-03 22:55:43 +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
jlightner
76e6b9727e
fix: update download test expectations for format fallback chains
...
Tests expected old single-format strings, updated to match the new
fallback chain format: preferred → next best → any.
2026-04-03 02:35:37 +00:00
John Lightner
0541a5f1d1
WIP: in-progress WebSocket download progress & event bus
...
Snapshot of active development by separate Claude instance.
Includes: event bus, progress parser, WebSocket route,
download progress bar component, SSE contexts/hooks.
Not tested or validated — commit for migration to dev01.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-25 11:34:26 -05:00
John Lightner
e6faa05d1c
test(S03/T01): Add getCollectibleItems repository query and collect/col…
...
- src/db/repositories/content-repository.ts
- src/server/routes/collect.ts
- src/server/index.ts
- src/__tests__/collect-api.test.ts
2026-03-24 20:48:20 -05:00
John Lightner
0ef34b1d21
feat(S02/T02): Wired monitoringMode through channel creation (route sch…
...
- src/server/routes/channel.ts
- src/frontend/src/api/hooks/useChannels.ts
- src/frontend/src/components/AddChannelModal.tsx
- src/__tests__/channel.test.ts
2026-03-24 20:32:13 -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