Releases: frozenabe/neoloopy-obsidian
0.1.7
Added
- Mobile (iOS) support. The plugin is no longer desktop-only
(isDesktopOnly: false), and the canvas is finally usable by touch.
Double-tapping empty space creates a node right where you tapped with an
inline name field; the canvas pins itself to the band above the soft keyboard
and pans the new node into view so it never hides behind the keyboard (a port
of the companion app's keyboard avoidance). Tapping away with an empty name
discards the node, a named node is kept, and Escape cancels. - Subsystem marker on the canvas. A node linked to a child model now shows a
small stacked-sheets glyph in its top-left corner, matching the companion app,
so drill-in nodes are recognizable at a glance.
Fixed
- The canvas no longer collapses to zero height when the iOS soft keyboard
opens — the bug that made a freshly created node appear for a moment and then
vanish. - The inline rename field is now compact and centered on its node instead of
being stretched to full width by Obsidian's mobile input styling.
Full Changelog: 0.1.6...0.1.7
0.1.6
Added
- Variable notes are named after the variable. A variable's note file is now
named after its label (Birth_Rate.md) instead of an opaque id, so the vault
reads like the diagram. The stable internalvar_…id stays in the note's
frontmatter as the link target, so renaming a variable never breaks a causal
link. Two variables with the same name are suffixed-2/-3. - Two-way variable name/file sync. Renaming a variable on the canvas renames
its note file; renaming the note file in Obsidian's explorer updates the
variable's label (spaces map to underscores). This is the variable-level
complement of the title/folder sync added in 0.1.5.
Fixed
- Renaming a model on the canvas no longer overwrites its title with the
lowercase-hyphen folder name. The folder move fired the same external-rename
handler 0.1.5 introduced, which then re-titled the model to its slug.
Full Changelog: 0.1.5...0.1.6
0.1.5
Added
- Two-way title/folder sync. Renaming a model's folder in Obsidian's file
explorer now updates the model's title to match (the folder is canonical for
an external rename) — the complement of the existing canvas rename, which
re-slugs and moves the folder to follow the title. Renaming a model now stays
in sync no matter which side you change.
Fixed
- The model picker now tracks the vault live. Deleting a model's folder in
Obsidian removes it from the picker dropdown immediately, instead of lingering
until the canvas is refreshed. If the deleted folder was the open model, the
canvas switches to another model (or clears when it was the last one). - Reloading the open model no longer throws if its folder was just deleted out
from under it.
Full Changelog: 0.1.4...0.1.5
0.1.4
Added
- Rename a model's title. A pencil button next to the model picker and a new
"Rename model" command let you change a model's title at any time. - Title prompt on creation. Creating a model now asks for a title up front
instead of silently defaulting to a date-based name.
Changed
- Folder name follows the title. Creating or renaming a model re-slugs and
moves its folder to match the title, suffixing-2/-3on collision. The move
is link-aware (via Obsidian'sFileManager.renameFile), so[[../<dir>/System]]
subsystem anchors and other links into the model are rewritten to the new
location rather than left dangling. - Marked the plugin desktop-only (
isDesktopOnly: true): the canvas is not
yet usable on touch devices.
Full Changelog: 0.1.3...0.1.4
0.1.3
0.1.3
Fixed
- Mobile (iOS/iPadOS): the causal-loop canvas is now editable by touch. The canvas rendered on Obsidian mobile but you couldn't author on it — creating a node (double-tap empty space) and renaming a node (double-tap a node) relied on a desktop double-click plus the keyboard, neither of which iOS WebKit delivers for touch. The canvas now detects a two-tap gesture from the touch stream, and a freshly-created node's name field opens with the soft keyboard raised.
Desktop behavior is unchanged (mouse still uses the native double-click). Verified on the WebKit engine Obsidian mobile runs on.
Full Changelog: 0.1.2...0.1.3
0.1.2
What's Changed
- ci: add CodeQL static analysis workflow by @frozenabe in #1
- release: 0.1.2 by @frozenabe in #2
New Contributors
- @frozenabe made their first contribution in #1
Full Changelog: 0.1.1...0.1.2
0.1.1
Full Changelog: 0.1.0...0.1.1
0.1.0
First public release of neoloopy for Obsidian — local-first causal-loop diagrams (CLDs) for systems thinking, built right in your vault.
Highlights
- Build CLDs on an interactive canvas — variables are Markdown notes, links are causal arrows with polarity. Pan/zoom, drag nodes, draw and edit links, flip polarity, mark delays / indirect (dashed) / nonlinear links, and auto-tidy the layout.
- Automatic feedback-loop detection — finds the reinforcing (R) and balancing (B) loops in your model and labels them (R1/B1…) right on the diagram.
- Local-first and fully offline — every model is a folder of Markdown notes plus a small
model.json. No account, no server, no network calls; nothing leaves your machine. The files are the source of truth and stay Obsidian-readable. - Live edits — change a note (or let an agent edit the vault) and the canvas updates instantly, flashing what changed.
- System insight & navigation — a side panel surfaces detected loops and structure, opens each model's System note, and lists parent systems for subsystem links.
- Export to JSON, Markdown, or Mermaid.
Install (manual, during review)
Copy main.js, manifest.json, and styles.css into <vault>/.obsidian/plugins/neoloopy/, then enable under Settings → Community plugins.
Requires Obsidian v1.7.2+. Works on desktop and mobile.
Release assets carry signed GitHub build-provenance attestations (SLSA v1) — verify any asset was built from this source by this workflow:
gh attestation verify main.js --repo frozenabe/neoloopy-obsidian