diff --git a/scripts/scratch/analyze-issues.cjs b/scripts/scratch/analyze-issues.cjs deleted file mode 100644 index 14a144636a..0000000000 --- a/scripts/scratch/analyze-issues.cjs +++ /dev/null @@ -1,41 +0,0 @@ -const fs = require('fs'); -const issues = JSON.parse(fs.readFileSync('/tmp/issues.json', 'utf8')); - -const bugIssues = []; -const otherIssues = []; - -for (const issue of issues) { - const isBug = issue.labels.some(l => l.name === 'bug') || - /doesn't work|broken|crash|error/i.test(issue.body); - const isFeature = issue.labels.some(l => l.name === 'enhancement' || l.name === 'feature') || /feature/i.test(issue.body); - const isQuestion = issue.labels.some(l => l.name === 'question') || /how to/i.test(issue.body); - - if (isBug) { - bugIssues.push(issue); - } else { - otherIssues.push({ - number: issue.number, - title: issue.title, - type: isFeature ? 'Feature' : (isQuestion ? 'Question' : 'Other') - }); - } -} - -console.log("=== BUG ISSUES ==="); -for (const bug of bugIssues) { - console.log(`\nIssue #${bug.number}: ${bug.title}`); - console.log(`Author: ${bug.author.login} | Created: ${bug.createdAt}`); - console.log(`Labels: ${bug.labels.map(l => l.name).join(', ')}`); - console.log(`Comments: ${bug.comments.length}`); - console.log(`Body Snippet: ${bug.body.substring(0, 200).replace(/\n/g, ' ')}...`); - - if (bug.comments.length > 0) { - const lastComment = bug.comments[bug.comments.length - 1]; - console.log(`Last Comment by ${lastComment.author.login}: ${lastComment.body.substring(0, 150).replace(/\n/g, ' ')}`); - } -} - -console.log("\n=== OTHER ISSUES (SKIPPED) ==="); -for (const other of otherIssues) { - console.log(`#${other.number} - ${other.title} (${other.type})`); -} diff --git a/scripts/scratch/analyze-issues.js b/scripts/scratch/analyze-issues.js deleted file mode 100644 index 14a144636a..0000000000 --- a/scripts/scratch/analyze-issues.js +++ /dev/null @@ -1,41 +0,0 @@ -const fs = require('fs'); -const issues = JSON.parse(fs.readFileSync('/tmp/issues.json', 'utf8')); - -const bugIssues = []; -const otherIssues = []; - -for (const issue of issues) { - const isBug = issue.labels.some(l => l.name === 'bug') || - /doesn't work|broken|crash|error/i.test(issue.body); - const isFeature = issue.labels.some(l => l.name === 'enhancement' || l.name === 'feature') || /feature/i.test(issue.body); - const isQuestion = issue.labels.some(l => l.name === 'question') || /how to/i.test(issue.body); - - if (isBug) { - bugIssues.push(issue); - } else { - otherIssues.push({ - number: issue.number, - title: issue.title, - type: isFeature ? 'Feature' : (isQuestion ? 'Question' : 'Other') - }); - } -} - -console.log("=== BUG ISSUES ==="); -for (const bug of bugIssues) { - console.log(`\nIssue #${bug.number}: ${bug.title}`); - console.log(`Author: ${bug.author.login} | Created: ${bug.createdAt}`); - console.log(`Labels: ${bug.labels.map(l => l.name).join(', ')}`); - console.log(`Comments: ${bug.comments.length}`); - console.log(`Body Snippet: ${bug.body.substring(0, 200).replace(/\n/g, ' ')}...`); - - if (bug.comments.length > 0) { - const lastComment = bug.comments[bug.comments.length - 1]; - console.log(`Last Comment by ${lastComment.author.login}: ${lastComment.body.substring(0, 150).replace(/\n/g, ' ')}`); - } -} - -console.log("\n=== OTHER ISSUES (SKIPPED) ==="); -for (const other of otherIssues) { - console.log(`#${other.number} - ${other.title} (${other.type})`); -} diff --git a/scripts/scratch/merged_prs.json b/scripts/scratch/merged_prs.json deleted file mode 100644 index a0371a36e7..0000000000 --- a/scripts/scratch/merged_prs.json +++ /dev/null @@ -1,22 +0,0 @@ -{"number":1917,"title":"Release v3.7.9","fixes":"1893"} -{"number":1907,"title":"feat(proxy): move proxy configuration to dedicated System → Proxy page","fixes":"1905"} -{"number":1902,"title":"feat: add K/M/B/T cost shortener to prevent UI overflow","fixes":"1900"} -{"number":1851,"title":"Release v3.7.8","fixes":"1788"} -{"number":1847,"title":"feat: integrate 1proxy free proxy marketplace","fixes":"1788"} -{"number":1769,"title":"fix(antigravity): normalize Gemini bridge payloads","fixes":"1748"} -{"number":1758,"title":"feat(mcp): Phase 6 MCP Compression Tools + Provider-Aware Caching","fixes":"1591"} -{"number":1756,"title":"feat(compression): Phase 5 — Dashboard UI & Analytics (#1590)","fixes":"1590"} -{"number":1741,"title":"feat(compression): Phase 4 — ultra mode with heuristic token pruning and SLM stub","fixes":"1589"} -{"number":1728,"title":"feat(pwa): add fullscreen installable PWA with manifest","fixes":"1695"} -{"number":1710,"title":"fix(combo): avoid false ALL_ACCOUNTS_INACTIVE on quality failures","fixes":"1707"} -{"number":1685,"title":"[HOTFIX] Complete context truncation fix (PR #1480 follow-up)","fixes":"1470"} -{"number":1640,"title":"fix(codex): avoid startup crash when wreq-js is unavailable","fixes":"1612"} -{"number":1639,"title":"fix: package Electron runtime deps","fixes":"1636"} -{"number":1633,"title":"feat(compression): Phase 1 — Modular Prompt Compression Pipeline (Lite mode, 61 tests)","fixes":"1586"} -{"number":1578,"title":"fix(codex): update client version for gpt-5.5","fixes":"1545"} -{"number":1541,"title":"fix: remove stale compiled dataPaths.js artifact","fixes":"1539"} -{"number":1509,"title":"bug: fixes Error: Cannot find module 'process/' #1507","fixes":"1507"} -{"number":1476,"title":"feat(vision-bridge): add automatic image description fallback for non-vision models","fixes":"1424"} -{"number":1439,"title":"Release v3.7.0","fixes":"1592"} -{"number":1416,"title":"Fix/gemini cli ref 400 error for opencode","fixes":"461"} -{"number":1383,"title":"fix(docker): copy postinstallSupport.mjs before npm ci in Dockerfile","fixes":"1382"} diff --git a/scripts/scratch/pr_search.json b/scripts/scratch/pr_search.json deleted file mode 100644 index 8740c534a9..0000000000 --- a/scripts/scratch/pr_search.json +++ /dev/null @@ -1,30 +0,0 @@ -[] -[{"mergedAt":"2026-04-03T21:48:12Z","number":963,"title":"build(deps): bump actions/checkout from 4 to 6"},{"mergedAt":"2026-03-20T19:06:53Z","number":500,"title":"chore(deps): bump actions/checkout from 4 to 6"},{"mergedAt":"2026-02-17T04:04:31Z","number":58,"title":"chore(deps): bump actions/checkout from 4 to 6"}] -[] -[{"mergedAt":"2026-05-03T19:16:18Z","number":1907,"title":"feat(proxy): move proxy configuration to dedicated System → Proxy page"}] -[{"mergedAt":"2026-05-03T19:16:50Z","number":1902,"title":"feat: add K/M/B/T cost shortener to prevent UI overflow"}] -[] -[] -[] -[] -[] -[{"mergedAt":"2026-04-28T02:27:20Z","number":1692,"title":"fix(sse): sanitize OpenAI tool schemas for strict upstream validators (kimi-k2.6 via opencode-go)"}] -[] -[] -[] -[] -[{"mergedAt":"2026-04-19T22:50:30Z","number":1404,"title":"Release v3.6.9"}] -[] -[] -[] -[] -[] -[] -[{"mergedAt":"2026-02-21T09:55:40Z","number":94,"title":"Fix/auto generate jwt secret"}] -[{"mergedAt":"2026-03-10T12:09:35Z","number":264,"title":"deps: bump the development group with 5 updates"}] -[] -[] -[] -[] -[] -[{"mergedAt":"2026-04-30T21:11:57Z","number":1758,"title":"feat(mcp): Phase 6 MCP Compression Tools + Provider-Aware Caching"},{"mergedAt":"2026-04-30T20:56:51Z","number":1756,"title":"feat(compression): Phase 5 — Dashboard UI & Analytics (#1590)"},{"mergedAt":"2026-04-30T20:43:28Z","number":1741,"title":"feat(compression): Phase 4 — ultra mode with heuristic token pruning and SLM stub"}]