- Introduce StatusCycle interface for defining multiple independent task status cycles
- Add priority-based cycle selection (lower number = higher priority)
- Implement status-cycle-resolver utilities for finding applicable cycles and next states
- Add settings migration from legacy single-cycle to multi-cycle format
- Update task cycling commands to support multi-cycle with fallback to legacy mode
- Enhance status switching UI in FluentActionHandlers with cycle-aware menu
- Maintain backward compatibility with existing taskStatusCycle settings
- Add validation and repair utilities for status cycle configurations
- Deprecate taskStatusCycle, taskStatusMarks, and excludeMarksFromCycle settings
The new multi-cycle system allows users to define multiple status workflows
with different priorities, enabling context-specific task state management
while preserving compatibility with existing single-cycle configurations.
Fixed status modification failure caused by incorrect editor plugin
registration sequence. Transaction filters execute in reverse order,
so cycleCompleteStatus must be registered last to execute first,
followed by autoDateManager.
Also improved position mapping in date-manager using tr.changes.mapPos
instead of inverse.mapPos for correct change composition.
- 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