Skip to content

fix(docker): add missing t3code.Dockerfile - #3419

Open
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile
Open

fix(docker): add missing t3code.Dockerfile#3419
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: Users running `spawn t3code --beta docker`, `--beta sandbox`, or in the `fast_provision` experiment group hit a runtime failure — `ghcr.io/openrouterteam/spawn-t3code:latest` doesn't exist because the Dockerfile was never added when t3code was introduced.

What

Adds `sh/docker/t3code.Dockerfile` following the exact same pattern as `pi.Dockerfile`:

  • Base: `ubuntu:24.04`
  • Runtime: Node.js 22 via n
  • Install: `npm install -g t3`

All 9 other agents already have their Dockerfiles. This is the only one missing.

What's not included

The `.github/workflows/docker.yml` matrix update (adding `t3code` to the build matrix) is tracked in #3418 and requires human review — workflow files are off-limits for automated agents.

Checklist

  • Dockerfile follows same structure as all other agent Dockerfiles
  • install command matches `manifest.json` agents[`t3code`].install (`npm install -g t3`)

-- refactor/code-health

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

CI status: Mock Tests failure is pre-existing — digitalocean-token.test.ts:118 (fetch mock count mismatch). This is the same flaky test addressed by #3406, not introduced by this PR. ShellCheck, Biome Lint, Unit Tests, and macOS Compatibility all pass. Branch is mergeable with no conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Fixed failing digitalocean-token test (callCount mismatch at line 118 — Expected: 2, Received: 4).

Root cause: When telemetry.test.ts runs before digitalocean-token.test.ts, the telemetry singleton gets initialized with _enabled = true. During doApi's 401 recovery flow, logWarn() calls captureWarning() which fires fetch() to PostHog (fire-and-forget). This added 2 extra fetch calls that the test's callCount was counting.

Fix: Filter out PostHog telemetry URLs from the call count, so only DigitalOcean-related fetches are asserted.

-- refactor/pr-maintainer

@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 0bc07e0 to 919e64fCompareMay 21, 2026 03:05
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on main and resolved merge conflict in packages/cli/src/__tests__/digitalocean-token.test.ts. The conflict was between this PR's test fix and the one from #3425 (already merged to main) — kept the main version's relaxed assertion (toBeGreaterThanOrEqual(2)).

Branch is now clean and mergeable.

-- refactor/pr-maintainer

louisgvand others added 3 commits May 21, 2026 13:03
…support
t3code was added to the agent matrix but its Dockerfile was never created.
Users running `spawn t3code <cloud> --beta docker`, `--beta sandbox`, or in
the fast_provision experiment group hit a runtime failure because the image
ghcr.io/openrouterteam/spawn-t3code:latest does not exist.
Follows the same pattern as pi.Dockerfile: ubuntu:24.04, Node.js 22 via n,
`npm install -g t3`.
The .github/workflows/docker.yml matrix update is tracked in #3418 (requires
human review — off-limits for automated agents).
Agent: refactor/code-health
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test was counting ALL fetch calls (including telemetry PostHog
fire-and-forget calls triggered by logWarn → captureWarning). When
telemetry.test.ts runs first and initializes the telemetry singleton,
captureWarning becomes active, adding 2 extra fetch calls during
doApi's 401 recovery flow. Fix by filtering out PostHog URLs from
the call count so only DigitalOcean-related fetches are asserted.
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ant after #3425)
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 919e64f to 720dde6CompareMay 21, 2026 13:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@la14-1@louisgv
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
fix(docker): add missing t3code.Dockerfile by la14-1 · Pull Request #3419 · OpenRouterLabs/spawn · GitHub
Skip to content

fix(docker): add missing t3code.Dockerfile - #3419

Open
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile
Open

fix(docker): add missing t3code.Dockerfile#3419
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: Users running `spawn t3code --beta docker`, `--beta sandbox`, or in the `fast_provision` experiment group hit a runtime failure — `ghcr.io/openrouterteam/spawn-t3code:latest` doesn't exist because the Dockerfile was never added when t3code was introduced.

What

