Split monolithic TaskViewV2 (3207 lines) into 6 focused managers:
- FluentDataManager: data loading and filtering
- FluentLayoutManager: layout, sidebar, details panel, action buttons
- FluentComponentManager: view component orchestration
- FluentActionHandlers: user action handling
- FluentGestureManager: mobile gesture support
- FluentWorkspaceStateManager: state persistence
Key fixes:
- Restore missing DOM layers (tg-v2-main-container, tg-v2-content-wrapper)
- Add action buttons (Details, Capture, Filter, Reset Filter) to header
- Fix project selection to update filter state and trigger events
- Add filter-changed event listener for cross-view filtering
- Prevent double rendering by centralizing updateView calls
Architecture:
- TaskViewV2 is now single source of truth for all state
- Managers are stateless executors that communicate via callbacks
- State flows: Manager executes → Callback → TaskViewV2 updates state
Combine separate forEach loops into a single iteration using spread operator.
Remove redundant length check as forEach safely handles empty arrays.
Also includes minor code formatting improvements for consistency.
- Introduce BaseQuickCaptureModal as foundation for modal variants
- Add mode switching between checkbox and file creation strategies
- Implement MinimalQuickCaptureModalWithSwitch and QuickCaptureModalWithSwitch
- Add FileNameInput component for custom file naming
- Enhance settings with mode persistence and file creation options
- Add configuration for keeping modal open after capture
- Support file name templates and default folder locations
- Update UI with improved styling and mode toggle controls
BREAKING CHANGE: Modal instantiation API has changed to support new mode parameter
Add a new workspace selector component to the settings tab that allows
users to switch between different workspace configurations. The selector
displays the current workspace icon and name, and provides a dropdown
menu to switch between available workspaces.
- Create WorkspaceSettingsSelector component with workspace switching
- Add styling for the workspace selector UI
- Support workspace icon display and hover effects
- Integrate with existing workspace manager
- Enhanced content parsing to properly handle wiki links, nested brackets, and special characters
- Fixed cancelled date positioning to respect content boundaries
- Added comprehensive test coverage for edge cases
- Cancelled dates now correctly place after task content but before metadata (tags, dataview fields)
- Start dates continue to be placed after content before other metadata
- Properly handles URLs with hashtags without confusing them with tags
This builds on PR #463 to provide a more robust solution for date positioning in tasks.
- Fix cancelled date insertion to appear after task content
- Improve content boundary detection for dates and metadata
- Handle wiki links and special characters in task content correctly
- Ensure dates are positioned before tags and dataview fields
- Skip non-task lines (empty lines, regular text) when processing selections
- Detect and move indented content (notes, tags) with parent tasks
- Ensure indented content below tasks moves together as a unit
- Fix child task collection to start after folded content to avoid duplicates
- Return empty availableModes array for two-column views to hide navigation
- Two-column views have their own specialized UI that doesn't require view mode switching
- Also includes import path updates to use alias paths and minor code style improvements
- Fix duplicate filter creation when switching projects
- Remove empty filter groups and validate projectId before creating new filters
- Improve filter reset to properly sync workspace state and UI components
- Fix view refresh after filter clearing by adjusting switchView skip logic
Resolves issues where:
1. Clicking different projects created duplicate filter entries
2. Clearing filters on inbox page didn't refresh data properly
- Fix date interpolation in workspace settings translation
- Add tooltip for disabled delete button on default workspace
- Align v2 nav button items properly with center alignment
- Rename "V2 interface" to "Fluent interface" in settings and notices
- Simplify command and ribbon names by removing redundant "Task Genius" prefix
- Fix icon alignment in navigation by adding center alignment
- Add null check and default return value in getFilterState method
- Call onload() in modal and popover to ensure component initialization
- Prevents potential runtime errors when filter state is not initialized
- Implement mobile drawer with overlay and swipe gestures
- Add touch gesture support for drawer open/close
- Refactor sidebar rail mode for better collapsed state
- Add responsive breakpoints for mobile devices
- Optimize search and navigation UI for small screens
- Add mobile-specific CSS classes and styling
- Improve task details panel layout on mobile
- Add context menu with Open in new tab, Open settings, Copy view options
- Add Hide in sidebar option (limited to Other Views only)
- Add Delete option for custom views
- Support context menu in both expanded and collapsed rail modes
- Use DOM manipulation instead of full re-render for hide/delete actions
- Import ViewConfigModal and TASK_SPECIFIC_VIEW_TYPE for menu functionality
- Add initialization flag to prevent multiple renders during startup
- Implement scheduled update system to batch multiple update requests
- Only hide currently visible component instead of all components
- Apply filters once during initialization instead of multiple times
- Defer initial data load in ReviewComponent to avoid duplicate calls
- Add requestAnimationFrame for smoother scheduled updates
- Track visible component separately from active component
- Reduce redundant switchView calls with smarter update logic
This significantly improves startup performance and eliminates render flashing
- Add hierarchical tree view for projects with expand/collapse functionality
- Implement per-view mode configuration (list, tree, kanban, calendar)
- Add tree/list toggle button to sidebar project header
- Remove FluentFilterPanel component (consolidated elsewhere)
- Store tree expansion state and view preference in local storage
- Enhance ProjectList with tree node structure and level-based rendering
- Update styles for tree view indentation and expand indicators
- Configure available view modes per view type
- Improve FileSourceSettings with better organization
BREAKING CHANGE: FluentFilterPanel component removed - filter functionality moved to view header
- Add configurable availableModes support to TopNavigation
- Hide complete navigation bar when availableModes is empty
- Dynamically show/hide navigation based on view requirements
- Update rendering logic to be conditional on available modes
This improves UI clarity for special views that don't require tab-based navigation
- Add right-click context menu to project items with Edit/Delete options
- Create EditProjectModal for editing project display names and colors
- Support separate display names from internal project names
- Implement project deletion with confirmation dialog
- Disable menu options for task-derived (non-custom) projects
- Add forceRefresh parameter to AutoComplete cache
- Remove searchQuery from workspace persistence to keep it ephemeral
- Clear search input when switching workspaces
- Preserve selectedProject and advanced filters
- Ensure consistent search clearing behavior in all switch scenarios
- Fix workspace filter state not persisting correctly across switches
- Add detailed logging for workspace operations debugging
- Store fluentFilterState separately per workspace to prevent cross-contamination
- Handle default workspace fluentFilterState as workspace-scoped setting
- Save filter state when search query or project selection changes
- Clear cache properly when switching workspaces
- Add console logging to trace filter save/restore operations
- Add WorkspaceManager for handling workspace operations
- Implement filter state persistence per workspace and view
- Add workspace settings UI in settings page with create/rename/delete
- Fix infinite refresh loop by using debounced quiet save
- Store fluentFilterState in workspace overrides for each view
- Add workspace events system for UI synchronization
- Support workspace switching with automatic state restoration
- 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