@brainfile/cli 0.8.1 → 0.9.0

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.
Files changed (80) hide show
  1. package/dist/commands/tui.d.ts.map +1 -1
  2. package/dist/commands/tui.js +6 -701
  3. package/dist/commands/tui.js.map +1 -1
  4. package/dist/tui/BrainfileTUI.d.ts +4 -0
  5. package/dist/tui/BrainfileTUI.d.ts.map +1 -0
  6. package/dist/tui/BrainfileTUI.js +198 -0
  7. package/dist/tui/BrainfileTUI.js.map +1 -0
  8. package/dist/tui/actions.d.ts +49 -0
  9. package/dist/tui/actions.d.ts.map +1 -0
  10. package/dist/tui/actions.js +569 -0
  11. package/dist/tui/actions.js.map +1 -0
  12. package/dist/tui/components/ColumnTabs.d.ts +9 -0
  13. package/dist/tui/components/ColumnTabs.d.ts.map +1 -0
  14. package/dist/tui/components/ColumnTabs.js +30 -0
  15. package/dist/tui/components/ColumnTabs.js.map +1 -0
  16. package/dist/tui/components/Header.d.ts +12 -0
  17. package/dist/tui/components/Header.d.ts.map +1 -0
  18. package/dist/tui/components/Header.js +24 -0
  19. package/dist/tui/components/Header.js.map +1 -0
  20. package/dist/tui/components/HelpOverlay.d.ts +7 -0
  21. package/dist/tui/components/HelpOverlay.d.ts.map +1 -0
  22. package/dist/tui/components/HelpOverlay.js +56 -0
  23. package/dist/tui/components/HelpOverlay.js.map +1 -0
  24. package/dist/tui/components/Overlays.d.ts +41 -0
  25. package/dist/tui/components/Overlays.d.ts.map +1 -0
  26. package/dist/tui/components/Overlays.js +127 -0
  27. package/dist/tui/components/Overlays.js.map +1 -0
  28. package/dist/tui/components/ProgressBar.d.ts +8 -0
  29. package/dist/tui/components/ProgressBar.d.ts.map +1 -0
  30. package/dist/tui/components/ProgressBar.js +35 -0
  31. package/dist/tui/components/ProgressBar.js.map +1 -0
  32. package/dist/tui/components/SearchBar.d.ts +7 -0
  33. package/dist/tui/components/SearchBar.d.ts.map +1 -0
  34. package/dist/tui/components/SearchBar.js +22 -0
  35. package/dist/tui/components/SearchBar.js.map +1 -0
  36. package/dist/tui/components/StatusBar.d.ts +12 -0
  37. package/dist/tui/components/StatusBar.d.ts.map +1 -0
  38. package/dist/tui/components/StatusBar.js +37 -0
  39. package/dist/tui/components/StatusBar.js.map +1 -0
  40. package/dist/tui/components/TaskCard.d.ts +19 -0
  41. package/dist/tui/components/TaskCard.d.ts.map +1 -0
  42. package/dist/tui/components/TaskCard.js +105 -0
  43. package/dist/tui/components/TaskCard.js.map +1 -0
  44. package/dist/tui/components/TaskList.d.ts +11 -0
  45. package/dist/tui/components/TaskList.d.ts.map +1 -0
  46. package/dist/tui/components/TaskList.js +56 -0
  47. package/dist/tui/components/TaskList.js.map +1 -0
  48. package/dist/tui/components/index.d.ts +19 -0
  49. package/dist/tui/components/index.d.ts.map +1 -0
  50. package/dist/tui/components/index.js +26 -0
  51. package/dist/tui/components/index.js.map +1 -0
  52. package/dist/tui/hooks/index.d.ts +3 -0
  53. package/dist/tui/hooks/index.d.ts.map +1 -0
  54. package/dist/tui/hooks/index.js +8 -0
  55. package/dist/tui/hooks/index.js.map +1 -0
  56. package/dist/tui/hooks/useBrainfileLoader.d.ts +5 -0
  57. package/dist/tui/hooks/useBrainfileLoader.d.ts.map +1 -0
  58. package/dist/tui/hooks/useBrainfileLoader.js +171 -0
  59. package/dist/tui/hooks/useBrainfileLoader.js.map +1 -0
  60. package/dist/tui/hooks/useKeyboardNavigation.d.ts +16 -0
  61. package/dist/tui/hooks/useKeyboardNavigation.d.ts.map +1 -0
  62. package/dist/tui/hooks/useKeyboardNavigation.js +434 -0
  63. package/dist/tui/hooks/useKeyboardNavigation.js.map +1 -0
  64. package/dist/tui/index.d.ts +9 -0
  65. package/dist/tui/index.d.ts.map +1 -0
  66. package/dist/tui/index.js +36 -0
  67. package/dist/tui/index.js.map +1 -0
  68. package/dist/tui/theme.d.ts +113 -0
  69. package/dist/tui/theme.d.ts.map +1 -0
  70. package/dist/tui/theme.js +132 -0
  71. package/dist/tui/theme.js.map +1 -0
  72. package/dist/tui/types.d.ts +30 -0
  73. package/dist/tui/types.d.ts.map +1 -0
  74. package/dist/tui/types.js +6 -0
  75. package/dist/tui/types.js.map +1 -0
  76. package/dist/tui/utils.d.ts +3 -0
  77. package/dist/tui/utils.d.ts.map +1 -0
  78. package/dist/tui/utils.js +31 -0
  79. package/dist/tui/utils.js.map +1 -0
  80. package/package.json +1 -1
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ /**
3
+ * Brainfile TUI Theme
4
+ *
5
+ * Design principles (aligned with VSCode extension aesthetic):
6
+ * 1. True black background (#000) for maximum contrast
7
+ * 2. Muted grays for secondary content
8
+ * 3. Vibrant accent colors used sparingly
9
+ * 4. Rounded borders for modern feel
10
+ * 5. Generous spacing for readability
11
+ *
12
+ * VSCode extension colors reference:
13
+ * - critical: #d64933, high: #867530, medium: #37505C, low: #bac1b8
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.ICONS = exports.SPACING = exports.BORDERS = exports.BOX = exports.PALETTE = void 0;
17
+ // Main color palette with hex values for True Color terminals
18
+ exports.PALETTE = {
19
+ // Backgrounds
20
+ bg: '#000000',
21
+ bgSubtle: '#0a0a0a',
22
+ bgMuted: '#1a1a1a',
23
+ bgHighlight: '#2a2a2a',
24
+ panel: '#1e1e1e',
25
+ // Text hierarchy
26
+ text: '#ffffff',
27
+ textSecondary: '#a0a0a0',
28
+ textMuted: '#606060',
29
+ textDim: '#404040',
30
+ // Borders
31
+ border: '#333333',
32
+ borderFocus: '#505050',
33
+ borderAccent: '#7c3aed',
34
+ // Priority colors (TUI-optimized, inspired by VSCode extension)
35
+ critical: '#ef4444',
36
+ high: '#f59e0b',
37
+ medium: '#3b82f6',
38
+ low: '#6b7280',
39
+ giga: '#a855f7', // Purple for custom priority
40
+ // Semantic colors
41
+ success: '#22c55e',
42
+ warning: '#eab308',
43
+ error: '#ef4444',
44
+ info: '#3b82f6',
45
+ // UI accents
46
+ progress: '#3b82f6',
47
+ accent: '#7c3aed',
48
+ accentAlt: '#06b6d4',
49
+ selected: '#ffffff',
50
+ };
51
+ // Box drawing characters - default to rounded for modern feel
52
+ exports.BOX = {
53
+ topLeft: '╭',
54
+ topRight: '╮',
55
+ bottomLeft: '╰',
56
+ bottomRight: '╯',
57
+ horizontal: '─',
58
+ vertical: '│',
59
+ teeRight: '├',
60
+ teeLeft: '┤',
61
+ };
62
+ // Alternative border styles
63
+ exports.BORDERS = {
64
+ round: {
65
+ topLeft: '╭',
66
+ topRight: '╮',
67
+ bottomLeft: '╰',
68
+ bottomRight: '╯',
69
+ horizontal: '─',
70
+ vertical: '│',
71
+ },
72
+ single: {
73
+ topLeft: '┌',
74
+ topRight: '┐',
75
+ bottomLeft: '└',
76
+ bottomRight: '┘',
77
+ horizontal: '─',
78
+ vertical: '│',
79
+ },
80
+ double: {
81
+ topLeft: '╔',
82
+ topRight: '╗',
83
+ bottomLeft: '╚',
84
+ bottomRight: '╝',
85
+ horizontal: '═',
86
+ vertical: '║',
87
+ },
88
+ bold: {
89
+ topLeft: '┏',
90
+ topRight: '┓',
91
+ bottomLeft: '┗',
92
+ bottomRight: '┛',
93
+ horizontal: '━',
94
+ vertical: '┃',
95
+ },
96
+ };
97
+ // Spacing scale
98
+ exports.SPACING = {
99
+ none: 0,
100
+ xs: 1,
101
+ sm: 2,
102
+ md: 3,
103
+ lg: 4,
104
+ xl: 6,
105
+ };
106
+ // Icons/glyphs for consistent visual language
107
+ exports.ICONS = {
108
+ // Status
109
+ success: '✓',
110
+ error: '✗',
111
+ warning: '⚠',
112
+ info: 'ℹ',
113
+ // Navigation
114
+ expanded: '▼',
115
+ collapsed: '▶',
116
+ bullet: '•',
117
+ arrow: '→',
118
+ // Objects
119
+ file: '📄',
120
+ folder: '📁',
121
+ task: '☐',
122
+ taskDone: '☑',
123
+ // Progress
124
+ progressFilled: '█',
125
+ progressEmpty: '░',
126
+ progressPartial: '▓',
127
+ // Misc
128
+ reload: '↻',
129
+ live: '●',
130
+ search: '🔍',
131
+ };
132
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"theme.js","sourceRoot":"","sources":["../../src/tui/theme.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,30 @@
1
+ import type { Board } from '@brainfile/core';
2
+ export type BoardColumn = Board['columns'][number];
3
+ export type ViewMode = 'browse' | 'search' | 'help' | 'move' | 'delete-confirm' | 'subtask' | 'new-task';
4
+ export interface StatusMessage {
5
+ text: string;
6
+ type: 'success' | 'error' | 'info';
7
+ timestamp: number;
8
+ }
9
+ export interface AppState {
10
+ board: Board | null;
11
+ error: string | null;
12
+ lastUpdated: Date;
13
+ activeColumnIndex: number;
14
+ selectedTaskIndex: number;
15
+ mode: ViewMode;
16
+ searchQuery: string;
17
+ expandedTaskIds: Set<string>;
18
+ reloadFlash: boolean;
19
+ lastContentHash: string | null;
20
+ statusMessage: StatusMessage | null;
21
+ moveTargetIndex: number;
22
+ selectedSubtaskIndex: number;
23
+ newTaskTitle: string;
24
+ }
25
+ export interface TUIProps {
26
+ filePath: string;
27
+ }
28
+ export declare const HEADER_ROWS = 7;
29
+ export declare const FOOTER_ROWS = 3;
30
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,iBAAiB,CAAC;AAE7C,MAAM,MAAM,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,GAAG,gBAAgB,GAAG,SAAS,GAAG,UAAU,CAAC;AAEzG,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;IACnC,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,IAAI,CAAC;IAGlB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAG1B,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IAGpB,eAAe,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;IAC7B,WAAW,EAAE,OAAO,CAAC;IAGrB,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;IAG/B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IAGpC,eAAe,EAAE,MAAM,CAAC;IAGxB,oBAAoB,EAAE,MAAM,CAAC;IAG7B,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,QAAQ;IACvB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,eAAO,MAAM,WAAW,IAAI,CAAC;AAC7B,eAAO,MAAM,WAAW,IAAI,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.FOOTER_ROWS = exports.HEADER_ROWS = void 0;
4
+ exports.HEADER_ROWS = 7; // title(1) + progress(3: padTop+content+padBottom) + tabs(2: marginTop+content) + separator(1)
5
+ exports.FOOTER_ROWS = 3; // separator + status bar (2 rows: content + bottom padding)
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/tui/types.ts"],"names":[],"mappings":";;;AAiDa,QAAA,WAAW,GAAG,CAAC,CAAC,CAAC,+FAA+F;AAChH,QAAA,WAAW,GAAG,CAAC,CAAC,CAAC,4DAA4D"}
@@ -0,0 +1,3 @@
1
+ export declare function truncate(value: string, maxLength: number): string;
2
+ export declare function getPriorityColor(priority?: string): string;
3
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":"AAEA,wBAAgB,QAAQ,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKjE;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAe1D"}
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.truncate = truncate;
4
+ exports.getPriorityColor = getPriorityColor;
5
+ const theme_js_1 = require("./theme.js");
6
+ function truncate(value, maxLength) {
7
+ if (!value)
8
+ return ' '; // Return space instead of empty string for Ink compatibility
9
+ if (maxLength <= 0)
10
+ return ' ';
11
+ if (value.length <= maxLength)
12
+ return value;
13
+ return `${value.slice(0, Math.max(1, maxLength - 1))}…`;
14
+ }
15
+ function getPriorityColor(priority) {
16
+ switch (priority?.toLowerCase()) {
17
+ case 'critical':
18
+ return theme_js_1.PALETTE.critical;
19
+ case 'giga':
20
+ return theme_js_1.PALETTE.giga;
21
+ case 'high':
22
+ return theme_js_1.PALETTE.high;
23
+ case 'medium':
24
+ return theme_js_1.PALETTE.medium;
25
+ case 'low':
26
+ return theme_js_1.PALETTE.low;
27
+ default:
28
+ return theme_js_1.PALETTE.border;
29
+ }
30
+ }
31
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/tui/utils.ts"],"names":[],"mappings":";;AAEA,4BAKC;AAED,4CAeC;AAxBD,yCAAqC;AAErC,SAAgB,QAAQ,CAAC,KAAa,EAAE,SAAiB;IACvD,IAAI,CAAC,KAAK;QAAE,OAAO,GAAG,CAAC,CAAC,6DAA6D;IACrF,IAAI,SAAS,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,IAAI,SAAS;QAAE,OAAO,KAAK,CAAC;IAC5C,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;AAC1D,CAAC;AAED,SAAgB,gBAAgB,CAAC,QAAiB;IAChD,QAAQ,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC;QAChC,KAAK,UAAU;YACb,OAAO,kBAAO,CAAC,QAAQ,CAAC;QAC1B,KAAK,MAAM;YACT,OAAO,kBAAO,CAAC,IAAI,CAAC;QACtB,KAAK,MAAM;YACT,OAAO,kBAAO,CAAC,IAAI,CAAC;QACtB,KAAK,QAAQ;YACX,OAAO,kBAAO,CAAC,MAAM,CAAC;QACxB,KAAK,KAAK;YACR,OAAO,kBAAO,CAAC,GAAG,CAAC;QACrB;YACE,OAAO,kBAAO,CAAC,MAAM,CAAC;IAC1B,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@brainfile/cli",
3
- "version": "0.8.1",
3
+ "version": "0.9.0",
4
4
  "description": "Command-line interface for Brainfile task management",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",