Releases: danrfletcher/obsidian-not-submodules
Release list
1.1.2
Fixes an Obsidian community-plugin review failure introduced in 1.1.1: reverts setDestructive() (requires Obsidian 1.13.0+) back to setWarning() (available since 0.11.0), restoring compatibility with the declared minAppVersion: 1.7.2. No visual or behavioral change — both methods apply the same button styling.
1.1.1
Patch: address Obsidian community-plugin review findings
Follow-up to 1.1.0, fixing what surfaced from Obsidian's automated community-plugin review (health: Excellent, no critical findings):
- Replaced the blocking native
confirm()on Delete with a proper in-app confirmation modal. setWarning()→setDestructive()(deprecated API).- Removed an unnecessary type assertion and replaced a poorly-typed
promisify(execFile)with a directly-typed wrapper. - Added a GitHub Actions workflow that generates signed build-provenance attestations for release assets going forward.
See #10 for the full detail on what was fixed and what was deliberately left alone (and why).
1.1.0
Filesystem-scan rebuild
Replaces the old naming-convention (<repo>-git-repo folders) and frontmatter-based registration with a filesystem scan, and replaces the static .gitignore wildcard with a self-maintaining pre-commit hook.
New
- Automatic discovery — click Refresh and the plugin scans your vault's filesystem for nested git repos, classifying each as an original clone, a git worktree, or a real git submodule. No naming convention, no frontmatter, no manual registration.
- Self-maintaining git hook — "Install git hook" installs a pre-commit hook that keeps a managed
.gitignoreblock correct automatically on every commit. - Multi-location repos — a repo cloned in more than one place (or a clone plus its worktrees) shows as one entry with Originals and Worktrees sections, not separate unrelated repos. Renaming a folder or changing a remote's URL spelling is recognised as the same location, not a deletion.
- Per-location actions — Clone / Push / Pull / New / Delete / Remove, a branch dropdown (remote-only branches fetch then switch), Stash/Pop Stash for a dirty working tree, and one-click worktree repair.
- Read-only Submodules section — real
.gitmodules-declared submodules are listed separately, informational only. - Migration — existing installs are carried forward automatically: an on-update popup (or a persistent settings banner if dismissed) rescans the vault, installs the hook, and removes the old static
.gitignoreline, all in one step. Nothing already registered is lost.
Upgrading
If you're on an older version, reopen Settings after updating and follow the migration popup (or banner) — this brings your existing registered repos across to the new model and installs the hook, in one action.
Full technical writeup and testing detail: see the merged PRs for this release (#2 #4 #5 #6 #7 #8 #9).
1.0.3
Fix: the Settings repo list didn't live-update. Registering a repo via the command palette/ribbon icon while Settings was open, or hand-editing a folder note's git_repos frontmatter, wasn't reflected until Settings was refreshed or Obsidian reloaded. The list now updates automatically on relevant vault/frontmatter changes.
1.0.2
Avoid referencing the Buffer type name in gitUtils.ts error handling, which the community-review type-checker failed to resolve and reported as a cascading no-unsafe-* warning across several files.
1.0.1
Address community directory review feedback: bump minAppVersion to 1.7.2, replace direct style assignments with setCssStyles(), use Setting(...).setHeading() for section headings, drop unused builtin-modules dependency, replace require() with ES imports, replace any-typed catches with unknown + a shared error helper, use app.vault.configDir instead of a hardcoded .obsidian path, and misc lint fixes.
v1.0.0
Initial release of Not Submodules.
Replaces git submodules with plain nested git repos, ignored via .gitignore and tracked via folder-note YAML frontmatter.
Features:
- One-click vault git init
- One-click .gitignore setup for nested repos
- Nested repo list with per-repo Clone / Pull / Push
- Bulk Clone all missing / Pull all / Push all
- Register-a-repo UI with path autocomplete
- Command palette + ribbon icon registration
- Click a repo name to reveal it (or its parent folder) in the file navigator
To install manually: download main.js, manifest.json and styles.css from this release into /.obsidian/plugins/not-submodules/, then enable the plugin in Community plugins.
1.0.0
Initial release of Not Submodules.
Replaces git submodules with plain nested git repos, ignored via .gitignore and tracked via folder-note YAML frontmatter.
Features:
- One-click vault git init
- One-click .gitignore setup for nested repos
- Nested repo list with per-repo Clone / Pull / Push
- Bulk Clone all missing / Pull all / Push all
- Register-a-repo UI with path autocomplete
- Command palette + ribbon icon registration
- Click a repo name to reveal it (or its parent folder) in the file navigator
To install manually: download main.js, manifest.json and styles.css from this release into /.obsidian/plugins/not-submodules/, then enable the plugin in Community plugins.