Replace global variable configuration with CodeMirror 6's recommended Facet pattern
for passing configuration to StateField. This provides better type safety,
reactive updates, and follows CodeMirror architecture best practices.
Changes:
- Replace globalTimerConfig with taskTimerConfigFacet
- Update all config access to use state.facet() pattern
- Return array of [facet, statefield] from extension function
- Maintain compatibility with existing functionality
- Fix timer not starting after block ID insertion
- Improve parent task detection to find all subtasks, not just immediate next line
- Add proper state updates to refresh widget after block ID creation
- Fix TypeScript errors with generateBlockId visibility and elapsed property
- Ensure timer controls update correctly after inserting block reference
Replace complex button-based UI with simple text links for better
integration and cleaner appearance. Improve subtask detection logic
to only show timers on actual parent tasks.
- Replace buttons with underlined text links for all actions
- Remove complex CSS styling in favor of minimal text styling
- Fix subtask detection to stop at same/lower indentation levels
- Update real-time display to refresh every second
- Add click event propagation prevention
- Simplify UI to show "⏱ time | action | action" format
- Remove 280+ lines of unnecessary CSS styling
Fix TypeError by using correct method name isTaskTimerEnabled instead
of isTimerEnabledForFile, and remove extra app parameter from
TaskTimerMetadataDetector constructor.
- Use correct method name isTaskTimerEnabled()
- Remove app parameter from TaskTimerMetadataDetector constructor
- Resolves "metadataDetector.isTimerEnabledForFile is not a function"
Add detailed console logging throughout timer decoration creation to
help diagnose rendering issues. Fix global configuration access by
properly setting timerConfig instead of undefined global variables.
- Add debug logs for each step of decoration creation process
- Log file processing, task detection, and decoration count
- Fix timerConfig initialization in taskTimerExtension function
- Add test file with proper frontmatter for timer functionality
- Enable troubleshooting of timer widget display issues
Replace ViewPlugin with StateField to resolve CodeMirror block decoration
error. Use editorInfoField for proper editor access and replace innerHTML
with Obsidian's native DOM APIs.
- Replace ViewPlugin with StateField for block-level decorations
- Use state.field(editorInfoField) to access editor and app instances
- Remove innerHTML usage in favor of createEl/createDiv/createSpan
- Fix "Block decorations may not be specified via plugins" error
- Improve CSS with proper width and box-sizing for block display
- Maintain all existing timer functionality (start/pause/complete)
- Add TaskTimer editor extension with start/stop/pause controls
- Implement TaskTimerManager for timer state management
- Add TaskTimerExporter for data export capabilities
- Create TaskTimerFormatter for time display formatting
- Add TaskTimerMetadataDetector for task metadata parsing
- Include task timer CSS styling and UI components
- Integrate timer settings into plugin configuration
- Support timer persistence and session management
- Bump version from 9.1.4 to 9.1.5 in manifest.json and versions.json
- Update package.json version
- Fix onboarding CSS selector specificity issues
- Improve code formatting in ConfigPreview component
- Adjust checkbox icon sizing in TaskGeniusIconManager
- Replace OnboardingModal with OnboardingView (ItemView-based)
- Add SettingsChangeDetector service for intelligent onboarding triggers
- Implement settings check step with user confirmation
- Enhance configuration safety with smart view merging
- Update CSS to support both modal and leaf view layouts
- Add "Open Task Genius Setup" command for manual access
- Preserve all existing onboarding functionality
- Improve UX by preventing unnecessary interruptions for configured users
BREAKING CHANGE: Onboarding now opens as a leaf view instead of modal
- Replace fixed today-based categorization with dynamic date-relative logic
- Remove incorrect Past Due display condition (selectedTimestamp >= todayTimestamp)
- Tasks now properly categorize as past/present/future relative to selected date
- Past due tasks display correctly regardless of selected date
- Apply proper task sorting to all recategorized task groups
- Handle sort configuration for descending date order
Resolves issue where Past Due disappeared when selecting past dates and
tasks showed incorrect relative positioning to selected date.
Remove aspect-ratio constraint from calendar days and reduce spacing
throughout the mini calendar component to achieve a more compact layout
while maintaining visual clarity. Changes include:
- Remove aspect-ratio: 1 from calendar days for better height control
- Reduce grid gaps and padding values across calendar elements
- Adjust header and day-header spacing for tighter layout
- Update task count badge styling with smaller border radius
- Set min-height using CSS variable for consistent sizing
- Update inbox filter to use hasProject() function which correctly
checks both metadata.project and metadata.tgProject fields
- Ensure tasks with any project assignment are excluded from inbox
- Update originalMarkdown field when task content changes in details panel
- Check both content and originalMarkdown fields for UI updates
- Fix task data propagation from filteredTasks to components
- Ensure task title changes are reflected in list/tree views immediately
Resolves issue where task title updates in details panel were not showing
in the task list until a full refresh occurred.
- Add isCurrentlyEditing() checks to BaseTaskBasesView task update methods
- Skip onDataUpdated() calls when details panel is actively being edited
- Implement updateUIWithLatestTaskData() for selective UI updates without refresh
- Update TaskView and TaskSpecificView to respect editing state during cache updates
- Fix debounce comment accuracy (800ms not 1500ms) in TaskDetailsComponent
Improves editing UX by preventing jarring view refreshes that interrupt user input
- Remove emojis and excessive formatting for cleaner presentation
- Consolidate feature descriptions into a structured table format
- Simplify installation instructions with clear numbered steps
- Remove screenshot section and detailed feature subsections
- Streamline support section while maintaining essential links
- Update documentation links to point to main site
- Reduce overall length while preserving all key information
- Remove global-quick-capture and full-featured-task-capture commands
- Add new quick-capture command that directly opens metadata modal
- Rename toggle-quick-capture to clarify it's for editor only
- Add toggle-quick-capture-globally for global editor capture access
- Update command translations to reflect new structure
This improves command clarity by separating editor-specific from
global quick capture functionality.
- Check for existing TaskView leaves before creating new ones
- Focus the existing view using revealLeaf when available
- Update sidebar component to reflect current view mode when switching
- Add missing BasesViewRegistration import to type definitions
This ensures the task view properly reuses existing instances and keeps
the sidebar synchronized with the current view mode.