Attachment Location Manager
Set attachment location per note or folder: global, folder and file settings resolve by nearest match, each with its own per-extension exceptions; supports variables, auto-rename and re-arranging existing links. - This plugin has not been manually reviewed by Obsidian staff.
The above warnings are based on limited information and might not always be accurate.
Data
| ID | attachment-location-manager |
| Author | lishuai1993 |
| Minimum Obsidian Version | 1.8.7 |
| Official Release Date | 2026-10-03 |
| Last update | 2026-10-08 |
Last Refresh
Obsidian Stats last refreshed the data behind this page on Oct 27, 2026.
| Community plugin snapshot | Oct 26, 2026 |
| Repository clone | last successful checkout Oct 12, 2026 |
| Release acquisition | release metadata checked Oct 12, 2026; latest main.js acquired |
Quick Links
Changes
| Date | Changed Property | Old Value | New Value |
|---|---|---|---|
| 2026-10-03 | Plugin Added | ||
| 2026-10-27 | Plugin Removed | ||
| 2026-10-27 | Plugin Re-Added |
Repository Data
| License | MIT in package.json MIT in LICENSE file |
| Package Manager | pnpm |
| Uses Typescript | Yes |
| Installed Bundlers | esbuild |
| Installed Testing Frameworks | None found |
| Has Test Files | No |
Latest Release main.js Size | 165 KB |
| Detected ES Version | ES2018 |
| Probably Minified | No |
| main.js API Findings | 12 disclosures |
| Uses BRAT beta releases | No |
| Dependencies | ts-md5 |
| Dev Dependencies | @eslint/js, @types/node, commit-and-tag-version, cross-env, esbuild, eslint, eslint-config-prettier, eslint-plugin-import-x, eslint-plugin-prettier, eslint-plugin-unused-imports, obsidian, prettier, tslib, typescript, typescript-eslint |
main.js API Findings
These findings come directly from Glass Lint's JavaScript and Obsidian rule catalogs applied to the latest release main.js. The confidence column is Glass Lint's definite/possible match certainty.
| Disclosure | Rule Descriptions |
|---|---|
| Full Vault Access | Enumerates vault files |
| Lifecycle Events | Registers Obsidian lifecycle events |
| Markdown Processing | Uses markdown link helpers |
| Metadata Access | Reads Obsidian metadata cache, Traverses metadata cache maps |
| Network Access | Constructs or references URLs |
| Obsidian Config Access | References .obsidian configuration paths |
| Plugin Storage Access | Reads plugin data, Writes plugin data |
| User Interface Access | Registers commands, Registers plugin settings UI, Uses Obsidian modal UI, Uses Obsidian notices |
| Vault Access | Accesses Obsidian vault APIs, Registers vault events |
| Vault Read | Reads vault files, Uses adapter-level vault filesystem APIs |
| Vault Write | Moves or copies vault files, Uses adapter-level vault filesystem APIs |
| Workspace Access | Registers Obsidian workspace events |
| Finding | Type | Confidence | Evidence |
|---|---|---|---|
| Constructs or references URLs | Info | Definite | string_contains of "https://" |
| Registers Obsidian lifecycle events | Info | Definite | member_call of "obsidian.Plugin" (6) |
| Uses markdown link helpers | Info | Definite | member_call of "obsidian" (11), member_call of "app.fileManager.generateMarkdownLink" (5) |
| Reads Obsidian metadata cache | Info | Definite | member_read of "app.metadataCache" (6), member_read of "app.metadataCache.resolvedLinks" (6) |
| Traverses metadata cache maps | Info | Definite | member_call of "Object.entries" (2), member_call of "Object.keys" |
| Reads plugin data | Info | Definite | member_call of "obsidian.Plugin" |
| Writes plugin data | Info | Definite | member_call of "obsidian.Plugin" |
| Registers commands | Info | Definite | member_call of "obsidian.Plugin" (5) |
| Uses Obsidian modal UI | Info | Definite | class of "obsidian.Modal" (2) |
| Uses Obsidian notices | Info | Definite | constructor of "obsidian.Notice" (24) |
| Registers plugin settings UI | Info | Definite | class of "obsidian.PluginSettingTab", member_call of "obsidian.Plugin" |
| Accesses Obsidian vault APIs | Info | Definite | member_read of "app.vault" (49) |
| Uses adapter-level vault filesystem APIs | Info | Definite | member_call of "app.vault.adapter.process", member_call of "app.vault.adapter.exists" (7), member_call of "app.vault.adapter.rename", member_call of "app.vault.adapter.mkdir" (3) |
| References .obsidian configuration paths | Info | Definite | member_read of "app.vault.configDir" (2) |
| Enumerates vault files | Info | Definite | member_call of "app.vault.getAbstractFileByPath" (14), member_call of "app.vault.getFiles" |
| Registers vault events | Info | Definite | member_call of "app.vault.on" (4) |
| Moves or copies vault files | Info | Definite | member_call of "app.fileManager.renameFile", member_call of "app.vault.rename" (2), member_call of "app.vault.copy" |
| Reads vault files | Info | Definite | member_call of "app.vault.cachedRead" |
| Registers Obsidian workspace events | Info | Definite | member_call of "app.workspace.on" (2) |
The above data may not be accurate and contain errors. For more information refer to the page about data collection.
Lines of Code
The plugin has a total of 4462 lines of code. The following chart shows the lines of code split by programming language.
Downloads
The following chart shows the total number of downloads of the plugin over time. The second chart shows the delta of downloads per week, which is the number of new downloads per week. New version releases are marked with vertical lines.
Version History
| Version | Release Date | Note |
|---|---|---|
| 1.0.0 | 2026-10-04 | None |
| 1.0.1 | 2026-10-04 | None |
| 1.0.2 | 2026-10-10 | None |