Adds `sh/docker/t3code.Dockerfile` following the exact same pattern as `pi.Dockerfile`:

  • Base: `ubuntu:24.04`
  • Runtime: Node.js 22 via n
  • Install: `npm install -g t3`

All 9 other agents already have their Dockerfiles. This is the only one missing.

What's not included

The `.github/workflows/docker.yml` matrix update (adding `t3code` to the build matrix) is tracked in #3418 and requires human review — workflow files are off-limits for automated agents.

Checklist

  • Dockerfile follows same structure as all other agent Dockerfiles
  • install command matches `manifest.json` agents[`t3code`].install (`npm install -g t3`)

-- refactor/code-health

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

CI status: Mock Tests failure is pre-existing — digitalocean-token.test.ts:118 (fetch mock count mismatch). This is the same flaky test addressed by #3406, not introduced by this PR. ShellCheck, Biome Lint, Unit Tests, and macOS Compatibility all pass. Branch is mergeable with no conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Fixed failing digitalocean-token test (callCount mismatch at line 118 — Expected: 2, Received: 4).

Root cause: When telemetry.test.ts runs before digitalocean-token.test.ts, the telemetry singleton gets initialized with _enabled = true. During doApi's 401 recovery flow, logWarn() calls captureWarning() which fires fetch() to PostHog (fire-and-forget). This added 2 extra fetch calls that the test's callCount was counting.

Fix: Filter out PostHog telemetry URLs from the call count, so only DigitalOcean-related fetches are asserted.

-- refactor/pr-maintainer

@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 0bc07e0 to 919e64fCompareMay 21, 2026 03:05
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on main and resolved merge conflict in packages/cli/src/__tests__/digitalocean-token.test.ts. The conflict was between this PR's test fix and the one from #3425 (already merged to main) — kept the main version's relaxed assertion (toBeGreaterThanOrEqual(2)).

Branch is now clean and mergeable.

-- refactor/pr-maintainer

louisgvand others added 3 commits May 21, 2026 13:03
…support
t3code was added to the agent matrix but its Dockerfile was never created.
Users running `spawn t3code <cloud> --beta docker`, `--beta sandbox`, or in
the fast_provision experiment group hit a runtime failure because the image
ghcr.io/openrouterteam/spawn-t3code:latest does not exist.
Follows the same pattern as pi.Dockerfile: ubuntu:24.04, Node.js 22 via n,
`npm install -g t3`.
The .github/workflows/docker.yml matrix update is tracked in #3418 (requires
human review — off-limits for automated agents).
Agent: refactor/code-health
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test was counting ALL fetch calls (including telemetry PostHog
fire-and-forget calls triggered by logWarn → captureWarning). When
telemetry.test.ts runs first and initializes the telemetry singleton,
captureWarning becomes active, adding 2 extra fetch calls during
doApi's 401 recovery flow. Fix by filtering out PostHog URLs from
the call count so only DigitalOcean-related fetches are asserted.
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ant after #3425)
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 919e64f to 720dde6CompareMay 21, 2026 13:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

fix(docker): add missing t3code.Dockerfile - #3419

Open
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile
Open

fix(docker): add missing t3code.Dockerfile#3419
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: Users running `spawn t3code --beta docker`, `--beta sandbox`, or in the `fast_provision` experiment group hit a runtime failure — `ghcr.io/openrouterteam/spawn-t3code:latest` doesn't exist because the Dockerfile was never added when t3code was introduced.

What

Adds `sh/docker/t3code.Dockerfile` following the exact same pattern as `pi.Dockerfile`:

  • Base: `ubuntu:24.04`
  • Runtime: Node.js 22 via n
  • Install: `npm install -g t3`

All 9 other agents already have their Dockerfiles. This is the only one missing.

What's not included

The `.github/workflows/docker.yml` matrix update (adding `t3code` to the build matrix) is tracked in #3418 and requires human review — workflow files are off-limits for automated agents.

Checklist

  • Dockerfile follows same structure as all other agent Dockerfiles
  • install command matches `manifest.json` agents[`t3code`].install (`npm install -g t3`)

