Commit graph

81 commits

Author SHA1 Message Date
callumalpass
f6a1f4f079 support skipped instances in edit modal 2026-06-22 12:15:21 +10:00
callumalpass
81973b9ce7 add occurrence tab to relationships template 2026-06-22 12:14:41 +10:00
callumalpass
3a27991755 document canvas bases companion plugin 2026-06-10 07:10:01 +10:00
callumalpass
ba8047cce5 fix calendar history and recurring note mode 2026-06-10 06:16:26 +10:00
callumalpass
c9e41c1f35 clarify default base file docs 2026-06-08 19:39:53 +10:00
callumalpass
63e1e85499 fix occurrence templates and archived stats 2026-06-08 19:18:42 +10:00
callumalpass
3efe742d41 add headless materialized occurrence APIs 2026-06-03 05:58:01 +10:00
callumalpass
bf5a68019a checkpoint runtime api and companion docs 2026-06-01 19:19:26 +10:00
callumalpass
99cb64e726 Add runtime API and materialized occurrence calendar handling 2026-05-31 22:32:12 +10:00
callumalpass
598315dd9e Document materialized occurrences 2026-05-31 21:48:10 +10:00
callumalpass
3c232ee4d8 add per-status next cycling override 2026-05-18 15:05:53 +10:00
callumalpass
16ad7c83fd Add last day monthly recurrence option 2026-05-18 12:23:16 +10:00
callumalpass
e079c9dd60 Add quick action date presets 2026-05-18 08:28:25 +10:00
callumalpass
7b58399d7b Add project file path folder variables 2026-05-18 06:43:48 +10:00
callumalpass
2e739898e1 Render custom field links on task cards 2026-05-17 07:04:19 +10:00
callumalpass
de6d98955c Open tag and context suggestions on focus 2026-05-17 03:57:30 +10:00
callumalpass
ac394a208f Allow statuses to skip card cycling 2026-05-17 03:52:24 +10:00
callumalpass
98ac1ae26f Support current note task folders 2026-05-17 03:24:53 +10:00
callumalpass
963b4a8dca Clarify inline task creation docs 2026-05-16 17:46:37 +10:00
callumalpass
735706ead4 docs: tighten accuracy, fix cross-links, and consolidate unreleased notes 2026-02-21 13:41:32 +11:00
callumalpass
b0cd74f1ad docs: update docs content and docs build tooling 2026-02-21 08:52:08 +11:00
callumalpass
d6c1f0974a docs: add explanatory context and simplify tone 2026-02-15 15:41:12 +11:00
callumalpass
291184cd56 docs: restructure task management guides and refresh screenshots
Split recurring tasks and reminders content into dedicated pages,
condense existing guides for clarity, and update all documentation
screenshots. Refactor e2e screenshot tests with shared openView()
helper and retry support. Refine MdbaseSpec field types (enum,
datetime, link) and replace MCPService @ts-expect-error workarounds
with bound tool pattern.
2026-02-15 12:10:28 +11:00
callumalpass
45b752101c docs: add comprehensive template variables reference
Consolidates documentation for all 70+ template variables in one
reference document, covering body templates, folder templates, and
filename templates with examples and availability matrix.
2026-01-07 21:18:38 +11:00
callumalpass
119b0fc47b docs: add screenshots to documentation from e2e tests
Add comprehensive screenshots to documentation pages:
- Views: task list, kanban, calendar (month/week/day/year), agenda, mini calendar, pomodoro
- Settings: general, task properties, modal fields, appearance, features, integrations
- Features: task creation modal, task statistics

