feat(audit): Batch 23 — settings key renames with migration (CC1) + config.ts (CC11)
CC1: customCommandEnabled→enableCustomCommands, downloadArchive→ useDownloadArchive, clipboardWatch→watchClipboard, sidebarCollapsed→ isSidebarCollapsed, hardwareAcceleration→useHardwareAcceleration, videoDir/audioDir→videoFolder/audioFolder (+ chooseDir/clearDir store actions → chooseFolder/clearFolder). Rename map in settingsMigration.ts (pure, unit-tested incl. pre-rename backup fixture), applied as an idempotent on-disk shim at store open and on backup import so old settings.json and old backups both keep working. CC11: update host/owner/repo + release API moved to src/main/config.ts. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
+17
-17
@@ -451,7 +451,7 @@ export interface StartDownloadOptions {
|
||||
/**
|
||||
* Per-download custom-command override: raw extra yt-dlp flags appended to
|
||||
* the generated argv (see CommandTemplate). Omit to fall back to the
|
||||
* persisted settings default (customCommandEnabled + defaultTemplateId);
|
||||
* persisted settings default (enableCustomCommands + defaultTemplateId);
|
||||
* pass an empty string to explicitly run with no extra args for just this
|
||||
* download even when the settings default is enabled.
|
||||
*/
|
||||
@@ -555,9 +555,9 @@ export interface PersistedQueueItem {
|
||||
/** Persisted user settings (electron-store). */
|
||||
export interface Settings {
|
||||
/** where video downloads are saved; empty string = the default Documents\Video folder */
|
||||
videoDir: string
|
||||
videoFolder: string
|
||||
/** where audio downloads are saved; empty string = the default Documents\Audio folder */
|
||||
audioDir: string
|
||||
audioFolder: string
|
||||
defaultKind: MediaKind
|
||||
defaultVideoQuality: string
|
||||
defaultAudioQuality: string
|
||||
@@ -570,7 +570,7 @@ export interface Settings {
|
||||
/** brand accent preset (buttons, links, selected nav item) */
|
||||
accentColor: AccentColor
|
||||
/** auto-detect video links from the clipboard on window focus */
|
||||
clipboardWatch: boolean
|
||||
watchClipboard: boolean
|
||||
/** default post-processing / format options for new downloads */
|
||||
downloadOptions: DownloadOptions
|
||||
/** yt-dlp --proxy value, e.g. 'socks5://127.0.0.1:1080'. Empty disables it. */
|
||||
@@ -599,7 +599,7 @@ export interface Settings {
|
||||
/** sanitize output filenames to a portable ASCII-only subset (--restrict-filenames) */
|
||||
restrictFilenames: boolean
|
||||
/** record completed downloads in a yt-dlp --download-archive file to skip repeats */
|
||||
downloadArchive: boolean
|
||||
useDownloadArchive: boolean
|
||||
/** keep the managed yt-dlp.exe auto-updated in the background on launch */
|
||||
autoUpdateYtdlp: boolean
|
||||
/** channel the auto-updater (and the manual "Update yt-dlp" button) updates to */
|
||||
@@ -607,8 +607,8 @@ export interface Settings {
|
||||
/** epoch ms of the last automatic yt-dlp update check; 0 = never run */
|
||||
ytdlpLastUpdateCheck: number
|
||||
/** apply a named custom-command template's extra args to every new download */
|
||||
customCommandEnabled: boolean
|
||||
/** id of the CommandTemplate applied when customCommandEnabled is on; null = none picked yet */
|
||||
enableCustomCommands: boolean
|
||||
/** id of the CommandTemplate applied when enableCustomCommands is on; null = none picked yet */
|
||||
defaultTemplateId: string | null
|
||||
/** show a native OS notification when a download finishes or fails */
|
||||
notifyOnComplete: boolean
|
||||
@@ -623,7 +623,7 @@ export interface Settings {
|
||||
/** launch AeroFetch automatically when the user signs in to Windows */
|
||||
launchAtStartup: boolean
|
||||
/** whether the navigation sidebar is collapsed to icon-only mode */
|
||||
sidebarCollapsed: boolean
|
||||
isSidebarCollapsed: boolean
|
||||
/**
|
||||
* Opt in to GPU compositing (W15; takes effect on next launch). Off by
|
||||
* default: software rendering is the safe choice for this app's target
|
||||
@@ -631,7 +631,7 @@ export interface Settings {
|
||||
* case) Chromium's GPU compositor paints the whole window blank. Users on
|
||||
* modern GPUs can turn this on for smoother high-DPI/large-window rendering.
|
||||
*/
|
||||
hardwareAcceleration: boolean
|
||||
useHardwareAcceleration: boolean
|
||||
/**
|
||||
* Optional Gitea access token for the in-app updater. Empty = anonymous (works
|
||||
* only where the release repo allows anonymous access). When the release repo
|
||||
@@ -652,8 +652,8 @@ export interface Settings {
|
||||
export const DEFAULT_SETTINGS: Settings = {
|
||||
// Both blank by default → downloads land in Documents\Video / Documents\Audio
|
||||
// (see getDefaultMediaDir). A non-empty value is an explicit per-kind override.
|
||||
videoDir: '',
|
||||
audioDir: '',
|
||||
videoFolder: '',
|
||||
audioFolder: '',
|
||||
defaultKind: 'video',
|
||||
defaultVideoQuality: 'Best available',
|
||||
defaultAudioQuality: 'Best',
|
||||
@@ -666,7 +666,7 @@ export const DEFAULT_SETTINGS: Settings = {
|
||||
// Off on first launch (SR4): reading the clipboard on every window focus is a
|
||||
// privacy surprise for a brand-new user. It's a one-toggle opt-in in Settings
|
||||
// (the onboarding tip points there). Existing installs keep their saved value.
|
||||
clipboardWatch: false,
|
||||
watchClipboard: false,
|
||||
downloadOptions: DEFAULT_DOWNLOAD_OPTIONS,
|
||||
proxy: '',
|
||||
rateLimit: '',
|
||||
@@ -677,7 +677,7 @@ export const DEFAULT_SETTINGS: Settings = {
|
||||
youtubePlayerClient: '',
|
||||
youtubePoToken: '',
|
||||
restrictFilenames: false,
|
||||
downloadArchive: false,
|
||||
useDownloadArchive: false,
|
||||
// yt-dlp is self-managed: a writable copy under userData, auto-updated on the
|
||||
// configured channel so a stale binary can't silently cause YouTube 403s.
|
||||
autoUpdateYtdlp: true,
|
||||
@@ -686,7 +686,7 @@ export const DEFAULT_SETTINGS: Settings = {
|
||||
// can switch to nightly in Settings → Software.
|
||||
ytdlpChannel: 'stable',
|
||||
ytdlpLastUpdateCheck: 0,
|
||||
customCommandEnabled: false,
|
||||
enableCustomCommands: false,
|
||||
defaultTemplateId: null,
|
||||
notifyOnComplete: true,
|
||||
// Default off so adding a watched channel doesn't silently fill the user's
|
||||
@@ -696,8 +696,8 @@ export const DEFAULT_SETTINGS: Settings = {
|
||||
hasCompletedOnboarding: false,
|
||||
minimizeToTray: false,
|
||||
launchAtStartup: false,
|
||||
sidebarCollapsed: false,
|
||||
hardwareAcceleration: false,
|
||||
isSidebarCollapsed: false,
|
||||
useHardwareAcceleration: false,
|
||||
updateToken: ''
|
||||
}
|
||||
|
||||
@@ -903,7 +903,7 @@ export interface ScheduledSyncStatus {
|
||||
// --- Built-in yt-dlp terminal (Phase N) -------------------------------------
|
||||
// A power-user console that runs the bundled yt-dlp with raw, user-typed args
|
||||
// and streams its output. The binary is fixed to yt-dlp (never arbitrary exes),
|
||||
// and the feature is gated on the same customCommandEnabled consent flag as the
|
||||
// and the feature is gated on the same enableCustomCommands consent flag as the
|
||||
// per-download extra args (extra args can run code via --exec — audit F2).
|
||||
|
||||
/** Live output pushed on IpcChannels.terminalOutput while a terminal command runs. */
|
||||
|
||||
Reference in New Issue
Block a user