1376c2dee8
Audit-pass over CODE-AUDIT.md (~48 items closed this pass; all verified — typecheck + 234 tests + eslint + prettier green). Correctness / bugs: - B3: match the release checksum to the asset's filename line (no wrong-hash verify) - B4: newline-safe metadata probe (one --print with a unit-separator delimiter) - B5 / L88: guard the meta event against canceled items; progress no longer promotes a queued item outside pump() - B7: cookie-login promise always resolves (handles destroy-without-close) - L146: trim parser rejects >2 colon-group times; M36: Library selection counts only actionable rows - L11 / L50 / L156 / L57 / L159 / L15 / L3: live queue count, empty-cookie message, schedule picker min, dead-code/comment cleanup Type safety: - Enable noUncheckedIndexedAccess + noFallthroughCasesInSwitch (15 real edge cases fixed) Resilience / Windows / metadata: - R5: settings write failure handled (no unhandled IPC rejection; reconciles to truth) - W1 / W5 / W6: min window size, seeded folder picker, parented sign-in window; L147 dead macOS branches removed - CL1: shared stdout markers; package/builder metadata (license, homepage, repository, copyright, tsbuildinfo glob) Copy / docs / tests: - M37 / SR9 dev-jargon cleanup in hints; M8 / M25 / M26 / L66 / L80 / L81 reconciled - New unit tests for L35 (isValidMediaItem) and L36 (compareVersions) This commit also checkpoints the previously-uncommitted feat/tray-background-clipboard work it builds on: background running + auto-download, library clipboard detection, tray, binary management & library scale, credential encryption at rest, the shared jsonStore and ui/ primitives, and the eslint/prettier tooling. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
72 lines
2.7 KiB
YAML
72 lines
2.7 KiB
YAML
appId: com.aerofetch.app
|
|
productName: AeroFetch
|
|
copyright: Copyright © 2026 AeroFetch
|
|
|
|
# Lets a browser/another app hand AeroFetch a link via aerofetch://download?url=<encoded>
|
|
# (src/main/deeplink.ts) — the closest Windows analog to Android's share-to-app intent.
|
|
# The NSIS installer registers this at install time; main/index.ts's
|
|
# app.setAsDefaultProtocolClient call additionally covers the portable build and dev.
|
|
protocols:
|
|
- name: AeroFetch
|
|
schemes:
|
|
- aerofetch
|
|
|
|
directories:
|
|
buildResources: build
|
|
output: dist
|
|
|
|
# Generate a <installer>.exe.sha256 next to every built .exe (H8). The updater
|
|
# hard-requires this checksum asset or it refuses to install the update.
|
|
afterAllArtifactBuild: ./scripts/generate-checksums.cjs
|
|
|
|
files:
|
|
- '!**/.vscode/*'
|
|
- '!src/*'
|
|
- '!electron.vite.config.{js,ts,mjs,cjs}'
|
|
- '!{.eslintignore,.eslintrc.cjs,.eslintrc.js,.prettierignore,.prettierrc.yaml,dev-app-update.yml,CHANGELOG.md,README.md}'
|
|
- '!{.env,.env.*,.npmrc,pnpm-lock.yaml,package-lock.json}'
|
|
- '!{tsconfig.json,tsconfig.node.json,tsconfig.web.json}'
|
|
- '!*.tsbuildinfo'
|
|
|
|
# yt-dlp.exe + ffmpeg.exe ship outside the asar archive so they can be spawned
|
|
# directly. They land in <install>/resources/bin, reachable via process.resourcesPath.
|
|
extraResources:
|
|
- from: resources/bin
|
|
to: bin
|
|
filter:
|
|
- '**/*'
|
|
# The app icon, copied so the runtime (system tray) can load it at
|
|
# <resources>/icon.ico — build/ itself isn't bundled into the app.
|
|
- from: build/icon.ico
|
|
to: icon.ico
|
|
|
|
win:
|
|
# Two artifacts:
|
|
# - nsis → regular installer (Start-menu shortcut + uninstaller). Per-user
|
|
# (installs to %LOCALAPPDATA%), so it needs NO admin rights.
|
|
# - portable → single self-contained .exe. No install, no admin; runs from a
|
|
# USB stick / Downloads folder on a locked-down public PC.
|
|
target:
|
|
- nsis
|
|
- portable
|
|
# Never request admin elevation.
|
|
requestedExecutionLevel: asInvoker
|
|
# App icon (audit W14): white download glyph on the teal brand square with a
|
|
# top-lit gradient. Generated from build/icon.svg as a multi-size .ico
|
|
# (256/128/64/48/32/16). After editing the SVG, regenerate with:
|
|
# magick -background none build/icon.svg -define icon:auto-resize=256,128,64,48,32,16 build/icon.ico
|
|
icon: build/icon.ico
|
|
|
|
portable:
|
|
artifactName: ${productName}-${version}-portable.${ext}
|
|
# Fixed extraction dir name so repeated launches reuse it instead of re-extracting.
|
|
unpackDirName: AeroFetch
|
|
requestExecutionLevel: user
|
|
|
|
nsis:
|
|
oneClick: false
|
|
perMachine: false
|
|
allowToChangeInstallationDirectory: true
|
|
deleteAppDataOnUninstall: false
|
|
# Flip perMachine to true for an all-users install to Program Files (requires admin).
|