alvinli19911 downloadsMove unfinished tasks to today's monthly work log while retaining historical notes.
Move unfinished checkbox tasks from earlier entries in the current month's work log to today while preserving completed tasks and regular notes in their original entries. Your Markdown files remain the single source of truth; the plugin uses no database or external services.
npm install && npm run build in this directory.manifest.json and the generated main.js to .obsidian/plugins/worklog-migrate/ in your vault.Worklog. The directory must already exist. The plugin only accesses the current month's YYYYMM.md file in this directory.YYYYMM.md, and today's heading is written as # MM.DD (for example, # 10.09 in 202610.md). Today's section is placed before the other dated sections. If the current month's file does not exist, the plugin creates it. The filename supplies the year and month used to sort and deduplicate dates within the file.- [ ] are moved to the same complete heading path under today's section. Completed tasks such as - [x] remain under their historical dates. Task dates, priorities, and other task text are preserved exactly.The plugin parses the current month's file and prepares the complete migration in memory before writing. Immediately before a write, it checks whether another operation changed the file. If the file changed in the meantime, the migration is aborted and you are asked to try again.
The parser preserves the original text of each line and does not reorder unrelated content. It recognizes ATX headings, fenced code blocks, HTML comments, and standard checkbox lists. Existing # YYYY-MM-DD headings are supported, although newly created headings use # MM.DD.
If a historical date section contains an incompatible structure—such as duplicate date headings, an invalid date, or a task whose parent cannot be determined safely—the plugin preserves that section unchanged, skips it, and continues processing other valid dates. An unclosed code fence or HTML comment makes date boundaries unreliable, so the entire monthly file is skipped. Reasons for skipped content appear in the preview and are written to the Obsidian developer console.
Regular-content deduplication compares complete text blocks. If you manually edit a block that was previously copied to today and later add another unfinished task to the same historical branch, the original block may be copied again. Enable the preview for your first migration, and keep a vault backup or file history.
npm install
npm run lint
npm test
npm run typecheck
npm run build
The migration planner is implemented in src/core.ts. It does not depend on Obsidian and can be tested independently. Obsidian commands, settings, and monthly-file writes are implemented in src/main.ts.
Run ./pack-src.sh to create src.zip in the project root. The archive contains the source code, tests, build configuration, plugin metadata, license, and this README. It excludes dependencies and the generated main.js.
This project is licensed under the MIT License.