Skip to content

Releases: danrfletcher/obsidian-not-submodules

1.1.2

Choose a tag to compare

@danrfletcher danrfletcher released this 24 Sep 09:43
ce18063

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

Choose a tag to compare

@danrfletcher danrfletcher released this 24 Sep 08:54
081b8a9

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

Choose a tag to compare

@danrfletcher danrfletcher released this 24 Sep 08:09
30d564e

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 .gitignore block 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 .gitignore line, 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

Choose a tag to compare

@danrfletcher danrfletcher released this 05 Sep 08:58
5c7149e

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

Choose a tag to compare

@danrfletcher danrfletcher released this 31 Aug 13:44

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

Choose a tag to compare

@danrfletcher danrfletcher released this 31 Aug 13:39

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

Choose a tag to compare

@danrfletcher danrfletcher released this 31 Aug 12:29

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

Choose a tag to compare

@danrfletcher danrfletcher released this 31 Aug 13:22

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.