glancey 2.2.1 → 2.4.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.
@@ -54,22 +54,31 @@ describe('beads', () => {
54
54
  issueCount: 0,
55
55
  openCount: 0,
56
56
  readyCount: 0,
57
- issues: [],
57
+ readyIssues: [],
58
+ openIssues: [],
59
+ allIssues: [],
58
60
  });
59
61
  });
60
62
  it('should return status with issues when beads is available', async () => {
61
63
  vi.mocked(access).mockResolvedValue(undefined);
62
- const mockIssues = [
64
+ const readyIssues = [
63
65
  { id: 'issue-1', title: 'Test Issue 1', status: 'open' },
64
66
  { id: 'issue-2', title: 'Test Issue 2', status: 'open' },
65
67
  ];
68
+ const allIssues = [
69
+ ...readyIssues,
70
+ { id: 'issue-3', title: 'Closed Issue', status: 'closed' },
71
+ ];
66
72
  vi.mocked(exec).mockImplementation((cmd, _opts, callback) => {
67
73
  const cb = callback;
68
74
  if (cmd.includes('bd ready')) {
69
- cb(null, JSON.stringify(mockIssues), '');
75
+ cb(null, JSON.stringify(readyIssues), '');
76
+ }
77
+ else if (cmd.includes('--all')) {
78
+ cb(null, JSON.stringify(allIssues), '');
70
79
  }
71
80
  else if (cmd.includes('bd list')) {
72
- cb(null, JSON.stringify(mockIssues), '');
81
+ cb(null, JSON.stringify(readyIssues), '');
73
82
  }
74
83
  else if (cmd.includes('bd info')) {
75
84
  cb(null, JSON.stringify({ syncBranch: 'beads', daemonConnected: true }), '');
@@ -87,7 +96,9 @@ describe('beads', () => {
87
96
  expect(status.readyCount).toBe(2);
88
97
  expect(status.openCount).toBe(2);
89
98
  expect(status.issueCount).toBe(5);
90
- expect(status.issues).toHaveLength(2);
99
+ expect(status.readyIssues).toHaveLength(2);
100
+ expect(status.openIssues).toHaveLength(2);
101
+ expect(status.allIssues).toHaveLength(3);
91
102
  expect(status.syncBranch).toBe('beads');
92
103
  expect(status.daemonRunning).toBe(true);
93
104
  });
@@ -100,7 +111,9 @@ describe('beads', () => {
100
111
  });
101
112
  const status = await getBeadsStatus('/project');
102
113
  expect(status.available).toBe(true);
103
- expect(status.issues).toEqual([]);
114
+ expect(status.readyIssues).toEqual([]);
115
+ expect(status.openIssues).toEqual([]);
116
+ expect(status.allIssues).toEqual([]);
104
117
  expect(status.readyCount).toBe(0);
105
118
  });
106
119
  it('should handle bd command errors gracefully', async () => {
@@ -115,28 +128,43 @@ describe('beads', () => {
115
128
  expect(status.issueCount).toBe(0);
116
129
  expect(status.openCount).toBe(0);
117
130
  expect(status.readyCount).toBe(0);
118
- expect(status.issues).toEqual([]);
131
+ expect(status.readyIssues).toEqual([]);
132
+ expect(status.openIssues).toEqual([]);
133
+ expect(status.allIssues).toEqual([]);
119
134
  });
120
- it('should limit issues to 10 for display', async () => {
135
+ it('should return all issues across all three views', async () => {
121
136
  vi.mocked(access).mockResolvedValue(undefined);
122
- const manyIssues = Array.from({ length: 15 }, (_, i) => ({
123
- id: `issue-${i}`,
124
- title: `Test Issue ${i}`,
137
+ const readyIssues = Array.from({ length: 5 }, (_, i) => ({
138
+ id: `ready-${i}`,
139
+ title: `Ready Issue ${i}`,
140
+ status: 'open',
141
+ }));
142
+ const openIssues = Array.from({ length: 15 }, (_, i) => ({
143
+ id: `open-${i}`,
144
+ title: `Open Issue ${i}`,
125
145
  status: 'open',
126
146
  }));
147
+ const allIssues = Array.from({ length: 20 }, (_, i) => ({
148
+ id: `all-${i}`,
149
+ title: `Issue ${i}`,
150
+ status: i < 15 ? 'open' : 'closed',
151
+ }));
127
152
  vi.mocked(exec).mockImplementation((cmd, _opts, callback) => {
128
153
  const cb = callback;
129
154
  if (cmd.includes('bd ready')) {
130
- cb(null, JSON.stringify(manyIssues), '');
155
+ cb(null, JSON.stringify(readyIssues), '');
156
+ }
157
+ else if (cmd.includes('--all')) {
158
+ cb(null, JSON.stringify(allIssues), '');
131
159
  }
132
160
  else if (cmd.includes('bd list')) {
133
- cb(null, JSON.stringify(manyIssues), '');
161
+ cb(null, JSON.stringify(openIssues), '');
134
162
  }
135
163
  else if (cmd.includes('bd info')) {
136
164
  cb(null, '{}', '');
137
165
  }
138
166
  else if (cmd.includes('bd count')) {
139
- cb(null, '15', '');
167
+ cb(null, '20', '');
140
168
  }
141
169
  else {
142
170
  cb(null, '', '');
@@ -144,7 +172,9 @@ describe('beads', () => {
144
172
  return {};
145
173
  });
146
174
  const status = await getBeadsStatus('/project');
147
- expect(status.issues).toHaveLength(10);
175
+ expect(status.readyIssues).toHaveLength(5);
176
+ expect(status.openIssues).toHaveLength(15);
177
+ expect(status.allIssues).toHaveLength(20);
148
178
  });
149
179
  });
150
180
  });
@@ -1 +1 @@
1
- {"version":3,"file":"beads.test.js","sourceRoot":"","sources":["../../../src/__tests__/dashboard/beads.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"beads.test.js","sourceRoot":"","sources":["../../../src/__tests__/dashboard/beads.test.ts"],"names":[],"mappings":"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"}
@@ -20,7 +20,9 @@ export interface BeadsStatus {
20
20
  issueCount: number;
21
21
  openCount: number;
22
22
  readyCount: number;
23
- issues: BeadsIssue[];
23
+ readyIssues: BeadsIssue[];
24
+ openIssues: BeadsIssue[];
25
+ allIssues: BeadsIssue[];
24
26
  syncBranch?: string;
25
27
  daemonRunning?: boolean;
26
28
  }
@@ -1 +1 @@
1
- {"version":3,"file":"beads.d.ts","sourceRoot":"","sources":["../../src/dashboard/beads.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,UAAU,EAAE,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ5E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAoF9E"}
1
+ {"version":3,"file":"beads.d.ts","sourceRoot":"","sources":["../../src/dashboard/beads.ts"],"names":[],"mappings":"AAOA;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;CACnB;AAED;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,UAAU,EAAE,UAAU,EAAE,CAAC;IACzB,SAAS,EAAE,UAAU,EAAE,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAQ5E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8G9E"}
@@ -27,7 +27,9 @@ export async function getBeadsStatus(projectPath) {
27
27
  issueCount: 0,
28
28
  openCount: 0,
29
29
  readyCount: 0,
30
- issues: [],
30
+ readyIssues: [],
31
+ openIssues: [],
32
+ allIssues: [],
31
33
  };
32
34
  }
33
35
  try {
@@ -45,13 +47,26 @@ export async function getBeadsStatus(projectPath) {
45
47
  readyIssues = [];
46
48
  }
47
49
  // Get all open issues
48
- const { stdout: listOutput } = await execAsync('bd list --json 2>/dev/null || echo "[]"', {
50
+ const { stdout: listOutput } = await execAsync('bd list --limit 0 --json 2>/dev/null || echo "[]"', {
49
51
  cwd: projectPath,
50
52
  timeout: 5000,
51
53
  });
52
- let allIssues = [];
54
+ let openIssues = [];
53
55
  try {
54
56
  const parsed = JSON.parse(listOutput.trim() || '[]');
57
+ openIssues = Array.isArray(parsed) ? parsed : [];
58
+ }
59
+ catch {
60
+ openIssues = [];
61
+ }
62
+ // Get all issues including closed
63
+ const { stdout: allOutput } = await execAsync('bd list --all --limit 0 --json 2>/dev/null || echo "[]"', {
64
+ cwd: projectPath,
65
+ timeout: 5000,
66
+ });
67
+ let allIssues = [];
68
+ try {
69
+ const parsed = JSON.parse(allOutput.trim() || '[]');
55
70
  allIssues = Array.isArray(parsed) ? parsed : [];
56
71
  }
57
72
  catch {
@@ -81,9 +96,11 @@ export async function getBeadsStatus(projectPath) {
81
96
  return {
82
97
  available: true,
83
98
  issueCount: totalCount,
84
- openCount: allIssues.length,
99
+ openCount: openIssues.length,
85
100
  readyCount: readyIssues.length,
86
- issues: readyIssues.slice(0, 10), // Limit to 10 for display
101
+ readyIssues,
102
+ openIssues,
103
+ allIssues,
87
104
  syncBranch,
88
105
  daemonRunning,
89
106
  };
@@ -95,7 +112,9 @@ export async function getBeadsStatus(projectPath) {
95
112
  issueCount: 0,
96
113
  openCount: 0,
97
114
  readyCount: 0,
98
- issues: [],
115
+ readyIssues: [],
116
+ openIssues: [],
117
+ allIssues: [],
99
118
  };
100
119
  }
101
120
  }
@@ -1 +1 @@
1
- {"version":3,"file":"beads.js","sourceRoot":"","sources":["../../src/dashboard/beads.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,SAAS,EAAE,MAAM,MAAM,CAAC;AACjC,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAE5B,MAAM,SAAS,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC;AA8BlC;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,WAAmB;IACxD,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;QAC7C,MAAM,MAAM,CAAC,QAAQ,EAAE,SAAS,CAAC,IAAI,CAAC,CAAC;QACvC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,WAAmB;IACtD,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAEtD,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;IAED,IAAI,CAAC;QACH,uCAAuC;QACvC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,0CAA0C,EAAE;YAC1F,GAAG,EAAE,WAAW;YAChB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,WAAW,GAAiB,EAAE,CAAC;QACnC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;YACtD,WAAW,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,WAAW,GAAG,EAAE,CAAC;QACnB,CAAC;QAED,sBAAsB;QACtB,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,yCAAyC,EAAE;YACxF,GAAG,EAAE,WAAW;YAChB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,SAAS,GAAiB,EAAE,CAAC;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;YACrD,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,SAAS,GAAG,EAAE,CAAC;QACjB,CAAC;QAED,6CAA6C;QAC7C,IAAI,UAA8B,CAAC;QACnC,IAAI,aAAa,GAAG,KAAK,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,MAAM,SAAS,CAAC,yCAAyC,EAAE;gBACxF,GAAG,EAAE,WAAW;gBAChB,OAAO,EAAE,IAAI;aACd,CAAC,CAAC;YACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,EAAE,IAAI,IAAI,CAAC,CAAC;YACnD,UAAU,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,WAAW,CAAC;YACjD,aAAa,GAAG,IAAI,CAAC,eAAe,IAAI,IAAI,CAAC,gBAAgB,IAAI,KAAK,CAAC;QACzE,CAAC;QAAC,MAAM,CAAC;YACP,qBAAqB;QACvB,CAAC;QAED,mCAAmC;QACnC,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,SAAS,CAAC,kCAAkC,EAAE;YAClF,GAAG,EAAE,WAAW;YAChB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,QAAQ,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,MAAM,CAAC;QAExE,OAAO;YACL,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,UAAU;YACtB,SAAS,EAAE,SAAS,CAAC,MAAM;YAC3B,UAAU,EAAE,WAAW,CAAC,MAAM;YAC9B,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,0BAA0B;YAC5D,UAAU;YACV,aAAa;SACd,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC;QACP,8DAA8D;QAC9D,OAAO;YACL,SAAS,EAAE,IAAI;YACf,UAAU,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;YACZ,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,EAAE;SACX,CAAC;IACJ,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"beads.js","sourceRoot":"","sources":["../../src/dashboard/beads.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAwoFzC"}
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAUA;;;GAGG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,CAs9FzC"}
@@ -992,6 +992,114 @@ export function getDashboardHTML() {
992
992
  color: var(--text-muted);
993
993
  }
994
994
 
995
+ .beads-view-toggle {
996
+ display: flex;
997
+ gap: 0;
998
+ padding: 8px 12px;
999
+ border-bottom: 1px solid var(--border-color);
1000
+ }
1001
+
1002
+ .beads-view-btn {
1003
+ flex: 1;
1004
+ padding: 5px 12px;
1005
+ font-size: 12px;
1006
+ font-weight: 500;
1007
+ background: var(--bg-tertiary);
1008
+ border: 1px solid var(--border-color);
1009
+ color: var(--text-muted);
1010
+ cursor: pointer;
1011
+ transition: all 0.15s ease;
1012
+ }
1013
+
1014
+ .beads-view-btn:first-child {
1015
+ border-radius: 4px 0 0 4px;
1016
+ }
1017
+
1018
+ .beads-view-btn:last-child {
1019
+ border-radius: 0 4px 4px 0;
1020
+ }
1021
+
1022
+ .beads-view-btn:not(:first-child) {
1023
+ border-left: none;
1024
+ }
1025
+
1026
+ .beads-view-btn:hover:not(.active) {
1027
+ background: var(--bg-secondary);
1028
+ color: var(--text-primary);
1029
+ }
1030
+
1031
+ .beads-view-btn.active {
1032
+ background: var(--accent-blue);
1033
+ border-color: var(--accent-blue);
1034
+ color: #fff;
1035
+ }
1036
+
1037
+ #beadsToolbar {
1038
+ display: flex;
1039
+ flex-wrap: wrap;
1040
+ gap: 6px;
1041
+ padding: 6px 12px;
1042
+ border-bottom: 1px solid var(--border-color);
1043
+ align-items: center;
1044
+ box-sizing: border-box;
1045
+ }
1046
+
1047
+ #beadsToolbar #beadsSearch {
1048
+ width: 100%;
1049
+ padding: 4px 8px;
1050
+ font-size: 12px;
1051
+ border-radius: 3px;
1052
+ box-sizing: border-box;
1053
+ }
1054
+
1055
+ #beadsToolbar select {
1056
+ width: calc(50% - 3px);
1057
+ padding: 4px 8px;
1058
+ font-size: 12px;
1059
+ border-radius: 3px;
1060
+ box-sizing: border-box;
1061
+ }
1062
+
1063
+ .beads-filter-count {
1064
+ margin-left: auto;
1065
+ font-size: 12px;
1066
+ color: var(--text-muted);
1067
+ white-space: nowrap;
1068
+ }
1069
+
1070
+ .beads-pagination {
1071
+ display: flex;
1072
+ justify-content: center;
1073
+ align-items: center;
1074
+ gap: 12px;
1075
+ padding: 12px 16px;
1076
+ border-top: 1px solid var(--border-color);
1077
+ }
1078
+
1079
+ .beads-pagination button {
1080
+ padding: 4px 12px;
1081
+ font-size: 13px;
1082
+ background: var(--bg-tertiary);
1083
+ border: 1px solid var(--border-color);
1084
+ border-radius: 4px;
1085
+ color: var(--text-primary);
1086
+ cursor: pointer;
1087
+ }
1088
+
1089
+ .beads-pagination button:hover:not(:disabled) {
1090
+ background: var(--bg-secondary);
1091
+ }
1092
+
1093
+ .beads-pagination button:disabled {
1094
+ opacity: 0.4;
1095
+ cursor: default;
1096
+ }
1097
+
1098
+ .beads-pagination .beads-page-info {
1099
+ font-size: 12px;
1100
+ color: var(--text-muted);
1101
+ }
1102
+
995
1103
  /* Tab navigation */
996
1104
  .tab-container {
997
1105
  margin-bottom: 24px;
@@ -1377,12 +1485,39 @@ export function getDashboardHTML() {
1377
1485
  <div id="beadsContent" style="display: none;">
1378
1486
  <div class="card">
1379
1487
  <div class="card-header">
1380
- <span class="card-title">Ready Tasks</span>
1488
+ <span class="card-title" id="beadsCardTitle">Ready Tasks</span>
1381
1489
  <span class="badge" id="readyTasksBadge">0 tasks</span>
1382
1490
  </div>
1491
+ <div class="beads-view-toggle" id="beadsViewToggle" style="display: none;">
1492
+ <button class="beads-view-btn active" data-view="ready">Ready</button>
1493
+ <button class="beads-view-btn" data-view="open">Open</button>
1494
+ <button class="beads-view-btn" data-view="all">All</button>
1495
+ </div>
1496
+ <div class="beads-toolbar" id="beadsToolbar" style="display: none;">
1497
+ <input type="text" class="form-input" id="beadsSearch" placeholder="Search issues...">
1498
+ <select class="form-select" id="beadsPriorityFilter">
1499
+ <option value="">All priorities</option>
1500
+ <option value="1">P1</option>
1501
+ <option value="2">P2</option>
1502
+ <option value="3">P3</option>
1503
+ <option value="none">No priority</option>
1504
+ </select>
1505
+ <select class="form-select" id="beadsSortOrder">
1506
+ <option value="priority-desc">Priority: High to Low</option>
1507
+ <option value="priority-asc">Priority: Low to High</option>
1508
+ <option value="alpha-asc">Title: A\u2013Z</option>
1509
+ <option value="alpha-desc">Title: Z\u2013A</option>
1510
+ </select>
1511
+ <span class="beads-filter-count" id="beadsFilterCount"></span>
1512
+ </div>
1383
1513
  <div class="beads-issues" id="beadsIssuesList">
1384
1514
  <div class="beads-empty">No ready tasks</div>
1385
1515
  </div>
1516
+ <div class="beads-pagination" id="beadsPagination" style="display: none;">
1517
+ <button id="beadsPrevPage">Previous</button>
1518
+ <span class="beads-page-info" id="beadsPageInfo">Page 1 of 1</span>
1519
+ <button id="beadsNextPage">Next</button>
1520
+ </div>
1386
1521
  </div>
1387
1522
  </div>
1388
1523
  </div>
@@ -2430,6 +2565,182 @@ export function getDashboardHTML() {
2430
2565
  const beadsDaemonText = document.getElementById('beadsDaemonText');
2431
2566
  const beadsIssuesList = document.getElementById('beadsIssuesList');
2432
2567
  const readyTasksBadge = document.getElementById('readyTasksBadge');
2568
+ const beadsToolbar = document.getElementById('beadsToolbar');
2569
+ const beadsSearch = document.getElementById('beadsSearch');
2570
+ const beadsPriorityFilter = document.getElementById('beadsPriorityFilter');
2571
+ const beadsFilterCount = document.getElementById('beadsFilterCount');
2572
+ const beadsSortOrder = document.getElementById('beadsSortOrder');
2573
+ const beadsPagination = document.getElementById('beadsPagination');
2574
+ const beadsPrevPage = document.getElementById('beadsPrevPage');
2575
+ const beadsNextPage = document.getElementById('beadsNextPage');
2576
+ const beadsPageInfo = document.getElementById('beadsPageInfo');
2577
+ const beadsViewToggle = document.getElementById('beadsViewToggle');
2578
+ const beadsCardTitle = document.getElementById('beadsCardTitle');
2579
+
2580
+ var beadsData = { readyIssues: [], openIssues: [], allIssues: [] };
2581
+ var beadsCurrentView = 'ready';
2582
+ var allBeadsIssues = [];
2583
+ var beadsCurrentPage = 1;
2584
+ var BEADS_PAGE_SIZE = 20;
2585
+
2586
+ function getBeadsViewIssues() {
2587
+ if (beadsCurrentView === 'open') return beadsData.openIssues;
2588
+ if (beadsCurrentView === 'all') return beadsData.allIssues;
2589
+ return beadsData.readyIssues;
2590
+ }
2591
+
2592
+ function updateBeadsView() {
2593
+ allBeadsIssues = getBeadsViewIssues();
2594
+ beadsCurrentPage = 1;
2595
+
2596
+ var titles = { ready: 'Ready Tasks', open: 'Open Tasks', all: 'All Tasks' };
2597
+ beadsCardTitle.textContent = titles[beadsCurrentView] || 'Ready Tasks';
2598
+
2599
+ var counts = {
2600
+ ready: beadsData.readyIssues.length,
2601
+ open: beadsData.openIssues.length,
2602
+ all: beadsData.allIssues.length,
2603
+ };
2604
+ var count = counts[beadsCurrentView] || 0;
2605
+ readyTasksBadge.textContent = count + ' task' + (count !== 1 ? 's' : '');
2606
+
2607
+ beadsToolbar.style.display = allBeadsIssues.length > 0 ? 'flex' : 'none';
2608
+
2609
+ var btns = beadsViewToggle.querySelectorAll('.beads-view-btn');
2610
+ for (var i = 0; i < btns.length; i++) {
2611
+ btns[i].classList.toggle('active', btns[i].getAttribute('data-view') === beadsCurrentView);
2612
+ }
2613
+
2614
+ renderBeadsPage();
2615
+ }
2616
+
2617
+ function getFilteredBeadsIssues() {
2618
+ var filtered = allBeadsIssues;
2619
+ var searchTerm = (beadsSearch.value || '').toLowerCase().trim();
2620
+ var priorityVal = beadsPriorityFilter.value;
2621
+
2622
+ if (searchTerm) {
2623
+ filtered = filtered.filter(function(issue) {
2624
+ return (issue.title && issue.title.toLowerCase().indexOf(searchTerm) !== -1) ||
2625
+ (issue.description && issue.description.toLowerCase().indexOf(searchTerm) !== -1) ||
2626
+ (issue.id && issue.id.toLowerCase().indexOf(searchTerm) !== -1);
2627
+ });
2628
+ }
2629
+
2630
+ if (priorityVal === 'none') {
2631
+ filtered = filtered.filter(function(issue) {
2632
+ return !issue.priority;
2633
+ });
2634
+ } else if (priorityVal) {
2635
+ var pNum = parseInt(priorityVal, 10);
2636
+ filtered = filtered.filter(function(issue) {
2637
+ return issue.priority === pNum;
2638
+ });
2639
+ }
2640
+
2641
+ // Sort
2642
+ var sortVal = beadsSortOrder.value;
2643
+ filtered = filtered.slice().sort(function(a, b) {
2644
+ if (sortVal === 'priority-desc') {
2645
+ var pa = a.priority || 999;
2646
+ var pb = b.priority || 999;
2647
+ return pa - pb;
2648
+ } else if (sortVal === 'priority-asc') {
2649
+ var pa = a.priority || 999;
2650
+ var pb = b.priority || 999;
2651
+ return pb - pa;
2652
+ } else if (sortVal === 'alpha-asc') {
2653
+ return (a.title || '').localeCompare(b.title || '');
2654
+ } else if (sortVal === 'alpha-desc') {
2655
+ return (b.title || '').localeCompare(a.title || '');
2656
+ }
2657
+ return 0;
2658
+ });
2659
+
2660
+ return filtered;
2661
+ }
2662
+
2663
+ function buildIssueHtml(issue) {
2664
+ var hasDescription = issue.description && issue.description.trim();
2665
+ var html = '<div class="beads-issue" onclick="toggleBeadsIssue(this)">';
2666
+ html += '<span class="beads-issue-id">' + escapeHtml(issue.id) + '</span>';
2667
+ html += '<div class="beads-issue-content">';
2668
+ html += '<div class="beads-issue-title">';
2669
+ html += '<svg class="beads-issue-expand" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>';
2670
+ html += '<span>' + escapeHtml(issue.title) + '</span>';
2671
+ html += '</div>';
2672
+ html += '<div class="beads-issue-meta">';
2673
+ if (issue.issue_type) {
2674
+ html += '<span class="beads-issue-type">' + escapeHtml(issue.issue_type) + '</span>';
2675
+ }
2676
+ if (issue.priority) {
2677
+ html += '<span class="beads-issue-priority">';
2678
+ html += '<span class="priority-dot priority-' + issue.priority + '"></span>';
2679
+ html += 'P' + issue.priority;
2680
+ html += '</span>';
2681
+ }
2682
+ html += '</div>';
2683
+ if (hasDescription) {
2684
+ html += '<div class="beads-issue-description">' + escapeHtml(issue.description) + '</div>';
2685
+ } else {
2686
+ html += '<div class="beads-issue-description beads-issue-no-description">No description available</div>';
2687
+ }
2688
+ html += '</div>';
2689
+ html += '</div>';
2690
+ return html;
2691
+ }
2692
+
2693
+ function renderBeadsPage() {
2694
+ var filtered = getFilteredBeadsIssues();
2695
+ var totalPages = Math.max(1, Math.ceil(filtered.length / BEADS_PAGE_SIZE));
2696
+
2697
+ if (beadsCurrentPage > totalPages) {
2698
+ beadsCurrentPage = totalPages;
2699
+ }
2700
+
2701
+ var start = (beadsCurrentPage - 1) * BEADS_PAGE_SIZE;
2702
+ var pageIssues = filtered.slice(start, start + BEADS_PAGE_SIZE);
2703
+
2704
+ // Update filter count
2705
+ var isFiltered = beadsSearch.value.trim() || beadsPriorityFilter.value;
2706
+ if (filtered.length === 0 && isFiltered) {
2707
+ beadsFilterCount.textContent = 'No matches (filtered from ' + allBeadsIssues.length + ')';
2708
+ } else if (isFiltered) {
2709
+ beadsFilterCount.textContent = 'Showing ' + (start + 1) + '\\u2013' + (start + pageIssues.length) + ' of ' + filtered.length + ' (filtered from ' + allBeadsIssues.length + ')';
2710
+ } else if (filtered.length > 0) {
2711
+ beadsFilterCount.textContent = 'Showing ' + (start + 1) + '\\u2013' + (start + pageIssues.length) + ' of ' + filtered.length;
2712
+ } else {
2713
+ beadsFilterCount.textContent = '';
2714
+ }
2715
+
2716
+ // Render issues
2717
+ if (pageIssues.length > 0) {
2718
+ var html = '';
2719
+ for (var i = 0; i < pageIssues.length; i++) {
2720
+ html += buildIssueHtml(pageIssues[i]);
2721
+ }
2722
+ beadsIssuesList.innerHTML = html;
2723
+ } else if (isFiltered) {
2724
+ beadsIssuesList.innerHTML = '<div class="beads-empty">No issues match the current filters</div>';
2725
+ } else {
2726
+ var emptyLabels = { ready: 'No ready tasks', open: 'No open tasks', all: 'No tasks' };
2727
+ var emptyDiv = document.createElement('div');
2728
+ emptyDiv.className = 'beads-empty';
2729
+ emptyDiv.textContent = emptyLabels[beadsCurrentView] || 'No ready tasks';
2730
+ beadsIssuesList.innerHTML = '';
2731
+ beadsIssuesList.appendChild(emptyDiv);
2732
+ }
2733
+
2734
+ // Pagination controls
2735
+ if (totalPages > 1) {
2736
+ beadsPagination.style.display = 'flex';
2737
+ beadsPageInfo.textContent = 'Page ' + beadsCurrentPage + ' of ' + totalPages;
2738
+ beadsPrevPage.disabled = beadsCurrentPage <= 1;
2739
+ beadsNextPage.disabled = beadsCurrentPage >= totalPages;
2740
+ } else {
2741
+ beadsPagination.style.display = 'none';
2742
+ }
2743
+ }
2433
2744
 
2434
2745
  function updateBeads(data) {
2435
2746
  const beadsUnavailable = document.getElementById('beadsUnavailable');
@@ -2442,6 +2753,8 @@ export function getDashboardHTML() {
2442
2753
  beadsContent.style.display = 'none';
2443
2754
  beadsHeaderStats.style.display = 'none';
2444
2755
  beadsBadgeEl.style.display = 'none';
2756
+ beadsToolbar.style.display = 'none';
2757
+ beadsViewToggle.style.display = 'none';
2445
2758
  return;
2446
2759
  }
2447
2760
 
@@ -2463,43 +2776,64 @@ export function getDashboardHTML() {
2463
2776
  beadsDaemonText.textContent = 'Daemon not running';
2464
2777
  }
2465
2778
 
2466
- // Issues list
2467
- if (data.issues && data.issues.length > 0) {
2468
- let html = '';
2469
- for (const issue of data.issues) {
2470
- const hasDescription = issue.description && issue.description.trim();
2471
- html += '<div class="beads-issue" onclick="toggleBeadsIssue(this)">';
2472
- html += '<span class="beads-issue-id">' + escapeHtml(issue.id) + '</span>';
2473
- html += '<div class="beads-issue-content">';
2474
- html += '<div class="beads-issue-title">';
2475
- html += '<svg class="beads-issue-expand" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M9 18l6-6-6-6"/></svg>';
2476
- html += '<span>' + escapeHtml(issue.title) + '</span>';
2477
- html += '</div>';
2478
- html += '<div class="beads-issue-meta">';
2479
- if (issue.issue_type) {
2480
- html += '<span class="beads-issue-type">' + escapeHtml(issue.issue_type) + '</span>';
2481
- }
2482
- if (issue.priority) {
2483
- html += '<span class="beads-issue-priority">';
2484
- html += '<span class="priority-dot priority-' + issue.priority + '"></span>';
2485
- html += 'P' + issue.priority;
2486
- html += '</span>';
2487
- }
2488
- html += '</div>';
2489
- if (hasDescription) {
2490
- html += '<div class="beads-issue-description">' + escapeHtml(issue.description) + '</div>';
2491
- } else {
2492
- html += '<div class="beads-issue-description beads-issue-no-description">No description available</div>';
2493
- }
2494
- html += '</div>';
2495
- html += '</div>';
2496
- }
2497
- beadsIssuesList.innerHTML = html;
2498
- } else {
2499
- beadsIssuesList.innerHTML = '<div class="beads-empty">No ready tasks</div>';
2500
- }
2779
+ // Store all issue lists and render current view
2780
+ beadsData = {
2781
+ readyIssues: data.readyIssues || [],
2782
+ openIssues: data.openIssues || [],
2783
+ allIssues: data.allIssues || [],
2784
+ };
2785
+ var hasAnyIssues = beadsData.readyIssues.length > 0 || beadsData.openIssues.length > 0 || beadsData.allIssues.length > 0;
2786
+ beadsViewToggle.style.display = hasAnyIssues ? 'flex' : 'none';
2787
+ updateBeadsView();
2501
2788
  }
2502
2789
 
2790
+ // Beads view toggle listeners
2791
+ var viewBtns = beadsViewToggle.querySelectorAll('.beads-view-btn');
2792
+ for (var vi = 0; vi < viewBtns.length; vi++) {
2793
+ viewBtns[vi].addEventListener('click', function() {
2794
+ beadsCurrentView = this.getAttribute('data-view') || 'ready';
2795
+ updateBeadsView();
2796
+ });
2797
+ }
2798
+
2799
+ // Beads event listeners
2800
+ var beadsSearchTimeout = null;
2801
+ beadsSearch.addEventListener('input', function() {
2802
+ clearTimeout(beadsSearchTimeout);
2803
+ beadsSearchTimeout = setTimeout(function() {
2804
+ beadsCurrentPage = 1;
2805
+ renderBeadsPage();
2806
+ }, 250);
2807
+ });
2808
+
2809
+ beadsPriorityFilter.addEventListener('change', function() {
2810
+ beadsCurrentPage = 1;
2811
+ renderBeadsPage();
2812
+ });
2813
+
2814
+ beadsSortOrder.addEventListener('change', function() {
2815
+ beadsCurrentPage = 1;
2816
+ renderBeadsPage();
2817
+ });
2818
+
2819
+ beadsPrevPage.addEventListener('click', function() {
2820
+ if (beadsCurrentPage > 1) {
2821
+ beadsCurrentPage--;
2822
+ renderBeadsPage();
2823
+ beadsIssuesList.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
2824
+ }
2825
+ });
2826
+
2827
+ beadsNextPage.addEventListener('click', function() {
2828
+ var filtered = getFilteredBeadsIssues();
2829
+ var totalPages = Math.ceil(filtered.length / BEADS_PAGE_SIZE);
2830
+ if (beadsCurrentPage < totalPages) {
2831
+ beadsCurrentPage++;
2832
+ renderBeadsPage();
2833
+ beadsIssuesList.scrollIntoView({ behavior: 'smooth', block: 'nearest' });
2834
+ }
2835
+ });
2836
+
2503
2837
  // Toggle beads issue expansion
2504
2838
  function toggleBeadsIssue(element) {
2505
2839
  element.classList.toggle('expanded');
@@ -1 +1 @@
1
- {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,QAAQ,GAAG,4pLAA4pL,CAAC;AAE9qL;;GAEG;AACH,MAAM,WAAW,GAAG,w7HAAw7H,CAAC;AAE78H;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;4CAMmC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAipCf,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA++CxC,CAAC;AACT,CAAC"}
1
+ {"version":3,"file":"ui.js","sourceRoot":"","sources":["../../src/dashboard/ui.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,QAAQ,GAAG,4pLAA4pL,CAAC;AAE9qL;;GAEG;AACH,MAAM,WAAW,GAAG,w7HAAw7H,CAAC;AAE78H;;;GAGG;AACH,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;4CAMmC,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCA6vCf,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAitDxC,CAAC;AACT,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "glancey",
3
- "version": "2.2.1",
3
+ "version": "2.4.0",
4
4
  "description": "MCP plugin for semantic code search using LanceDB - gives AI coding agents deep context from your entire codebase",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",