- Update to use native requireApiVersion from Obsidian API
- Handle new Bases data format with direct entry arrays
- Implement intelligent content update routing based on user preferences
- Support multiple content sources (title, filename, H1, custom field)
- Add dual property updates for date fields compatibility
- Improve entry-to-task conversion with better data extraction
- Add comprehensive logging for debugging Bases interactions
- Fix CSS vendor prefixes for better browser compatibility
- Implement bidirectional status mapping in FileSourceConfig with auto-detection from task status settings
- Add sync button in FileSourceSettings to populate mapping from checkbox configuration
- Enhance WriteAPI to convert between task symbols and metadata values during updates
- Fix preferFrontmatterTitle logic to properly respect user preference across content sources
- Add comprehensive logging for status mapping operations
- Update FileTaskManager to handle status updates with proper symbol/metadata conversion
- Ensure status changes persist correctly in both frontmatter and inline formats
BREAKING CHANGE: FileSource status updates now require proper mapping configuration for non-standard status values
Major refactoring to centralize Canvas parsing functionality and improve
timeline features:
- Consolidate Canvas parsing logic into CanvasParser class
- Remove separate CanvasEntry module (functionality moved to CanvasParser)
- Add static helper methods for Canvas JSON parsing and node operations
- Enhance timeline sidebar with duration badges for time ranges
- Fix timezone handling using local time instead of UTC for consistency
- Update Canvas task updater to use centralized parser
- Clean up settings UI removing obsolete indexing options
- Add comprehensive parser refactoring documentation
This improves code organization, reduces duplication, and enhances the
timeline view with better time range visualization including duration badges.
Remove parseFileMeta and parseCanvas imports that were not being used in the
fallback parsing mechanism. The WorkerOrchestrator's main thread fallback only
handles basic task parsing, not file-level metadata tasks which are handled
by the main Orchestrator.
- Remove temporary debug files (debug-actual-parsing.js, debug-task-parsing.js, debug-time-parsing.js)
- Move time parsing type definitions from task.d.ts to dedicated time-parsing.ts
- Update all tests and services to import from new type location
- Simplify BaseTask interface by extracting time-related properties
- Minor CSS adjustments for timeline sidebar and main styles
- Implement comprehensive time component extraction and parsing
- Add date inheritance system for parent-child task relationships
- Enhance timeline sidebar with interactive features and visual improvements
- Add DateInheritanceService for managing task date hierarchies
- Implement TaskMigrationService for data structure updates
- Add TaskMetadataUtils for enhanced metadata handling
- Include extensive test coverage for all new features
- Add debug utilities for parsing validation
- Update settings UI with new time parsing configuration options
- Improve ConfigurableTaskParser with time-aware parsing capabilities
- Fix all TypeScript type errors and ensure proper type definitions
BREAKING CHANGE: Task metadata structure enhanced with timeComponents and enhancedDates fields
- Implement TimeComponent extraction for precise time handling
- Add support for time ranges (12:00-13:00) with midnight crossing detection
- Support both 12-hour and 24-hour time formats with automatic conversion
- Extract and categorize time components (start, due, scheduled) based on context
- Add comprehensive tests for enhanced time parsing functionality
- Create dedicated time-parsing types for better type safety
Additional improvements:
- Enhance FileSource with improved task handling and notification support
- Update Repository with better error handling and cache management
- Add IframeModal component for embedded content display
- Refine dataflow architecture documentation and production readiness guide
- Update settings UI with improved search and configuration options
- Add comprehensive URI deep-link documentation for settings navigation
- Implement path-based URI routing (obsidian://task-genius/settings) alongside legacy format
- Support direct action handlers for settings, create-task, and open-view paths
- Document all supported tab IDs and action parameters for MCP integration
- Add docs-site to .gitignore for separate repository management
The new URI format provides cleaner, more intuitive deep links for accessing
plugin features directly from documentation or external applications.
- Add ObsidianUriHandler for handling obsidian:// URIs
- Update plugin initialization to support FileSource
- Integrate file filter manager in task indexer
- Add URI navigation support in settings
- Improve settings search with URI parameters
- Replace static text inputs with dynamic list components for metadata fields, tags, and paths
- Add individual add/edit/delete controls for each configuration item
- Rename "FileSource" to user-friendly "File Task" throughout UI
- Consolidate duplicate configuration sections in IndexSettingsTab
- Move dynamic component styles to setting-v2.css to prevent override
- Fix TypeScript error in ics-manager.ts (optional plugin parameter)
- Improve user experience with auto-focus on new inputs and instant save
The configuration now matches the pattern used for custom date formats,
providing a more intuitive and flexible interface for managing File Task
recognition strategies.
BREAKING CHANGE: TaskManager has been removed in favor of the new Dataflow architecture
Major changes:
- Complete TaskManager removal and replacement with Dataflow APIs
- Add Canvas task support to WriteAPI with dedicated methods
- Enhance QueryAPI with convenience methods and caching
- Integrate OnCompletionManager for task completion automation
- Remove TaskManagerBridge in favor of DataflowBridge
Features added:
- Canvas task operations (update, delete, move, duplicate)
- QueryAPI convenience methods (getTasksForFile, getTasksDueToday, etc.)
- Synchronous cache methods for better performance
- OnCompletion event triggering for task automation
- Full backward compatibility through API adapters
Documentation:
- Add canvas-task-api-guide.md for Canvas task usage
- Add oncompletion-feature-guide.md for automation features
- Add taskmanager-writeapi-gap-analysis.md showing 100% coverage
This completes the architectural migration to the event-driven Dataflow
system, providing better performance, modularity, and extensibility.
Implements path-based recognition for FileSource, allowing users to
designate specific directories as task directories. Files within these
paths are automatically recognized as tasks.
Features:
- Three matching modes: prefix, glob, and regex patterns
- Configurable task paths via settings UI
- Dynamic examples based on selected matching mode
- Support for multiple path patterns
The glob mode supports standard patterns:
- * matches any chars except /
- ** matches any chars including /
- ? matches single char
This completes the Phase 2 path strategy implementation for FileSource.
- Fix missing onTaskUpdate callback propagation in task tree items
- Restructure DataflowOrchestrator for better initialization and event handling
- Improve ObsidianSource event processing and workspace integration
- Add comprehensive TaskManager to Dataflow migration documentation
- Add cursor priority utility functions for editor extensions
- Enhance ConfigurableTaskParser with better error handling
- Update plugin initialization sequence for better stability
- Minor CSS adjustment for visual consistency
This refactoring improves the overall stability and performance of the
dataflow architecture while maintaining backward compatibility.
- Optimize ViewComponentManager with better lifecycle management
- Improve calendar view rendering and layout optimization
- Fix task filter date range handling for better performance
- Clean up FileSource for better dataflow integration
- Enhance task details editor with optimized debouncing (800ms)
- Remove deprecated configurable-task-parser
- Improve IcsSource with retry mechanism for manager availability
- Add 30-second fallback timeout for ICS initialization
- Pass plugin instance to IcsManager for proper context access
- Update tests to match new IcsManager constructor signature
This improves overall component performance and reliability,
particularly for calendar views and ICS event synchronization.
- Make WriteAPI getTaskById async-compatible for better integration
- Add direct single task update path to avoid full file re-parsing
- Implement Repository.updateSingleTask() for efficient inline edits
- Force cache invalidation for WriteAPI operations to ensure consistency
- Emit TASK_UPDATED events for immediate dataflow updates
- Improve task update performance by bypassing unnecessary file parsing
- Fix tag formatting to prevent duplicate # prefixes in WriteAPI
This change significantly improves performance for inline task editing
by updating only the modified task instead of re-parsing entire files.
Fixed async initialization race condition where TaskView attempted to access
DataflowOrchestrator before it was fully initialized, causing empty data on
first plugin load.
Changes:
- Changed dataflow initialization from async promise to await pattern
- Added comprehensive logging with timing metrics for debugging
- Improved error handling in Repository and Orchestrator initialization
- Added fallback messages when dataflow is enabled but not ready
- Fixed TaskCache type checking for Map vs Object in Repository
This ensures DataflowOrchestrator is fully initialized before TaskManager
and views attempt to access it, preventing the "first load empty data" issue.
Add comprehensive test that reproduces the exact user-reported issue:
- First load: priority parsed correctly
- Second load: data completely lost
- Third load: data restored but all priorities become 3
Also remove obsolete CoreTaskParser.ts as ConfigurableTaskParser
has replaced it with better emoji and metadata parsing support.
Multiple issues were causing priority values to be lost or reset to 3:
1. Missing metadataParseMode in WorkerOrchestrator causing emoji parsing to fail
2. Augmentor applying default priority value (3) to all tasks
3. Orchestrator re-augmenting cached tasks unnecessarily
4. Priority inheritance overriding explicit task priorities
Changes:
- Add MetadataParseMode.Both to parser configurations in WorkerOrchestrator and Orchestrator
- Include complete emoji mappings for priority symbols (🔺⏫🔼🔽⏬)
- Implement special priority handling in Augmentor to prevent default value application
- Add priority value conversion for text values (highest/high/medium/low/lowest)
- Optimize caching to use augmented tasks directly when available
- Add debug logging for priority extraction and conversion
This ensures priority values are correctly parsed from emojis and metadata,
preserved through cache cycles, and never overridden by defaults.
Implemented smart persistence batching in Repository to fix data loss issue that occurred
when Obsidian restarted. The Repository.updateFile() method now schedules persistence
operations with intelligent debouncing (1s delay, max 10 files, max 5s interval).
- Added persistence queue management with schedulePersist() and executePersist() methods
- Integrated FileSource into DataflowOrchestrator with conditional initialization
- Added FILE_TASK_UPDATED and FILE_TASK_REMOVED events to event system
- Extended Repository to support three data sources (regular tasks, ICS events, file tasks)
- Ensured cleanup properly persists pending data before shutdown
- Updated dataflow architecture documentation with FileSource details
- Added comprehensive FileSource architecture review document
The persistence fix ensures all task updates are properly saved to storage while
balancing performance through batching. FileSource integration allows files to be
recognized as tasks based on configurable strategies.
Implement comprehensive settings migration framework to consolidate
duplicate and overlapping configuration options. Automatically migrates
legacy fileParsingConfig settings to the new unified FileSource
configuration on plugin load.
Key features:
- Automatic detection of duplicate settings
- Safe migration with validation and rollback
- User notifications for migration results
- Migration history tracking
- Test coverage for all migration scenarios
- UI styling for migration notifications
This ensures smooth upgrades for existing users while maintaining
backward compatibility during the transition period.
Add unit tests covering FileSource functionality including:
- Basic FileSource operations and initialization
- FileSourceConfig validation and management
- Status character mapping and conversion
- Recognition strategy testing (metadata, tags, templates, paths)
- Edge cases and error handling
Tests ensure reliability of file-based task recognition system and
provide documentation through test cases for expected behavior.
Add detailed documentation for the FileSource feature including:
- Complete feature specification with architecture alignment
- Implementation tracking document with task breakdown
- Design principles and integration patterns
- Configuration examples and API documentation
- Performance considerations and testing strategies
These documents provide guidance for understanding, maintaining, and
extending the FileSource functionality within the dataflow architecture.
Add comprehensive FileSource feature that enables files to serve as tasks
based on metadata properties, tags, templates, and path patterns. This
creates a unified task management experience where files can represent
both projects and actionable items.
Key features:
- Multiple recognition strategies (metadata, tags, templates, paths)
- Flexible task property extraction from file metadata
- Dual project-task file capabilities
- Settings UI with live preview and validation
- Integration with existing dataflow architecture
- Configurable task content sources (filename, title, custom fields)
- Support for custom status characters and priority levels
The implementation follows established patterns from ObsidianSource and
IcsSource, ensuring consistency with the existing codebase architecture.
Merge all project-related settings from IndexSettingsTab into ProjectSettingsTab
for better organization and user experience. Remove confusing redirect notice
and create logical hierarchy of project configuration options.
- Move Enhanced Project Configuration from Index Settings to Project Settings
- Remove redirect notice that was confusing users
- Organize settings under main enhanced project toggle
- Keep Index Settings focused solely on task indexing
- Preserve all existing functionality and settings initialization
Previously, ICS events with showType="badge" were being filtered out
completely from the calendar display due to an early return statement.
This prevented badge events from appearing in any calendar view.
The fix removes the blocking early return and instead includes badge
events in the main events array with a badge property to maintain
their special rendering requirements.
Changes:
- Add badge property to CalendarEvent interface
- Remove early return that blocked badge event processing
- Include badge events in main events array with badge flag
- Maintain badge event caching for performance
Connect ObsidianSource events to Orchestrator for proper file change detection.
Implement event-driven synchronization between WriteAPI and dataflow components.
Add proper event emissions in CanvasTaskUpdater to trigger data flow updates.
The system now correctly handles:
- UI-triggered updates through WriteAPI
- Direct file edits in Obsidian
- Canvas task modifications
- Batch file processing
This ensures task edits properly trigger UI updates and data persistence
through the complete event flow: WriteAPI → File → ObsidianSource →
Orchestrator → Repository → UI.
- Remove project data pre-computation bottleneck from worker processing
- Implement parallel computation of project data alongside file parsing
- Move tgProject handling from Workers to Augmentor per architecture design
- Fix Augmentor to properly set tgProject attribute on tasks
- Update DataflowOrchestrator to include tgProject in projectMeta context
- Align with dataflow architecture principle: parsers extract raw data, augmentor handles enhancement
- Improve performance by eliminating sequential project data computation
This change eliminates the performance bottleneck where task parsing had to wait
for all project data to be computed first. Now workers focus solely on raw task
extraction while project enhancement happens in the Augmentor phase, fully
aligning with the documented dataflow architecture design.
- Add initial scan when no cached data exists on startup
- Implement file modification time (mtime) tracking to skip unchanged files
- Fix Storage to use stable version (1.0.0) preventing cache invalidation
- Replace direct parsing with ConfigurableTaskParser for consistency
- Pass tgProject to parser ensuring tasks have correct project attributes
- Auto-persist index after batch operations preventing data loss
- Add comprehensive logging for debugging dataflow operations
Performance improvements:
- Skip parsing unchanged files based on mtime comparison
- Cache validation using both content hash and mtime
- Batch processing optimization with smart file skipping
Fixes data loss after restart and ensures proper task attributes.
Applied master branch updates (9b4d039..fc6372c) to the refactored codebase:
Version Updates:
- Bump version to 9.7.7 across all manifests and package.json
- Update Bases API requirement from 1.9.3 to 1.9.10
Critical Fixes Applied:
1. MCP Bridge variable scope fix (fd9888d)
- Already fixed in refactored code at src/mcp/bridge/TaskManagerBridge.ts
2. Bases API 1.9.10 compatibility (192a640)
- Updated type definitions for new API shape
- Changed PropertyType from "property" to "note"
- Enhanced BasesView interface with flexible data types
- Added ephemeral state methods support
3. Improved data extraction fallbacks (4b2d598)
- Enhanced markdown file detection with multiple strategies
- Added robust property value extraction chain
- Graceful fallback through getValue(), properties, frontmatter, note.data
4. ViewManager container resolution
- Added resolveContainerEl() method for flexible container handling
- Updated all view factory functions
All changes maintain backward compatibility while supporting new Bases API features.
The refactored directory structure is preserved with files in their new locations:
- managers/task-manager.ts (was utils/TaskManager.ts)
- managers/file-task-manager.ts (was utils/FileTaskManager.ts)
- managers/version-manager.ts (was utils/VersionManager.ts)
- utils/file/file-operations.ts (was utils/fileUtils.ts)
Build verified successful with no TypeScript errors.
Rename editor-ext to editor-extensions and group modules into autocomplete, task-operations, date-time, ui-widgets, workflow, and core
Standardize filenames to kebab-case and align names with functionality (e.g., status-cycler, date-picker, progress-bar-widget)
Improves discoverability and maintainability of editor extension code