Momentum

pending

by kryticyz

Snapshot active projects into daily/weekly notes and track time logs.

Updated 1mo agoMITDiscovered via Obsidian Unofficial Plugins
View on GitHub

Momentum (Obsidian Plugin)

MVP plugin for:

  • Snapshotting active projects into daily and weekly notes.
  • Tracking project time with start/stop timer commands.
  • Exporting time data to JSONL for external dashboards.

Active Project Rules

A note is treated as an active project when frontmatter includes:

tags:
  - project
status: active
end: YYYY-MM-DD

Optional subproject relationship:

up: [[Parent Project Name]]

Supported Note Names

  • Daily note: YYYY-MM-DD.md
  • Weekly note: Weekly Note YYYY-MM-DD.md (Sunday week start)

Inserted Sections

  • ## Active Projects
  • ## Time Logs

If the headings already exist, the plugin regenerates managed content in those sections. Time log entries are preserved during regeneration.

Time Log Line Format

- 09:10-09:45 [[Project A]] (35m) "what was done"

This same format is used for timer-generated entries and manual entries.

Commands

  • Momentum: Start project timer
  • Momentum: Start project timer in the past
  • Momentum: Adjust active timer start time
  • Momentum: Stop project timer and log entry
  • Momentum: Open timer side panel
  • Momentum: Debug timer project scan
  • Momentum: Debug timer state
  • Momentum: Regenerate project snapshot in current note
  • Momentum: Export time entries to JSONL

Backdated start accepts either duration input (45, 90m, 1h30m) or exact local time (09:40, 9:40am). The plugin shows a confirmation summary before applying a parsed backdated/adjusted start.

## Time Logs includes a rendered button control block in reading mode. The plugin also shows a clickable timer in the status bar.

Settings

  • Due date field (default: end)
  • Timezone (default: Australia/Sydney)
  • Daily note folder (default: vault root)
  • Export path (default: .obsidian/momentum/time-entries.jsonl)
  • Export target (JSONL file or Backend refresh URL)
  • Backend refresh URL (default: http://localhost:8080, uses POST /refresh)
  • Auto insert snapshots on note creation
  • Note-create hook delay (for templater timing)

Network Behavior

  • Default mode (JSONL file) is fully local and does not make network requests.
  • Backend refresh URL mode sends a single POST /refresh request to the configured URL after export.
  • The plugin does not send analytics or telemetry.

Repository Layout

  • Plugin source: src/
  • Release artifacts: release/momentum/
  • Tests: test/
  • Plugin stylesheet: styles.css

Development

bun run build
bun test

Build output is written to:

  • release/momentum/main.js
  • release/momentum/manifest.json
  • release/momentum/styles.css

Optional for type tooling:

bun install

Maintainer Local Install (Obsidian Desktop)

  1. Build the plugin output:
bun run build
  1. Link this output into your local vault plugins folder:
bun run install:link -- "/absolute/path/to/your/vault"

This creates/updates:

  • <vault>/.obsidian/plugins/momentum -> release/momentum

Optional (env var form):

OBSIDIAN_VAULT_PATH="/absolute/path/to/your/vault" bun run install:link
  1. Load in Obsidian:
  • Open the target vault.
  • Go to Settings -> Community plugins.
  • Disable Restricted mode if enabled.
  • Click Reload plugins.
  • Enable Momentum.

Maintainer Dev Loop

Use watch mode during development:

bun run dev

Then in Obsidian:

  • Use Reload plugins after changes.
  • If you update manifest.json or styles.css, run bun run build once to recopy those files to release/momentum.

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.