Skip to content

Releases: RafaelGB/Obsidian-ZettelFlow

3.1.0

Choose a tag to compare

@github-actions github-actions released this 31 Aug 09:06
d6850f8

Shinny new things

  • Ask your graph — a deterministic query surface over the meaning and structure of your slip-box, never AI. Compose predicates — state:permanent, relation:contradicts, degree>=5, orphan, unsourced, older-than:30, about: — with AND/OR to answer questions Dataview can't, like "orphaned permanents older than 30 days that contradict X". Results open on click and useful queries can be saved. Command: Ask your graph.
  • Cultivate — guided thinking sessions — pick your highest-leverage idea and walk real moves on it: connect an unlinked neighbour, challenge it with its contradiction, capture a question, advance its lifecycle state, add a source. Each move is a one-click operation on the note and the session refines live. Choose your own recipe of moves, and a streak plus a cultivation queue show your momentum. Offline; AI never required.
  • A 3D knowledge graph — an interactive force-directed view of your whole slip-box: nodes sized by connectivity and coloured by cluster, links coloured by relation type, hub glow and cluster hulls, question/source node kinds, proximity labels. Search-to-focus, state and relation filters, pin-focus, shortest path, click-a-link, time-lapse, zoom controls, fullscreen and a right-click menu — plus a discovery lens for orphans, dead-ends and contradictions.
  • Four surfaces, one front door — the former dozen sidebar views are now four surfaces with modes behind a segmented control: Home, Health, Discovery and Graph, all reachable from a single ribbon button and opening as normal main-area tabs.
  • Community hub — a tabbed home for the gallery: Browse (systems, steps, actions with search plus type and difficulty filters), Contribute (share your canvas as a system, suggest an idea, report a bug with your environment pre-filled, or open Discussions — all through GitHub), Learn (curated links to the guides and manifesto) and Installed. Fully static and GitHub-backed: there is no server to run.
  • Quick capture — one command opens a single title prompt and writes a fleeting note to your Inbox. The fastest path from a thought to a note, with no canvas and no wizard; Home nudges you to develop it later.
  • Reasoning paths — a new Trace reasoning paths command surfaces the argument chains leaving a note (supportsexpandsexampleimplements), every note clickable. Read-only and offline.
  • Guided condition builder — compose a canvas IF condition without writing code: pick a field, an operator and a value, and a validated expression appears in the editor.
  • Property hooks grow up — each hook can now be enabled or disabled without deleting it, given a human description, gated by an optional run condition (event.newValue === 'done'), and tested against the active note with a dry run that previews the changes it would make without writing anything.
  • Knowledge scope — keep config, templates and tooling out of the thinking system with a simple list of excluded path prefixes. Excluded notes never enter the index, so they drop out of the graph, health, discovery, Cultivate and Home all at once.
  • Home becomes opinionated — a greeting and "thinking for N days", a one-click 3D-graph teaser, a growth nudge for fleeting notes, a Cultivate on-ramp, and a prioritised "what to do next" recommendation list.
  • Everywhere and for everyone — the core loop is touch-friendly on mobile and the 3D graph degrades to a navigable list (hubs first, one tap per note) instead of a blank. Surfaces are keyboard-operable: the segmented tabs are a proper ARIA tablist with arrow-key navigation, note names activate with Enter/Space, focus is always visible, and prefers-reduced-motion quiets the graph animation.

Improvements

  • Community browse polish — difficulty badges on gallery systems plus a difficulty filter, linkable authors, an i18n'd gallery, and richer per-difficulty systems (including a ZettelFlow tour that teaches the whole workflow while you build a real note).
  • On-creation actions re-run after indexing — knowledge actions that need the index now run once the note is indexed, so their frontmatter lands even on a cold start. On by default, bounded by a silent timeout and guarded against re-entrancy.
  • AI guardrails — caps, explicit consent, prompt-injection hardening and endpoint safety; AI never fires automatically inside automations.
  • Performance — revision-guarded recomputes, allocation-free adjacency with O(1) edge lookups, de-quadratic hot paths, a lite mode for the graph, and the hidden graph is paused instead of rendering off-screen.
  • Views open as main-area tabs and the ribbon is a single all-in-one button.
  • Canvas integration is defensive — the canvas patcher degrades gracefully when Obsidian's internals change instead of breaking the plugin.

