@brainfile/cli 0.9.1 → 0.9.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +12 -0
- package/README.md +10 -0
- package/dist/tui/BrainfileTUI.d.ts.map +1 -1
- package/dist/tui/BrainfileTUI.js +9 -10
- package/dist/tui/BrainfileTUI.js.map +1 -1
- package/dist/tui/components/HelpOverlay.d.ts.map +1 -1
- package/dist/tui/components/HelpOverlay.js +8 -2
- package/dist/tui/components/HelpOverlay.js.map +1 -1
- package/dist/tui/components/SearchBar.d.ts +2 -1
- package/dist/tui/components/SearchBar.d.ts.map +1 -1
- package/dist/tui/components/SearchBar.js +23 -9
- package/dist/tui/components/SearchBar.js.map +1 -1
- package/dist/tui/index.d.ts +2 -1
- package/dist/tui/index.d.ts.map +1 -1
- package/dist/tui/index.js +3 -1
- package/dist/tui/index.js.map +1 -1
- package/dist/tui/utils.d.ts +20 -0
- package/dist/tui/utils.d.ts.map +1 -1
- package/dist/tui/utils.js +115 -0
- package/dist/tui/utils.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,18 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [0.9.2] - 2025-11-26
|
|
11
|
+
|
|
12
|
+
### Added
|
|
13
|
+
- **Advanced search filters** - Filter tasks using structured queries
|
|
14
|
+
- `p:high` or `priority:critical` - Filter by priority
|
|
15
|
+
- `#tag` or `t:bug` - Filter by tag
|
|
16
|
+
- `@john` or `assignee:john` - Filter by assignee
|
|
17
|
+
- `due:overdue`, `due:today`, `due:week`, `due:month` - Filter by due date
|
|
18
|
+
- Combine filters with text search: `p:high #bug fix login`
|
|
19
|
+
- **Filter hints in search bar** - Shows available filters when search is empty
|
|
20
|
+
- **Updated help overlay** - Documents filter syntax
|
|
21
|
+
|
|
10
22
|
## [0.9.1] - 2025-11-26
|
|
11
23
|
|
|
12
24
|
### Fixed
|
package/README.md
CHANGED
|
@@ -60,6 +60,16 @@ brainfile ./path/to/file.md # Open specific file
|
|
|
60
60
|
| `r` | Refresh |
|
|
61
61
|
| `q` | Quit |
|
|
62
62
|
|
|
63
|
+
**Search Filters:**
|
|
64
|
+
| Filter | Example | Description |
|
|
65
|
+
|--------|---------|-------------|
|
|
66
|
+
| Priority | `p:high` | Filter by priority |
|
|
67
|
+
| Tag | `#bug` or `t:feature` | Filter by tag |
|
|
68
|
+
| Assignee | `@john` | Filter by assignee |
|
|
69
|
+
| Due date | `due:week` | `overdue`, `today`, `week`, `month` |
|
|
70
|
+
|
|
71
|
+
Combine filters with text: `p:high #bug login issue`
|
|
72
|
+
|
|
63
73
|
**Task Management:**
|
|
64
74
|
| Key | Action |
|
|
65
75
|
|-----|--------|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrainfileTUI.d.ts","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"BrainfileTUI.d.ts","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAuC,MAAM,OAAO,CAAC;AAK5D,OAAO,KAAK,EAAY,QAAQ,EAAE,MAAM,YAAY,CAAC;AA2CrD,wBAAgB,YAAY,CAAC,EAAE,QAAQ,EAAE,EAAE,QAAQ,qBA0OlD"}
|
package/dist/tui/BrainfileTUI.js
CHANGED
|
@@ -40,6 +40,7 @@ const theme_js_1 = require("./theme.js");
|
|
|
40
40
|
const types_js_1 = require("./types.js");
|
|
41
41
|
const useBrainfileLoader_js_1 = require("./hooks/useBrainfileLoader.js");
|
|
42
42
|
const useKeyboardNavigation_js_1 = require("./hooks/useKeyboardNavigation.js");
|
|
43
|
+
const utils_js_1 = require("./utils.js");
|
|
43
44
|
const index_js_1 = require("./components/index.js");
|
|
44
45
|
const initialState = {
|
|
45
46
|
board: null,
|
|
@@ -95,24 +96,22 @@ function BrainfileTUI({ filePath }) {
|
|
|
95
96
|
return orderA - orderB;
|
|
96
97
|
});
|
|
97
98
|
}, [state.board]);
|
|
98
|
-
// Filtered columns based on search
|
|
99
|
-
const searchQuery = state.searchQuery.trim()
|
|
99
|
+
// Filtered columns based on search with structured filters
|
|
100
|
+
const searchQuery = state.searchQuery.trim();
|
|
101
|
+
const parsedSearch = (0, react_1.useMemo)(() => (0, utils_js_1.parseSearchQuery)(searchQuery), [searchQuery]);
|
|
102
|
+
const hasActiveFilter = searchQuery.length > 0;
|
|
100
103
|
const filteredColumns = (0, react_1.useMemo)(() => {
|
|
101
104
|
if (!orderedColumns.length)
|
|
102
105
|
return [];
|
|
103
|
-
if (!
|
|
106
|
+
if (!hasActiveFilter)
|
|
104
107
|
return orderedColumns;
|
|
105
108
|
return orderedColumns.map(col => ({
|
|
106
109
|
...col,
|
|
107
|
-
tasks: col.tasks.filter(task =>
|
|
108
|
-
task.id.toLowerCase().includes(searchQuery) ||
|
|
109
|
-
task.tags?.some(t => t.toLowerCase().includes(searchQuery)) ||
|
|
110
|
-
task.priority?.toLowerCase().includes(searchQuery) ||
|
|
111
|
-
task.description?.toLowerCase().includes(searchQuery)),
|
|
110
|
+
tasks: col.tasks.filter(task => (0, utils_js_1.taskMatchesFilter)(task, parsedSearch)),
|
|
112
111
|
})).filter(col => col.tasks.length > 0);
|
|
113
|
-
}, [orderedColumns,
|
|
112
|
+
}, [orderedColumns, hasActiveFilter, parsedSearch]);
|
|
114
113
|
// Check if search has no results
|
|
115
|
-
const hasNoSearchResults =
|
|
114
|
+
const hasNoSearchResults = hasActiveFilter && filteredColumns.length === 0;
|
|
116
115
|
// Current column and its tasks
|
|
117
116
|
const currentColumn = filteredColumns[state.activeColumnIndex];
|
|
118
117
|
const currentTasks = currentColumn?.tasks || [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BrainfileTUI.js","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"BrainfileTUI.js","sourceRoot":"","sources":["../../src/tui/BrainfileTUI.tsx"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAgDA,oCA0OC;AA1RD,+CAA4D;AAC5D,6BAA2C;AAG3C,yCAA0C;AAE1C,yCAAsD;AACtD,yEAAmE;AACnE,+EAAyE;AACzE,yCAAiE;AACjE,oDAa+B;AAI/B,MAAM,YAAY,GAAa;IAC7B,KAAK,EAAE,IAAI;IACX,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI,IAAI,EAAE;IACvB,iBAAiB,EAAE,CAAC;IACpB,iBAAiB,EAAE,CAAC;IACpB,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,EAAE;IACf,eAAe,EAAE,IAAI,GAAG,EAAE;IAC1B,WAAW,EAAE,KAAK;IAClB,eAAe,EAAE,IAAI;IACrB,aAAa,EAAE,IAAI;IACnB,eAAe,EAAE,CAAC;IAClB,oBAAoB,EAAE,CAAC;IACvB,YAAY,EAAE,EAAE;CACjB,CAAC;AAEF,8BAA8B;AAC9B,MAAM,SAAS,GAAG,EAAE,CAAC;AACrB,MAAM,UAAU,GAAG,EAAE,CAAC;AAEtB,SAAgB,YAAY,CAAC,EAAE,QAAQ,EAAY;IACjD,MAAM,EAAE,MAAM,EAAE,GAAG,IAAA,eAAS,GAAE,CAAC;IAC/B,MAAM,SAAS,GAAG,MAAM,EAAE,OAAO,IAAI,OAAO,CAAC,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC;IAClE,MAAM,UAAU,GAAG,MAAM,EAAE,IAAI,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;IAE7D,MAAM,CAAC,KAAK,EAAE,QAAQ,CAAC,GAAG,IAAA,gBAAQ,EAAW,YAAY,CAAC,CAAC;IAE3D,8BAA8B;IAC9B,IAAI,SAAS,GAAG,SAAS,IAAI,UAAU,GAAG,UAAU,EAAE,CAAC;QACrD,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC;YACpC,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,KAAK,EAAE,IAAI,+BAA0B;YAC1D,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa;;gBACjB,SAAS;;gBAAG,UAAU,CAChC;YACP,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa;;gBACjB,SAAS;;gBAAG,UAAU,CAChC;YACP,8BAAC,SAAG,IAAC,SAAS,EAAE,CAAC;gBACf,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS,wCAA0C,CACpE,CACF,CACP,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,GAAG,sBAAW,GAAG,sBAAW,EAAE,CAAC,CAAC,CAAC;IAE3E,uCAAuC;IACvC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,0CAAkB,EAAC,QAAQ,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IAExE,yDAAyD;IACzD,MAAM,cAAc,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QAClC,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,gBAAgB,CAAC;YAClD,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,IAAI,MAAM,CAAC,gBAAgB,CAAC;YAClD,OAAO,MAAM,GAAG,MAAM,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAElB,2DAA2D;IAC3D,MAAM,WAAW,GAAG,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,CAAC;IAC7C,MAAM,YAAY,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE,CAAC,IAAA,2BAAgB,EAAC,WAAW,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IACjF,MAAM,eAAe,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC;IAE/C,MAAM,eAAe,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACnC,IAAI,CAAC,cAAc,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QACtC,IAAI,CAAC,eAAe;YAAE,OAAO,cAAc,CAAC;QAE5C,OAAO,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAChC,GAAG,GAAG;YACN,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAA,4BAAiB,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;SACvE,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC1C,CAAC,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;IAEpD,iCAAiC;IACjC,MAAM,kBAAkB,GAAG,eAAe,IAAI,eAAe,CAAC,MAAM,KAAK,CAAC,CAAC;IAE3E,+BAA+B;IAC/B,MAAM,aAAa,GAAG,eAAe,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC/D,MAAM,YAAY,GAAG,aAAa,EAAE,KAAK,IAAI,EAAE,CAAC;IAChD,MAAM,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;IAC1D,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAE1D,2BAA2B;IAC3B,IAAA,iBAAS,EAAC,GAAG,EAAE;QACb,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAChB,GAAG,IAAI;YACP,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;YAC5F,iBAAiB,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC;SAClE,CAAC,CAAC,CAAC;IACN,CAAC,EAAE,CAAC,eAAe,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC;IAE3C,kBAAkB;IAClB,MAAM,KAAK,GAAG,IAAA,eAAO,EAAC,GAAG,EAAE;QACzB,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,EAAE,CAAC;QAE9D,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAClF,MAAM,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC,CAAC;QACzG,MAAM,IAAI,GAAG,OAAO,EAAE,KAAK,CAAC,MAAM,IAAI,CAAC,CAAC;QACxC,MAAM,UAAU,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,IAAI,GAAG,KAAK,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QAEpE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC;IACrC,CAAC,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC;IAElB,sBAAsB;IACtB,IAAA,gDAAqB,EAAC;QACpB,KAAK;QACL,QAAQ;QACR,YAAY;QACZ,YAAY;QACZ,qBAAqB,EAAE,eAAe,CAAC,MAAM;QAC7C,cAAc;QACd,aAAa;QACb,QAAQ;QACR,UAAU,EAAE,cAAc;KAC3B,CAAC,CAAC;IAEH,cAAc;IACd,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;QAChB,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,OAAO,EAAE,CAAC;YACpC,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,KAAK,EAAE,IAAI,kBAAa;YAC7C,8BAAC,SAAG,IAAC,SAAS,EAAE,CAAC;gBACf,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,IAAG,KAAK,CAAC,KAAK,CAAQ,CACpD;YACN,8BAAC,SAAG,IAAC,SAAS,EAAE,CAAC;gBACf,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS;;oBAAQ,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM,QAAU;;oBAAU,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM,QAAU;gCAAgB,CACtI,CACF,CACP,CAAC;IACJ,CAAC;IAED,gBAAgB;IAChB,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CACL,8BAAC,SAAG,IAAC,OAAO,EAAE,CAAC;YACb,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS,iBAAmB,CAC7C,CACP,CAAC;IACJ,CAAC;IAED,eAAe;IACf,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;QAC1B,OAAO,8BAAC,sBAAW,IAAC,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,GAAI,CAAC;IACvE,CAAC;IAED,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,KAAK,EAAE,SAAS,EAAE,MAAM,EAAE,UAAU;QAE9D,8BAAC,iBAAM,IACL,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,KAAK,IAAI,WAAW,EACvC,KAAK,EAAE,KAAK,EACZ,WAAW,EAAE,KAAK,CAAC,WAAW,GAC9B;QAGF,8BAAC,sBAAW,IAAC,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,GAAI;QAG1E,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,CAC1B,8BAAC,oBAAS,IAAC,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,KAAK,EAAE,SAAS,GAAG,CAAC,GAAI,CAC9D;QAGD,8BAAC,qBAAU,IACT,OAAO,EAAE,eAAe,EACxB,WAAW,EAAE,KAAK,CAAC,iBAAiB,EACpC,SAAS,EAAE,SAAS,GACpB;QAGF,8BAAC,SAAG,IAAC,WAAW,EAAE,CAAC;YACjB,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM,IAAG,cAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAQ,CACnF;QAGN,8BAAC,SAAG,IAAC,QAAQ,EAAE,CAAC,EAAE,aAAa,EAAC,QAAQ;YAErC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,WAAW,IAAI,CACvC,8BAAC,sBAAW,IACV,OAAO,EAAE,cAAc,EACvB,aAAa,EAAE,KAAK,CAAC,eAAe,EACpC,SAAS,EAAE,WAAW,CAAC,KAAK,EAC5B,SAAS,EAAE,SAAS,GACpB,CACH;YAEA,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,WAAW,IAAI,CACjD,8BAAC,+BAAoB,IACnB,MAAM,EAAE,WAAW,CAAC,EAAE,EACtB,SAAS,EAAE,WAAW,CAAC,KAAK,EAC5B,SAAS,EAAE,SAAS,GACpB,CACH;YAEA,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,WAAW,IAAI,CAC1C,8BAAC,yBAAc,IACb,IAAI,EAAE,WAAW,EACjB,aAAa,EAAE,KAAK,CAAC,oBAAoB,EACzC,SAAS,EAAE,SAAS,GACpB,CACH;YAEA,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,CAC5B,8BAAC,yBAAc,IACb,KAAK,EAAE,KAAK,CAAC,YAAY,EACzB,UAAU,EAAE,aAAa,EAAE,KAAK,IAAI,SAAS,EAC7C,SAAS,EAAE,SAAS,GACpB,CACH;YAGA,kBAAkB,IAAI,CACrB,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,QAAQ,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC;gBAClD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa;;oBAChB,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,IAAI,IAAG,KAAK,CAAC,WAAW,CAAQ;yBAChE;gBACP,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS,gCAAkC,CAC5D,CACP;YAGA,CAAC,kBAAkB,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,IAAI,KAAK,SAAS,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,CAC3I,8BAAC,mBAAQ,IACP,KAAK,EAAE,YAAY,EACnB,aAAa,EAAE,KAAK,CAAC,iBAAiB,EACtC,WAAW,EAAE,KAAK,CAAC,eAAe,EAClC,cAAc,EAAE,cAAc,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EAClE,SAAS,EAAE,SAAS,GACpB,CACH,CACG;QAGN,8BAAC,SAAG,IAAC,WAAW,EAAE,CAAC;YACjB,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM,IAAG,cAAG,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,CAAQ,CACnF;QAGL,KAAK,CAAC,aAAa,IAAI,CACtB,8BAAC,+BAAoB,IAAC,OAAO,EAAE,KAAK,CAAC,aAAa,GAAI,CACvD;QAGD,8BAAC,oBAAS,IACR,IAAI,EAAE,KAAK,CAAC,IAAI,EAChB,UAAU,EAAE,aAAa,EAAE,KAAK,IAAI,EAAE,EACtC,SAAS,EAAE,KAAK,CAAC,iBAAiB,GAAG,CAAC,EACtC,SAAS,EAAE,YAAY,CAAC,MAAM,EAC9B,SAAS,EAAE,SAAS,GACpB,CACE,CACP,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelpOverlay.d.ts","sourceRoot":"","sources":["../../../src/tui/components/HelpOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"HelpOverlay.d.ts","sourceRoot":"","sources":["../../../src/tui/components/HelpOverlay.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,gBAAgB;IAC/B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,EAAE,gBAAgB,qBAqFtE"}
|
|
@@ -27,9 +27,15 @@ function HelpOverlay({ termWidth, termHeight }) {
|
|
|
27
27
|
react_1.default.createElement(ink_1.Box, { marginTop: 1 },
|
|
28
28
|
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent, bold: true }, "View")),
|
|
29
29
|
react_1.default.createElement(HelpRow, { k: "ENTER", desc: "Expand/collapse" }),
|
|
30
|
-
react_1.default.createElement(HelpRow, { k: "/", desc: "Search" }),
|
|
30
|
+
react_1.default.createElement(HelpRow, { k: "/", desc: "Search/filter" }),
|
|
31
31
|
react_1.default.createElement(HelpRow, { k: "r", desc: "Refresh" }),
|
|
32
|
-
react_1.default.createElement(HelpRow, { k: "ESC", desc: "Clear/close" })
|
|
32
|
+
react_1.default.createElement(HelpRow, { k: "ESC", desc: "Clear/close" }),
|
|
33
|
+
react_1.default.createElement(ink_1.Box, { marginTop: 1 },
|
|
34
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent, bold: true }, "Filters")),
|
|
35
|
+
react_1.default.createElement(HelpRow, { k: "p:high", desc: "By priority" }),
|
|
36
|
+
react_1.default.createElement(HelpRow, { k: "#tag", desc: "By tag" }),
|
|
37
|
+
react_1.default.createElement(HelpRow, { k: "@name", desc: "By assignee" }),
|
|
38
|
+
react_1.default.createElement(HelpRow, { k: "due:week", desc: "By due date" })),
|
|
33
39
|
react_1.default.createElement(ink_1.Box, { flexDirection: "column" },
|
|
34
40
|
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent, bold: true }, "Tasks"),
|
|
35
41
|
react_1.default.createElement(HelpRow, { k: "n", desc: "New task (quick)" }),
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HelpOverlay.js","sourceRoot":"","sources":["../../../src/tui/components/HelpOverlay.tsx"],"names":[],"mappings":";;;;;AASA,
|
|
1
|
+
{"version":3,"file":"HelpOverlay.js","sourceRoot":"","sources":["../../../src/tui/components/HelpOverlay.tsx"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@ import React from 'react';
|
|
|
2
2
|
export interface SearchBarProps {
|
|
3
3
|
query: string;
|
|
4
4
|
width: number;
|
|
5
|
+
showHints?: boolean;
|
|
5
6
|
}
|
|
6
|
-
export declare function SearchBar({ query, width }: SearchBarProps): React.JSX.Element;
|
|
7
|
+
export declare function SearchBar({ query, width, showHints }: SearchBarProps): React.JSX.Element;
|
|
7
8
|
//# sourceMappingURL=SearchBar.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/SearchBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"SearchBar.d.ts","sourceRoot":"","sources":["../../../src/tui/components/SearchBar.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAI1B,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,wBAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAgB,EAAE,EAAE,cAAc,qBA8B3E"}
|
|
@@ -7,16 +7,30 @@ exports.SearchBar = SearchBar;
|
|
|
7
7
|
const react_1 = __importDefault(require("react"));
|
|
8
8
|
const ink_1 = require("ink");
|
|
9
9
|
const theme_js_1 = require("../theme.js");
|
|
10
|
-
function SearchBar({ query, width }) {
|
|
10
|
+
function SearchBar({ query, width, showHints = true }) {
|
|
11
11
|
const inputWidth = Math.min(width - 6, 60);
|
|
12
12
|
const displayQuery = query.padEnd(inputWidth, ' ').slice(0, inputWidth);
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
13
|
+
// Show hints when query is empty
|
|
14
|
+
const showFilterHints = showHints && query.length === 0;
|
|
15
|
+
return (react_1.default.createElement(ink_1.Box, { flexDirection: "column", paddingLeft: 1, marginTop: 0 },
|
|
16
|
+
react_1.default.createElement(ink_1.Box, null,
|
|
17
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.accent },
|
|
18
|
+
theme_js_1.ICONS.search,
|
|
19
|
+
" "),
|
|
20
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.text, backgroundColor: theme_js_1.PALETTE.bgHighlight },
|
|
21
|
+
" ",
|
|
22
|
+
displayQuery,
|
|
23
|
+
" ")),
|
|
24
|
+
showFilterHints && (react_1.default.createElement(ink_1.Box, { marginTop: 0, marginLeft: 3 },
|
|
25
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textMuted },
|
|
26
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "filters: "),
|
|
27
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "p:"),
|
|
28
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "priority "),
|
|
29
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "#"),
|
|
30
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "tag "),
|
|
31
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "@"),
|
|
32
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "assignee "),
|
|
33
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textSecondary }, "due:"),
|
|
34
|
+
react_1.default.createElement(ink_1.Text, { color: theme_js_1.PALETTE.textDim }, "overdue|today|week"))))));
|
|
21
35
|
}
|
|
22
36
|
//# sourceMappingURL=SearchBar.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SearchBar.js","sourceRoot":"","sources":["../../../src/tui/components/SearchBar.tsx"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"SearchBar.js","sourceRoot":"","sources":["../../../src/tui/components/SearchBar.tsx"],"names":[],"mappings":";;;;;AAUA,8BA8BC;AAxCD,kDAA0B;AAC1B,6BAAgC;AAChC,0CAA6C;AAQ7C,SAAgB,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,GAAG,IAAI,EAAkB;IAC1E,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC;IAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,UAAU,CAAC,CAAC;IAExE,iCAAiC;IACjC,MAAM,eAAe,GAAG,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC;IAExD,OAAO,CACL,8BAAC,SAAG,IAAC,aAAa,EAAC,QAAQ,EAAC,WAAW,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC;QACtD,8BAAC,SAAG;YACF,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,MAAM;gBAAG,gBAAK,CAAC,MAAM;oBAAS;YACnD,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,IAAI,EAAE,eAAe,EAAE,kBAAO,CAAC,WAAW;;gBAAI,YAAY;oBAAS,CACpF;QACL,eAAe,IAAI,CAClB,8BAAC,SAAG,IAAC,SAAS,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC;YAC9B,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,SAAS;gBAC5B,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,gBAAkB;gBAC9C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,SAAW;gBAC7C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,gBAAkB;gBAC9C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,QAAU;gBAC5C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,WAAa;gBACzC,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,QAAU;gBAC5C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,gBAAkB;gBAC9C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,aAAa,WAAa;gBAC/C,8BAAC,UAAI,IAAC,KAAK,EAAE,kBAAO,CAAC,OAAO,yBAA2B,CAClD,CACH,CACP,CACG,CACP,CAAC;AACJ,CAAC"}
|
package/dist/tui/index.d.ts
CHANGED
|
@@ -2,7 +2,8 @@ export { BrainfileTUI } from './BrainfileTUI.js';
|
|
|
2
2
|
export { PALETTE, BOX, BORDERS, SPACING, ICONS } from './theme.js';
|
|
3
3
|
export type { AppState, ViewMode, BoardColumn, TUIProps } from './types.js';
|
|
4
4
|
export { HEADER_ROWS, FOOTER_ROWS } from './types.js';
|
|
5
|
-
export { truncate, getPriorityColor } from './utils.js';
|
|
5
|
+
export { truncate, getPriorityColor, parseSearchQuery, taskMatchesFilter } from './utils.js';
|
|
6
|
+
export type { ParsedSearch } from './utils.js';
|
|
6
7
|
export { useBrainfileLoader } from './hooks/useBrainfileLoader.js';
|
|
7
8
|
export { useKeyboardNavigation } from './hooks/useKeyboardNavigation.js';
|
|
8
9
|
export { Header, ProgressBar, SearchBar, ColumnTabs, TaskCard, TaskList, StatusBar, HelpOverlay, } from './components/index.js';
|
package/dist/tui/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAGjD,OAAO,EAAE,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAGnE,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAC5E,OAAO,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAGtD,OAAO,EAAE,QAAQ,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAC7F,YAAY,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAC;AACnE,OAAO,EAAE,qBAAqB,EAAE,MAAM,kCAAkC,CAAC;AAGzE,OAAO,EACL,MAAM,EACN,WAAW,EACX,SAAS,EACT,UAAU,EACV,QAAQ,EACR,QAAQ,EACR,SAAS,EACT,WAAW,GACZ,MAAM,uBAAuB,CAAC"}
|
package/dist/tui/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HelpOverlay = exports.StatusBar = exports.TaskList = exports.TaskCard = exports.ColumnTabs = exports.SearchBar = exports.ProgressBar = exports.Header = exports.useKeyboardNavigation = exports.useBrainfileLoader = exports.getPriorityColor = exports.truncate = exports.FOOTER_ROWS = exports.HEADER_ROWS = exports.ICONS = exports.SPACING = exports.BORDERS = exports.BOX = exports.PALETTE = exports.BrainfileTUI = void 0;
|
|
3
|
+
exports.HelpOverlay = exports.StatusBar = exports.TaskList = exports.TaskCard = exports.ColumnTabs = exports.SearchBar = exports.ProgressBar = exports.Header = exports.useKeyboardNavigation = exports.useBrainfileLoader = exports.taskMatchesFilter = exports.parseSearchQuery = exports.getPriorityColor = exports.truncate = exports.FOOTER_ROWS = exports.HEADER_ROWS = exports.ICONS = exports.SPACING = exports.BORDERS = exports.BOX = exports.PALETTE = exports.BrainfileTUI = void 0;
|
|
4
4
|
// Main component
|
|
5
5
|
var BrainfileTUI_js_1 = require("./BrainfileTUI.js");
|
|
6
6
|
Object.defineProperty(exports, "BrainfileTUI", { enumerable: true, get: function () { return BrainfileTUI_js_1.BrainfileTUI; } });
|
|
@@ -18,6 +18,8 @@ Object.defineProperty(exports, "FOOTER_ROWS", { enumerable: true, get: function
|
|
|
18
18
|
var utils_js_1 = require("./utils.js");
|
|
19
19
|
Object.defineProperty(exports, "truncate", { enumerable: true, get: function () { return utils_js_1.truncate; } });
|
|
20
20
|
Object.defineProperty(exports, "getPriorityColor", { enumerable: true, get: function () { return utils_js_1.getPriorityColor; } });
|
|
21
|
+
Object.defineProperty(exports, "parseSearchQuery", { enumerable: true, get: function () { return utils_js_1.parseSearchQuery; } });
|
|
22
|
+
Object.defineProperty(exports, "taskMatchesFilter", { enumerable: true, get: function () { return utils_js_1.taskMatchesFilter; } });
|
|
21
23
|
// Hooks
|
|
22
24
|
var useBrainfileLoader_js_1 = require("./hooks/useBrainfileLoader.js");
|
|
23
25
|
Object.defineProperty(exports, "useBrainfileLoader", { enumerable: true, get: function () { return useBrainfileLoader_js_1.useBrainfileLoader; } });
|
package/dist/tui/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":";;;AAAA,iBAAiB;AACjB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAErB,QAAQ;AACR,uCAAmE;AAA1D,mGAAA,OAAO,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,iGAAA,KAAK,OAAA;AAI9C,uCAAsD;AAA7C,uGAAA,WAAW,OAAA;AAAE,uGAAA,WAAW,OAAA;AAEjC,QAAQ;AACR,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tui/index.ts"],"names":[],"mappings":";;;AAAA,iBAAiB;AACjB,qDAAiD;AAAxC,+GAAA,YAAY,OAAA;AAErB,QAAQ;AACR,uCAAmE;AAA1D,mGAAA,OAAO,OAAA;AAAE,+FAAA,GAAG,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,mGAAA,OAAO,OAAA;AAAE,iGAAA,KAAK,OAAA;AAI9C,uCAAsD;AAA7C,uGAAA,WAAW,OAAA;AAAE,uGAAA,WAAW,OAAA;AAEjC,QAAQ;AACR,uCAA6F;AAApF,oGAAA,QAAQ,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAAE,4GAAA,gBAAgB,OAAA;AAAE,6GAAA,iBAAiB,OAAA;AAGxE,QAAQ;AACR,uEAAmE;AAA1D,2HAAA,kBAAkB,OAAA;AAC3B,6EAAyE;AAAhE,iIAAA,qBAAqB,OAAA;AAE9B,aAAa;AACb,kDAS+B;AAR7B,kGAAA,MAAM,OAAA;AACN,uGAAA,WAAW,OAAA;AACX,qGAAA,SAAS,OAAA;AACT,sGAAA,UAAU,OAAA;AACV,oGAAA,QAAQ,OAAA;AACR,oGAAA,QAAQ,OAAA;AACR,qGAAA,SAAS,OAAA;AACT,uGAAA,WAAW,OAAA"}
|
package/dist/tui/utils.d.ts
CHANGED
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
import type { Task } from '@brainfile/core';
|
|
2
|
+
/**
|
|
3
|
+
* Parsed search query with structured filters and text search
|
|
4
|
+
*/
|
|
5
|
+
export interface ParsedSearch {
|
|
6
|
+
text: string;
|
|
7
|
+
priority?: string;
|
|
8
|
+
tag?: string;
|
|
9
|
+
assignee?: string;
|
|
10
|
+
due?: 'overdue' | 'today' | 'week' | 'month';
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Parse search query to extract structured filters
|
|
14
|
+
* Supports: p:high, t:bug, #tag, @assignee, due:overdue
|
|
15
|
+
*/
|
|
16
|
+
export declare function parseSearchQuery(query: string): ParsedSearch;
|
|
17
|
+
/**
|
|
18
|
+
* Check if a task matches the parsed search filters
|
|
19
|
+
*/
|
|
20
|
+
export declare function taskMatchesFilter(task: Task, filter: ParsedSearch): boolean;
|
|
1
21
|
export declare function truncate(value: string, maxLength: number): string;
|
|
2
22
|
export declare function getPriorityColor(priority?: string): string;
|
|
3
23
|
//# sourceMappingURL=utils.d.ts.map
|
package/dist/tui/utils.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAG5C;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,GAAG,CAAC,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,GAAG,OAAO,CAAC;CAC9C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,YAAY,CAmD5D;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,GAAG,OAAO,CA+D3E;AAED,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAe1D"}
|
package/dist/tui/utils.js
CHANGED
|
@@ -1,8 +1,123 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseSearchQuery = parseSearchQuery;
|
|
4
|
+
exports.taskMatchesFilter = taskMatchesFilter;
|
|
3
5
|
exports.truncate = truncate;
|
|
4
6
|
exports.getPriorityColor = getPriorityColor;
|
|
5
7
|
const theme_js_1 = require("./theme.js");
|
|
8
|
+
/**
|
|
9
|
+
* Parse search query to extract structured filters
|
|
10
|
+
* Supports: p:high, t:bug, #tag, @assignee, due:overdue
|
|
11
|
+
*/
|
|
12
|
+
function parseSearchQuery(query) {
|
|
13
|
+
const result = { text: '' };
|
|
14
|
+
const parts = [];
|
|
15
|
+
// Split by spaces but preserve quoted strings (future enhancement)
|
|
16
|
+
const tokens = query.trim().split(/\s+/);
|
|
17
|
+
for (const token of tokens) {
|
|
18
|
+
const lower = token.toLowerCase();
|
|
19
|
+
// Priority filter: p:high or priority:critical
|
|
20
|
+
if (lower.startsWith('p:') || lower.startsWith('priority:')) {
|
|
21
|
+
result.priority = token.split(':')[1]?.toLowerCase();
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
// Tag filter: t:bug, tag:feature, or #hashtag
|
|
25
|
+
if (lower.startsWith('t:') || lower.startsWith('tag:')) {
|
|
26
|
+
result.tag = token.split(':')[1]?.toLowerCase();
|
|
27
|
+
continue;
|
|
28
|
+
}
|
|
29
|
+
if (token.startsWith('#') && token.length > 1) {
|
|
30
|
+
result.tag = token.slice(1).toLowerCase();
|
|
31
|
+
continue;
|
|
32
|
+
}
|
|
33
|
+
// Assignee filter: @john or assignee:john
|
|
34
|
+
if (token.startsWith('@') && token.length > 1) {
|
|
35
|
+
result.assignee = token.slice(1).toLowerCase();
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (lower.startsWith('assignee:')) {
|
|
39
|
+
result.assignee = token.split(':')[1]?.toLowerCase();
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
// Due date filter: due:overdue, due:today, due:week, due:month
|
|
43
|
+
if (lower.startsWith('due:')) {
|
|
44
|
+
const value = lower.split(':')[1];
|
|
45
|
+
if (['overdue', 'today', 'week', 'month'].includes(value)) {
|
|
46
|
+
result.due = value;
|
|
47
|
+
}
|
|
48
|
+
continue;
|
|
49
|
+
}
|
|
50
|
+
// Not a filter, add to text search
|
|
51
|
+
parts.push(token);
|
|
52
|
+
}
|
|
53
|
+
result.text = parts.join(' ').toLowerCase();
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Check if a task matches the parsed search filters
|
|
58
|
+
*/
|
|
59
|
+
function taskMatchesFilter(task, filter) {
|
|
60
|
+
// Priority filter
|
|
61
|
+
if (filter.priority) {
|
|
62
|
+
if (!task.priority || task.priority.toLowerCase() !== filter.priority) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Tag filter
|
|
67
|
+
if (filter.tag) {
|
|
68
|
+
if (!task.tags || !task.tags.some(t => t.toLowerCase().includes(filter.tag))) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
// Assignee filter
|
|
73
|
+
if (filter.assignee) {
|
|
74
|
+
if (!task.assignee || !task.assignee.toLowerCase().includes(filter.assignee)) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
// Due date filter
|
|
79
|
+
if (filter.due && task.dueDate) {
|
|
80
|
+
const due = new Date(task.dueDate);
|
|
81
|
+
const now = new Date();
|
|
82
|
+
const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());
|
|
83
|
+
const diffDays = Math.ceil((due.getTime() - today.getTime()) / (1000 * 60 * 60 * 24));
|
|
84
|
+
switch (filter.due) {
|
|
85
|
+
case 'overdue':
|
|
86
|
+
if (diffDays >= 0)
|
|
87
|
+
return false;
|
|
88
|
+
break;
|
|
89
|
+
case 'today':
|
|
90
|
+
if (diffDays !== 0)
|
|
91
|
+
return false;
|
|
92
|
+
break;
|
|
93
|
+
case 'week':
|
|
94
|
+
if (diffDays < 0 || diffDays > 7)
|
|
95
|
+
return false;
|
|
96
|
+
break;
|
|
97
|
+
case 'month':
|
|
98
|
+
if (diffDays < 0 || diffDays > 30)
|
|
99
|
+
return false;
|
|
100
|
+
break;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
else if (filter.due) {
|
|
104
|
+
// Due filter specified but task has no due date
|
|
105
|
+
return false;
|
|
106
|
+
}
|
|
107
|
+
// Text search (substring match across multiple fields)
|
|
108
|
+
if (filter.text) {
|
|
109
|
+
const searchText = filter.text;
|
|
110
|
+
const matchesText = task.title.toLowerCase().includes(searchText) ||
|
|
111
|
+
task.id.toLowerCase().includes(searchText) ||
|
|
112
|
+
task.tags?.some(t => t.toLowerCase().includes(searchText)) ||
|
|
113
|
+
task.priority?.toLowerCase().includes(searchText) ||
|
|
114
|
+
task.description?.toLowerCase().includes(searchText) ||
|
|
115
|
+
task.assignee?.toLowerCase().includes(searchText);
|
|
116
|
+
if (!matchesText)
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
6
121
|
function truncate(value, maxLength) {
|
|
7
122
|
if (!value)
|
|
8
123
|
return ' '; // Return space instead of empty string for Ink compatibility
|
package/dist/tui/utils.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":"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"}
|