mirror of
https://github.com/callumalpass/tasknotes.git
synced 2026-07-22 12:50:26 +00:00
* 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-07-17_21-03-55.png | ||
| 2025-07-17_21-04-24.png | ||
| agenda-collapsible-group-and-item-count.gif | ||
| collapse-expand-all-buttons.gif | ||
| custom-user-fields-list-filter.gif | ||
| custom-user-fields-numeric-filter.gif | ||
| filter-badge-clear-filter-close-filter.gif | ||
| left-task-subtask-chevron.gif | ||
| saved_views_button_collapse_all.gif | ||
| saved_views_button_no_expand_collapse_all.gif | ||
| sort-by-custom-user-fields.gif | ||
| subtask-widget-collapsible-groups.gif | ||
| subtask_view_nam+count+task_count.png | ||
| tasklist-collapsible-groups.gif | ||
| tasklist_filter_name+count_no_filter.png | ||
| tasklist_filter_name+count_with_filter.png | ||