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
- Add comprehensive property mapping system with metadata mappings support
- Implement bidirectional status mapping (symbol to metadata value)
- Add direct frontmatter update capability for Bases entry tasks
- Include default status mappings as fallback for common values
- Deprecate calendar DayView and MonthView components
- Improve property key resolution with custom metadata mappings
- Add debug logging for status conversion troubleshooting
Remove redundant custom date adapter implementations in favor of the DateFnsAdapter exported directly from @taskgenius/calendar library.
- Delete local DateFnsAdapter utility class
- Remove inline NormalizedDateFnsAdapter from calendar component
- Import DateFnsAdapter from @taskgenius/calendar package
- Extend regex patterns to support HH:mm time format in date fields
- Add date-utils with isDateOnly() and formatDateSmart() helpers
- Enhance time-parsing-service to normalize parsed dates with time
- Update WriteAPI and executors to handle date-time patterns
- Add pnpm-workspace.yaml for monorepo configuration
- Move esbuild-plugin-inline-worker to workspace package
- Update package.json to use workspace:* references
- Add workspace-related entries to .gitignore
- 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 multi-cycle status support in ReadModeTextMark with getNextStatusPrimary
- Integrate getAllMarks in status-cycler for multi-cycle mark validation
- Update status-switcher to use multi-cycle configuration with fallback
- Maintain backward compatibility with legacy single-cycle mode
- Ensure consistent status cycling behavior across reading and editing views
- Add public getElement() method to KanbanColumnComponent
- Mark Other column with data attribute to identify it
- Configure Sortable to disallow dropping tasks into Other column (put: false)
- Refactor to use Obsidian's createEl API (ProjectPopover, PlacementStep)
- Improve object literal formatting consistency
- 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.