Also adds e2e/docs-screenshots.spec.ts test suite for generating documentation screenshots.
2025-12-31 09:59:45 +11:00
callumalpass
a03c312884 docs: document default values for custom user fields
Add documentation for the new default value feature in custom user
fields, including the different input formats for each field type and
where defaults are applied during task creation.
2025-12-07 15:26:34 +11:00
callumalpass
5708d3dd9d docs: consolidate and streamline documentation
- Add v3 to v4 migration guide with Bases setup instructions
- Expand core-concepts.md with YAML structure, property types, and methodology examples
- Streamline index.md to be a concise landing page with quickstart
- Remove developer-focused timezone docs (TIMEZONE_HANDLING_*.md)
- Update releases.md to show v4.x as current
- Fix broken relative links in features.md
- Reduce repetition across docs by centralizing Bases info in core-concepts.md
- Consolidate task-management.md recurring tasks and reminders sections
- Simplify features/integrations.md and features/calendar-integration.md
- Reduce task-defaults.md Default Reminders section from 227 to 24 lines
- Add v4/Bases troubleshooting and OAuth calendar troubleshooting sections
- Update troubleshooting.md with current settings paths and GitHub link
- Update calendar-setup.md with Azure manifest redirect URI instructions
2025-12-07 13:03:21 +11:00
callumalpass
779e7cd5f3 refactor(settings): move converted tasks folder setting to General tab
- Move "Folder for converted tasks" from Features to General > Task Storage
- Setting now appears conditionally when instant convert is enabled
- Update description to clarify that empty = use default tasks folder
- Update placeholder to show actual default {{currentNotePath}}
- Update documentation for the reorganized setting
2025-12-07 12:28:09 +11:00
callumalpass
d168644661 refactor: split taskPropertiesTab into modular components
- Extract property card renderers into separate modules:
  - helpers.ts: shared types, NLP trigger helpers, simple/metadata cards
  - statusPropertyCard.ts: status values with drag-drop reordering
  - priorityPropertyCard.ts: priority values with drag-drop reordering
  - projectsPropertyCard.ts: projects with autosuggest filters
  - tagsPropertyCard.ts: native Obsidian tags
  - remindersPropertyCard.ts: default reminder configuration
  - titlePropertyCard.ts: title and filename settings
  - userFieldsCard.ts: custom user fields

- Add Feature Properties section for pomodoros, ICS event ID, and
  ICS event tag (properties not stored in task frontmatter)

- Update documentation to reflect settings reorganization:
  - Task Properties tab now contains property keys, defaults, and NLP triggers
  - Defaults tab redirects to new locations
  - Appearance tab references moved settings
  - Features tab documents body template settings
