Skip to content

Portable Windows data dir + auto-clear resolved failure notifications - #402

Merged
thcp merged 2 commits into
mainfrom
fix/portable-data-and-notification-autoclear
Aug 21, 2026
Merged

Portable Windows data dir + auto-clear resolved failure notifications#402
thcp merged 2 commits into
mainfrom
fix/portable-data-and-notification-autoclear

Conversation

@thcp

@thcp thcp commented Aug 20, 2026

Copy link
Copy Markdown
Collaborator

Summary

Two independent fixes, landed together per request:

  • Portable Windows zip cache data ([Bug]: Several issues with my portable package #399): FFmpeg, Demucs models, config, and logs now write to data/ next to StemDeck.exe when a portable.txt marker is present (shipped by default in every future zip), instead of %LOCALAPPDATA%. Jobs/library data deliberately stays on its current default (~/Documents/StemDeck) and remains relocatable via the existing Settings -> StemData location picker ([Feature]: Choose where extracted stems are stored #354) -- an earlier, wider attempt at this fix also relocated jobs/library into the exe-adjacent folder and was reverted, since that folder is exactly what a user deletes/overwrites thinking it's disposable.
  • Auto-clear resolved failure notifications (Notification persistence: only release notifications should survive a reboot #401): import/playback/export/update failure notifications now clear once whatever they were about is actually resolved (re-import supersedes the failed track, track trashed/purged, playback or export retried successfully, update check succeeds again), while still surviving a plain app reload in the meantime -- [Bug]: A track that fails to load tells the user nothing #359's original persistence guarantee is untouched, this only adds a resolution trigger on top.

See the two commits for full per-fix detail.

Test plan

  • cargo test --bin stemdeck (desktop/src-tauri) -- 33/33 pass
  • cargo clippy --bin stemdeck -- no new warnings
  • node tests/js/*.test.mjs (all four, including new notifications-resolve.test.mjs) -- 130/130 checks pass
  • node --check on every edited JS file

Thales added 2 commits August 21, 2026 00:54
FFmpeg, Demucs models, config, and logs currently write to %LOCALAPPDATA%
regardless of where the zip is extracted, not to the data/ folder the README
already describes. A portable.txt marker, shipped in every future Windows zip,
switches local_data_dir() to the exe-relative data/ folder that packaging
already stages.

Jobs/library data is deliberately left untouched: it stays on its existing
default (~/Documents/StemDeck) and remains relocatable via the existing
Settings -> StemData location picker (#354). Defaulting it into the
exe-adjacent folder was the design in an earlier attempt at this fix, and was
reverted -- that folder is exactly what a user deletes or overwrites thinking
it's disposable.

Fixes #399
Failure notifications (import/playback/export/update) persist until manually
dismissed, deliberately, from #359 -- so a crash or reload doesn't lose the
evidence needed for a bug report. This adds a second, independent trigger on
top without touching that: a notification also clears once the thing it was
about is actually resolved, while still surviving a plain reload in the
meantime.

- import: clears when a re-import supersedes the failed track, or when the
  track is trashed/purged
- playback: clears when the same track plays back successfully
- export: clears when the same track exports successfully (jobId is
  snapshotted at click time, not read live at settle time, since settling can
  take up to EXPORT_BUSY_MAX_MS and the user may have switched tracks by
  then); log export clears separately, keyed by kind since it has no jobId
- update: clears on the next successful check, which in practice only happens
  on the next app start -- checkForUpdate() has no periodic re-check today

Fixes #401
@thcp
thcp merged commit 306f2ce into main Aug 21, 2026
10 checks passed
@thcp
thcp deleted the fix/portable-data-and-notification-autoclear branch August 21, 2026 00:00
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant