A minimal, high-performance Obsidian plugin for adding inline timers and countdowns directly into your notes.
This version is a complete redesign focused on efficiency, zero dependencies, and a premium user experience.
- Lightning Fast Interaction:
Alt+S: Toggle Timer (Start / Pause / Resume)Alt+C: Toggle Countdown (Start / Pause / Resume)Alt+D: Delete Timer
- Countdowns & Stopwatches: Choose between simple stopwatches or goal-oriented countdowns.
- Clickable Widgets: Interactive badges in both Live Preview and Reading View. Simple click to toggle, right-click for the context menu.
- Rich Context Menu: Right-click any timer to access Stop, Reset, Delete, or even Change Time manually.
- Auto-Restore & Crash Protection: Running timers are automatically paused upon plugin unload and recovered when restarted. Safe across devices and through app crashes.
- One Timer Per Line: Enforces a clean layout by preventing multiple timers on the same line.
- Native Integration: Uses Obsidian's internal CSS variables to perfectly adapt to your theme (Light/Dark).
- Zero External Dependencies: Built with pure TypeScript and CodeMirror 6 for maximum stability and speed.
Position your cursor anywhere on a line with a timer, or interact directly with the badge:
- Toggle (Stopwatch):
Alt+Sor click the badge. - Toggle (Countdown):
Alt+Cor click the badge. - Delete:
Alt+D.
- Running (⌛/⏳): Actively ticking. The icon animates to show progress.
- Paused (⏳): Temporarily halted. Resuming picks up from the last recorded time.
- Stopped (⏹️): Archive state. Retains the final time. Resuming a stopped stopwatch starts from
0s; resuming a stopped countdown restarts from the target duration.
Need to adjust the time? Use the Change time command or right-click the badge to open the Time Modal. It accepts mm:ss, hh:mm:ss, or simple numbers for minutes.
- Rendering: Uses CodeMirror 6
ViewPluginandWidgetTypefor efficient, non-destructive UI overlays. - Data Storage: Timers are stored as small, text-based tags in your markdown:
⏳[id|kind|state|elapsed|startedAt|target]. - State Management: A lightweight registry tracks running timers across files to ensure reliable recovery.
This project uses Bun for lightning-fast builds.
# Install dependencies
bun install
# Development mode (watch)
bun dev
# Production build
bun run buildMIT License. Developed by quantavil.
