- 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
- Store last used mode in localStorage instead of plugin settings
- Add file mode with frontmatter generation to MinimalQuickCaptureModal
- Include tab switching UI for checkbox/file modes
- Extract tags from content for frontmatter when in file mode
- Persist mode selection across app sessions using localStorage key
- Add all task metadata fields to frontmatter (dates, priority, project, context)
- Add option to write content tags to frontmatter.tags
- Show live preview of file content including frontmatter
- Map checkbox statuses to textual equivalents for frontmatter
- Simplify tag handling to only use content tags when enabled
- 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
- Update subtitle text for better conversational flow
- Remove fixed height from mode-card-preview for flexible content
- Make intro-typing-wrapper responsive with max(900px, 70%)
Replace emoji placeholders with actual preview images for fluent and
legacy modes. Images are loaded from GitHub repository with automatic
theme detection (dark/light variants). Also fix CSS specificity for
mode card styling to ensure proper scoping.
- Add noise texture layer system for visual depth
- Modernize footer with glass morphism and ripple effects
- Improve layout stability during intro animation
- Add mode selection preview images
- Standardize box-shadows to CSS variables across all styles
- Enhance mobile responsiveness and dark theme support
- Add fade-out animation for intro typing lines with configurable delays
- Integrate mode selection directly into intro typing flow
- Fix grid layout and responsive design for mode/placement selection cards
- Remove tg-v2-card dependency in favor of dedicated onboarding styles
- Add visual previews for Fluent and Legacy modes with icons
- Translate UI text from Chinese to English for consistency
- Improve card selection states with proper event handling
- Add flex layouts to ensure proper vertical stacking in cards
Expand onboarding wizard with new interactive steps to guide users
through UI architecture selection:
- Add animated typing intro component with AI-style streaming effect
- Add UI mode selection step (Fluent vs Legacy interface styles)
- Add Fluent placement configuration (Sideleaves vs Inline layout)
- Refactor onboarding flow from 5 to 7 steps with conditional branching
- Apply selected architecture preferences to plugin settings
- Add visual mode classes and enhanced styling support
The new flow allows users to customize their Task Genius experience
during initial setup while maintaining backward compatibility with
existing configurations.
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