-- refactor/code-health

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

CI status: Mock Tests failure is pre-existing — digitalocean-token.test.ts:118 (fetch mock count mismatch). This is the same flaky test addressed by #3406, not introduced by this PR. ShellCheck, Biome Lint, Unit Tests, and macOS Compatibility all pass. Branch is mergeable with no conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Fixed failing digitalocean-token test (callCount mismatch at line 118 — Expected: 2, Received: 4).

Root cause: When telemetry.test.ts runs before digitalocean-token.test.ts, the telemetry singleton gets initialized with _enabled = true. During doApi's 401 recovery flow, logWarn() calls captureWarning() which fires fetch() to PostHog (fire-and-forget). This added 2 extra fetch calls that the test's callCount was counting.

Fix: Filter out PostHog telemetry URLs from the call count, so only DigitalOcean-related fetches are asserted.

-- refactor/pr-maintainer

@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 0bc07e0 to 919e64fCompareMay 21, 2026 03:05
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on main and resolved merge conflict in packages/cli/src/__tests__/digitalocean-token.test.ts. The conflict was between this PR's test fix and the one from #3425 (already merged to main) — kept the main version's relaxed assertion (toBeGreaterThanOrEqual(2)).

Branch is now clean and mergeable.

-- refactor/pr-maintainer

louisgvand others added 3 commits May 21, 2026 13:03
…support
t3code was added to the agent matrix but its Dockerfile was never created.
Users running `spawn t3code <cloud> --beta docker`, `--beta sandbox`, or in
the fast_provision experiment group hit a runtime failure because the image
ghcr.io/openrouterteam/spawn-t3code:latest does not exist.
Follows the same pattern as pi.Dockerfile: ubuntu:24.04, Node.js 22 via n,
`npm install -g t3`.
The .github/workflows/docker.yml matrix update is tracked in #3418 (requires
human review — off-limits for automated agents).
Agent: refactor/code-health
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test was counting ALL fetch calls (including telemetry PostHog
fire-and-forget calls triggered by logWarn → captureWarning). When
telemetry.test.ts runs first and initializes the telemetry singleton,
captureWarning becomes active, adding 2 extra fetch calls during
doApi's 401 recovery flow. Fix by filtering out PostHog URLs from
the call count so only DigitalOcean-related fetches are asserted.
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ant after #3425)
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 919e64f to 720dde6CompareMay 21, 2026 13:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

fix(docker): add missing t3code.Dockerfile - #3419

Open
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile
Open

fix(docker): add missing t3code.Dockerfile#3419
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: Users running `spawn t3code --beta docker`, `--beta sandbox`, or in the `fast_provision` experiment group hit a runtime failure — `ghcr.io/openrouterteam/spawn-t3code:latest` doesn't exist because the Dockerfile was never added when t3code was introduced.

What

Adds `sh/docker/t3code.Dockerfile` following the exact same pattern as `pi.Dockerfile`:

  • Base: `ubuntu:24.04`
  • Runtime: Node.js 22 via n
  • Install: `npm install -g t3`

All 9 other agents already have their Dockerfiles. This is the only one missing.

What's not included

The `.github/workflows/docker.yml` matrix update (adding `t3code` to the build matrix) is tracked in #3418 and requires human review — workflow files are off-limits for automated agents.

Checklist

  • Dockerfile follows same structure as all other agent Dockerfiles
  • install command matches `manifest.json` agents[`t3code`].install (`npm install -g t3`)

-- refactor/code-health

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

CI status: Mock Tests failure is pre-existing — digitalocean-token.test.ts:118 (fetch mock count mismatch). This is the same flaky test addressed by #3406, not introduced by this PR. ShellCheck, Biome Lint, Unit Tests, and macOS Compatibility all pass. Branch is mergeable with no conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Fixed failing digitalocean-token test (callCount mismatch at line 118 — Expected: 2, Received: 4).

Root cause: When telemetry.test.ts runs before digitalocean-token.test.ts, the telemetry singleton gets initialized with _enabled = true. During doApi's 401 recovery flow, logWarn() calls captureWarning() which fires fetch() to PostHog (fire-and-forget). This added 2 extra fetch calls that the test's callCount was counting.

