- Add ErrorContext type for structured error information with view ID,
component name, operation, and file path details
- Enhance FluentComponentManager error rendering with collapsible
technical details and context display
- Add status mark to display name mapping with comprehensive defaults
and user configuration support
- Improve FileSource status mapping with textual-to-symbol conversion
- Clean up code formatting and trailing commas in ConfigurableTaskParser
Replace tag accumulation logic with replacement to avoid duplicates during
incremental parsing. Previously, typing #tags/test would create intermediate
tags (#tags, #tags/, etc.) that accumulated in the metadata.
Replace manual style.display manipulation with Obsidian's built-in
element visibility methods (.show(), .hide(), .toggle()) and improve
code formatting consistency across components. Changes include:
- Use .hide()/.show() instead of style.display = "none"/""
- Use .toggle() for visibility toggling
- Use .toggleVisibility() for visibility property
- Improve code formatting and indentation
- Clean up trailing commas and spacing
Affected components: KanbanColumn, FilterDropdown, TableHeader,
TableView, ReadModeTextMark, DragManager, BulkDateOffsetModal,
McpLogModal
Extend FluentTopNavigation to support dynamic custom buttons that can
be registered by views or components. Features include:
- CustomNavButton interface for button configuration
- Custom buttons container in navigation bar
- Register/unregister methods for button management
- Integration with FluentComponentManager
- Styling for custom button container
Add comprehensive task grouping functionality with support for multiple
grouping dimensions including file path, due date, priority, project,
tags, and status. Features include:
- New grouping utility functions with nested group support
- Storage layer for persisting group configuration and state
- UI components for group selection and display
- Collapsible group sections with expand/collapse state
- Visual styling with priority/due date indicators
- Integration with task view content component
- Add comprehensive logging for all MCP tool calls with timestamps,
duration, arguments, results, and session tracking
- Implement McpLogModal component for viewing logs in settings UI
- Add log truncation for large responses (max 500 chars preview)
- Add getServer() method to McpServerManager for log access
- Fix metadata type safety by checking string type before trim()
- Normalize project names to handle arrays and non-string values
- Add fluent-modern.css with comprehensive modern styling
- Implement modern background color system with theme support
- Style sidebar, navigation, content areas for modern interface
- Update fluent-main.css with transition improvements
- Refactor modern.css to remove duplicates
- Add modern interface styles to compiled styles.css
- Support responsive design for mobile devices
[Configure interface style →](obsidian://task-genius/settings?tab=interface§ion=interface-mode)
- Add task-details-container wrapper element
- Separate contentContainerEl from containerEl for better styling control
- Update all CSS selectors to use new .task-details-container class
- Maintain existing functionality while improving structure
- Extract date matching utilities to separate file for better maintainability
- Replace MatchDecorator with custom widget registry system for more precise position tracking
- Implement incremental update mechanism with position mapping to prevent widget repositioning errors
- Improve cursor overlap detection to reduce widget flickering during editing
- Add comprehensive date validation and task line detection using syntax tree
- Remove debug console.log statements
When project metadata is derived from tags like #project/Alpha, the tag
is now removed from the final tags array to prevent duplication. This
only applies when the project comes from tag extraction, not from
frontmatter properties.
Also optimizes import to use type-only import for plugin reference.
Added detailed console logging in FluentActionHandlers to track
kanban status update flow and help diagnose task update issues.
Changes:
- Log when kanban status update is triggered
- Log status change details (from -> to)
- Log handleTaskUpdate completion
- Log when no status change is needed
Updated calendar and kanban components to render the full originalMarkdown
content for file-source tasks instead of just the title. This ensures
file-based tasks display their complete markdown content consistently
across different view types.
Changes:
- CalendarEventComponent: Check source type before rendering
- KanbanCardComponent: Use originalMarkdown for file-source tasks
Implemented frontmatter write operations for file-source tasks, enabling
updates to task metadata via file properties. Supports custom metadata
field mappings and status symbol-to-value conversions.
Features:
- Automatic frontmatter updates for status, priority, and dates
- Custom field mapping support (e.g., "proj" -> "project")
- Status symbol to metadata value conversion
- Handles all standard task metadata fields (dueDate, startDate, etc.)
Removed debounced rendering in TaskListRendererComponent and TaskListItemComponent
to provide more responsive UI updates. Task changes now reflect immediately in
the view instead of waiting for debounce delays.
Changes:
- TaskList.ts: Removed debounceUpdateTasks wrapper, calls renderTaskItem directly
- listItem.ts: Removed debounceUpdateTaskItem, updates display immediately
- Added debug logging for priority field inspection
Add new metadata mappings feature that allows users to map custom
metadata field names to standard task properties. This enables support
for different metadata naming conventions (e.g., mapping "proj" to
"project", "ctx" to "context").
- Add metadata mappings configuration UI with add/remove/toggle controls
- Include field validation to prevent duplicate target mappings
- Add MetadataMappingConfig type definition
- Update default settings and tests to include metadataMappings
- Integrate mapping support throughout FileSource system
- Add handleTaskEditInFile method to FluentActionHandlers
- Improve settings tab organization with better visual structure
- Fix navigation not re-rendering when transitioning from empty to non-empty modes
- Make projects view mode availability dynamic based on project selection
- Ensure filtered tasks are recomputed when navigating between views
- Clean up trailing commas for code consistency
Integrate sorting functionality into FluentDataManager:
- Apply global and view-specific sort criteria to filtered tasks
- Add event listeners for view config and settings changes to trigger resort
- Ensure sorting updates occur on configuration modifications
Also update task dependency badge styling to use neutral colors instead of error colors for better visual clarity.
Fix three critical issues in FluentTaskView filtering system:
1. Filter button state loading: Remove incorrect onLayoutReady wrapper
that only fired once during initial layout. Now uses direct setTimeout
to load filter state every time popover is opened.
2. Flickering during filtering: Add 150ms debounced handleFilterChanged
method to prevent rapid re-renders. Previously filter changes triggered
2-3 consecutive updates, now consolidated to single update.
3. Projects view filtering: Fix dual-mode filtering where project list
should show all projects (left sidebar) while task list respects
global filter (right panel). Modified ProjectsComponent.setTasks to
accept both tasks and filteredTasks parameters.
Affected files:
- FluentLayoutManager.ts: Fix popover state loading timing
- FluentTaskView.ts: Add debounced filter handler
- FluentComponentManager.ts: Pass both parameters to Projects view
- projects.ts: Support external filtered tasks