- Add CustomProject interface for project persistence
- Implement ProjectPopover (desktop) and ProjectModal (mobile) for project creation
- Add color picker with 15 predefined colors for visual organization
- Replace add button with sort menu in sidebar
- Implement 6 sort options (name, tasks, created date) with localStorage persistence
- Use Intl.Collator for locale-sensitive string comparison
- Extend Obsidian Component class for proper lifecycle management
- Add comprehensive CSS styling for popover and modal interfaces
- Add configurable overflow threshold for Other Views (default: 5)
- Show overflow menu (ellipsis) when more than 5 other views exist
- Add setting in Beta Test tab to configure overflow threshold
- Implement refreshCurrentViewData for lightweight updates
- Optimize task updates to only refresh affected components
- Preserve details panel state during task updates
- Avoid full view re-renders when task data changes
- Add project property to filter component with standard conditions
- Integrate project selection with global filter UI state
- Sync project filters bidirectionally between sidebar and filter UI
- Implement details panel for task context menu actions
- Make projects view use content component with global filters
- Add project filter implementation in task-filter-utils
- Add ExperimentalSettings interface with Fluent configuration options
- Implement FluentIntegration class for managing experimental features
- Add Fluent toggle and ribbon icon settings in Beta Test settings tab
- Create experimental folder structure for Fluent components
- Add settings migration for experimental features
- Register Fluent integration on plugin load
Remove TOKEN_PLUS_REGEX and its references from regex definitions and WriteAPI. This token pattern was no longer being used in the codebase and was adding unnecessary complexity to the regex matching logic.
Moved context (@) and plus (+) token regex patterns from inline usage
in WriteAPI to centralized regex-define module for consistency and
reusability. Now uses Unicode flag for better international character
support.
- Add darker color on hover using brightness filter (75%)
- Remove background color on hover with media query
- Add smooth transition animation for hover state
- Fix TypeScript variable initialization in HabitChartModal
Replace spaces with hyphens in project and context tags when using Tasks
format to ensure proper tag parsing. Dataview format preserves original
spaces as intended.
Allow spaces within project tags (#project/...) and context tags (@context...)
when stripping trailing metadata during task updates. This prevents breaking
multi-word project and context values.
- Refactored metadata detection to only match recognized dataview keys
- Fixed content preservation when inserting start/cancelled dates
- Added strict trailing metadata pattern matching to avoid false positives
- Preserved user-defined fields like [projt::new] during metadata updates
- Added comprehensive tests for dataview and emoji format preservation
- Improved metadata detection to avoid matching content inside wiki links [[...]], markdown links [text](url), and inline code blocks
- Fixed issue where links in task content could be incorrectly treated as metadata markers
- Added comprehensive test to verify links and code blocks are preserved during metadata updates
- Ensures task content remains intact when only metadata is being modified
- Add visibility checks before task list rendering to avoid DOM errors
- Implement retry mechanism with timeout for deferred rendering
- Queue refresh requests instead of skipping when render in progress
- Fix cache ready event to properly trigger view refresh
- Prevent concurrent renders while allowing force refresh override
- Enhanced task parser to preserve trailing spaces for empty-content tasks
- Refactored WriteAPI for cleaner date insertion logic with proper formatting
- Improved status cycler to prevent conflicts with normal typing
- Fixed escaped hash tag handling to align with Obsidian behavior
- Optimized tag extraction with recursive unprotected hash detection
- Added CodeMirror state mock for better test coverage
- Improved quadrant card component structure and rendering
- Add project configuration support to Augmentor and WorkerOrchestrator
- Implement enhanced metadata inheritance with project configs
- Add TgProject support for config-based project definitions
- Improve project metadata resolution and caching
- Add CSS styles for project info popover display
- Refactor ConfigurableTaskParser for better project handling
- Add button to reset all settings to default values
- Include confirmation modal to prevent accidental resets
- Show success notification after settings reset
- Refresh settings display after reset
- Use Obsidian's createEl and createDiv methods for DOM creation
- Register events with this.registerDomEvent for proper cleanup
- Simplify teardown logic as events are auto-cleaned by Component
- Improve code consistency with Obsidian plugin conventions
- Add support for multiple due date emojis (📅, 🗓️, 📆) in regex patterns
- Fix recurrence regex to properly handle boundaries with bracket notation
- Optimize completion date updates to preserve existing metadata
- Use consistent task ID fallback pattern (file-line) when ID is missing
- Centralize completion status checking with isCompletedMark() method
- Handle multi-symbol completion statuses from settings configuration
- Ensure proper status updates when toggling task completion state
- Extend Component class for better lifecycle control
- Use registerEvent for automatic cleanup instead of manual event refs
- Replace initialize() with onload() following Obsidian patterns
- Wrap create event listener in onLayoutReady for proper initialization
- Simplify cleanup by leveraging Component's unload() method
- Fix recurring task creation logic to properly generate next occurrence
- Add completion metadata handling for recurring tasks
- Ensure completion date is added when marking tasks complete
- Fix status update logic to handle both boolean and string status values
- Integrate WriteAPI calls in completion monitor for better consistency
The recurring task functionality was broken due to missing logic that creates
the next occurrence when a recurring task is completed. This fix ensures that
completing a recurring task properly creates the next instance with the correct
date and preserves all metadata.
- Add resolveCurrentRange() to re-resolve date position dynamically
- Prevent replacing multi-line ranges for safety
- Add regex escaping for special characters in date markers
- Fix dataview regex to prevent matching across line breaks
- Handle edge cases when document is modified after widget creation
- Re-implemented automatic creation of new recurring tasks when completed
- Added calculateNextDueDate method supporting rrule and simple formats
- Ensured next occurrence is always in the future to handle edge cases
- Used UTC noon timestamps for consistent date storage across timezones
- Fixed issue where completing tomorrow's task today would create duplicate dates
Previously, clicking on task content would always prevent event bubbling,
blocking task selection even when the inline editor feature was disabled.
This fix ensures stopPropagation() is only called when:
- Opening task in file with Cmd/Ctrl+click
- Showing the inline editor (when enabled)
This allows clicks to properly bubble up for task selection when the
inline editor is disabled, restoring expected behavior.
- Replace setTimeout/clearTimeout with Obsidian's debounce function for better compatibility
- Reduce TaskIndexer log spam by sampling false filter results at 10% rate
- Improve memory management by using function references instead of timeout IDs
- Simplify flush and cleanup logic in ObsidianSource
Fixes project configuration not being applied from settings by:
- Restoring project options update in DataflowOrchestrator settings handler
- Passing full project config options when initializing ProjectConfigManager
- Ensuring detection methods and all config flags are properly propagated
- Add flexible status mark resolution that handles both configured names and raw marks
- Select moved task after drag-and-drop to update details panel
- Fix status update to prefer explicit status mark over completed boolean
- Improve handling of case-insensitive status names and single-character marks
- Show actual count value with unit for count habits instead of active/inactive
- Always render heatmap for count habits, with fill based on goal or any value
- Fix tooltip text for count habits to work at any size
- Add dataflow event emissions to prevent event loops during habit updates
- Only show progress bar when a goal (max) is configured
- Add ExtraButtonComponent with plus icon at bottom left of habit list
- Enable direct habit creation without navigating to settings
- Handle file deletion events to sync habit completions
- Fix boolean value handling for daily habit completions
- Add immediate UI refresh after habit state updates
When right-clicking on the Habit view in the sidebar and selecting
"Open settings", now opens the Habit settings tab directly rather
than showing the ViewConfigModal. This provides a more intuitive
and consistent experience for habit configuration.