Skip to main content

MAC Obsidian

PropertyValue
descriptionMAC Obsidian
relatedMAC Docs, MAC Docusaurus, Obsidian, Obsidian, CLI

Overview

MAC Obsidian is the local Obsidian-side companion plugin for this vault.

The current implemented pass is focused on exclusion behavior, not rendering compatibility. It makes Obsidian enforce the same excluded-path list more strictly across practical UI surfaces without renaming files or folders.

Plugin Location

The tracked local plugin bundle lives at:

  • .obsidian/plugins/mac-obsidian/

The current plugin is desktop-only.

Source Of Truth

MAC Obsidian reads exclusions from the native Obsidian setting stored in:

  • .obsidian/app.json

It uses the userIgnoreFilters list as the only source of truth.

What It Does Today

Current first-pass behavior:

  • reads the native Excluded files list on plugin startup
  • installs runtime filters only after Obsidian layout is ready
  • filters excluded paths out of vault file lists and recent-file style arrays
  • filters excluded and unresolved path-like targets out of link-suggestion results
  • hides excluded rows from rendered explorer and suggestion-style DOM surfaces as a fallback

In practice, this keeps directories such as build/ and node_modules/ out of the sidebar, search surfaces, Quick Switcher-style file pickers, and [[ link suggestions while leaving non-excluded unsupported files such as .php and .js available elsewhere in the vault.

For Quick Switcher behavior, this vault also uses:

  • .obsidian/switcher.json
  • showExistingOnly: true

That native setting suppresses nonexistent create-target results that are separate from the excluded-path problem and complements the plugin's exclusion filtering.

Supported Exclusion Semantics

The current implementation supports the patterns already used in this vault:

  • folder-style entries ending in /, such as build/ and node_modules/
  • descendant exclusion under those folders
  • basename-style junk-file entries such as .DS_Store, Thumbs.db, and desktop.ini
  • exact path matches for slash-containing entries when needed

It does not introduce a second rule language or a separate plugin-owned exclusion list.

Restart Requirement

MAC Obsidian reads exclusions on plugin startup.

If the native Excluded files setting changes, restart Obsidian so the plugin reloads the updated filter list.

Non-Mutating Model

MAC Obsidian does not:

  • rename files or folders
  • apply dot prefixes
  • change hidden attributes
  • rewrite vault content
  • mutate repo paths to force exclusion

The plugin is intentionally non-mutating. It provides effective UI-level exclusion for this vault rather than filesystem-level hiding.

It is also intentionally fail-open.

If a UI hook breaks or Obsidian changes its internal DOM, the plugin should stop hiding those rows rather than block vault loading.

Security Notes

The current implementation is intentionally narrow:

  • no network access
  • no external process execution
  • no dynamic code loading
  • no plugin-owned writable settings surface
  • no filesystem renames or destructive path operations

It only reads repo-local Obsidian config and applies in-memory filtering plus DOM-level hiding for excluded paths.

Safety Notes

The current safe-hook model is:

  • do not patch core vault or workspace methods before workspace.onLayoutReady(...)
  • keep runtime wrappers read-only and narrow
  • treat DOM hiding as a fallback, not the primary correctness path
  • prefer hiding less over blocking vault load