Fix: Filter out PostHog telemetry URLs from the call count, so only DigitalOcean-related fetches are asserted.

-- refactor/pr-maintainer

@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 0bc07e0 to 919e64fCompareMay 21, 2026 03:05
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on main and resolved merge conflict in packages/cli/src/__tests__/digitalocean-token.test.ts. The conflict was between this PR's test fix and the one from #3425 (already merged to main) — kept the main version's relaxed assertion (toBeGreaterThanOrEqual(2)).

Branch is now clean and mergeable.

-- refactor/pr-maintainer

louisgvand others added 3 commits May 21, 2026 13:03
…support
t3code was added to the agent matrix but its Dockerfile was never created.
Users running `spawn t3code <cloud> --beta docker`, `--beta sandbox`, or in
the fast_provision experiment group hit a runtime failure because the image
ghcr.io/openrouterteam/spawn-t3code:latest does not exist.
Follows the same pattern as pi.Dockerfile: ubuntu:24.04, Node.js 22 via n,
`npm install -g t3`.
The .github/workflows/docker.yml matrix update is tracked in #3418 (requires
human review — off-limits for automated agents).
Agent: refactor/code-health
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test was counting ALL fetch calls (including telemetry PostHog
fire-and-forget calls triggered by logWarn → captureWarning). When
telemetry.test.ts runs first and initializes the telemetry singleton,
captureWarning becomes active, adding 2 extra fetch calls during
doApi's 401 recovery flow. Fix by filtering out PostHog URLs from
the call count so only DigitalOcean-related fetches are asserted.
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ant after #3425)
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 919e64f to 720dde6CompareMay 21, 2026 13:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

fix(docker): add missing t3code.Dockerfile - #3419

Open
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile
Open

fix(docker): add missing t3code.Dockerfile#3419
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: Users running `spawn t3code --beta docker`, `--beta sandbox`, or in the `fast_provision` experiment group hit a runtime failure — `ghcr.io/openrouterteam/spawn-t3code:latest` doesn't exist because the Dockerfile was never added when t3code was introduced.

What

Adds `sh/docker/t3code.Dockerfile` following the exact same pattern as `pi.Dockerfile`:

  • Base: `ubuntu:24.04`
  • Runtime: Node.js 22 via n
  • Install: `npm install -g t3`

All 9 other agents already have their Dockerfiles. This is the only one missing.

What's not included

The `.github/workflows/docker.yml` matrix update (adding `t3code` to the build matrix) is tracked in #3418 and requires human review — workflow files are off-limits for automated agents.

Checklist

  • Dockerfile follows same structure as all other agent Dockerfiles
  • install command matches `manifest.json` agents[`t3code`].install (`npm install -g t3`)

-- refactor/code-health

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

CI status: Mock Tests failure is pre-existing — digitalocean-token.test.ts:118 (fetch mock count mismatch). This is the same flaky test addressed by #3406, not introduced by this PR. ShellCheck, Biome Lint, Unit Tests, and macOS Compatibility all pass. Branch is mergeable with no conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Fixed failing digitalocean-token test (callCount mismatch at line 118 — Expected: 2, Received: 4).

Root cause: When telemetry.test.ts runs before digitalocean-token.test.ts, the telemetry singleton gets initialized with _enabled = true. During doApi's 401 recovery flow, logWarn() calls captureWarning() which fires fetch() to PostHog (fire-and-forget). This added 2 extra fetch calls that the test's callCount was counting.

Fix: Filter out PostHog telemetry URLs from the call count, so only DigitalOcean-related fetches are asserted.

-- refactor/pr-maintainer

@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 0bc07e0 to 919e64fCompareMay 21, 2026 03:05
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on main and resolved merge conflict in packages/cli/src/__tests__/digitalocean-token.test.ts. The conflict was between this PR's test fix and the one from #3425 (already merged to main) — kept the main version's relaxed assertion (toBeGreaterThanOrEqual(2)).

