Releases: ckelsoe/obsidian-linked-attachments
Releases · ckelsoe/obsidian-linked-attachments
Release list
3.2.4
3.2.3
Changed
- Internal only: cleared the remaining Obsidian marketplace source-scan warnings by typing the local-storage code's Node API usage and dropping the bundled YAML dependency in favor of Obsidian's built-in YAML handling. No behavior change; existing pointer notes and local folders are unaffected.
3.2.2
Added
- The settings tab now has a footer showing the installed version with links to the GitHub repository and the issue tracker.
3.2.1
Changed
- Pointer-note frontmatter is now read and written with Obsidian's built-in YAML handling instead of a copy bundled into the plugin, which makes the download smaller. Existing pointer notes are unchanged and keep working.
3.2.0
Added
- You can now rename a machine's row in the per-machine local folder list, so a computer that was renamed or re-imaged keeps its folder instead of needing a fresh entry.
Changed
- When a local copy is an online-only cloud placeholder (OneDrive Files On-Demand and similar) and an S3 copy exists, opening now uses the S3 copy instead of waiting on the sync client to download the placeholder on access.
- Auto-offload now tells you at startup if it is turned on while this machine has no local folder set, so you are not left wondering why new files are not being offloaded.
3.1.0
Added
- Pointer notes now show their storage links as a collapsible "Storage Links" callout, so the managed block reads as a tidy, foldable section instead of a raw list.
- Settings has a new "Backfill existing pointers" section with a button for each backend your storage mode uses, so you can copy missing files into existing pointers (for example after switching to paired mode) without running a command. Each button is safe to re-run and reports how many copies were added, skipped, or failed.
- The local folder is now set per machine, so a vault used on more than one computer opens correctly on each. In settings, click Add this machine and Browse to the offload folder on that machine. If you sync your settings across machines, every machine adds its own row and reads its own folder, so two machines with different drive letters both resolve correctly. A banner shows what the folder resolves to on the machine you are looking at.
Changed
- The message shown when a local-only file is not on disk now says the copy has not synced to this machine yet, or is online-only, instead of implying the file is lost.
- An existing single local-folder setting is migrated automatically to an entry for the current machine; no pointer notes change and nothing is lost.
3.0.0
Added
- Store offloaded files in a local folder, not just S3. A new Storage mode setting offers "S3 only" (unchanged), "Local only" (move files to a folder outside the vault, such as a synced OneDrive, Dropbox, or NAS path), and "Local and S3" (write both, read from the fast local copy, and keep S3 as an off-machine backup). Set the local folder in settings; environment variables like %OneDriveCommercial% and $HOME are expanded so one setting resolves the right folder on each machine. Offloaded files mirror their vault path under the folder.
- Paired offload is atomic: in "Local and S3" mode both copies are written and verified before the local original is trashed, and if either copy fails the other is rolled back and your original is kept. You are never left with a pointer whose storage does not actually hold the file.
- Open and restore now prefer the local copy when both exist and fall back to S3 if the local copy is missing, so a file always opens as long as any of its backends still has it.
- Pointer notes now have working action links for each storage location a file lives in: Open and Reveal in the file explorer for a local copy, and Open (downloads the object to a temp file and opens it) plus Copy reference for an S3 copy. A paired file shows both rows, and opening tells you which copy it used so it is clear whether the file opened locally or from S3.
- Check backend integrity: a read-only command that confirms every pointer's storage still holds its file and reports any that are missing.
- Add a local mirror / Add an S3 mirror: commands that upgrade your existing pointers in place, copying each file to the other backend and verifying the copy, so you can move from S3 only to paired (or the reverse) without re-offloading by hand.
Changed
- This is now a desktop-only version. Writing to a local folder uses desktop file access that the mobile app does not provide, so the plugin no longer loads on Obsidian mobile.
- Existing S3 pointer notes keep working unchanged; they are read as a single S3 backend and upgraded to the new format only when you next write them.
2.2.1
Fixed
- The offload progress list now scrolls when a batch has many files. Offloading dozens of files at once (for example from a whole-vault scan) ran the status list off the bottom of the dialog with no way to reach the rest; it now caps its height and scrolls.
2.2.0
Added
- Turn each file-type rule on or off with a checkbox, without deleting it. A rule that is off stays in the list (dimmed) and offloads nothing, so you can stage a type before enabling it or pause one while testing. Off applies to both automatic offload and the vault scan.
- View the activity log in the app: a "View log" button in settings (Diagnostics) and a "View the activity log" command open the recent log in a panel with one-click copy, so you can include it in a bug report without hunting for the file on disk.
Fixed
- The round-trip rehearsal no longer fails at "Verified byte-for-byte" with "size 0" on a healthy bucket. On desktop, the size pre-check read 0 because the platform's HEAD request returns no content length; the rehearsal now treats an unknown size as inconclusive and relies on the download-and-rehash step, which is the real byte-for-byte proof. A size that is actually present and wrong, or a wrong server checksum, still fails honestly.
- Offload verification no longer forces an unnecessary re-download when the bucket reports a matching checksum but no size on HEAD. The checksum match is accepted as proof; size only blocks verification when it is present and wrong. This makes large-file offloads faster and is the same root cause as the rehearsal fix.
- The offload preview (batch offload and the vault scan) now appears instantly for any number of files. It previously read and hashed every selected file before drawing the list, so a whole-vault scan of hundreds of megabytes looked frozen. The preview now shows names and sizes only; hashing happens during the offload itself, with live progress.
- A failed rehearsal is now written to the activity log (it was only shown on screen before), so a failure leaves a record you can copy and report.
2.1.0
Added
- Per-file-type offload rules and a whole-vault scan. A new "File type rules" settings section lets you list each file type and say how it offloads: "always" (offloaded at any size, for example every epub) or "offload when larger than" its own size in MB (for example PDFs over 5 MB but not small ones). Each type carries its own threshold, and you add or remove types freely. A type that is not listed is never offloaded. The "Scan the whole vault now" button applies these rules to every file already in your vault and offloads the matches in one batch, with the same preview of every file and the total before anything moves, and the same per-file verify-before-trash. The command palette has a matching "Scan vault and offload by file type" action.
Changed
- Automatic offload now reads the same per-type rules, so a file caught automatically when added is exactly a file the vault scan would catch, and the other way round. The old single list of types plus one global size threshold is replaced by the per-type rules. Your existing settings migrate automatically on upgrade: each type you had listed becomes an "offload when larger than" rule carrying your old threshold, so nothing you already offloaded changes. Switch any type to "always" when you want it offloaded regardless of size.