Security, perf, a11y & CI hardening from end-to-end audit #3
Loading…
Reference in a new issue
No description provided.
Delete branch "audit-fixes"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Remediation from the end-to-end audit. 26 commits, one per fix, each validated
with
typecheck+lint(+testwhere applicable). Branch builds onelectron-port.P0 — release / ship-blockers
publish.owner+win.publisherNameset tokleb(was the literalPLACEHOLDER_OWNER, which pointed the auto-updater at an unclaimed GitHub org).ci.yml+ a gatingcheckjob inrelease.yml(typecheck/lint/test);both fail if
PLACEHOLDER_OWNERreappears.bun-versionpinned.<meta>tag (header-onlyCSP never applied to
file://). Dev/HMR untouched.P1 — security / correctness / perf
assertPublicHttpUrl+beforeRedirectre-validation,maxRedirects:5)on cover / Qobuz / Amazon / Tidal media + segment fetches. Localhost custom-API
path unaffected.
OpenFolderdirectory-only viarealpath;ReadTextFile/ReadImageAsBase64realpath-resolve before the extension gate.
delete/move/deleteEmptyFolders) confined to thelast in-process scan's results and symlink-rejected.
settings.jsonwritten0600;Amazon gateway filenames use the full sanitizer.
base-cache: drop per-writeCOUNT(*), memoize prepared statements, quarantineP2 / P3 — renderer / UI / a11y / UX / observability
manualChunksfix (framework chunk 306→214 kB), stableTrackListkeys,QueueItemReact.memo+ stableonRemove.:focus-visible; progress-toast / sidebar (aria-current) / spectrogram(
role=img) a11y; SettingsPage header aligned to the page-header pattern.crashReporter(no uploads).Deferred (need GUI/runtime verification; too risky to land blind)
Push-based IPC migration, download state-machine rewrite, list virtualization,
React Compiler, the 5-file type-contract collapse, FFT worker pooling, partial-file
.partrestructure, double-ISRC-rescan removal, cache request-coalescing /negative-caching / schema-versioning.
Verify before release
Packaged
script-src 'self'meta CSP needs a real GUI smoke test (file://origin) — could not be verified without a desktop runtime.
buildExpectedFilename and generateFilename interpolated the user/settings- controlled format template verbatim while sanitizing only the substituted values, so a custom format like '../../{title}' escaped the output directory via path.join(). Strip separators from the composed name; built-in presets are unaffected.id.includes('react') matched 'lucide-react' first, pulling the icon set into the stable framework chunk. Match @radix-ui/lucide-react before the react test so an icon-set bump no longer busts the framework chunk.With key={index}, sorting/filtering the track list re-associated row state and cover <img> to whatever track moved into each slot, forcing full subtree re-renders and cover reloads. Key by isrc/spotify_id/coverKey instead.kReview review
Verdict: no findings
No findings to address in the reviewed diff.
Overall risk is low; no concrete correctness or security regressions were verifiable from the provided diff and context.
Excluded as generated or vendored (not reviewed):
build/entitlements.mac.plist,bun.lock.Reviewed by kReview at
2f91e1a92a. This comment is conservative and based only on the PR diff, metadata, and supplied repository context.Est. cost ~$0.51 total (97.7k in / 1.3k out) · this run ~$0.25 (49.0k in / 557 out) / gpt-5.5.
Pull request closed