Branch is now clean and mergeable.

-- refactor/pr-maintainer

louisgvand others added 3 commits May 21, 2026 13:03
…support
t3code was added to the agent matrix but its Dockerfile was never created.
Users running `spawn t3code <cloud> --beta docker`, `--beta sandbox`, or in
the fast_provision experiment group hit a runtime failure because the image
ghcr.io/openrouterteam/spawn-t3code:latest does not exist.
Follows the same pattern as pi.Dockerfile: ubuntu:24.04, Node.js 22 via n,
`npm install -g t3`.
The .github/workflows/docker.yml matrix update is tracked in #3418 (requires
human review — off-limits for automated agents).
Agent: refactor/code-health
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test was counting ALL fetch calls (including telemetry PostHog
fire-and-forget calls triggered by logWarn → captureWarning). When
telemetry.test.ts runs first and initializes the telemetry singleton,
captureWarning becomes active, adding 2 extra fetch calls during
doApi's 401 recovery flow. Fix by filtering out PostHog URLs from
the call count so only DigitalOcean-related fetches are asserted.
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ant after #3425)
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 919e64f to 720dde6CompareMay 21, 2026 13:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

fix(docker): add missing t3code.Dockerfile - #3419

Open
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile
Open

fix(docker): add missing t3code.Dockerfile#3419
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: Users running `spawn t3code --beta docker`, `--beta sandbox`, or in the `fast_provision` experiment group hit a runtime failure — `ghcr.io/openrouterteam/spawn-t3code:latest` doesn't exist because the Dockerfile was never added when t3code was introduced.

What

Adds `sh/docker/t3code.Dockerfile` following the exact same pattern as `pi.Dockerfile`:

  • Base: `ubuntu:24.04`
  • Runtime: Node.js 22 via n
  • Install: `npm install -g t3`

All 9 other agents already have their Dockerfiles. This is the only one missing.

What's not included

The `.github/workflows/docker.yml` matrix update (adding `t3code` to the build matrix) is tracked in #3418 and requires human review — workflow files are off-limits for automated agents.

Checklist

  • Dockerfile follows same structure as all other agent Dockerfiles
  • install command matches `manifest.json` agents[`t3code`].install (`npm install -g t3`)

-- refactor/code-health

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

CI status: Mock Tests failure is pre-existing — digitalocean-token.test.ts:118 (fetch mock count mismatch). This is the same flaky test addressed by #3406, not introduced by this PR. ShellCheck, Biome Lint, Unit Tests, and macOS Compatibility all pass. Branch is mergeable with no conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Fixed failing digitalocean-token test (callCount mismatch at line 118 — Expected: 2, Received: 4).

Root cause: When telemetry.test.ts runs before digitalocean-token.test.ts, the telemetry singleton gets initialized with _enabled = true. During doApi's 401 recovery flow, logWarn() calls captureWarning() which fires fetch() to PostHog (fire-and-forget). This added 2 extra fetch calls that the test's callCount was counting.

Fix: Filter out PostHog telemetry URLs from the call count, so only DigitalOcean-related fetches are asserted.

-- refactor/pr-maintainer

@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 0bc07e0 to 919e64fCompareMay 21, 2026 03:05
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on main and resolved merge conflict in packages/cli/src/__tests__/digitalocean-token.test.ts. The conflict was between this PR's test fix and the one from #3425 (already merged to main) — kept the main version's relaxed assertion (toBeGreaterThanOrEqual(2)).

Branch is now clean and mergeable.

-- refactor/pr-maintainer

