Commit graph

1018 commits

Author SHA1 Message Date
Quorafind
bf90e7fd39 chore(release): bump version to 9.8.0-beta.0 [beta] 2025-08-27 16:30:36 +08:00
Quorafind
56eb74ba53 chore(release): update workflow to support better beta feat 2025-08-27 16:28:22 +08:00
Quorafind
9278113a4e chore(release): update workflow 2025-08-27 15:52:09 +08:00
Quorafind
8ddcce10a6 chore(release): update workflow 2025-08-27 15:34:40 +08:00
Quorafind
ff488e8890 fix(type): type issue with TFile 2025-08-27 09:17:28 +08:00
Quorafind
221fc087ab chore(release): update release workflow 2025-08-27 09:06:54 +08:00
Quorafind
cfaa2ddbc8 refactor(bases): enhance Bases API compatibility and content handling
- 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
2025-08-26 13:07:19 +08:00
Quorafind
c1ac3e359f fix(writeapi): prevent writing empty tag arrays to frontmatter 2025-08-25 22:16:53 +08:00
Quorafind
5117c637b9 fix(writeapi): correct typo in console log message 2025-08-25 20:46:53 +08:00
Quorafind
9f671ab3d7 feat(filesource): add status mapping between checkboxes and file metadata
- 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
2025-08-25 20:30:18 +08:00
Quorafind
52573bfcd0 refactor(canvas): consolidate Canvas parsing into core CanvasParser
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.
2025-08-24 22:46:16 +08:00
Quorafind
ec032f0eae refactor(worker): remove unused imports from WorkerOrchestrator fallback
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.
2025-08-24 22:44:02 +08:00
Quorafind
13bd8f3b05 refactor(dataflow): consolidate time parsing types and remove debug files
- 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
2025-08-24 21:04:28 +08:00
Quorafind
dc364df963 feat(time-parsing): add enhanced time parsing with date inheritance and timeline improvements
- 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
2025-08-24 21:00:30 +08:00
Quorafind
86b64b0996 feat(time-parsing): add enhanced time parsing with range and component extraction
- 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
2025-08-24 10:26:54 +08:00
Quorafind
a175bf43b5 feat(uri): add enhanced deep-link support with path-based routing
- 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.
2025-08-24 10:24:12 +08:00
Quorafind
8388455a37 refactor(orchestrator): clean up FileSource initialization
- Remove legacy excludePatterns migration code
- Simplify FileSource initialization logic
- Clean up unused migration method
2025-08-23 11:36:00 +08:00
Quorafind
449348d4f6 docs: update architecture documentation and file specifications
- Update dataflow architecture documentation
- Refine file source specification
- Improve file type detector for better extension handling
- Minor style adjustments for UI consistency
2025-08-23 11:35:28 +08:00
Quorafind
a7e4dafb2a feat(core): integrate FileSource and add URI handler support
- 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
2025-08-23 11:34:00 +08:00
Quorafind
d58f4873ce refactor(settings): update settings UI for FileSource configuration
- Refactor FileSourceSettings component for dynamic configuration
- Update IndexSettingsTab with improved worker processing controls
- Update setting definitions to support new FileSource structure
- Add settings migration for FileSource configuration changes
- Remove legacy excludePatterns in favor of unified filter rules
2025-08-23 11:33:11 +08:00
Quorafind
8e292cb4f3 feat(manager): enhance FileTaskManager with expanded functionality
- Add comprehensive file task operations (batch create, update, delete)
- Implement file task search and querying capabilities
- Add tests for FileTaskManager operations
- Update FileTaskView and TaskSpecificView for better file task handling
- Improve task metadata processing and validation
2025-08-23 11:29:05 +08:00
Quorafind
4c5f560c2b feat(filesource): enhance FileSource task handling and WriteAPI support
- Add FileSource task update capability in WriteAPI
- Improve file type detection and metadata mapping
- Add comprehensive FileSource tests for basic operations
- Update Repository to handle FileSource task operations
- Enhance FileSource with filter manager integration
2025-08-23 11:25:59 +08:00
Quorafind
c7db2b5c65 feat(filter): enhance file filter manager and settings UI
- Add comprehensive file filter manager with pattern, path, and folder rules
- Implement filter statistics tracking (matched/excluded files)
- Add file filter settings tab with rule management UI
- Support whitelist/blacklist modes for filtering
- Remove deprecated advanced.excludePatterns in favor of filter rules
2025-08-23 11:25:02 +08:00
Quorafind
d4d9d02ba5 fix(settings): make performSearch method public for external access
- Change performSearch visibility from private to public
- Allow setting.ts to trigger search when navigating from URI
2025-08-23 11:20:46 +08:00
Quorafind
44900dd629 fix(views): exclude badge tasks from forecast view
Badge tasks should only appear in event view, not in forecast view.
This separation ensures proper task segregation between different view modes.
2025-08-22 22:28:53 +08:00
Quorafind
96162afd9f refactor(settings): convert File Task configuration to dynamic add/remove components
- 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.
2025-08-22 20:11:31 +08:00
Quorafind
a5884b332f refactor(dataflow): complete TaskManager to Dataflow migration with enhanced APIs
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.
2025-08-22 13:25:12 +08:00
Quorafind
5fc1ad0dba feat(file-source): add path-based task recognition strategy
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.
2025-08-22 13:08:21 +08:00
quorafind
55fbc630ad refactor(dataflow): major architecture improvements and bug fixes
- 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.
2025-08-21 23:41:20 +08:00
Quorafind
316518dfc4 fix(ics): restore workspace event listeners for ICS updates
- Add ICS-specific event types to Obsidian workspace interface
- Restore ics-config-changed and ics-cache-updated event listeners
- Maintain backward compatibility with existing ICS update mechanism
- Fix formatting and indentation in IcsSource

