You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
Repository navigation
Default download.path is empty, breaking the Download command (writes ".mp3" to vault root, 2nd download fails) #183
DEFAULT_SETTINGS.download.path is "" (src/constants.ts), which makes the regular Download episode command resolve every episode to the path .mp3 at the vault root.
Why it's broken
With an empty download path template, DownloadPathTemplateEngine("") returns "", so createEpisodeFile writes to `${""}.${ext}` → .mp3 (a dotfile at the vault root):
Obsidian does not index dotfiles at the vault root: app.vault.getAbstractFileByPath(".mp3") returns null even though the file exists on disk. (Verified in the real app.)
The first download of any episode silently creates a junk .mp3 at the vault root.
The second download of any episode throws "File already exists" from app.vault.createBinary(".mp3", …), so the user sees Failed to create file for downloaded episode "…" and can never download a second episode until they manually delete the hidden .mp3.
Any non-empty template that lacks a per-episode token (e.g. Downloads → Downloads.mp3) collides in the same way.
Suggested fix
Give download.path a sensible per-episode default that includes {{title}} (and probably {{podcast}}), e.g. PodNotes/{{podcast}}/{{title}}, with a settings migration for users still on the empty default.
Consider validating/warning when the configured download path is empty or lacks {{title}}.
This shares a root cause with #107 (a non-unique download path), but affects the Download command rather than transcription. #107 (PR #182) makes transcription immune by resolving audio per-episode via getEpisodeAudioBuffer and no longer consulting download.path; it deliberately does not change the default or touch the Download command, to keep that fix focused and avoid settings-migration blast radius. This issue tracks the remaining Download-command problem.
Note: pre-existing junk .mp3 files already written to users' vaults are intentionally left for manual cleanup rather than auto-deleted.
Re-checked on current master (07b2812, PodNotes 2.20.2) in Obsidian 1.13.7 on desktop Linux, in an isolated test vault.
Steps: kept the default download path and downloaded two episodes of the same podcast.
Result: fixed. The default is now PodNotes/{{podcast}}/{{title}}, and the two episodes land at separate files with no "File already exists" error. An empty template also falls back to the episode title, and the old empty default is migrated.
Activity
fix(download): default per-episode download path and migrate empty de…
fix(devx): re-sync e2e vault seed with DEFAULT_SETTINGS (#191)
fix(playback): persist listened time during playback (#33) (#190)
feat(notes): ship a Bases-friendly default episode note template (#160)
feat(notes): ship a Bases-friendly default episode note template (#160)…
release(version): Release 2.17.0 [skip ci]
github-actions commentedon Jun 22, 2026
🎉 This issue has been resolved in version 2.17.0 🎉
The release is available on GitHub release
Your semantic-release bot 📦🚀
chhoumann commentedon Oct 11, 2026
Re-checked on current master (07b2812, PodNotes 2.20.2) in Obsidian 1.13.7 on desktop Linux, in an isolated test vault.
Steps: kept the default download path and downloaded two episodes of the same podcast.
Result: fixed. The default is now PodNotes/{{podcast}}/{{title}}, and the two episodes land at separate files with no "File already exists" error. An empty template also falls back to the episode title, and the old empty default is migrated.