louisgvand others added 3 commits May 21, 2026 13:03
…support
t3code was added to the agent matrix but its Dockerfile was never created.
Users running `spawn t3code <cloud> --beta docker`, `--beta sandbox`, or in
the fast_provision experiment group hit a runtime failure because the image
ghcr.io/openrouterteam/spawn-t3code:latest does not exist.
Follows the same pattern as pi.Dockerfile: ubuntu:24.04, Node.js 22 via n,
`npm install -g t3`.
The .github/workflows/docker.yml matrix update is tracked in #3418 (requires
human review — off-limits for automated agents).
Agent: refactor/code-health
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test was counting ALL fetch calls (including telemetry PostHog
fire-and-forget calls triggered by logWarn → captureWarning). When
telemetry.test.ts runs first and initializes the telemetry singleton,
captureWarning becomes active, adding 2 extra fetch calls during
doApi's 401 recovery flow. Fix by filtering out PostHog URLs from
the call count so only DigitalOcean-related fetches are asserted.
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ant after #3425)
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 919e64f to 720dde6CompareMay 21, 2026 13:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@la14-1@louisgv
, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' fix(docker): add missing t3code.Dockerfile by la14-1 · Pull Request #3419 · OpenRouterLabs/spawn · GitHub
Skip to content

fix(docker): add missing t3code.Dockerfile - #3419

Open
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile
Open

fix(docker): add missing t3code.Dockerfile#3419
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: Users running `spawn t3code --beta docker`, `--beta sandbox`, or in the `fast_provision` experiment group hit a runtime failure — `ghcr.io/openrouterteam/spawn-t3code:latest` doesn't exist because the Dockerfile was never added when t3code was introduced.

What

Adds `sh/docker/t3code.Dockerfile` following the exact same pattern as `pi.Dockerfile`:

  • Base: `ubuntu:24.04`
  • Runtime: Node.js 22 via n
  • Install: `npm install -g t3`

All 9 other agents already have their Dockerfiles. This is the only one missing.

What's not included

The `.github/workflows/docker.yml` matrix update (adding `t3code` to the build matrix) is tracked in #3418 and requires human review — workflow files are off-limits for automated agents.

Checklist

  • Dockerfile follows same structure as all other agent Dockerfiles
  • install command matches `manifest.json` agents[`t3code`].install (`npm install -g t3`)

-- refactor/code-health

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

CI status: Mock Tests failure is pre-existing — digitalocean-token.test.ts:118 (fetch mock count mismatch). This is the same flaky test addressed by #3406, not introduced by this PR. ShellCheck, Biome Lint, Unit Tests, and macOS Compatibility all pass. Branch is mergeable with no conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Fixed failing digitalocean-token test (callCount mismatch at line 118 — Expected: 2, Received: 4).

Root cause: When telemetry.test.ts runs before digitalocean-token.test.ts, the telemetry singleton gets initialized with _enabled = true. During doApi's 401 recovery flow, logWarn() calls captureWarning() which fires fetch() to PostHog (fire-and-forget). This added 2 extra fetch calls that the test's callCount was counting.

Fix: Filter out PostHog telemetry URLs from the call count, so only DigitalOcean-related fetches are asserted.

-- refactor/pr-maintainer

@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 0bc07e0 to 919e64fCompareMay 21, 2026 03:05
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on main and resolved merge conflict in packages/cli/src/__tests__/digitalocean-token.test.ts. The conflict was between this PR's test fix and the one from #3425 (already merged to main) — kept the main version's relaxed assertion (toBeGreaterThanOrEqual(2)).

Branch is now clean and mergeable.

-- refactor/pr-maintainer

louisgvand others added 3 commits May 21, 2026 13:03
…support
t3code was added to the agent matrix but its Dockerfile was never created.
Users running `spawn t3code <cloud> --beta docker`, `--beta sandbox`, or in
the fast_provision experiment group hit a runtime failure because the image
ghcr.io/openrouterteam/spawn-t3code:latest does not exist.
Follows the same pattern as pi.Dockerfile: ubuntu:24.04, Node.js 22 via n,
`npm install -g t3`.
The .github/workflows/docker.yml matrix update is tracked in #3418 (requires
human review — off-limits for automated agents).
Agent: refactor/code-health
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test was counting ALL fetch calls (including telemetry PostHog
fire-and-forget calls triggered by logWarn → captureWarning). When
telemetry.test.ts runs first and initializes the telemetry singleton,
captureWarning becomes active, adding 2 extra fetch calls during
doApi's 401 recovery flow. Fix by filtering out PostHog URLs from
the call count so only DigitalOcean-related fetches are asserted.
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ant after #3425)
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 919e64f to 720dde6CompareMay 21, 2026 13:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

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

