Dynamic Notes

approvedunreviewed

by deadhedd

Move structured Markdown blocks through your notea.

★ 2 stars↓ 107 downloadsUpdated 20d agoMIT

Dynamic Notes

Dynamic Notes is an Obsidian Community plugin for moving structured Markdown blocks through small, local workflows inside ordinary notes.

Now -> Done
Later -> Now

Markdown is the source of truth. Dynamic Notes keeps no hidden per-note state, has no network dependency, and makes ordinary Markdown changes that remain readable, syncable, and versionable without the plugin.

Installation

Install Dynamic Notes from the Obsidian Community plugins directory:

  1. Open Settings → Community plugins in Obsidian.
  2. Select Browse, search for Dynamic Notes, then select Install.
  3. Enable Dynamic Notes after installation.

For a higher-level explanation of the workflow and design, see Dynamic Notes: A Small Obsidian Workflow Plugin.

Example use cases

  • Project workflows that promote the next scoped task when the current one is complete.
  • Procedures and checklists that reveal one step at a time.
  • Study sequences that move the next topic into focus.
  • Maintenance routines that preserve completed work as a record.
  • Daily notes, where the same workflow can guide the current part of the day.

Features

  • Dynamic Notes: Validate active note checks a note before any change is made.
  • Dynamic Notes: Advance moves the current Now block to Done and promotes the first Later block.
  • Dynamic Notes: Reset flow restores the original queue: completed blocks first, then the current block and the remaining Later blocks.
  • The Advance command works in Reading view and Editing view, and is also available from the left ribbon.
  • Editing-view advances are applied as one editor update and can normally be undone with one ordinary Obsidian undo.
  • The plugin uses documented Obsidian APIs and has no Node.js or Electron runtime dependency, so it is designed for mobile compatibility.

Dynamic Notes intentionally does not add automatic advancement, scheduling, recurrence, settings, telemetry, network access, or workflow state outside the note.

Markdown format

A dynamic note opts in with frontmatter and contains exactly one Now, Later, and Done region in that order:

---
dynamic-notes: 1
---

## Now

<!-- dynamic-notes:now -->

<!-- dynamic-notes:block:morning -->
### Morning
- [ ] Review the day
<!-- /dynamic-notes:block:morning -->

<!-- /dynamic-notes:now -->

## Later

<!-- dynamic-notes:later -->

<!-- dynamic-notes:block:work -->
### Work
- [ ] Begin primary task
<!-- /dynamic-notes:block:work -->

<!-- /dynamic-notes:later -->

## Done

<!-- dynamic-notes:done -->

<!-- /dynamic-notes:done -->

The region and block markers must each be on their own line. Block IDs must be unique, non-empty, lowercase identifiers made from letters, digits, and hyphens. Managed regions may contain only whitespace and complete Dynamic Notes blocks.

Dynamic Notes validates the whole structure before modifying a note. If it finds an unsupported version, missing or mismatched marker, duplicate ID, nested block, extra current block, or unrelated content in a managed region, it reports an actionable error and leaves the note unchanged.

Usage

  1. Create or open a note using the format above.
  2. Run Dynamic Notes: Validate active note from the Command palette to confirm the note is valid.
  3. Run Dynamic Notes: Advance to complete the current block and promote the next one.
  4. Run Dynamic Notes: Reset flow to restart the queue. It preserves each block's Markdown while normalizing whitespace inside managed regions.
  5. Optionally assign keyboard shortcuts to Dynamic Notes commands in Settings → Hotkeys, or use the left-ribbon Advance button.

In Reading view, Advance uses Obsidian's atomic vault update API. Use Obsidian file history, Sync version history, or Git to revert a Reading-view advance if needed.

Development installation

For private testing or development, build the release files:

npm ci
npm run build

Then copy main.js and manifest.json into:

<vault>/.obsidian/plugins/dynamic-notes/

There is no styles.css because Dynamic Notes does not use custom styles. Enable the plugin in Obsidian and reload it after each development rebuild.

Use a dedicated test vault before relying on any early-release plugin with important notes.

Development

npm ci
npm test
npm run lint
npm run build

The pure parser, validator, and transformation engine are in src/flow. Their automated tests include validation failures and Markdown-to-Markdown golden fixtures.

Status

Dynamic Notes is shipped through the Obsidian Community plugins directory and remains an early-release project. The persistent Markdown format is intentionally conservative, but long-term format stability is not yet guaranteed.

License

Dynamic Notes is released under the MIT License.

Design

The original version 0.1 format contract, safety model, and architecture are preserved in DESIGN.md as a historical design record.

For plugin developers

Search results and similarity scores are powered by semantic analysis of your plugin's README. If your plugin isn't appearing for searches you'd expect, try updating your README to clearly describe your plugin's purpose, features, and use cases.