Revert "fix(server): time out hanging OpenCode CLI version probes" - #52

Merged
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout
Sep 2, 2026
Merged

Revert "fix(server): time out hanging OpenCode CLI version probes"#52
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout

Conversation

@buluma

@bulumabuluma commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Every CI run since this landed (PR #48's own CI, main's push CI, and two follow-up PRs) has "Test Server 2" hang for 15-20min and time out — every run before it finished under 5min. main is only two commits past the last stable tag (v0.0.61 = PR #47), and this is the other one.

Isolated it to apps/server/src/provider/Layers/ProviderRegistry.test.ts specifically (its sibling ProviderInstanceRegistryLive.test.ts, which also wires the real OpenCodeRuntimeLive, passes clean) via a throwaway CI probe job, but didn't nail down the exact mechanism before deciding to just revert and unblock CI rather than keep burning CI minutes on it. Leading theory, for whoever picks this back up: opencodeRuntime.ts's runOpenCodeCommand now spawns with detached: hostPlatform !== "win32" plus a Scope.addFinalizer that kills the process group on scope close — a shell-level timeout sent to the test runner didn't release the hung step either, suggesting an orphaned detached grandchild process outliving normal cleanup and holding a stream open.

Reverts cleanly, single squash-merged commit, no conflicts.

Summary by CodeRabbit

  • Bug Fixes
    • Improved OpenCode CLI version detection by reporting runtime failures more clearly.
    • Removed the fixed timeout from version checks, allowing checks to complete based on the command’s actual result.
    • Improved OpenCode command process handling for more reliable execution and cleanup.

@coderabbitai

coderabbitaiBot commented Sep 2, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: bd02a55f-b15e-42be-b6db-1474e71af483

📥 Commits

Reviewing files that changed from the base of the PR and between 56eab92 and 50275f6.

📒 Files selected for processing (4)
  • apps/server/src/provider/Layers/OpenCodeProvider.test.ts
  • apps/server/src/provider/Layers/OpenCodeProvider.ts
  • apps/server/src/provider/opencodeRuntime.ts
  • plan-opencode-context-cap.md

📝 Walkthrough

Walkthrough

The OpenCode version probe no longer times out after four seconds. Runtime failures remain wrapped as OpenCodeProbeError. Command execution now relies on scoped process lifecycle handling, and obsolete probe tests and planning documentation were removed.

Changes

OpenCode probe and runtime handling

Layer / File(s)Summary
Direct version probing
apps/server/src/provider/Layers/OpenCodeProvider.ts, apps/server/src/provider/Layers/OpenCodeProvider.test.ts
The version probe executes without Effect.timeoutOrElse. Runtime failures remain wrapped with diagnostic details. Tests now cover immediate success and configured failures instead of simulated hangs.
Scoped command execution
apps/server/src/provider/opencodeRuntime.ts, plan-opencode-context-cap.md
runOpenCodeCommand removes custom process-group configuration and cleanup. The obsolete OpenCode context-cap implementation plan was deleted. Estimated code review effort: 3 (Moderate) | ~20 minutes
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch revert-opencode-version-probe-timeout

Comment @coderabbitai help to get the list of available commands.

@buluma
buluma merged commit 588591f into mainSep 2, 2026
15 of 16 checks passed
@buluma
buluma deleted the revert-opencode-version-probe-timeout branch September 2, 2026 14:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@buluma
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Revert "fix(server): time out hanging OpenCode CLI version probes" - #52

Merged
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout
Sep 2, 2026
Merged

Revert "fix(server): time out hanging OpenCode CLI version probes"#52
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout

Conversation

@buluma

@bulumabuluma commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Every CI run since this landed (PR #48's own CI, main's push CI, and two follow-up PRs) has "Test Server 2" hang for 15-20min and time out — every run before it finished under 5min. main is only two commits past the last stable tag (v0.0.61 = PR #47), and this is the other one.

Isolated it to apps/server/src/provider/Layers/ProviderRegistry.test.ts specifically (its sibling ProviderInstanceRegistryLive.test.ts, which also wires the real OpenCodeRuntimeLive, passes clean) via a throwaway CI probe job, but didn't nail down the exact mechanism before deciding to just revert and unblock CI rather than keep burning CI minutes on it. Leading theory, for whoever picks this back up: opencodeRuntime.ts's runOpenCodeCommand now spawns with detached: hostPlatform !== "win32" plus a Scope.addFinalizer that kills the process group on scope close — a shell-level timeout sent to the test runner didn't release the hung step either, suggesting an orphaned detached grandchild process outliving normal cleanup and holding a stream open.

Reverts cleanly, single squash-merged commit, no conflicts.

Summary by CodeRabbit

  • Bug Fixes
    • Improved OpenCode CLI version detection by reporting runtime failures more clearly.
    • Removed the fixed timeout from version checks, allowing checks to complete based on the command’s actual result.
    • Improved OpenCode command process handling for more reliable execution and cleanup.

@coderabbitai

coderabbitaiBot commented Sep 2, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: bd02a55f-b15e-42be-b6db-1474e71af483

📥 Commits

Reviewing files that changed from the base of the PR and between 56eab92 and 50275f6.

📒 Files selected for processing (4)
  • apps/server/src/provider/Layers/OpenCodeProvider.test.ts
  • apps/server/src/provider/Layers/OpenCodeProvider.ts
  • apps/server/src/provider/opencodeRuntime.ts
  • plan-opencode-context-cap.md

📝 Walkthrough

Walkthrough

The OpenCode version probe no longer times out after four seconds. Runtime failures remain wrapped as OpenCodeProbeError. Command execution now relies on scoped process lifecycle handling, and obsolete probe tests and planning documentation were removed.

Changes

OpenCode probe and runtime handling

Layer / File(s)Summary
Direct version probing
apps/server/src/provider/Layers/OpenCodeProvider.ts, apps/server/src/provider/Layers/OpenCodeProvider.test.ts
The version probe executes without Effect.timeoutOrElse. Runtime failures remain wrapped with diagnostic details. Tests now cover immediate success and configured failures instead of simulated hangs.
Scoped command execution
apps/server/src/provider/opencodeRuntime.ts, plan-opencode-context-cap.md
runOpenCodeCommand removes custom process-group configuration and cleanup. The obsolete OpenCode context-cap implementation plan was deleted. Estimated code review effort: 3 (Moderate) | ~20 minutes
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch revert-opencode-version-probe-timeout

Comment @coderabbitai help to get the list of available commands.

@buluma
buluma merged commit 588591f into mainSep 2, 2026
15 of 16 checks passed
@buluma
buluma deleted the revert-opencode-version-probe-timeout branch September 2, 2026 14:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@buluma
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Revert "fix(server): time out hanging OpenCode CLI version probes" - #52

Merged
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout
Sep 2, 2026
Merged

Revert "fix(server): time out hanging OpenCode CLI version probes"#52
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout

Conversation

@buluma

@bulumabuluma commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Every CI run since this landed (PR #48's own CI, main's push CI, and two follow-up PRs) has "Test Server 2" hang for 15-20min and time out — every run before it finished under 5min. main is only two commits past the last stable tag (v0.0.61 = PR #47), and this is the other one.

Isolated it to apps/server/src/provider/Layers/ProviderRegistry.test.ts specifically (its sibling ProviderInstanceRegistryLive.test.ts, which also wires the real OpenCodeRuntimeLive, passes clean) via a throwaway CI probe job, but didn't nail down the exact mechanism before deciding to just revert and unblock CI rather than keep burning CI minutes on it. Leading theory, for whoever picks this back up: opencodeRuntime.ts's runOpenCodeCommand now spawns with detached: hostPlatform !== "win32" plus a Scope.addFinalizer that kills the process group on scope close — a shell-level timeout sent to the test runner didn't release the hung step either, suggesting an orphaned detached grandchild process outliving normal cleanup and holding a stream open.

Reverts cleanly, single squash-merged commit, no conflicts.

Summary by CodeRabbit

  • Bug Fixes
    • Improved OpenCode CLI version detection by reporting runtime failures more clearly.
    • Removed the fixed timeout from version checks, allowing checks to complete based on the command’s actual result.
    • Improved OpenCode command process handling for more reliable execution and cleanup.

@coderabbitai

coderabbitaiBot commented Sep 2, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: bd02a55f-b15e-42be-b6db-1474e71af483

📥 Commits

Reviewing files that changed from the base of the PR and between 56eab92 and 50275f6.

📒 Files selected for processing (4)
  • apps/server/src/provider/Layers/OpenCodeProvider.test.ts
  • apps/server/src/provider/Layers/OpenCodeProvider.ts
  • apps/server/src/provider/opencodeRuntime.ts
  • plan-opencode-context-cap.md

📝 Walkthrough

Walkthrough

The OpenCode version probe no longer times out after four seconds. Runtime failures remain wrapped as OpenCodeProbeError. Command execution now relies on scoped process lifecycle handling, and obsolete probe tests and planning documentation were removed.

Changes

OpenCode probe and runtime handling

Layer / File(s)Summary
Direct version probing
apps/server/src/provider/Layers/OpenCodeProvider.ts, apps/server/src/provider/Layers/OpenCodeProvider.test.ts
The version probe executes without Effect.timeoutOrElse. Runtime failures remain wrapped with diagnostic details. Tests now cover immediate success and configured failures instead of simulated hangs.
Scoped command execution
apps/server/src/provider/opencodeRuntime.ts, plan-opencode-context-cap.md
runOpenCodeCommand removes custom process-group configuration and cleanup. The obsolete OpenCode context-cap implementation plan was deleted. Estimated code review effort: 3 (Moderate) | ~20 minutes
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch revert-opencode-version-probe-timeout

Comment @coderabbitai help to get the list of available commands.

@buluma
buluma merged commit 588591f into mainSep 2, 2026
15 of 16 checks passed
@buluma
buluma deleted the revert-opencode-version-probe-timeout branch September 2, 2026 14:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@buluma
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Revert "fix(server): time out hanging OpenCode CLI version probes" - #52

Merged
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout
Sep 2, 2026
Merged

Revert "fix(server): time out hanging OpenCode CLI version probes"#52
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout

Conversation

@buluma

@bulumabuluma commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Every CI run since this landed (PR #48's own CI, main's push CI, and two follow-up PRs) has "Test Server 2" hang for 15-20min and time out — every run before it finished under 5min. main is only two commits past the last stable tag (v0.0.61 = PR #47), and this is the other one.

Isolated it to apps/server/src/provider/Layers/ProviderRegistry.test.ts specifically (its sibling ProviderInstanceRegistryLive.test.ts, which also wires the real OpenCodeRuntimeLive, passes clean) via a throwaway CI probe job, but didn't nail down the exact mechanism before deciding to just revert and unblock CI rather than keep burning CI minutes on it. Leading theory, for whoever picks this back up: opencodeRuntime.ts's runOpenCodeCommand now spawns with detached: hostPlatform !== "win32" plus a Scope.addFinalizer that kills the process group on scope close — a shell-level timeout sent to the test runner didn't release the hung step either, suggesting an orphaned detached grandchild process outliving normal cleanup and holding a stream open.

Reverts cleanly, single squash-merged commit, no conflicts.

Summary by CodeRabbit

  • Bug Fixes
    • Improved OpenCode CLI version detection by reporting runtime failures more clearly.
    • Removed the fixed timeout from version checks, allowing checks to complete based on the command’s actual result.
    • Improved OpenCode command process handling for more reliable execution and cleanup.

@coderabbitai

coderabbitaiBot commented Sep 2, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: bd02a55f-b15e-42be-b6db-1474e71af483

📥 Commits

Reviewing files that changed from the base of the PR and between 56eab92 and 50275f6.

📒 Files selected for processing (4)
  • apps/server/src/provider/Layers/OpenCodeProvider.test.ts
  • apps/server/src/provider/Layers/OpenCodeProvider.ts
  • apps/server/src/provider/opencodeRuntime.ts
  • plan-opencode-context-cap.md

📝 Walkthrough

Walkthrough

The OpenCode version probe no longer times out after four seconds. Runtime failures remain wrapped as OpenCodeProbeError. Command execution now relies on scoped process lifecycle handling, and obsolete probe tests and planning documentation were removed.

Changes

OpenCode probe and runtime handling

Layer / File(s)Summary
Direct version probing
apps/server/src/provider/Layers/OpenCodeProvider.ts, apps/server/src/provider/Layers/OpenCodeProvider.test.ts
The version probe executes without Effect.timeoutOrElse. Runtime failures remain wrapped with diagnostic details. Tests now cover immediate success and configured failures instead of simulated hangs.
Scoped command execution
apps/server/src/provider/opencodeRuntime.ts, plan-opencode-context-cap.md
runOpenCodeCommand removes custom process-group configuration and cleanup. The obsolete OpenCode context-cap implementation plan was deleted. Estimated code review effort: 3 (Moderate) | ~20 minutes
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch revert-opencode-version-probe-timeout

Comment @coderabbitai help to get the list of available commands.

@buluma
buluma merged commit 588591f into mainSep 2, 2026
15 of 16 checks passed
@buluma
buluma deleted the revert-opencode-version-probe-timeout branch September 2, 2026 14:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@buluma
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Revert "fix(server): time out hanging OpenCode CLI version probes" - #52

Merged
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout
Sep 2, 2026
Merged

Revert "fix(server): time out hanging OpenCode CLI version probes"#52
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout

Conversation

@buluma

@bulumabuluma commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Every CI run since this landed (PR #48's own CI, main's push CI, and two follow-up PRs) has "Test Server 2" hang for 15-20min and time out — every run before it finished under 5min. main is only two commits past the last stable tag (v0.0.61 = PR #47), and this is the other one.

Isolated it to apps/server/src/provider/Layers/ProviderRegistry.test.ts specifically (its sibling ProviderInstanceRegistryLive.test.ts, which also wires the real OpenCodeRuntimeLive, passes clean) via a throwaway CI probe job, but didn't nail down the exact mechanism before deciding to just revert and unblock CI rather than keep burning CI minutes on it. Leading theory, for whoever picks this back up: opencodeRuntime.ts's runOpenCodeCommand now spawns with detached: hostPlatform !== "win32" plus a Scope.addFinalizer that kills the process group on scope close — a shell-level timeout sent to the test runner didn't release the hung step either, suggesting an orphaned detached grandchild process outliving normal cleanup and holding a stream open.

Reverts cleanly, single squash-merged commit, no conflicts.

Summary by CodeRabbit

  • Bug Fixes
    • Improved OpenCode CLI version detection by reporting runtime failures more clearly.
    • Removed the fixed timeout from version checks, allowing checks to complete based on the command’s actual result.
    • Improved OpenCode command process handling for more reliable execution and cleanup.

@coderabbitai

coderabbitaiBot commented Sep 2, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: bd02a55f-b15e-42be-b6db-1474e71af483

📥 Commits

Reviewing files that changed from the base of the PR and between 56eab92 and 50275f6.

📒 Files selected for processing (4)
  • apps/server/src/provider/Layers/OpenCodeProvider.test.ts
  • apps/server/src/provider/Layers/OpenCodeProvider.ts
  • apps/server/src/provider/opencodeRuntime.ts
  • plan-opencode-context-cap.md

📝 Walkthrough

Walkthrough

The OpenCode version probe no longer times out after four seconds. Runtime failures remain wrapped as OpenCodeProbeError. Command execution now relies on scoped process lifecycle handling, and obsolete probe tests and planning documentation were removed.

Changes

OpenCode probe and runtime handling

Layer / File(s)Summary
Direct version probing
apps/server/src/provider/Layers/OpenCodeProvider.ts, apps/server/src/provider/Layers/OpenCodeProvider.test.ts
The version probe executes without Effect.timeoutOrElse. Runtime failures remain wrapped with diagnostic details. Tests now cover immediate success and configured failures instead of simulated hangs.
Scoped command execution
apps/server/src/provider/opencodeRuntime.ts, plan-opencode-context-cap.md
runOpenCodeCommand removes custom process-group configuration and cleanup. The obsolete OpenCode context-cap implementation plan was deleted. Estimated code review effort: 3 (Moderate) | ~20 minutes
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch revert-opencode-version-probe-timeout

Comment @coderabbitai help to get the list of available commands.

@buluma
buluma merged commit 588591f into mainSep 2, 2026
15 of 16 checks passed
@buluma
buluma deleted the revert-opencode-version-probe-timeout branch September 2, 2026 14:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@buluma
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Revert "fix(server): time out hanging OpenCode CLI version probes" - #52

Merged
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout
Sep 2, 2026
Merged

Revert "fix(server): time out hanging OpenCode CLI version probes"#52
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout

Conversation

@buluma

@bulumabuluma commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Every CI run since this landed (PR #48's own CI, main's push CI, and two follow-up PRs) has "Test Server 2" hang for 15-20min and time out — every run before it finished under 5min. main is only two commits past the last stable tag (v0.0.61 = PR #47), and this is the other one.

Isolated it to apps/server/src/provider/Layers/ProviderRegistry.test.ts specifically (its sibling ProviderInstanceRegistryLive.test.ts, which also wires the real OpenCodeRuntimeLive, passes clean) via a throwaway CI probe job, but didn't nail down the exact mechanism before deciding to just revert and unblock CI rather than keep burning CI minutes on it. Leading theory, for whoever picks this back up: opencodeRuntime.ts's runOpenCodeCommand now spawns with detached: hostPlatform !== "win32" plus a Scope.addFinalizer that kills the process group on scope close — a shell-level timeout sent to the test runner didn't release the hung step either, suggesting an orphaned detached grandchild process outliving normal cleanup and holding a stream open.

Reverts cleanly, single squash-merged commit, no conflicts.

Summary by CodeRabbit

  • Bug Fixes
    • Improved OpenCode CLI version detection by reporting runtime failures more clearly.
    • Removed the fixed timeout from version checks, allowing checks to complete based on the command’s actual result.
    • Improved OpenCode command process handling for more reliable execution and cleanup.

@coderabbitai

coderabbitaiBot commented Sep 2, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: bd02a55f-b15e-42be-b6db-1474e71af483

📥 Commits

Reviewing files that changed from the base of the PR and between 56eab92 and 50275f6.

📒 Files selected for processing (4)
  • apps/server/src/provider/Layers/OpenCodeProvider.test.ts
  • apps/server/src/provider/Layers/OpenCodeProvider.ts
  • apps/server/src/provider/opencodeRuntime.ts
  • plan-opencode-context-cap.md

📝 Walkthrough

Walkthrough

The OpenCode version probe no longer times out after four seconds. Runtime failures remain wrapped as OpenCodeProbeError. Command execution now relies on scoped process lifecycle handling, and obsolete probe tests and planning documentation were removed.

Changes

OpenCode probe and runtime handling

Layer / File(s)Summary
Direct version probing
apps/server/src/provider/Layers/OpenCodeProvider.ts, apps/server/src/provider/Layers/OpenCodeProvider.test.ts
The version probe executes without Effect.timeoutOrElse. Runtime failures remain wrapped with diagnostic details. Tests now cover immediate success and configured failures instead of simulated hangs.
Scoped command execution
apps/server/src/provider/opencodeRuntime.ts, plan-opencode-context-cap.md
runOpenCodeCommand removes custom process-group configuration and cleanup. The obsolete OpenCode context-cap implementation plan was deleted. Estimated code review effort: 3 (Moderate) | ~20 minutes
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch revert-opencode-version-probe-timeout

Comment @coderabbitai help to get the list of available commands.

@buluma
buluma merged commit 588591f into mainSep 2, 2026
15 of 16 checks passed
@buluma
buluma deleted the revert-opencode-version-probe-timeout branch September 2, 2026 14:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@buluma
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Revert "fix(server): time out hanging OpenCode CLI version probes" - #52

Merged
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout
Sep 2, 2026
Merged

Revert "fix(server): time out hanging OpenCode CLI version probes"#52
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout

Conversation

@buluma

@bulumabuluma commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Every CI run since this landed (PR #48's own CI, main's push CI, and two follow-up PRs) has "Test Server 2" hang for 15-20min and time out — every run before it finished under 5min. main is only two commits past the last stable tag (v0.0.61 = PR #47), and this is the other one.

Isolated it to apps/server/src/provider/Layers/ProviderRegistry.test.ts specifically (its sibling ProviderInstanceRegistryLive.test.ts, which also wires the real OpenCodeRuntimeLive, passes clean) via a throwaway CI probe job, but didn't nail down the exact mechanism before deciding to just revert and unblock CI rather than keep burning CI minutes on it. Leading theory, for whoever picks this back up: opencodeRuntime.ts's runOpenCodeCommand now spawns with detached: hostPlatform !== "win32" plus a Scope.addFinalizer that kills the process group on scope close — a shell-level timeout sent to the test runner didn't release the hung step either, suggesting an orphaned detached grandchild process outliving normal cleanup and holding a stream open.

Reverts cleanly, single squash-merged commit, no conflicts.

Summary by CodeRabbit

  • Bug Fixes
    • Improved OpenCode CLI version detection by reporting runtime failures more clearly.
    • Removed the fixed timeout from version checks, allowing checks to complete based on the command’s actual result.
    • Improved OpenCode command process handling for more reliable execution and cleanup.

@coderabbitai

coderabbitaiBot commented Sep 2, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: bd02a55f-b15e-42be-b6db-1474e71af483

📥 Commits

Reviewing files that changed from the base of the PR and between 56eab92 and 50275f6.

📒 Files selected for processing (4)
  • apps/server/src/provider/Layers/OpenCodeProvider.test.ts
  • apps/server/src/provider/Layers/OpenCodeProvider.ts
  • apps/server/src/provider/opencodeRuntime.ts
  • plan-opencode-context-cap.md

📝 Walkthrough

Walkthrough

The OpenCode version probe no longer times out after four seconds. Runtime failures remain wrapped as OpenCodeProbeError. Command execution now relies on scoped process lifecycle handling, and obsolete probe tests and planning documentation were removed.

Changes

OpenCode probe and runtime handling

Layer / File(s)Summary
Direct version probing
apps/server/src/provider/Layers/OpenCodeProvider.ts, apps/server/src/provider/Layers/OpenCodeProvider.test.ts
The version probe executes without Effect.timeoutOrElse. Runtime failures remain wrapped with diagnostic details. Tests now cover immediate success and configured failures instead of simulated hangs.
Scoped command execution
apps/server/src/provider/opencodeRuntime.ts, plan-opencode-context-cap.md
runOpenCodeCommand removes custom process-group configuration and cleanup. The obsolete OpenCode context-cap implementation plan was deleted. Estimated code review effort: 3 (Moderate) | ~20 minutes
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch revert-opencode-version-probe-timeout

Comment @coderabbitai help to get the list of available commands.

@buluma
buluma merged commit 588591f into mainSep 2, 2026
15 of 16 checks passed
@buluma
buluma deleted the revert-opencode-version-probe-timeout branch September 2, 2026 14:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@buluma
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Revert "fix(server): time out hanging OpenCode CLI version probes" - #52

Merged
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout
Sep 2, 2026
Merged

Revert "fix(server): time out hanging OpenCode CLI version probes"#52
buluma merged 1 commit into
mainfrom
revert-opencode-version-probe-timeout

Conversation

@buluma

@bulumabuluma commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Every CI run since this landed (PR #48's own CI, main's push CI, and two follow-up PRs) has "Test Server 2" hang for 15-20min and time out — every run before it finished under 5min. main is only two commits past the last stable tag (v0.0.61 = PR #47), and this is the other one.

Isolated it to apps/server/src/provider/Layers/ProviderRegistry.test.ts specifically (its sibling ProviderInstanceRegistryLive.test.ts, which also wires the real OpenCodeRuntimeLive, passes clean) via a throwaway CI probe job, but didn't nail down the exact mechanism before deciding to just revert and unblock CI rather than keep burning CI minutes on it. Leading theory, for whoever picks this back up: opencodeRuntime.ts's runOpenCodeCommand now spawns with detached: hostPlatform !== "win32" plus a Scope.addFinalizer that kills the process group on scope close — a shell-level timeout sent to the test runner didn't release the hung step either, suggesting an orphaned detached grandchild process outliving normal cleanup and holding a stream open.

Reverts cleanly, single squash-merged commit, no conflicts.

Summary by CodeRabbit

  • Bug Fixes
    • Improved OpenCode CLI version detection by reporting runtime failures more clearly.
    • Removed the fixed timeout from version checks, allowing checks to complete based on the command’s actual result.
    • Improved OpenCode command process handling for more reliable execution and cleanup.

@coderabbitai

coderabbitaiBot commented Sep 2, 2026

Copy link
Copy Markdown

Review Change Stack

Caution

Review failed

The pull request is closed.

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Team

Run ID: bd02a55f-b15e-42be-b6db-1474e71af483

📥 Commits

Reviewing files that changed from the base of the PR and between 56eab92 and 50275f6.

📒 Files selected for processing (4)
  • apps/server/src/provider/Layers/OpenCodeProvider.test.ts
  • apps/server/src/provider/Layers/OpenCodeProvider.ts
  • apps/server/src/provider/opencodeRuntime.ts
  • plan-opencode-context-cap.md

📝 Walkthrough

Walkthrough

The OpenCode version probe no longer times out after four seconds. Runtime failures remain wrapped as OpenCodeProbeError. Command execution now relies on scoped process lifecycle handling, and obsolete probe tests and planning documentation were removed.

Changes

OpenCode probe and runtime handling

Layer / File(s)Summary
Direct version probing
apps/server/src/provider/Layers/OpenCodeProvider.ts, apps/server/src/provider/Layers/OpenCodeProvider.test.ts
The version probe executes without Effect.timeoutOrElse. Runtime failures remain wrapped with diagnostic details. Tests now cover immediate success and configured failures instead of simulated hangs.
Scoped command execution
apps/server/src/provider/opencodeRuntime.ts, plan-opencode-context-cap.md
runOpenCodeCommand removes custom process-group configuration and cleanup. The obsolete OpenCode context-cap implementation plan was deleted. Estimated code review effort: 3 (Moderate) | ~20 minutes
✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch revert-opencode-version-probe-timeout

Comment @coderabbitai help to get the list of available commands.

@buluma
buluma merged commit 588591f into mainSep 2, 2026
15 of 16 checks passed
@buluma
buluma deleted the revert-opencode-version-probe-timeout branch September 2, 2026 14:47
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@buluma