fix(docker): add missing t3code.Dockerfile - #3419

Open
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile
Open

fix(docker): add missing t3code.Dockerfile#3419
la14-1 wants to merge 3 commits into
mainfrom
fix/t3code-dockerfile

Conversation

@la14-1

Copy link
Copy Markdown
Collaborator

Why: Users running `spawn t3code --beta docker`, `--beta sandbox`, or in the `fast_provision` experiment group hit a runtime failure — `ghcr.io/openrouterteam/spawn-t3code:latest` doesn't exist because the Dockerfile was never added when t3code was introduced.

What

Adds `sh/docker/t3code.Dockerfile` following the exact same pattern as `pi.Dockerfile`:

  • Base: `ubuntu:24.04`
  • Runtime: Node.js 22 via n
  • Install: `npm install -g t3`

All 9 other agents already have their Dockerfiles. This is the only one missing.

What's not included

The `.github/workflows/docker.yml` matrix update (adding `t3code` to the build matrix) is tracked in #3418 and requires human review — workflow files are off-limits for automated agents.

Checklist

  • Dockerfile follows same structure as all other agent Dockerfiles
  • install command matches `manifest.json` agents[`t3code`].install (`npm install -g t3`)

-- refactor/code-health

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

CI status: Mock Tests failure is pre-existing — digitalocean-token.test.ts:118 (fetch mock count mismatch). This is the same flaky test addressed by #3406, not introduced by this PR. ShellCheck, Biome Lint, Unit Tests, and macOS Compatibility all pass. Branch is mergeable with no conflicts.

-- refactor/pr-maintainer

@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Fixed failing digitalocean-token test (callCount mismatch at line 118 — Expected: 2, Received: 4).

Root cause: When telemetry.test.ts runs before digitalocean-token.test.ts, the telemetry singleton gets initialized with _enabled = true. During doApi's 401 recovery flow, logWarn() calls captureWarning() which fires fetch() to PostHog (fire-and-forget). This added 2 extra fetch calls that the test's callCount was counting.

Fix: Filter out PostHog telemetry URLs from the call count, so only DigitalOcean-related fetches are asserted.

-- refactor/pr-maintainer

@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 0bc07e0 to 919e64fCompareMay 21, 2026 03:05
@la14-1

Copy link
Copy Markdown
CollaboratorAuthor

Rebased on main and resolved merge conflict in packages/cli/src/__tests__/digitalocean-token.test.ts. The conflict was between this PR's test fix and the one from #3425 (already merged to main) — kept the main version's relaxed assertion (toBeGreaterThanOrEqual(2)).

Branch is now clean and mergeable.

-- refactor/pr-maintainer

louisgvand others added 3 commits May 21, 2026 13:03
…support
t3code was added to the agent matrix but its Dockerfile was never created.
Users running `spawn t3code <cloud> --beta docker`, `--beta sandbox`, or in
the fast_provision experiment group hit a runtime failure because the image
ghcr.io/openrouterteam/spawn-t3code:latest does not exist.
Follows the same pattern as pi.Dockerfile: ubuntu:24.04, Node.js 22 via n,
`npm install -g t3`.
The .github/workflows/docker.yml matrix update is tracked in #3418 (requires
human review — off-limits for automated agents).
Agent: refactor/code-health
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
The test was counting ALL fetch calls (including telemetry PostHog
fire-and-forget calls triggered by logWarn → captureWarning). When
telemetry.test.ts runs first and initializes the telemetry singleton,
captureWarning becomes active, adding 2 extra fetch calls during
doApi's 401 recovery flow. Fix by filtering out PostHog URLs from
the call count so only DigitalOcean-related fetches are asserted.
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
…ant after #3425)
Agent: pr-maintainer
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
@la14-1
la14-1force-pushed the fix/t3code-dockerfile branch from 919e64f to 720dde6CompareMay 21, 2026 13:04
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants

@la14-1@louisgv