buddy-workbench 0.1.93 → 0.1.94

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "buddy-workbench",
3
- "version": "0.1.93",
3
+ "version": "0.1.94",
4
4
  "private": false,
5
5
  "type": "module",
6
6
  "bin": {
@@ -512,21 +512,23 @@ router.get('/recently-updated', async (_req, res) => {
512
512
  'updated >= -60d ORDER BY updated DESC'
513
513
  ];
514
514
 
515
- const issues = await searchJiraWithFallbacks(jiraHost, headers, jqlCandidates, 'summary,priority,status,updated,duedate,assignee,reporter', 40);
515
+ const issues = await searchJiraWithFallbacks(jiraHost, headers, jqlCandidates, 'summary,priority,status,updated,duedate,assignee,reporter,issuetype', 40);
516
516
 
517
- const results = issues.map((issue) => {
518
- const fields = issue.fields || {};
519
- return {
520
- id: issue.id,
521
- key: issue.key,
522
- summary: fields.summary || issue.key,
523
- priority: fields.priority?.name || '',
524
- status: fields.status?.name || '',
525
- updatedAt: fields.updated || null,
526
- dueDate: fields.duedate || null,
527
- url: `https://${jiraHost}/browse/${issue.key}`
528
- };
529
- });
517
+ const results = issues
518
+ .filter((issue) => !String(issue.fields?.issuetype?.name || '').toLowerCase().includes('release'))
519
+ .map((issue) => {
520
+ const fields = issue.fields || {};
521
+ return {
522
+ id: issue.id,
523
+ key: issue.key,
524
+ summary: fields.summary || issue.key,
525
+ priority: fields.priority?.name || '',
526
+ status: fields.status?.name || '',
527
+ updatedAt: fields.updated || null,
528
+ dueDate: fields.duedate || null,
529
+ url: `https://${jiraHost}/browse/${issue.key}`
530
+ };
531
+ });
530
532
 
531
533
  res.json(results);
532
534
  } catch (error) {
@@ -64,11 +64,13 @@ async function resolveJiraIssue(value) {
64
64
 
65
65
  function normalizeNode(node, fallbackText = 'Untitled idea') {
66
66
  const text = String(node?.text ?? node?.label ?? fallbackText).trim() || fallbackText;
67
+ const edgeLabel = String(node?.edgeLabel || '').trim();
67
68
  const x = Number(node?.position?.x);
68
69
  const y = Number(node?.position?.y);
69
70
  return {
70
71
  id: String(node?.id || makeId()),
71
72
  text,
73
+ ...(edgeLabel ? { edgeLabel } : {}),
72
74
  ...(typeof node?.color === 'string' && node.color.trim() ? { color: node.color.trim() } : {}),
73
75
  collapsed: Boolean(node?.collapsed),
74
76
  tested: Boolean(node?.tested),
@@ -21,11 +21,12 @@ let suppressImageCaptureUntil = 0;
21
21
  let swiftClipboardRetryAt = 0;
22
22
  let mozjpegWasmModule = null;
23
23
  const clipboardErrorCounts = new Map();
24
- const clipboardErrorLogTimes = new Map();
24
+ const clipboardErrorLoggedStages = new Set();
25
25
 
26
26
  function markClipboardSuccess(...stages) {
27
27
  for (const stage of stages) {
28
28
  clipboardErrorCounts.delete(stage);
29
+ clipboardErrorLoggedStages.delete(stage);
29
30
  }
30
31
  }
31
32
 
@@ -43,12 +44,10 @@ function logClipboardError(stage, error, threshold = 3) {
43
44
  return;
44
45
  }
45
46
 
46
- // Clipboard polling runs continuously. Avoid filling Error Log with the
47
- // same native-tool failure every two seconds while retaining diagnostics.
48
- const now = Date.now();
49
- const lastLoggedAt = clipboardErrorLogTimes.get(stage) || 0;
50
- if (now - lastLoggedAt < 60 * 1000) return;
51
- clipboardErrorLogTimes.set(stage, now);
47
+ // Clipboard polling runs continuously. Keep one diagnostic per failure
48
+ // episode; a later successful read clears the suppression state.
49
+ if (clipboardErrorLoggedStages.has(stage)) return;
50
+ clipboardErrorLoggedStages.add(stage);
52
51
  const details = String(error?.stderr || error?.stdout || error?.stack || error?.message || error || '').trim();
53
52
  addErrorRecord({
54
53
  source: 'Clipboard Monitor',