No longer broken

  • Adding a property hook wiped the hooks panel until settings were reopened — the shared search component was calling Obsidian's createEl on the document, which throws and unmounts the React tree. Fixed, with per-row error boundaries so a single bad row can never blank the rest.
  • The 3D graph could render blank, had low link contrast, and its controls were invisible — fixed, and 3D is now the default Graph mode.
  • The canvas empty-state panel stole pointer events from the canvas underneath.
  • Excluded paths did not cover ZettelFlow's own system folders, and the resurface ("forgotten") list read every vault file directly — both now honour knowledge scope, so system notes are never indexed or cultivated.
  • Community difficulty tags overlapped the card text, the type and difficulty filters stacked awkwardly, and the Contribute cards clipped their description — the section is now simply Community, with a header badge row and one tidy filter bar.
  • Share your system silently did nothing without an active canvas; it now explains what to do.
  • Surface views registered before components, and a view type had to be a construction-safe literal — both fixed so a single failing component can't take the plugin down.

Under the hood

  • The release workflow verifies that the pushed tag equals manifest.version and publishes curated notes from RELEASE_NOTES.md.
  • A real safety net: behavioural tests over the vault write paths plus a ratcheting coverage floor enforced in CI. 1054 tests, all blocking.
  • Design by subtraction — the community backend, twelve retired view classes, eleven duplicate commands, the dead community-flow concept and orphaned i18n/CSS were all removed rather than left to rot.
  • A Knowledge State projection surface and a pure KnowledgeContext seam now separate the model from the views, with guards keeping the pure layer Obsidian-free.
  • eslint-plugin-obsidianmd and oxlint stay clean and blocking; en/es locale parity is enforced by a test.

3.0.1

Choose a tag to compare

@github-actions github-actions released this 14 Aug 18:05

