mirror of
https://github.com/taskgenius/taskgenius-plugin.git
synced 2026-07-22 06:40:25 +00:00
No description
Replaces the ad-hoc settings migration calls in loadSettings with a
typed, atomic, version-keyed registry. Foundational infrastructure
for Phase 1's deprecation work — every v10 deprecation will register
a tombstone step here.
Capabilities
------------
- Atomic: clones settings, runs all applicable steps in-memory, commits
only if every step succeeds. On any throw the original object is
untouched.
- Dry-run: run({dryRun: true}) returns the diff without committing,
so Phase 1's deprecation modals can show a preview before applying.
- Version-keyed: steps declare a targetVersion (semver). Registry runs
every step where targetVersion ∈ (fromVersion, toVersion], in semver
order. fromVersion is read from settings._meta.lastMigratedVersion,
toVersion comes from manifest.version.
- Tombstone-aware: kind="tombstone" steps are first-class. Phase 1 will
use these to retire deprecated fields, optionally salvaging into
successor fields.
- Duplicate-id rejection: prevents Phase 1 PRs from accidentally
shadowing existing tombstones.
Phase 0 scope
-------------
The legacy bundle step (v0.0.1-legacy-bundle) wraps the THREE existing
migration paths the plugin used before this commit:
1. migrateSettings (multi-cycle status)
2. migrateInheritanceSettings (projectConfig.metadataConfig → fileMetadataInheritance)
3. fluentIntegration default backfill (inlined to avoid Component dep)
Bundle is byte-equivalent to the legacy direct calls — verified by
parameterized tests over 4 realistic data.json fixtures (legacy
multi-cycle, legacy inheritance, fresh install, partial fluent).
The sentinel tombstone (v0.0.2-sentinel-tombstone) targets a synthetic
field _meta._sentinelMarker that production never has, exercising the
tombstone code path without touching any real settings. The plan
originally suggested tombstoning taskStatusCycle/taskStatusMarks but
22+ files in the codebase still read those — Phase 1 audits readers
first, tombstone last. The sentinel doc includes that checklist.
Wiring
------
loadSettings now stashes the raw savedData on a transient field
(__transient_savedData__), runs the registry, then strips the field.
The legacy bundle step pulls savedData from there to detect old
projectConfig.metadataConfig.* keys that get dropped by the merge with
DEFAULT_SETTINGS. On registry failure (which shouldn't happen given
atomicity, but defensive) we fall back to the legacy direct calls so
the user is never left in a half-migrated state.
Discovery: SettingsMigrationManager exists in the codebase but is
never wired into index.ts — it's effectively dead code. Phase 1
audit will decide whether to delete it or wire it up. The plan
referenced it as an existing call site but reality says otherwise.
25/25 W1 tests pass (registry 14, legacy bundle 11). All other Phase 0
tests still green (73/73 mine).
|
||
|---|---|---|
| .github | ||
| .husky | ||
| docs@656596618d | ||
| media | ||
| packages | ||
| scripts | ||
| signatures | ||
| src | ||
| .editorconfig | ||
| .env.example | ||
| .eslintignore | ||
| .eslintrc | ||
| .gitignore | ||
| .gitmodules | ||
| .prettierignore | ||
| .release-it.beta-continue.cjs | ||
| .release-it.beta.cjs | ||
| .release-it.cjs | ||
| CHANGELOG-BETA.md | ||
| CHANGELOG.md | ||
| CLA.md | ||
| DEVELOPMENT.md | ||
| esbuild.config.mjs | ||
| jest.config.js | ||
| LICENSE | ||
| manifest-beta.json | ||
| manifest.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| PRIVACY.md | ||
| README.md | ||
| styles.css | ||
| tsconfig.json | ||
| version-bump.mjs | ||
| versions.json | ||
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
Community Plugin (Recommended)
- Open Obsidian Settings
- Navigate to Community Plugins
- Search for "Task Genius"
- Click Install, then Enable
Manual Installation
- Download the latest release from GitHub Releases
- Extract files to
.obsidian/plugins/obsidian-task-progress-bar/ - Enable the plugin in Obsidian settings
Quick Start
- Enable Plugin: Activate Task Genius in your plugin settings
- Onboarding: You will be guided through the setup process by the plugin
OR
- Open Task View: Click the ribbon icon or use Command Palette to search
Open Task Genius View. - Create First Task: Use the Quick Capture panel to create your first task.
- 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
Feel free to use any part in the src/components, such as the Inline Markdown Editor or the Kanban component.