Introduce a new SettingsModal component that provides a full-featured
settings interface using Obsidian's vertical tabs layout pattern.
The modal includes categorized navigation, deep search functionality,
and mobile-responsive design with back navigation.
Key changes:
- Add SettingsModal with searchable settings, category grouping, and
smooth transitions between tabs
- Refactor ProjectSettingsTab with comprehensive documentation and
clearer section organization
- Support boolean metadata values for project detection (uses filename
as project name when `project: true`)
- Integrate settings modal into FluentTopNavigation
- Add corresponding SCSS styles for the modal layout
- Convert all .css files to .scss format
- Add sass and esbuild-sass-plugin dependencies
- Configure esbuild with sassPlugin for SCSS compilation
- Update all component imports from .css to .scss
- Add _variables.scss for shared SCSS variables
- Add native-layout.scss for new layout styles
- Add TimerStatisticsPanel component for displaying active and completed timers
- Implement completed timer history with configurable max records
- Add timer controls (start/pause/resume/stop) to task list and tree views
- Integrate timer auto-start option in quick capture settings
- Add Working On navigation item for viewing active timers
- Refactor timer manager with unified storage abstraction
- Add i18n translations for timer features (en/zh-cn)
- Add timer statistics CSS styles
- Refactor calendar component to use @taskgenius/calendar for month/week/day views
- Add working hours configuration (showWorkingHoursOnly, workingHoursStart/End)
- Fix drag-and-drop date handling for all-day and timed events
- Add handleTGEventResize for event resizing support
- Improve event callback signatures to match library API
- Add NormalizedDateFnsAdapter for date-fns v4 compatibility
- Add cycle selector button in kanban controls to filter by specific status cycle
- Display 'Other' column for tasks not in selected cycle
- Prevent status updates when dragging to Other column (returns null)
- Save cycle selection to localStorage per view
- Add getUnmatchedTasks() to collect tasks outside current cycle
- Update getTasksForStatus() to respect cycle selection
- Add getStatusMarkForColumn() to handle Other column drag prevention
- Add translations for cycle selector UI (en, zh-cn)
- Update kanban styles for cycle selector button
- Update Fluent UI components and styles
- Update status switcher and task grouping logic
- Update read mode text mark handling
- 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.
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 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
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.
- 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
- 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 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 hidden modules configuration UI for views, sidebar components, and features
- Refactor WorkspaceSelector to prevent unnecessary re-renders using updateActiveWorkspaceView
- Add module visibility API methods to WorkspaceManager (isViewHidden, isFeatureHidden, etc.)
- Improve workspace state synchronization with new syncFilterState method and FilterSyncHandlers
- Add DEBUG_MODE toggle to FluentTaskView for better debugging control
- Update gitignore to exclude .codex directory
Breaking changes: None
- Ensure proper JSON serialization when saving cache to localStorage
- Handle string values in sanitizeCachePayload with JSON parsing
- Make app parameter required for all cache operations
- Add debug logging for troubleshooting cache issues
- Add ChangelogView component for displaying release notes
- Implement ChangelogManager to handle version tracking and display logic
- Add changelog cache utility for offline access
- Integrate changelog settings in About tab (toggle to enable/disable)
- Support loading changelog from GitHub releases
- Auto-show changelog on plugin updates (configurable)
- Add dedicated CSS styling for changelog presentation
- Update all imports from QuickCaptureModal to QuickCaptureModalWithSwitch
- Conditionally show clear button only when both file and inline modes are available
- Hide tab container when only one mode is available (aria-hidden attribute)
- Adjust modal height from 750px to 700px for better viewport fit
- Add CSS rule to hide modal title when containing hidden elements
- Clean up formatting and spacing consistency
- Add tabbed interface for Checkbox Tasks and File Tasks configuration
- Introduce FileFilterScopeControls to manage inline vs file task sources
- Create ViewComponent base class for unified view component behaviors
- Improve settings UI with clearer separation of task source types
- Add scope controls to FileFilterManager for granular source management
- Update calendar component formatting and add configOverride support
- Enhance CSS styling for tabbed settings interface
- Fix CSS indentation in fluent-main.css for better readability
- Add .bases-view selector for kanban filters hiding
- Remove explicit boolean type annotations in ProjectList
- Update compiled styles.css
These are non-functional formatting improvements and style consistency
updates that improve code readability without changing behavior.
- Replace complex ViewManager with streamlined registration approach
- Consolidate multiple specialized view classes into unified TaskBasesView
- Upgrade Obsidian API from 1.8.7 to 1.10.0 for latest features
- Add kanban config override support for Bases view integration
- Update file task property mappings to align with dataview standards
- Remove deprecated Bases API version checking from VersionManager
- Add dedicated FluentViewSettings interface separated from experimental
- Move FileTaskView to bases/ directory for better organization
- Update all fluent integration to use fluentView settings
- Add DEVELOPMENT.md with project development guidelines
- Migrate settings with backward compatibility
BREAKING CHANGE: Settings structure changed from experimental.enableFluent
to fluentView.enableFluent (migration handled automatically)
- Move all experimental v2 components to src/components/features/fluent/
- Relocate views from experimental to src/pages/
- Organize base views into src/pages/bases/ subdirectory
- Rename all V2 references to Fluent (classes, CSS, settings)
- Update import paths throughout the codebase
- Consolidate styles into src/styles/fluent/ directory
- Remove experimental backup files
This completes the graduation of the experimental Fluent UI features
into the main codebase structure for better maintainability and
organization.
Refactor onboarding system with improved component lifecycle and enhanced
file filter management. Replace prompt-based interactions with modal dialogs
and add comprehensive autocomplete support.
Key changes:
- Add OnboardingStepComponent base class for consistent lifecycle management
- Introduce FileFilterRuleEditorModal for interactive rule editing
- Replace prompts with modal-based file/folder selection with autocomplete
- Add per-rule scope configuration and inline editing capabilities
- Update view title from "Onboarding" to "Setup" with custom icon
- Extend OnboardingLayout to Component class for better resource management
- Improve UI polish with toggleVisibility and enhanced styling
- Add dedicated styles for sidebar preview component
- Change preview container layout from column to row direction
- Add horizontal scrolling support for wider preview content
- Set fixed width for sidebar preview to maintain proportions
Breaking down the Fluent UI onboarding process into smaller, focused steps
for better user guidance and comprehension:
- Split monolithic Fluent components step into 6 progressive steps
- Add individual step components for each UI section (Overview, Workspace
Selector, Main Navigation, Projects, Other Views, Top Navigation)
- Enhance preview components with interactive selection and focus/dim modes
- Improve visual hierarchy with targeted highlighting for each step
- Add keyboard support and accessibility attributes to preview components
- Fix transition timing to show config check only at appropriate steps
This change provides a more guided and digestible onboarding experience
by presenting UI concepts progressively rather than all at once.
- Remove 25 outdated documentation files from completed refactoring efforts
- Reorder placement options to prioritize inline mode in onboarding
- Fix task item CSS class naming for consistency
- Remove unused content area showcase from fluent components
- Correct sideleaves configuration logic in placement step
- Update onboarding component styles for better visual hierarchy
These changes streamline the codebase by removing completed migration
documentation and improve the onboarding experience with better defaults
and cleaner UI presentation.
- Add FileFilterStep for configuring which files to track tasks in
- Add FluentComponentsStep for selecting UI components to enable
- Create ComponentPreviewFactory for generating dynamic component previews
- Extract dedicated CSS for onboarding components styling
- Improve step separation by removing inline mode selection from intro
- Enhance modularity with clear step boundaries and responsibilities