Add entry documenting the fix for tag parsing false positives where tags
containing "task" (like "pkm-task") were incorrectly identifying notes as
task notes.
- Fix lexical declaration errors by adding proper block scopes to case statements
- Remove unused variables, parameters, and imports across the codebase
- Replace innerHTML usage with safe DOM manipulation methods for security
- Fix unnecessary escape characters in regex patterns
- Resolve invalid 'this' usage in arrow functions
- Fix NodeJS timer type declarations
- Remove unused functions and dead code
- Fix TypeScript @ts-expect-error directive issues
Reduces lint issues from 92 total (41 errors + 51 warnings) to 51 warnings only.
All remaining issues are style preferences rather than actual code problems.
Resolves#766 where tags like "pkm-task" were incorrectly identified as
task tags due to substring matching fallback in tag parsing.
- Add FilterUtils.matchesHierarchicalTagExact() for precise task identification
- Update MinimalNativeCache to use exact matching instead of substring fallback
- Preserve substring matching for filter bar functionality where it's desired
- Only exact matches or hierarchical children (like "task/work") now identify tasks
This prevents notes with tags like "pkm-task", "important-task", etc. from
being incorrectly treated as task notes while maintaining proper hierarchical
tag support.
- Add changelog format comments for consistency
- Simplify section structure to match changelog conventions
- Add thanks to @kmaustral for issue #768 report
- Improve formatting with bullet points for sub-items
- Remove CHANGELOG.md in favor of existing release notes format
- Add unreleased.md to track changes between releases
- Maintains consistency with established docs/releases/ pattern
- Includes #768 calendar fix in unreleased changes
- Add robust time validation in settings UI with debouncing
- Add runtime sanitization in calendar view with safe defaults
- Prevent "Cannot read properties of null (reading 'years')" error
- Fixes issue #768 where calendar view appears empty
Time settings now fallback to safe defaults (00:00:00, 24:00:00, 08:00:00)
when invalid values like "-:00" are detected, ensuring calendar always loads.
The task card widget was appearing on all notes instead of just task notes.
Fixed by using getCachedTaskInfoSync which includes the isTaskFile check,
ensuring the widget only displays for files identified as tasks.
- Add descriptions for dataStorage, notifications, performance, timeTrackingSection, and recurringSection
- Add timeblocking description with Shift+click usage instructions
- Add timeblocking usage text with detailed interaction guide
- Update i18n manifest and state files for proper translation tracking
Implements hierarchical tag matching for Obsidian nested tags where
searching for 't/ef' matches 't/ef/project', 't/ef/task', etc.
Features:
- Hierarchical matching: 't/ef' matches child tags like 't/ef/project'
- Exclusion patterns: '-t/ef/bug' excludes specific tags and children
- Backward compatibility: substring matching preserved for existing filters
Changes:
- Enhanced FilterUtils with hierarchical tag matching logic
- Updated FilterBar tag filtering to support new matching rules
- Enhanced project autosuggester tag filtering
- Improved task identification by tags with hierarchical support
Fixes#584
- Include recurring tasks in overdue section when their scheduled date is past
- For recurring tasks, only check the scheduled date (current instance date)
- Scheduled date updates automatically when recurring task is completed
- Maintains existing behavior for non-recurring tasks (check both due & scheduled)
This addresses the core issue in #557 where overdue recurring tasks were
not appearing in the agenda view at all.
- Add new FilterService methods for handling overdue tasks separately
- Create dedicated overdue section that appears above regular agenda days
- Change view option label from "Show overdue on today" to "Show overdue section"
- Maintain backward compatibility with existing settings
- Add collapsible overdue section with task completion statistics
- Support both grouped and flat agenda view modes
- Add i18n translations for overdue section
Addresses issue #557 - overdue tasks now have their own section instead
of being mixed into today's section, making the agenda view cleaner.
- Add completedDate to TaskSortKey type for sorting support
- Implement getCompletedDateGroup method for proper grouping logic
- Add compareStatuses method for status sorting (from issue #633)
- Add completedDate case to main grouping switch statement
- Add completedDate case to group sorting with chronological order
- Add completedDate sorting case to handle date comparisons
Now users can both group AND sort by completed date, with proper
chronological ordering (newest first) and "Not completed" items
placed at the end.
- Add "completedDate" to TaskGroupKey type definition
- Include completedDate in FilterBar and SubgroupMenuBuilder grouping options
- Add English translation for completed date grouping
- Update i18n manifest and state files
This allows users to group tasks by their completion date to analyze
productivity and see what was accomplished on specific days.
Fixes#430
- Add "status" to TaskSortKey type definition
- Include status in FilterBar sort options for both desktop and mobile interfaces
- Add status sorting translations for all supported languages
Fixes#633
Fix issue where POST /api/tasks returned the original unsanitized
title while the actual task file used a sanitized version. Added
title sanitization to TaskService.createTask() to ensure consistency
between API response and stored content.
- Add sanitizeTitle method to remove problematic characters
- Export sanitizeForFilename for broader use
- Ensure API response matches actual task file content
Fixes#635
Add mock implementation of sanitizeForFilename function to support
testing of title sanitization functionality. This enables proper
testing of the HTTP API task creation response consistency.
Related to #635
- Fix TaskService test mocks to use mockImplementation instead of mockRejectedValue
since updateTaskInfoInCache is now synchronous (no longer async)
- Add eslint-disable no-console comments to remaining console statements in TaskService
- Tests now pass successfully with proper error handling validation
- Add new translation keys for blockedBy, blocked, and blocking fields
- Sync manifest with 1347 keys from en.ts
- Update state for all supported locales (de, es, fr, ja, ru, zh)
- Fixed remaining console statements in WebhookController.ts and PomodoroView.ts
- Removed 6 unnecessary await statements from non-Promise methods
- Cleaned up 18 unused variable declarations and imports
- Fixed 20 non-null assertion warnings with safe alternatives using optional chaining
Progress: reduced from 209 to 97 ESLint problems (112 total issues fixed)
Original PR 747 target: 84 problems (now only 13 problems away!)
Major improvement in code quality and TypeScript safety.
Applied eslint-disable no-console comments to all remaining files from original commit:
- All service files (AutoArchive, AutoExport, Notification, ProjectSubtasks, TaskStats, ViewState)
- Modal files (ICSEvent, ICSNoteCreation, TaskEdit)
- Utility files (MinimalNativeCache, viewOptimizations)
- View files (AdvancedCalendarView)
Progress: reduced from 209 to 151 ESLint problems (58 issues fixed)
Target was 84 problems from original PR, suggesting codebase has grown since then.
- Add eslint-disable no-console comments to PomodoroService.ts, HTTPAPIService.ts, TaskCard.ts
- Fix unused variable warning in ViewPerformanceService.ts
- Progress: reduced from 209 to 169 ESLint problems (40 issues fixed)
Still need to reach original PR's target of 84 total problems.
- Add eslint-disable no-console comments to main.ts, api.ts, base-view-factory.ts, PerformanceMonitor.ts, registration.ts
- Replace require() with ES6 imports in base-view-factory.ts and main.ts
- Remove unnecessary await from non-async updateTaskInfoInCache calls in TaskService.ts
- Progress: reduced from 209 to 176 ESLint problems (33 issues fixed)
Still need to complete remaining fixes to reach original PR's 84 total problems.
Apply Prettier formatting across the entire codebase to improve code
consistency and resolve formatting-related linting issues. This includes
standardizing:
- Tab-based indentation (4 spaces)
- Consistent quote usage
- Trailing commas where appropriate
- Bracket spacing and line breaks
- Import/export formatting
This brings the total linting issues down significantly while maintaining
code readability and establishing a consistent code style foundation.
- Add Prettier with tab-based configuration matching existing EditorConfig
- Install eslint-config-prettier and eslint-plugin-prettier for integration
- Add format and format:check scripts for code formatting
- Update ESLint configuration to integrate with Prettier
This reapplies the Prettier configuration from PR #747 which was previously
reverted, now rebased onto the current main branch with dependency features.