feat(roadmap): surface stale checkboxes + collection output-path setting
Command preview + incognito toggle were already wired end-to-end in the DownloadBar (Show command button, Incognito checkbox) — flipped the two stale ROADMAP.md checkboxes with notes; verified live in the preview. Output-path setting (PINCHFLAT): new Settings.collectionOutputTemplate — a raw yt-dlp -o template overriding the default Channel/Playlist/NNN-Title layout for Library downloads (empty = default). collectionOutputTemplate() takes an optional custom template (joined under outDir, left for yt-dlp to expand); download.ts passes the setting; zod schema validates it as a safe relative template; Settings -> Filenames field. Tests in buildArgs + settingsSchema; live-verified the field renders. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
@@ -87,6 +87,10 @@ export const SETTINGS_FIELD_SCHEMAS: { [K in keyof Settings]: z.ZodType<Settings
|
||||
videoFolder: trimmedWhere((v) => v === '' || isSafeOutputDir(v)),
|
||||
audioFolder: trimmedWhere((v) => v === '' || isSafeOutputDir(v)),
|
||||
filenameTemplate: trimmedWhere(isSafeFilenameTemplate),
|
||||
// Collection folder layout (PINCHFLAT): empty = built-in default; otherwise a
|
||||
// safe relative yt-dlp template (isSafeFilenameTemplate allows '/'-separated
|
||||
// path segments and rejects absolute paths + '..' traversal).
|
||||
collectionOutputTemplate: trimmedWhere((v) => v === '' || isSafeFilenameTemplate(v)),
|
||||
defaultVideoQuality: z.enum(VIDEO_QUALITY_OPTIONS),
|
||||
defaultAudioQuality: z.enum(AUDIO_QUALITY_OPTIONS),
|
||||
rateLimit: trimmedWhere((v) => RATE_LIMIT_RE.test(v)),
|
||||
|
||||
Reference in New Issue
Block a user