Shinny new things

  • Knowledge OS — ZettelFlow is now a knowledge-transformation engine. Six dedicated views ship out of the box: Home (your daily front door, opens on startup), Discoveries (resurface notes you haven't touched in a while), Timeline, Dashboard, Projects, and Journal.
  • Systems Gallery — seven ready-to-use one-click workflow systems: Zettelkasten v2, Academic Research, PARA v2, GTD, Reading, Writing, and Software Architecture KB. Install any system in one click from the community browser.
  • Run any canvas as a flow — a new Run now button lets you execute any installed system or custom canvas immediately after install, without leaving the browser.
  • Action selector redesign — the step builder now shows all 31 actions organised into five category tabs (✏️ Manipulation · 🔗 Relations · 🧠 Knowledge · 🔍 Research · 🤖 AI), with a compact chip grid, hover tooltips, and a Smart suggest row that recommends complementary actions based on what you've already added.
  • Condition editor — click any canvas edge to open a guided CodeMirror editor pre-loaded with the current condition, live validation feedback, a vocabulary table, and insert-ready examples. Writes if: <expr> back to the edge on save.
  • Empty-state guide — when a canvas has no ZettelFlow steps yet, an inline guide panel appears with a direct CTA to browse community systems.
  • First-run onboarding — a welcome flow greets new users and routes them to the Systems browser. A Browse systems command is available from the command palette at any time.
  • Trigger condition guided help — vocabulary reference and sanity-check validation for condition expressions, surfaced directly in the editor.
  • New AI actions — Challenge Idea, Synthesize, and Suggest Connections join the AI category.
  • Remove-relation action — removes a relation edge from a note, with a confirmation guard to prevent accidental deletes.

Improvements

  • Script action editor is now editable — replaced the read-only Markdown preview with a live CodeMirror editor; a collapsible variables panel lists every object available in the script scope (note, content, app, zf, context).
  • Error surfaces — mid-flow WarningError and FatalError conditions now surface as Obsidian Notices instead of falling silently into the log. Fatal notices include an actionable hint to open the canvas.
  • Progress indicator — the note-builder wizard shows a X steps completed counter that increments monotonically as you advance (no total shown — flows have dynamic branches).
  • Unified ribbon menu — a single front-door ribbon button gives access to all views.
  • Community browser leads with Systems — the Systems tab is now the default, replacing the old flow list as the entry point.
  • Flow hot-reload — editing a .canvas file on disk automatically reloads the in-memory flow; no manual refresh needed.
  • Managed steps in canonical frontmatter format — newly created managed steps are stored in Obsidian frontmatter, the canonical and future-proof format.
  • Performance — the vault-wide resurface (Discoveries) build is now memoised; large vaults see a significant speed-up.
  • i18n — all 31 action purpose strings are now routed through the i18n layer; a global locale-parity guard ensures en.ts and es.ts stay in sync.
  • Get Started → Systems — the settings Get Started section now routes directly to the Systems browser.

No longer broken

  • Canvas startup options were not re-applied to canvases already open when the plugin loaded — now fixed.
  • Relation actions were treating any property value as a wikilink edge; only actual [[wikilink]] values are treated as relations now.
  • Cognitive-action Notices were firing during headless pattern runs, producing spurious popups — suppressed.
  • window.setTimeout/clearTimeout used instead of bare setTimeout for compatibility with Obsidian popout windows.
  • The logger no longer silences log.error calls when debug mode is off — errors are always emitted.
  • Plugin components (ZComponent) are now properly unloaded when the plugin unloads.
  • YAML-unsafe frontmatter values in gallery systems are now quoted, preventing parse errors on install.
  • Action selector search bar no longer overlaps the category tab buttons.

Under the hood

  • All innerHTML assignments replaced with the Obsidian DOM API (createEl/empty()) — zero remaining.
  • Inline el.style.* assignments replaced with CSS class-based styling throughout.
  • Sentence case applied consistently across all UI strings.
  • Full TDD harness: Jest + Obsidian mock, 836 tests, all blocking on CI.
  • eslint-plugin-obsidianmd clean (0 violations), oxlint clean — both blocking on every PR.
  • builtin-modules replaced with Node.js native node:module — one fewer dependency.

3.0.0

Choose a tag to compare

@github-actions github-actions released this 14 Aug 12:08

Shinny new things

  • Knowledge OS — ZettelFlow is now a knowledge-transformation engine. Six dedicated views ship out of the box: Home (your daily front door, opens on startup), Discoveries (resurface notes you haven't touched in a while), Timeline, Dashboard, Projects, and Journal.
  • Systems Gallery — seven ready-to-use one-click workflow systems: Zettelkasten v2, Academic Research, PARA v2, GTD, Reading, Writing, and Software Architecture KB. Install any system in one click from the community browser.
  • Run any canvas as a flow — a new Run now button lets you execute any installed system or custom canvas immediately after install, without leaving the browser.
  • Action selector redesign — the step builder now shows all 31 actions organised into five category tabs (✏️ Manipulation · 🔗 Relations · 🧠 Knowledge · 🔍 Research · 🤖 AI), with a compact chip grid, hover tooltips, and a Smart suggest row that recommends complementary actions based on what you've already added.
  • Condition editor — click any canvas edge to open a guided CodeMirror editor pre-loaded with the current condition, live validation feedback, a vocabulary table, and insert-ready examples. Writes if: <expr> back to the edge on save.
  • Empty-state guide — when a canvas has no ZettelFlow steps yet, an inline guide panel appears with a direct CTA to browse community systems.
  • First-run onboarding — a welcome flow greets new users and routes them to the Systems browser. A Browse systems command is available from the command palette at any time.
  • Trigger condition guided help — vocabulary reference and sanity-check validation for condition expressions, surfaced directly in the editor (#235).
  • New AI actions — Challenge Idea, Synthesize, and Suggest Connections join the AI category.
  • Remove-relation action — removes a relation edge from a note, with a confirmation guard to prevent accidental deletes.

Improvements

  • Script action editor is now editable — replaced the read-only Markdown preview with a live CodeMirror editor; a collapsible variables panel lists every object available in the script scope (note, content, app, zf, context).
  • Error surfaces — mid-flow WarningError and FatalError conditions now surface as Obsidian Notices instead of falling silently into the log. Fatal notices include an actionable hint to open the canvas.
  • Progress indicator — the note-builder wizard shows a X steps completed counter that increments monotonically as you advance (no total shown — flows have dynamic branches).
  • Unified ribbon menu — a single front-door ribbon button gives access to all views.
  • Community browser leads with Systems — the Systems tab is now the default, replacing the old flow list as the entry point.
  • Flow hot-reload — editing a .canvas file on disk automatically reloads the in-memory flow; no manual refresh needed (#226).
  • Managed steps in canonical frontmatter format — newly created managed steps are stored in Obsidian frontmatter, the canonical and future-proof format (#238).
  • Performance — the vault-wide resurface (Discoveries) build is now memoised; large vaults see a significant speed-up (#246).
  • i18n — all 31 action purpose strings are now routed through the i18n layer; a global locale-parity guard ensures en.ts and es.ts stay in sync.
  • Get Started → Systems — the settings Get Started section now routes directly to the Systems browser.

No longer broken

  • Canvas startup options were not re-applied to canvases already open when the plugin loaded — now fixed (#234).
  • Relation actions were treating any property value as a wikilink edge; only actual [[wikilink]] values are treated as relations now (#181).
  • Cognitive-action Notices were firing during headless pattern runs, producing spurious popups — suppressed (#201).
  • window.setTimeout/clearTimeout used instead of bare setTimeout for compatibility with Obsidian popout windows (#104).
  • The logger no longer silences log.error calls when debug mode is off — errors are always emitted (#100).
  • Plugin components (ZComponent) are now properly unloaded when the plugin unloads (#101).
  • YAML-unsafe frontmatter values in gallery systems are now quoted, preventing parse errors on install (#217).

Under the hood

  • All innerHTML assignments replaced with the Obsidian DOM API (createEl/empty()) — zero remaining (#99).
  • Inline el.style.* assignments replaced with CSS class-based styling throughout (#103).
  • Sentence case applied consistently across all UI strings (#108).
  • Full TDD harness: Jest + Obsidian mock, 836 tests, all blocking on CI.
  • eslint-plugin-obsidianmd clean (0 violations), oxlint clean — both blocking on every PR.
  • version-bump.mjs and versions.json restored (#97).

2.11.0

Choose a tag to compare

@github-actions github-actions released this 17 Aug 17:39

Shinny new things

  • You can copy paste actions between steps
  • Types editor to add new properties for hooks
  • shortcut to manage the properties (rename, change property type or delete them)
image

No longer broken

  • Refactor of hooks state management. It was duplicated and sometimes does not work correctly.
  • Multiple hooks triggers could affect the performance. It was fixed
  • Errors inside hooks will be managed correctly now.
  • Search scroll (any search) now follow the parent scrolls

2.10.0

Choose a tag to compare

@github-actions github-actions released this 01 May 15:17

Shiny new things

  • Deprecation of example/ folder
    The old example/ folder has been deprecated. All sample flows now live in the new Flows Catalog, accessible directly from the canvas. You can browse, select, and paste any catalog flow into your workspace in one click.

  • Flows Catalog & Canvas Integration

    • Browse a curated list of ready-to-use flows in the sidebar.
    • Click Copy to inject the flow into the clipboard and use the new canvas button to paste it into your ZettelFlow canvas
  • Unified Markdown Download
    Flows that include .md files now expose a Download All button in the flow preview. Clicking it bundles all Markdown assets into your configured template folder path.

Step 1

Screenshot 2025-05-01 at 17 24 11

Step 2

Screenshot 2025-05-01 at 17 24 32

Step 3

Screenshot 2025-05-01 at 17 24 53

2.9.1

Choose a tag to compare

@github-actions github-actions released this 19 Apr 18:59

Improvements

  • Hooks (doc here)
    • new response option for hooks: remove property. Array of string with the keys of the properties to remove
    • new response option for hooks: trigger flow. Inform the name of your canvas flow and will be triggered once all the hooks finished.
Screen.Recording.2025-04-19.at.21.10.22.mov

No Longer Broken

  • The was a bug with new nodes when you try to open them with the plugin icon instead of right click menu. It works correctly now.

2.9.0

Choose a tag to compare

@github-actions github-actions released this 14 Apr 17:49

Shinny new things

  • JS autocompletion works just fine now with the code editor.
  • Input/output for property hooks improved. You can check our documentation here: Documentation for hooks.
  • Editor performance improved using all the CodeMirror features available.

No Longer Broken

  • Visual Bugs with autocompletion for the code editor.

2.8.0

Choose a tag to compare

@github-actions github-actions released this 30 Mar 16:22

Shinny new things

🚀 Property Hooks: Customize Your Notes with Advanced Logic

With Property Hooks, you can create your own hooks that trigger exclusively for the currently opened note. Define specific behaviors that execute automatically when a property value changes. This allows you to add custom logic and enhance your workflow dynamically and efficiently.

image

💡 Use case: Imagine you want to trigger a specific action whenever you change the status of a task within your note. With Property Hooks, you can automate that action effortlessly.

✨ Perfect for: Automating processes, triggering custom actions, and extending your workflows with smart logic, all within your notes.

example.hook.mov

Visual Improvements

DnD was totally refactored. Now it's stable and easy to use. It was applied to:

  • Action order management
  • select options order management
  • new feature of hooks. It can be ordered too!

2.7.0

Choose a tag to compare

@github-actions github-actions released this 01 Feb 13:15

📚 Community Templates & Resources

We’re introducing templates, action repositories, steps, and markdown snippets for the community. It’s all about making your workflows smoother and easier with plug-and-play configurations.
image

🌟 Massive Visual Upgrades

Get ready for a fresh new look! We’ve revamped the interface with stunning visuals and polished details to make ZettelFlow even more enjoyable to use.

🎨 Brand-New Icon

A new icon to match the vibe of ZettelFlow – modern, clean, and slick!

💻 Enhanced JS Code Editing

The code editor just got an upgrade! A sleek new interface for JavaScript editing is here to level up your experience.
image

🐛 Bug Fixes Galore

We’ve squashed loads of bugs to make ZettelFlow more stable than ever.

⚡ Performance Boosts

With React 19 under the hood, the app is now faster and snappier. It’s all about giving you a smoother, more efficient experience.

💡 And So Much More!

This update is packed with improvements, many inspired by your feedback. Your input has been invaluable in shaping this release.

2.6.1

Choose a tag to compare

@github-actions github-actions released this 14 Oct 07:27

hotfix: zoneKey was not saved correctly