No description
Find a file
Quorafind 1de55f4ca6 fix(dataflow): close lifecycle and worker hazards (Phase 0 W2/W2-bis/W3)
Three related stability fixes that the v10 deprecation work needs to
lean on. Each one closes a real bug that was discovered during plan
validation:

W2 — onunload async cleanup race
The plugin's onunload() fired dataflowOrchestrator.cleanup() with a
floating .catch() and never awaited it, so workers, event refs, and
debounced timers could outlive Obsidian's teardown. Now the async
cleanup is captured into a `plugin.unloadComplete` promise that
tests and any external observer can await. Repository.cleanup()
also unloads the underlying TaskIndexer Component, fixing a real
listener leak: TaskIndexer's vault modify/delete/create handlers
were never deregistered across plugin reloads.

The obsidian mock's Component.unload() previously didn't drain
registered events, hiding leak bugs in jest. Fixed in the mock so
listener-leak tests work for any future cleanup work.

W2-bis — last-resort cleanup on rebuild failure
Orchestrator.rebuild() now wraps its work in try/catch. On any
thrown error every cache namespace is cleared so the next plugin
load can't read a partial cache that looks complete. Snapshot/restore
is deferred to a later phase; the namespace clear is the floor.

W3 — per-task worker timeout with kill + main-thread fallback
TaskWorkerManager now arms a per-task timeout (default 8s,
configurable) when dispatching work. On timeout the hung worker is
terminated, the active promise rejects with WorkerTimeoutError,
a replacement worker is spawned, and the queue keeps draining.
Previously a hung worker would hold its slot until the 30s circuit
breaker tripped after 10 failures.

WorkerOrchestrator counts WorkerTimeoutError separately in
metrics.taskWorkerTimeouts and skips its retry-with-backoff path
for timeouts (a worker that just hung will likely hang on the
same file again — fall back to main thread immediately).

