- 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
Replace unreliable taskStore access with standardized getCachedData() to properly fetch available projects from dataflow API, settings, and path mappings. Also improve ConfirmModal UX by adjusting button order (Cancel left, Confirm right) and removing CTA style from cancel button.
Only auto-collapse sidebar when width ≤ 600px to prevent
unwanted automatic expansion. Also update view icon to use
task-genius icon instead of layout-dashboard.
Replace console.log with Notice API when no filter categories are
available, providing better user feedback. Remove unused
showTagSelectorAtCursor method from quick capture modal and apply
code formatting improvements across filter and quick-capture
components.
Replace direct localStorage calls with app.saveLocalStorage() and
app.loadLocalStorage() across components for better integration with
Obsidian's data management system. This affects workspace state
management, timer storage, project view preferences, and tree component
state persistence.
Also enhanced fluent navigation to include scheduledDate in overdue
detection and added ability to navigate directly to task files when
clicking overdue notifications.
- Add snapshot-based filter state capture to prevent state corruption
- Implement immediate save for critical workspace operations
- Add recursive save protection with isSaving flag
- Introduce WORKSPACE_ONLY_KEYS for keys that never merge globally
- Add component visibility controls for sidebar sections
- Improve cache management with targeted invalidation
- Add activeViewId tracking for better view restoration
- Enhance error handling with user-facing notices
- Add backward compatibility for legacy sidebar component IDs
- Remove unnecessary void keywords from async function calls
- Standardize code formatting with consistent trailing commas
- Add date operation utilities for task date management
- Add TextPromptModal component for user input
- Enhance FluentActionHandlers with improved task update handling
Add support for two distinct projects view modes:
- Projects overview: displays all projects with ProjectsComponent, disables
ProjectList to prevent conflicting navigation
- Single project: shows filtered tasks for selected project using
ContentComponent, keeps ProjectList enabled
When navigating to projects view from Other Views menu, project selection
and filters are cleared to enable overview mode. ProjectList interaction
is controlled via CSS class and visual feedback.
Changes:
- FluentSidebar: remove projects exclusion, add setProjectListEnabled()
- ProjectList: add setEnabled() method for controlling interaction state
- FluentTaskView: clear selection on projects navigation, control list state
- FluentComponentManager: switch components based on project selection
- fluent-main.css: add disabled project list styles
- Switch all imports to use QuickCaptureModalWithSwitch consistently
- Make timeParsingService public in QuickCaptureModalWithSwitch for test access
- Apply consistent code formatting (Prettier)
- Fix add project button placement in ProjectList (move from scrollArea to containerEl)
- Improve UI element creation in FluentSidebar using text parameter
- Add per-view view mode persistence to remember mode for each navigation item
- Make workspace side leaves optional with default disabled
- Improve project filtering with normalized comparison logic
- Expose dataflow orchestrator early for event subscription
- Enhance type safety across fluent components
- Add missing event listeners for cache updates in ProjectList
- Add BATCH_OPERATION_START/COMPLETE events
- Pause view updates during batch operations
- Refresh view once after batch operation completes
- Add payload type definitions for type safety
Comprehensive refactoring to improve naming consistency and code quality:
- Rename all "V2" references to "fluent" across codebase
- Update CHANGELOG-BETA.md to use "fluent" scope consistently
- Update comments and documentation from "V2" to "fluent"
- Improve FluentTopNavigation notification count updates:
- Add async notification count loading to prevent UI blocking
- Add event listeners for CACHE_READY and TASK_CACHE_UPDATED
- Improve error handling for notification updates
- Fix ProjectDataCache to use ProjectConfigManager settings
- Improve type safety with explicit imports and type annotations
- Code formatting and cleanup across fluent components
- Remove unnecessary type casts and improve type definitions
This refactoring improves code readability and maintainability while
preserving all existing functionality.
Add comprehensive task selection and bulk operation capabilities:
- Add TaskSelectionManager for managing task selection state
- Add LongPressDetector for mobile gesture support
- Add BulkOperationsMenu with operations for selected tasks
- Support shift-click and ctrl-click for multi-selection
- Support long-press on mobile to enter selection mode
- Add visual feedback for selected tasks with highlighting
- Add floating badge showing selected task count
- Add write queue in WriteAPI to prevent concurrent writes
- Add updateTasksSequentially API for batch task updates
- Integrate selection manager into task list and tree views
Bulk operations supported:
- Set due date (absolute or relative offset)
- Set start date
- Set priority
- Add/remove tags
- Set status
- Archive tasks
- Delete tasks
New files:
- src/components/features/task/selection/TaskSelectionManager.ts
- src/components/features/task/selection/LongPressDetector.ts
- src/components/features/task/view/BulkOperationsMenu.ts
- src/styles/task-selection.css
- src/types/selection.d.ts
Add color picker to workspace creation and rename modals, allowing
users to assign custom colors to workspaces for better visual
distinction. Colors are displayed on workspace icons throughout
the interface.
Additional improvements:
- Improve async/await error handling in Orchestrator, FileSource,
and IcsSource initialization
- Add ensureHiddenModulesInitialized method for safer module
visibility configuration
- Optimize view mode changes to prevent unnecessary re-renders
when clicking the same navigation tab
- Add PR template with standardized sections for contributions
- Include CLA acknowledgment checkbox in PR checklist
- Add type of change and related issues sections
- Add CLA section to DEVELOPMENT.md with contributor guidelines
- Update README.md with license information and version badge
- Add reference to FSL-1.1-ALv2 license
- Clarify component reusability for developers
- Add Functional Source License 1.1 with Apache License 2.0 future grant
- Add Contributor License Agreement (CLA) for contributors
- License allows free use while protecting against competing commercial uses
- CLA grants necessary rights for dual licensing model
- Fix async handling in hidden modules toggle with proper error recovery
- Add type imports for SidebarComponentType and FeatureComponentType
- Refactor module visibility toggle to use workspace manager API methods
- Add try-catch-finally structure to FluentTaskView initialization
- Enhance error handling and logging in view initialization
- Add DEBUG_MODE configuration for conditional logging
- Improve state refresh after module visibility changes