2025-12-02 10:04:21 +11:00
callumalpass
fe92698b03 Fix: Resolve base template generation issues (#1145, #1156)
- Fix Kanban template missing groupBy property
  * Default Kanban now includes groupBy on status field
  * Resolves error requiring manual group configuration
  * Thanks to @randomness42 and @seepage87 for reporting

- Fix user-defined fields appearing as user:field_xxx in templates
  * Custom fields now use actual property names from settings
  * Also fixed totalTrackedTime to map to timeEntries property
  * Ensures Bases can properly query user-defined fields

- Fix documentation quote escaping in YAML examples
  * Use single quotes for strings containing double quotes
  * Makes examples copyable and syntactically correct

- Remove internal Bases filtering guide
  * Direct users to official Obsidian Bases documentation
  * Eliminates duplicate documentation of Obsidian functionality
2025-11-19 21:25:40 +11:00
callumalpass
5f6a1caedc Docs: Move default base templates to docs/ and add cross-references
Moves the default base templates documentation from obsidian-help to the
main docs folder for better accessibility and maintenance.

Changes:
- Move obsidian-help/en/Bases/Default base templates.md → docs/views/default-base-templates.md
- Update frontmatter to match docs format (add title, remove obsidian-help fields)
- Replace wiki-style links with markdown links to Obsidian help docs
- Update code comment in defaultBasesFiles.ts to reference new path
- Add cross-references from:
  - docs/views.md (Bases Plugin Requirement section)
  - docs/views/task-list.md (Further Reading section)
  - docs/features/filtering-and-views.md (Additional Resources section)
2025-11-19 07:59:04 +11:00
callumalpass
a3621ca01f Docs: Comprehensive v4.0.0 documentation update
Updates documentation to reflect version 4 changes:
- Bases core plugin integration and requirement
- OAuth calendar integration (Google, Microsoft)
- New Bases-based filtering with YAML expressions
- Removed v3 FilterBar UI references
- Added modal fields settings documentation
- Added 4.0.0 release notes
- Updated all feature guides with v4 functionality
2025-11-18 12:57:46 +11:00
Renato Mendonca
7505cc3cf0 docs: add custom field autosuggestion filtering documentation
- Add comprehensive 'File Suggestion Filtering (Advanced)' section to user-fields.md
- Document all filter options: tags, folders, property key/value
- Include step-by-step configuration instructions
- Add 3 practical example configurations (assignee, project, related note)
- Explain filter behavior, AND logic, and visual indicators
- Update task-properties.md with autosuggestion filters overview
- Include CustomFields-Selection-Filter.gif demonstration in both docs
- Add cross-reference links between settings and feature documentation
2025-10-12 19:37:23 +13:00
callumalpass
1bd5127c85 docs: add boolean status values documentation
Add documentation explaining how to use boolean true/false as status
values for compatibility with Obsidian's checkbox properties.
2025-10-08 07:34:45 +11:00
callumalpass
99fa98e360 docs: update documentation for 3.25.x changes
- Add Bases Calendar view documentation
- Document folder template variables for ICS integration
- Add frontmatter markdown links setting
- Add release notes viewer documentation
- Fix markdown list formatting in release notes
2025-10-07 21:27:32 +11:00
callumalpass
249cde274f docs: describe task dependencies 2025-09-28 15:42:14 +10:00
renatomen
052b945b49 docs: add comprehensive subgrouping feature documentation
- Document hierarchical subgrouping in filtering-and-views.md with demo GIF
- Add subgrouping section to task-list.md with usage examples
- Update agenda-view.md to reference subgrouping support
- Enhance features.md overview to mention two-level organization
- Include subgroups.gif demonstration of the feature in action

Provides complete documentation for the new hierarchical subgrouping
functionality that allows two-level task organization across views.
2025-09-18 11:16:31 +00:00
callumalpass
412aa7e3ad update docs 2025-09-16 21:34:58 +10:00
callumalpass
5c1ce1182e Update docs (fix #673) 2025-09-16 21:11:36 +10:00
callumalpass
1232d028ce Add project property filter support 2025-09-16 07:57:33 +10:00
callumalpass
139a5d970f docs: fix documentation inaccuracies and broken navigation links
- Fix project name references from "ChronoSync" to "TaskNotes" in timezone documentation
- Correct broken relative paths in settings and features back navigation links
- Fix incorrect default task tag reference in troubleshooting (task vs #task)
- Clarify time-blocking interaction method in calendar integration
- Fix circular function reference in timezone handling guide

All changes maintain neutral, factual tone and improve technical accuracy.
2025-09-14 10:35:31 +10:00
callumalpass
4e1312f62b docs: update documentation for version 3.23.1 2025-09-13 21:50:39 +10:00
callumalpass
181b378761 feat: migrate project autosuggest to modern settings UI
- Move project autosuggest settings from Misc to Appearance & UI tab
- Use new card-based settings components (createSectionHeader, createToggleSetting, createTextSetting, createHelpText)
- Update documentation references from Settings → Misc to Settings → Appearance & UI
- Update status trigger documentation location to Settings → Features
- Maintain backward compatibility with existing settings structure
2025-09-03 22:25:57 +10:00
renatomen
f0da4b966c docs(autosuggest): enhanced project autosuggester docs with GIF, cards/flags, and demos 2025-09-03 22:22:42 +10:00
callumalpass
cf1ef17ac1 fix: add NLP project support for inline task conversion
- Fix project extraction regex to support hyphens (e.g., +quarterly-review)
- Add support for complex wikilink projects with paths and pipe syntax
- Integrate metadataCache.fileToLinktext() for proper relative link resolution
- Add comprehensive test coverage for all project syntax variations
- Add error handling for test compatibility

Resolves #476
2025-08-31 14:29:06 +10:00
Renato Mendonca
76ad45d1a0
Feat/Implement status auto-suggestion with NLP integration (#512)
* feat: implement status auto-suggestion with NLP integration

What:

Added status auto-suggestion triggered by configurable character (statusSuggestionTrigger setting)

Enhanced NaturalLanguageParser to handle custom status extraction before date parsing

Fixed suggestion dropdown text truncation with CSS improvements

Why:

Often users need to add tasks with a status that differ from the default status. E.g when adding a task that's already in progres.

This featue allows quick status selection during task creation via natural language input

Prevents conflict when parsing status names containing keywords like 'Now' by parsing status before chrono-node date parser

How:

User defined trigger defined in Settings -> Misc. Defaults to "*".

Status parsing disabled if the trigger setting is empty.

Implemented NLPSuggest class extending AbstractInputSuggest for status suggestions

String-based matching;

Uses case-insensitive indexOf() to handle any characters Obsidian properties accept

Processes status configs by length (longest first) to prevent partial matches

Manual boundary checking instead of unreliable regex word boundaries

* docs: add status auto-suggestion documentation

Added documentation for status auto-suggestion feature in task management:
- Updated auto-suggestions list to include status trigger
- Added Status Suggestions section with usage example
- Included visual reference to auto-suggest-status.gif

* test: add status auto-suggestion tests

Added test coverage for status auto-suggestion feature:

TaskCreationModal.status-suggestions.test.ts: Tests for modal integration, trigger configuration, and UI behavior

NaturalLanguageParser.status-extraction.test.ts: Tests for string-based status extraction

## Status Trigger Configuration
• Uses configured status trigger character from settings
• Disables status suggestions when trigger setting is empty
• Supports custom trigger characters beyond default "*"

## Status Suggestion Detection
• Detects status trigger in natural language input field
• Shows status suggestions for partial text matches
• Matches partial input like "*in" to "In Progress" status

## Status Suggestion Behavior
• Inserts status text into textarea when suggestion selected
• Works consistently with other NLP elements (@contexts, #tags, +projects)

## Natural Language Parser Integration
• Extracts status before date parsing to prevent keyword conflicts
• Handles complex status names with special characters and spaces

## String-based Status Matching
• Extracts simple status labels from text input
• Extracts complex status labels containing special characters like "Active = Now"
• Handles status names with parentheses and colons

## Boundary Checking
• Matches status at beginning, middle, and end of text
• Prevents partial word matches within larger words
• Uses proper word boundary detection

## Case Insensitive Matching
• Matches status regardless of text case (UPPER, lower, Mixed)
• Handles mixed case status names consistently

## Error Handling
• Handles missing status configurations gracefully
• Works with empty status configuration arrays

* fix: resolve status suggestion test failures

- Add proper DOM initialization helper for TaskCreationModal tests
- Fix NLP parser test expectations to align with correct date parsing behavior
- Status extraction correctly happens before date parsing to prevent conflicts
- Date expressions like 'tomorrow at 3pm' are properly parsed and removed from title
- All status suggestion tests now pass except for 2 edge cases requiring investigation

* fix: enhance chrono-node mock to properly handle time expressions

Following TDD and testing standards:
- Apply single responsibility principle to mock external dependencies properly
- Mock chrono-node to handle 'tomorrow at 3pm' as complete date expressions
- Add time parsing support for am/pm patterns in test environment
- Ensure mock returns full matched text like real chrono-node
- Fix date text removal to handle complete time expressions correctly

All 20 status extraction tests now pass, confirming:
- Status extraction happens before date parsing (prevents 'Now' conflicts)
- Complete date+time expressions are properly parsed and removed
- Time components are correctly extracted and assigned

* fix: align overlay tests with simplified implementation

Following testing standards to ensure tests expect what's implemented:
- Remove references to removed overlayHideDelay setting and dual-mode behavior
- Remove calls to non-existent clearCursorHideState function
- Update test expectations to match simplified cursor detection logic
- Align tests with actual implementation: cursor within link boundaries hides overlay
- Remove legacy vs immediate mode tests (feature was simplified)

All 21 overlay tests now pass:
- 6/6 debounce tests passing
- 6/6 context menu tests passing
- 9/9 integration tests passing

Tests now accurately reflect the simplified, working implementation.

* refactor: extract status suggestion business logic following code quality standards

Apply Single Responsibility Principle and Dependency Injection:

NEW: StatusSuggestionService
- Extract all status suggestion business logic from TaskCreationModal
- Pure business logic with no UI dependencies - easily testable
- Handles status extraction, suggestions, trigger detection, and text manipulation
- Follows single responsibility: only manages status suggestion logic

REFACTOR: TaskCreationModal
- Add dependency injection for StatusSuggestionService (optional for backward compatibility)
- Use injected service for all status-related operations
- Maintain existing public API while improving internal architecture

TESTS: Comprehensive test coverage
- 23 unit tests for StatusSuggestionService (100% business logic coverage)
- 9 integration tests verifying service integration
- All 32 tests passing - validates functionality separation
- Tests focus on business logic, not complex DOM manipulation

Benefits:
- Business logic separated from UI concerns (Single Responsibility)
- Easy to mock and test (Dependency Injection)
- Fast, reliable tests (no DOM complexity)
- Maintains backward compatibility
- Follows TDD principles with meaningful test coverage

* fix: resolve TypeScript compilation errors

- Fix StatusConfiguration -> StatusConfig type imports across all files
- Add explicit 'as const' assertions for literal union types in TaskCreationModal
- Fix DateContextMenu type guard for showPicker method
- Ensure proper type safety while maintaining functionality

All TypeScript errors resolved, build now succeeds cleanly.

* feat: complete status auto-suggestion feature implementation

FEATURE COMPLETE: Status auto-suggestion on task creation

 Core Implementation:
- StatusSuggestionService with comprehensive business logic
- Natural language parsing with status extraction before date parsing
- Status trigger suggestions (*status) with real-time filtering
- Proper handling of complex status names like 'Active = Now'

 Architecture Improvements:
- Applied Single Responsibility Principle (business logic separated from UI)
- Dependency injection for better testability
- Clean separation of concerns following code quality standards

 Test Coverage:
- 32 comprehensive tests (23 unit + 9 integration)
- 100% business logic test coverage
- All overlay and NLP parser tests passing (62 total tests)
- Enhanced chrono-node mock for realistic date/time parsing

 Technical Fixes:
- TypeScript compilation errors resolved
- Updated to TypeScript 5.9.2 for better type safety
- Fixed type imports and literal union types
- Added backward compatibility stub functions

 Manual Testing Confirmed:
- Status extraction from natural language input working
- Status suggestions with trigger (*) working
- Complex scenarios with dates, contexts, projects working
- Edge cases handled gracefully

The feature is production-ready with clean, maintainable architecture.
2025-08-31 10:35:02 +10:00
Renato Mendonca
ad6d8ceeda
Group/Sort by Custom User Fields - stacked o PR #471 (User Fields Mapping) (#475)
* feat: implement multi-field user properties for dynamic filtering

- Add userFields[] data model with id, key, displayName, type
- Migrate legacy userField to userFields array on load
- Extend FilterOptions with userProperties from settings
- Update FilterBar to include user properties in dropdown
- Add evaluation logic for user:* property conditions
- Create Settings UI for managing multiple user fields
- Add comprehensive unit tests for all components
- Support Text, Number, Date, Boolean, List field types

* fix(settings/user-fields): widen inputs and align layout with Priority section

- Use grid tailored for user-fields (1fr 1fr 160px 80px)
- Make Property Name and Display Name inputs flex to full width
- Standardize type dropdown width; stack neatly on mobile
- Follow existing settings-view patterns for consistency

* feat: add bracket/quote-aware CSV splitting and missing numeric operators

- Add src/utils/stringSplit.ts with splitListPreservingLinksAndQuotes()
  - Single-pass O(n) algorithm preserves commas inside [[...]] and quotes
  - Handles wikilink aliases [[path|alias]] correctly
  - Trims tokens and ignores empty values
- Integrate splitter in FilterService.normalizeUserListValue for string inputs
- Add missing numeric operators: is-greater-than-or-equal, is-less-than-or-equal
  - Update FilterOperator type and FILTER_OPERATORS labels
  - Add support for timeEstimate and user number fields
  - Implement comparison logic in FilterUtils
- Fix instant user field availability in FilterBar after settings changes
  - Invalidate filter options cache in main.saveSettings()
  - Push fresh options to open views in settings.ts
- Add comprehensive unit tests for string splitting and filter normalization
- Fix TypeScript compilation issue with new operator validation

* docs: add comprehensive user fields documentation and examples

- Add User Fields section to Advanced Settings with setup guide
- Document all 5 field types (text, number, date, boolean, list) with examples
- Explain smart list filtering that preserves wikilinks and quotes
- Document numeric intelligence for mixed text-number formats
- Add new comparison operators (equal or greater/less than) to filtering docs
- Include practical filtering examples for custom user fields
- Add technical implementation guide for developers
- Include demonstration GIFs showing list and numeric field filtering
- Update main settings overview to reference user fields feature

* feat(filter): group by custom user fields; add dynamic group dropdown

- Support user: group keys (text/number/boolean/date/list)
- Sorting: date asc, boolean true→false, number desc, others alphabetic
- FilterBar includes user properties from FilterOptions.userProperties
- test: add coverage for boolean/list/date/unknown and FilterBar options

* feat(filtering): add sorting by user fields and wire Sort dropdown; fix grouped user-field header order to follow sort direction; emit immediate query change for sort/group; list empty values sort last

* docs(filtering): add docs for sorting/grouping by custom user fields and embed demo GIF

---------

Co-authored-by: Callum Alpass <callumalpass@gmail.com>
2025-08-24 20:30:14 +10:00
Renato Mendonca
b383904f5f
Feature/Custom User Fields Mapping: Option to filter on your own frontmatter properties (+ smarter list and numeric filtering) (#471)
* feat: implement multi-field user properties for dynamic filtering

- Add userFields[] data model with id, key, displayName, type
- Migrate legacy userField to userFields array on load
- Extend FilterOptions with userProperties from settings
- Update FilterBar to include user properties in dropdown
- Add evaluation logic for user:* property conditions
- Create Settings UI for managing multiple user fields
- Add comprehensive unit tests for all components
- Support Text, Number, Date, Boolean, List field types

* fix(settings/user-fields): widen inputs and align layout with Priority section

- Use grid tailored for user-fields (1fr 1fr 160px 80px)
- Make Property Name and Display Name inputs flex to full width
- Standardize type dropdown width; stack neatly on mobile
- Follow existing settings-view patterns for consistency

* feat: add bracket/quote-aware CSV splitting and missing numeric operators

- Add src/utils/stringSplit.ts with splitListPreservingLinksAndQuotes()
  - Single-pass O(n) algorithm preserves commas inside [[...]] and quotes
  - Handles wikilink aliases [[path|alias]] correctly
  - Trims tokens and ignores empty values
- Integrate splitter in FilterService.normalizeUserListValue for string inputs
- Add missing numeric operators: is-greater-than-or-equal, is-less-than-or-equal
  - Update FilterOperator type and FILTER_OPERATORS labels
  - Add support for timeEstimate and user number fields
  - Implement comparison logic in FilterUtils
- Fix instant user field availability in FilterBar after settings changes
  - Invalidate filter options cache in main.saveSettings()
  - Push fresh options to open views in settings.ts
- Add comprehensive unit tests for string splitting and filter normalization
- Fix TypeScript compilation issue with new operator validation

* docs: add comprehensive user fields documentation and examples

- Add User Fields section to Advanced Settings with setup guide
- Document all 5 field types (text, number, date, boolean, list) with examples
- Explain smart list filtering that preserves wikilinks and quotes
- Document numeric intelligence for mixed text-number formats
- Add new comparison operators (equal or greater/less than) to filtering docs
- Include practical filtering examples for custom user fields
- Add technical implementation guide for developers
- Include demonstration GIFs showing list and numeric field filtering
- Update main settings overview to reference user fields feature
2025-08-24 20:17:51 +10:00
renatomen
1ae94b679f feat(docs): add saved view heading screenshots and agenda collapsible groups demo\n\n- Task List: add screenshots for heading showing saved view name and completed/total\n- Subtasks Widget: add screenshot showing saved view name and counts in widget header\n- Agenda: add GIF demonstrating saved view heading, counts, and collapsible date groups (with Expand/Collapse All)\n- Include assets (PNG/GIF) under docs/assets 2025-08-18 01:32:51 +12:00
Callum Alpass
05511e3251 Merge feature/3.19.1-06-subtask-widget-collapsible-groups 2025-08-17 11:06:51 +10:00