22/22 integration tests pass (Lifecycle, Rebuild, WorkerTimeout, smoke).
2026-04-07 09:37:13 +08:00
.github ci: add GitHub workflows for CI and release 2025-11-26 10:29:22 +08:00
.husky fix: update husky pre-commit hook for cross-platform compatibility 2025-07-31 21:36:29 +08:00
docs@656596618d chore: bump version to beta continue 2026-01-05 10:19:34 +08:00
media refactor(onboarding): decompose fluent onboarding into progressive steps 2025-10-03 22:58:28 +08:00
packages chore: update calendar package submodule 2025-12-17 15:58:32 +08:00
scripts feat(release): include commit body in changelog output 2025-11-29 21:12:46 +08:00
signatures repo: update cla.json 2025-11-02 11:03:46 +08:00
src fix(dataflow): close lifecycle and worker hazards (Phase 0 W2/W2-bis/W3) 2026-04-07 09:37:13 +08:00
.editorconfig Initial commit 2022-06-07 14:12:30 +08:00
.env.example chore(security): extract OAuth client secret to environment variable 2025-12-17 15:43:59 +08:00
.eslintignore Initial commit 2022-06-07 14:12:30 +08:00
.eslintrc Initial commit 2022-06-07 14:12:30 +08:00
.gitignore chore: bump version to beta continue 2026-01-05 10:19:34 +08:00
.gitmodules chore: add taskgenius-doc as submodule 2025-12-16 09:30:40 +08:00
.prettierignore feat: support custom status 2025-03-02 13:33:23 +08:00
.release-it.beta-continue.cjs fix(release): correct require path in beta-continue config 2025-12-13 08:28:42 +08:00
.release-it.beta.cjs chore: update workflow scripts and fix github tag issues 2025-08-27 17:37:33 +08:00
.release-it.cjs feat(release): implement custom changelog generator for merged beta versions 2025-09-04 22:48:17 +08:00
CHANGELOG-BETA.md chore(release): bump version to 9.14.0-beta.4 [beta] 2026-01-05 10:20:34 +08:00
CHANGELOG.md chore(release): bump version to 9.13.1 2025-12-11 10:28:07 +08:00
CLA.md docs: add FSL-1.1-ALv2 license and contributor license agreement 2025-10-16 23:59:07 +08:00
DEVELOPMENT.md docs: update README and simplify DEVELOPMENT structure 2025-12-17 14:51:39 +08:00
esbuild.config.mjs chore(security): extract OAuth client secret to environment variable 2025-12-17 15:43:59 +08:00
jest.config.js test(dataflow): add integration test fixtures for orchestrator 2026-04-07 09:19:08 +08:00
LICENSE docs: add FSL-1.1-ALv2 license and contributor license agreement 2025-10-16 23:59:07 +08:00
manifest-beta.json chore(release): bump version to 9.14.0-beta.4 [beta] 2026-01-05 10:20:34 +08:00
manifest.json chore(release): bump version to 9.13.1 2025-12-11 10:28:07 +08:00
package.json chore(release): bump version to 9.14.0-beta.4 [beta] 2026-01-05 10:20:34 +08:00
pnpm-lock.yaml refactor(styles): migrate from CSS to SCSS 2025-12-11 14:33:41 +08:00
pnpm-workspace.yaml chore: setup pnpm workspace monorepo structure 2025-11-26 10:28:57 +08:00
PRIVACY.md docs: update README and simplify DEVELOPMENT structure 2025-12-17 14:51:39 +08:00
README.md docs: update README and simplify DEVELOPMENT structure 2025-12-17 14:51:39 +08:00
styles.css feat: integrate calendar auth manager and update styles 2025-12-17 15:52:49 +08:00
tsconfig.json refactor(build): migrate to TypeScript path aliases and update esbuild to v0.25.9 2025-08-28 14:02:26 +08:00
version-bump.mjs chore: update workflow scripts 2025-08-27 17:28:43 +08:00
versions.json chore(release): bump version to 9.14.0-beta.4 [beta] 2026-01-05 10:20:34 +08:00


Overview

Task Genius plugin transforms Obsidian into a powerful task management system with advanced features, beautiful visualizations, and seamless in-editor task management workflow - all while preserving Obsidian's philosophy of plain-text, future-proof note-taking.


Core Features

Feature Description
Task Views Visualize your tasks in different ways, including list, kanban, calendar, and gantt charts
Date & Priority [View-based] Recurring tasks, multiple date types, and visual priority indicators
Workflows [Editor-based] Multi-stage workflows with automatic timestamping, templates, and process tracking
Habit Tracking [View-based] Daily habits, streak tracking, visual calendar, and progress analytics
Quick Capture global commands, templates, and automated task creation
Filtering & Search Advanced in-editor filtering, saved queries, and custom perspectives
Gamification [View-based] Achievement rewards, custom milestones, and motivational feedback

For detailed feature documentation, visit taskgenius.md.


Installation

  1. Open Obsidian Settings
  2. Navigate to Community Plugins
  3. Search for "Task Genius"
  4. Click Install, then Enable

Manual Installation

  1. Download the latest release from GitHub Releases
  2. Extract files to .obsidian/plugins/obsidian-task-progress-bar/
  3. Enable the plugin in Obsidian settings

Quick Start

  1. Enable Plugin: Activate Task Genius in your plugin settings
  2. Onboarding: You will be guided through the setup process by the plugin

OR

  1. Open Task View: Click the ribbon icon or use Command Palette to search Open Task Genius View.
  2. Create First Task: Use the Quick Capture panel to create your first task.
  3. Explore Views: Switch between different views to find your preferred workflow

Community & Support

Discord Community

Join our active community for help, tips, and feature discussions: Task Genius Discord

Resources


License

FSL-1.1-ALv2

Feel free to use any part in the src/components, such as the Inline Markdown Editor or the Kanban component.