This ensures ICS events are properly synchronized when configuration
or cache updates occur, maintaining real-time calendar integration.
2025-08-21 21:22:10 +08:00
Quorafind
d3a850b029 refactor(components): improve view management and ICS integration
- 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.
2025-08-21 21:20:50 +08:00
Quorafind
0c6db2537b refactor(dataflow): optimize single task updates and cache invalidation
- 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.
2025-08-21 15:22:04 +08:00
Quorafind
771d9f73b1 fix(dataflow): resolve initialization race condition causing empty data on first load
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.
2025-08-21 11:32:30 +08:00
Quorafind
b323886465 test(priority): add user scenario test for priority parsing
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.
2025-08-21 10:15:00 +08:00
Quorafind
b8f4586b39 fix(priority): resolve priority parsing and caching issues
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.
2025-08-21 10:10:28 +08:00
Quorafind
172e5fc794 fix(dataflow): resolve data loss on restart and integrate FileSource
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.
2025-08-21 07:12:36 +08:00
Quorafind
1b2e26deec feat(settings): add automatic settings migration system
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.
2025-08-20 22:46:29 +08:00
Quorafind
4c82ab5b0f test(filesource): add comprehensive test suite for FileSource feature
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.
2025-08-20 22:45:01 +08:00
Quorafind
738d7aa0c0 docs(filesource): add comprehensive specification and implementation docs
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.
2025-08-20 22:43:43 +08:00
Quorafind
691952a6b3 feat(filesource): implement file-based task recognition system
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.
2025-08-20 22:38:16 +08:00
Quorafind
b600490a1c refactor(settings): consolidate project configuration into unified tab
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
2025-08-20 22:32:52 +08:00
Quorafind
84086368b6 fix(calendar): display ICS badge events in calendar views
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
2025-08-20 12:26:13 +08:00
Quorafind
deef893535 fix(dataflow): resolve blank TaskView and integrate ICS events
- Add IcsSource for calendar event integration into dataflow
- Fix infinite loop with sourceSeq tracking mechanism
- Resolve blank TaskView on quick startup with debounced events
- Add change detection to prevent unnecessary batch updates
- Implement render guards to prevent concurrent refreshes
- Update reindex commands to support dataflow architecture
- Persist ICS events separately in storage layer
- Update architecture documentation with current implementation

Fixes issues where:
- TaskView showed blank despite having loaded tasks
- Infinite "Batch update" loops occurred
- ICS calendar events disappeared when background sync disabled
- Rapid successive updates caused view resets before rendering
2025-08-20 10:34:02 +08:00
Quorafind
3c67a739be fix(dataflow): resolve data persistence and task parsing issues
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.
2025-08-20 06:59:45 +08:00
Quorafind
4e783829f9 refactor(dataflow): optimize worker parallelization and fix tgProject handling
- 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.
2025-08-20 00:02:27 +08:00
Quorafind
b84389ee95 fix(dataflow): resolve data persistence and task parsing issues
- 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.
2025-08-19 23:36:56 +08:00
Quorafind
4835367a4a merge: apply critical fixes from master branch to refactored structure
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.
2025-08-19 22:40:20 +08:00
Quorafind
9831541958 docs: add editor-extensions refactoring plan documentation 2025-08-19 13:38:17 +08:00
Quorafind
effbf9104e refactor(editor-extensions): restructure editor-ext and standardize kebab-case naming
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
2025-08-19 11:16:46 +08:00
Quorafind
8b582f363c chore(repo): remove temporary refactor scripts
Remove helper scripts used to update and fix import paths during the directory refactor
No runtime code changes
2025-08-19 10:37:42 +08:00