[codex] Structure mobile cloud-link failures - #3320

Merged
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors
Jun 21, 2026
Merged

[codex] Structure mobile cloud-link failures#3320
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generic mobile cloud-link error bucket and constructor factories with structured Schema errors
  • promote decoded relay errors, environment API failures, and trace IDs through a value-adding static mapper while retaining each exact cause chain
  • represent environment ID, endpoint, and provider mismatches with typed expected/actual attributes
  • type synchronous URL/client initialization failures instead of letting them escape as defects
  • remove cause-derived development messages and the adjacent relay-error switch

Validation

  • vp test run apps/mobile/src/features/cloud/linkEnvironment.test.ts (21 tests)
  • vp run lint:mobile
  • vp check (passes with 20 pre-existing warnings)
  • vp run typecheck

Overlap


Note

Medium Risk
Error _tag values and user-visible messages change across link/list/connect/status flows; UI or logging that matched old URL-embedded strings or a single CloudEnvironmentLinkError tag needs updating.

Overview
Replaces the single CloudEnvironmentLinkError bucket in mobile cloud linking with a Schema.Union of tagged errors and removes URL-heavy, dev-only, and relay-string message builders.

CloudEnvironmentLinkOperationError now records an action, optional environmentId, redacted URL diagnostics via getUrlDiagnostics (length/protocol/hostname only), nested relayError / environmentError, and traceId, with stable user-facing messages like Could not {action} for environment "{id}". Mismatch cases use dedicated types (CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, CloudEnvironmentEndpointProviderMismatchError, CloudEnvironmentLocalBearerRequiredError, CloudRelayUrlNotConfiguredError) with expected/actual fields instead of generic strings.

Synchronous throws for URL parsing and HTTP client setup are routed through Effect.try into operation errors. Per-environment statusError strings now come from these typed message getters. Tests assert secret redaction in serialization and updated _tag / field shapes; isCloudEnvironmentLinkError narrows the union.

Reviewed by Cursor Bugbot for commit d0671a3. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Replace generic cloud link errors with structured, action-specific error types in mobile

  • Introduces several new tagged error classes in linkEnvironment.ts: CloudEnvironmentLinkOperationError, CloudRelayUrlNotConfiguredError, CloudEnvironmentLocalBearerRequiredError, CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, and CloudEnvironmentEndpointProviderMismatchError.
  • All error types carry structured diagnostics (action label, redacted URL fields like protocol/hostname/input-length, traceId, relay/environment error bodies) instead of raw error strings.
  • Exports a CloudEnvironmentLinkError union type and isCloudEnvironmentLinkError guard so callers can reliably discriminate all link-related failures.
  • Behavioral Change: Every failure path in linkEnvironmentToCloud, connectRelayManagedEnvironment, listCloudEnvironments, and getCloudEnvironmentStatus now emits a different _tag and message format than before; callers matching on previous error shapes will need updating.

Macroscope summarized d0671a3.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c198374f-00a5-4982-b0a7-6e8cff91c2e1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/mobile-cloud-link-errors

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling to use structured error types and redacts URL secrets from error diagnostics - a security improvement. The core cloud-linking business logic is unchanged; only error construction and formatting changes.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:25

Dismissing prior approval to re-evaluate fb67183

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from fb67183 to 21bfa07CompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:56

Dismissing prior approval to re-evaluate 21bfa07

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from b87e64a to 3167aebCompareJune 20, 2026 19:21
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 20:12

Dismissing prior approval to re-evaluate 9a2733c

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6eba786 to aacb560CompareJune 20, 2026 22:40
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 9a2733c to e9c868aCompareJune 20, 2026 22:46
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 22:46

Dismissing prior approval to re-evaluate e9c868a

@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from aacb560 to 77e5b36CompareJune 20, 2026 22:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from e9c868a to 8163b74CompareJune 20, 2026 22:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 77e5b36 to 6bc2561CompareJune 20, 2026 23:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from b954b21 to 296e9bbCompareJune 20, 2026 23:14
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6bc2561 to 71f9ff5CompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 296e9bb to adaf66fCompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 71f9ff5 to 8bc20f2CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from adaf66f to 0fcf0f4CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 8bc20f2 to 3f67e2bCompareJune 21, 2026 00:08
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 49b97b4 to 9b6ce56CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 70fdb85 to 5a80908CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 553daf6 to ed36096CompareJune 21, 2026 00:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 2a031a9 to b63cfb3CompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from ed36096 to 15aa01aCompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from b63cfb3 to eadf056CompareJune 21, 2026 01:26
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from bd937be to 517c1eaCompareJune 21, 2026 01:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 1830060 to 534fad3CompareJune 21, 2026 01:44
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 8d916bc to 7670d78CompareJune 21, 2026 01:50
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 534fad3 to 6601ea3CompareJune 21, 2026 01:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 7670d78 to 1ed6271CompareJune 21, 2026 02:03
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6601ea3 to 6c8a6b1CompareJune 21, 2026 02:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 21, 2026 02:04

Dismissing prior approval to re-evaluate 6c8a6b1

@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from c91fad6 to 9e0c536CompareJune 21, 2026 02:22
juliusmarmingeand others added 5 commits June 20, 2026 19:23
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6c8a6b1 to d0671a3CompareJune 21, 2026 02:24
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarminge merged commit a7d56b3 into codex/redact-dpop-request-targetJun 21, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/mobile-cloud-link-errors branch June 21, 2026 02:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Structure mobile cloud-link failures - #3320

Merged
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors
Jun 21, 2026
Merged

[codex] Structure mobile cloud-link failures#3320
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generic mobile cloud-link error bucket and constructor factories with structured Schema errors
  • promote decoded relay errors, environment API failures, and trace IDs through a value-adding static mapper while retaining each exact cause chain
  • represent environment ID, endpoint, and provider mismatches with typed expected/actual attributes
  • type synchronous URL/client initialization failures instead of letting them escape as defects
  • remove cause-derived development messages and the adjacent relay-error switch

Validation

  • vp test run apps/mobile/src/features/cloud/linkEnvironment.test.ts (21 tests)
  • vp run lint:mobile
  • vp check (passes with 20 pre-existing warnings)
  • vp run typecheck

Overlap


Note

Medium Risk
Error _tag values and user-visible messages change across link/list/connect/status flows; UI or logging that matched old URL-embedded strings or a single CloudEnvironmentLinkError tag needs updating.

Overview
Replaces the single CloudEnvironmentLinkError bucket in mobile cloud linking with a Schema.Union of tagged errors and removes URL-heavy, dev-only, and relay-string message builders.

CloudEnvironmentLinkOperationError now records an action, optional environmentId, redacted URL diagnostics via getUrlDiagnostics (length/protocol/hostname only), nested relayError / environmentError, and traceId, with stable user-facing messages like Could not {action} for environment "{id}". Mismatch cases use dedicated types (CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, CloudEnvironmentEndpointProviderMismatchError, CloudEnvironmentLocalBearerRequiredError, CloudRelayUrlNotConfiguredError) with expected/actual fields instead of generic strings.

Synchronous throws for URL parsing and HTTP client setup are routed through Effect.try into operation errors. Per-environment statusError strings now come from these typed message getters. Tests assert secret redaction in serialization and updated _tag / field shapes; isCloudEnvironmentLinkError narrows the union.

Reviewed by Cursor Bugbot for commit d0671a3. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Replace generic cloud link errors with structured, action-specific error types in mobile

  • Introduces several new tagged error classes in linkEnvironment.ts: CloudEnvironmentLinkOperationError, CloudRelayUrlNotConfiguredError, CloudEnvironmentLocalBearerRequiredError, CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, and CloudEnvironmentEndpointProviderMismatchError.
  • All error types carry structured diagnostics (action label, redacted URL fields like protocol/hostname/input-length, traceId, relay/environment error bodies) instead of raw error strings.
  • Exports a CloudEnvironmentLinkError union type and isCloudEnvironmentLinkError guard so callers can reliably discriminate all link-related failures.
  • Behavioral Change: Every failure path in linkEnvironmentToCloud, connectRelayManagedEnvironment, listCloudEnvironments, and getCloudEnvironmentStatus now emits a different _tag and message format than before; callers matching on previous error shapes will need updating.

Macroscope summarized d0671a3.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c198374f-00a5-4982-b0a7-6e8cff91c2e1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/mobile-cloud-link-errors

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling to use structured error types and redacts URL secrets from error diagnostics - a security improvement. The core cloud-linking business logic is unchanged; only error construction and formatting changes.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:25

Dismissing prior approval to re-evaluate fb67183

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from fb67183 to 21bfa07CompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:56

Dismissing prior approval to re-evaluate 21bfa07

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from b87e64a to 3167aebCompareJune 20, 2026 19:21
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 20:12

Dismissing prior approval to re-evaluate 9a2733c

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6eba786 to aacb560CompareJune 20, 2026 22:40
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 9a2733c to e9c868aCompareJune 20, 2026 22:46
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 22:46

Dismissing prior approval to re-evaluate e9c868a

@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from aacb560 to 77e5b36CompareJune 20, 2026 22:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from e9c868a to 8163b74CompareJune 20, 2026 22:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 77e5b36 to 6bc2561CompareJune 20, 2026 23:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from b954b21 to 296e9bbCompareJune 20, 2026 23:14
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6bc2561 to 71f9ff5CompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 296e9bb to adaf66fCompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 71f9ff5 to 8bc20f2CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from adaf66f to 0fcf0f4CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 8bc20f2 to 3f67e2bCompareJune 21, 2026 00:08
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 49b97b4 to 9b6ce56CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 70fdb85 to 5a80908CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 553daf6 to ed36096CompareJune 21, 2026 00:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 2a031a9 to b63cfb3CompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from ed36096 to 15aa01aCompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from b63cfb3 to eadf056CompareJune 21, 2026 01:26
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from bd937be to 517c1eaCompareJune 21, 2026 01:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 1830060 to 534fad3CompareJune 21, 2026 01:44
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 8d916bc to 7670d78CompareJune 21, 2026 01:50
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 534fad3 to 6601ea3CompareJune 21, 2026 01:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 7670d78 to 1ed6271CompareJune 21, 2026 02:03
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6601ea3 to 6c8a6b1CompareJune 21, 2026 02:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 21, 2026 02:04

Dismissing prior approval to re-evaluate 6c8a6b1

@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from c91fad6 to 9e0c536CompareJune 21, 2026 02:22
juliusmarmingeand others added 5 commits June 20, 2026 19:23
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6c8a6b1 to d0671a3CompareJune 21, 2026 02:24
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarminge merged commit a7d56b3 into codex/redact-dpop-request-targetJun 21, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/mobile-cloud-link-errors branch June 21, 2026 02:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Structure mobile cloud-link failures - #3320

Merged
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors
Jun 21, 2026
Merged

[codex] Structure mobile cloud-link failures#3320
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generic mobile cloud-link error bucket and constructor factories with structured Schema errors
  • promote decoded relay errors, environment API failures, and trace IDs through a value-adding static mapper while retaining each exact cause chain
  • represent environment ID, endpoint, and provider mismatches with typed expected/actual attributes
  • type synchronous URL/client initialization failures instead of letting them escape as defects
  • remove cause-derived development messages and the adjacent relay-error switch

Validation

  • vp test run apps/mobile/src/features/cloud/linkEnvironment.test.ts (21 tests)
  • vp run lint:mobile
  • vp check (passes with 20 pre-existing warnings)
  • vp run typecheck

Overlap


Note

Medium Risk
Error _tag values and user-visible messages change across link/list/connect/status flows; UI or logging that matched old URL-embedded strings or a single CloudEnvironmentLinkError tag needs updating.

Overview
Replaces the single CloudEnvironmentLinkError bucket in mobile cloud linking with a Schema.Union of tagged errors and removes URL-heavy, dev-only, and relay-string message builders.

CloudEnvironmentLinkOperationError now records an action, optional environmentId, redacted URL diagnostics via getUrlDiagnostics (length/protocol/hostname only), nested relayError / environmentError, and traceId, with stable user-facing messages like Could not {action} for environment "{id}". Mismatch cases use dedicated types (CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, CloudEnvironmentEndpointProviderMismatchError, CloudEnvironmentLocalBearerRequiredError, CloudRelayUrlNotConfiguredError) with expected/actual fields instead of generic strings.

Synchronous throws for URL parsing and HTTP client setup are routed through Effect.try into operation errors. Per-environment statusError strings now come from these typed message getters. Tests assert secret redaction in serialization and updated _tag / field shapes; isCloudEnvironmentLinkError narrows the union.

Reviewed by Cursor Bugbot for commit d0671a3. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Replace generic cloud link errors with structured, action-specific error types in mobile

  • Introduces several new tagged error classes in linkEnvironment.ts: CloudEnvironmentLinkOperationError, CloudRelayUrlNotConfiguredError, CloudEnvironmentLocalBearerRequiredError, CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, and CloudEnvironmentEndpointProviderMismatchError.
  • All error types carry structured diagnostics (action label, redacted URL fields like protocol/hostname/input-length, traceId, relay/environment error bodies) instead of raw error strings.
  • Exports a CloudEnvironmentLinkError union type and isCloudEnvironmentLinkError guard so callers can reliably discriminate all link-related failures.
  • Behavioral Change: Every failure path in linkEnvironmentToCloud, connectRelayManagedEnvironment, listCloudEnvironments, and getCloudEnvironmentStatus now emits a different _tag and message format than before; callers matching on previous error shapes will need updating.

Macroscope summarized d0671a3.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c198374f-00a5-4982-b0a7-6e8cff91c2e1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/mobile-cloud-link-errors

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling to use structured error types and redacts URL secrets from error diagnostics - a security improvement. The core cloud-linking business logic is unchanged; only error construction and formatting changes.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:25

Dismissing prior approval to re-evaluate fb67183

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from fb67183 to 21bfa07CompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:56

Dismissing prior approval to re-evaluate 21bfa07

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from b87e64a to 3167aebCompareJune 20, 2026 19:21
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 20:12

Dismissing prior approval to re-evaluate 9a2733c

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6eba786 to aacb560CompareJune 20, 2026 22:40
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 9a2733c to e9c868aCompareJune 20, 2026 22:46
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 22:46

Dismissing prior approval to re-evaluate e9c868a

@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from aacb560 to 77e5b36CompareJune 20, 2026 22:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from e9c868a to 8163b74CompareJune 20, 2026 22:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 77e5b36 to 6bc2561CompareJune 20, 2026 23:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from b954b21 to 296e9bbCompareJune 20, 2026 23:14
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6bc2561 to 71f9ff5CompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 296e9bb to adaf66fCompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 71f9ff5 to 8bc20f2CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from adaf66f to 0fcf0f4CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 8bc20f2 to 3f67e2bCompareJune 21, 2026 00:08
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 49b97b4 to 9b6ce56CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 70fdb85 to 5a80908CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 553daf6 to ed36096CompareJune 21, 2026 00:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 2a031a9 to b63cfb3CompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from ed36096 to 15aa01aCompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from b63cfb3 to eadf056CompareJune 21, 2026 01:26
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from bd937be to 517c1eaCompareJune 21, 2026 01:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 1830060 to 534fad3CompareJune 21, 2026 01:44
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 8d916bc to 7670d78CompareJune 21, 2026 01:50
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 534fad3 to 6601ea3CompareJune 21, 2026 01:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 7670d78 to 1ed6271CompareJune 21, 2026 02:03
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6601ea3 to 6c8a6b1CompareJune 21, 2026 02:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 21, 2026 02:04

Dismissing prior approval to re-evaluate 6c8a6b1

@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from c91fad6 to 9e0c536CompareJune 21, 2026 02:22
juliusmarmingeand others added 5 commits June 20, 2026 19:23
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6c8a6b1 to d0671a3CompareJune 21, 2026 02:24
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarminge merged commit a7d56b3 into codex/redact-dpop-request-targetJun 21, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/mobile-cloud-link-errors branch June 21, 2026 02:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Structure mobile cloud-link failures - #3320

Merged
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors
Jun 21, 2026
Merged

[codex] Structure mobile cloud-link failures#3320
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generic mobile cloud-link error bucket and constructor factories with structured Schema errors
  • promote decoded relay errors, environment API failures, and trace IDs through a value-adding static mapper while retaining each exact cause chain
  • represent environment ID, endpoint, and provider mismatches with typed expected/actual attributes
  • type synchronous URL/client initialization failures instead of letting them escape as defects
  • remove cause-derived development messages and the adjacent relay-error switch

Validation

  • vp test run apps/mobile/src/features/cloud/linkEnvironment.test.ts (21 tests)
  • vp run lint:mobile
  • vp check (passes with 20 pre-existing warnings)
  • vp run typecheck

Overlap


Note

Medium Risk
Error _tag values and user-visible messages change across link/list/connect/status flows; UI or logging that matched old URL-embedded strings or a single CloudEnvironmentLinkError tag needs updating.

Overview
Replaces the single CloudEnvironmentLinkError bucket in mobile cloud linking with a Schema.Union of tagged errors and removes URL-heavy, dev-only, and relay-string message builders.

CloudEnvironmentLinkOperationError now records an action, optional environmentId, redacted URL diagnostics via getUrlDiagnostics (length/protocol/hostname only), nested relayError / environmentError, and traceId, with stable user-facing messages like Could not {action} for environment "{id}". Mismatch cases use dedicated types (CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, CloudEnvironmentEndpointProviderMismatchError, CloudEnvironmentLocalBearerRequiredError, CloudRelayUrlNotConfiguredError) with expected/actual fields instead of generic strings.

Synchronous throws for URL parsing and HTTP client setup are routed through Effect.try into operation errors. Per-environment statusError strings now come from these typed message getters. Tests assert secret redaction in serialization and updated _tag / field shapes; isCloudEnvironmentLinkError narrows the union.

Reviewed by Cursor Bugbot for commit d0671a3. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Replace generic cloud link errors with structured, action-specific error types in mobile

  • Introduces several new tagged error classes in linkEnvironment.ts: CloudEnvironmentLinkOperationError, CloudRelayUrlNotConfiguredError, CloudEnvironmentLocalBearerRequiredError, CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, and CloudEnvironmentEndpointProviderMismatchError.
  • All error types carry structured diagnostics (action label, redacted URL fields like protocol/hostname/input-length, traceId, relay/environment error bodies) instead of raw error strings.
  • Exports a CloudEnvironmentLinkError union type and isCloudEnvironmentLinkError guard so callers can reliably discriminate all link-related failures.
  • Behavioral Change: Every failure path in linkEnvironmentToCloud, connectRelayManagedEnvironment, listCloudEnvironments, and getCloudEnvironmentStatus now emits a different _tag and message format than before; callers matching on previous error shapes will need updating.

Macroscope summarized d0671a3.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c198374f-00a5-4982-b0a7-6e8cff91c2e1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/mobile-cloud-link-errors

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling to use structured error types and redacts URL secrets from error diagnostics - a security improvement. The core cloud-linking business logic is unchanged; only error construction and formatting changes.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:25

Dismissing prior approval to re-evaluate fb67183

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from fb67183 to 21bfa07CompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:56

Dismissing prior approval to re-evaluate 21bfa07

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from b87e64a to 3167aebCompareJune 20, 2026 19:21
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 20:12

Dismissing prior approval to re-evaluate 9a2733c

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6eba786 to aacb560CompareJune 20, 2026 22:40
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 9a2733c to e9c868aCompareJune 20, 2026 22:46
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 22:46

Dismissing prior approval to re-evaluate e9c868a

@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from aacb560 to 77e5b36CompareJune 20, 2026 22:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from e9c868a to 8163b74CompareJune 20, 2026 22:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 77e5b36 to 6bc2561CompareJune 20, 2026 23:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from b954b21 to 296e9bbCompareJune 20, 2026 23:14
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6bc2561 to 71f9ff5CompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 296e9bb to adaf66fCompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 71f9ff5 to 8bc20f2CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from adaf66f to 0fcf0f4CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 8bc20f2 to 3f67e2bCompareJune 21, 2026 00:08
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 49b97b4 to 9b6ce56CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 70fdb85 to 5a80908CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 553daf6 to ed36096CompareJune 21, 2026 00:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 2a031a9 to b63cfb3CompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from ed36096 to 15aa01aCompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from b63cfb3 to eadf056CompareJune 21, 2026 01:26
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from bd937be to 517c1eaCompareJune 21, 2026 01:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 1830060 to 534fad3CompareJune 21, 2026 01:44
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 8d916bc to 7670d78CompareJune 21, 2026 01:50
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 534fad3 to 6601ea3CompareJune 21, 2026 01:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 7670d78 to 1ed6271CompareJune 21, 2026 02:03
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6601ea3 to 6c8a6b1CompareJune 21, 2026 02:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 21, 2026 02:04

Dismissing prior approval to re-evaluate 6c8a6b1

@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from c91fad6 to 9e0c536CompareJune 21, 2026 02:22
juliusmarmingeand others added 5 commits June 20, 2026 19:23
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6c8a6b1 to d0671a3CompareJune 21, 2026 02:24
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarminge merged commit a7d56b3 into codex/redact-dpop-request-targetJun 21, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/mobile-cloud-link-errors branch June 21, 2026 02:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Structure mobile cloud-link failures - #3320

Merged
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors
Jun 21, 2026
Merged

[codex] Structure mobile cloud-link failures#3320
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generic mobile cloud-link error bucket and constructor factories with structured Schema errors
  • promote decoded relay errors, environment API failures, and trace IDs through a value-adding static mapper while retaining each exact cause chain
  • represent environment ID, endpoint, and provider mismatches with typed expected/actual attributes
  • type synchronous URL/client initialization failures instead of letting them escape as defects
  • remove cause-derived development messages and the adjacent relay-error switch

Validation

  • vp test run apps/mobile/src/features/cloud/linkEnvironment.test.ts (21 tests)
  • vp run lint:mobile
  • vp check (passes with 20 pre-existing warnings)
  • vp run typecheck

Overlap


Note

Medium Risk
Error _tag values and user-visible messages change across link/list/connect/status flows; UI or logging that matched old URL-embedded strings or a single CloudEnvironmentLinkError tag needs updating.

Overview
Replaces the single CloudEnvironmentLinkError bucket in mobile cloud linking with a Schema.Union of tagged errors and removes URL-heavy, dev-only, and relay-string message builders.

CloudEnvironmentLinkOperationError now records an action, optional environmentId, redacted URL diagnostics via getUrlDiagnostics (length/protocol/hostname only), nested relayError / environmentError, and traceId, with stable user-facing messages like Could not {action} for environment "{id}". Mismatch cases use dedicated types (CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, CloudEnvironmentEndpointProviderMismatchError, CloudEnvironmentLocalBearerRequiredError, CloudRelayUrlNotConfiguredError) with expected/actual fields instead of generic strings.

Synchronous throws for URL parsing and HTTP client setup are routed through Effect.try into operation errors. Per-environment statusError strings now come from these typed message getters. Tests assert secret redaction in serialization and updated _tag / field shapes; isCloudEnvironmentLinkError narrows the union.

Reviewed by Cursor Bugbot for commit d0671a3. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Replace generic cloud link errors with structured, action-specific error types in mobile

  • Introduces several new tagged error classes in linkEnvironment.ts: CloudEnvironmentLinkOperationError, CloudRelayUrlNotConfiguredError, CloudEnvironmentLocalBearerRequiredError, CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, and CloudEnvironmentEndpointProviderMismatchError.
  • All error types carry structured diagnostics (action label, redacted URL fields like protocol/hostname/input-length, traceId, relay/environment error bodies) instead of raw error strings.
  • Exports a CloudEnvironmentLinkError union type and isCloudEnvironmentLinkError guard so callers can reliably discriminate all link-related failures.
  • Behavioral Change: Every failure path in linkEnvironmentToCloud, connectRelayManagedEnvironment, listCloudEnvironments, and getCloudEnvironmentStatus now emits a different _tag and message format than before; callers matching on previous error shapes will need updating.

Macroscope summarized d0671a3.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c198374f-00a5-4982-b0a7-6e8cff91c2e1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/mobile-cloud-link-errors

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling to use structured error types and redacts URL secrets from error diagnostics - a security improvement. The core cloud-linking business logic is unchanged; only error construction and formatting changes.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:25

Dismissing prior approval to re-evaluate fb67183

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from fb67183 to 21bfa07CompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:56

Dismissing prior approval to re-evaluate 21bfa07

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from b87e64a to 3167aebCompareJune 20, 2026 19:21
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 20:12

Dismissing prior approval to re-evaluate 9a2733c

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6eba786 to aacb560CompareJune 20, 2026 22:40
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 9a2733c to e9c868aCompareJune 20, 2026 22:46
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 22:46

Dismissing prior approval to re-evaluate e9c868a

@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from aacb560 to 77e5b36CompareJune 20, 2026 22:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from e9c868a to 8163b74CompareJune 20, 2026 22:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 77e5b36 to 6bc2561CompareJune 20, 2026 23:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from b954b21 to 296e9bbCompareJune 20, 2026 23:14
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6bc2561 to 71f9ff5CompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 296e9bb to adaf66fCompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 71f9ff5 to 8bc20f2CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from adaf66f to 0fcf0f4CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 8bc20f2 to 3f67e2bCompareJune 21, 2026 00:08
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 49b97b4 to 9b6ce56CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 70fdb85 to 5a80908CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 553daf6 to ed36096CompareJune 21, 2026 00:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 2a031a9 to b63cfb3CompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from ed36096 to 15aa01aCompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from b63cfb3 to eadf056CompareJune 21, 2026 01:26
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from bd937be to 517c1eaCompareJune 21, 2026 01:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 1830060 to 534fad3CompareJune 21, 2026 01:44
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 8d916bc to 7670d78CompareJune 21, 2026 01:50
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 534fad3 to 6601ea3CompareJune 21, 2026 01:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 7670d78 to 1ed6271CompareJune 21, 2026 02:03
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6601ea3 to 6c8a6b1CompareJune 21, 2026 02:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 21, 2026 02:04

Dismissing prior approval to re-evaluate 6c8a6b1

@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from c91fad6 to 9e0c536CompareJune 21, 2026 02:22
juliusmarmingeand others added 5 commits June 20, 2026 19:23
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6c8a6b1 to d0671a3CompareJune 21, 2026 02:24
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarminge merged commit a7d56b3 into codex/redact-dpop-request-targetJun 21, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/mobile-cloud-link-errors branch June 21, 2026 02:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Structure mobile cloud-link failures - #3320

Merged
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors
Jun 21, 2026
Merged

[codex] Structure mobile cloud-link failures#3320
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generic mobile cloud-link error bucket and constructor factories with structured Schema errors
  • promote decoded relay errors, environment API failures, and trace IDs through a value-adding static mapper while retaining each exact cause chain
  • represent environment ID, endpoint, and provider mismatches with typed expected/actual attributes
  • type synchronous URL/client initialization failures instead of letting them escape as defects
  • remove cause-derived development messages and the adjacent relay-error switch

Validation

  • vp test run apps/mobile/src/features/cloud/linkEnvironment.test.ts (21 tests)
  • vp run lint:mobile
  • vp check (passes with 20 pre-existing warnings)
  • vp run typecheck

Overlap


Note

Medium Risk
Error _tag values and user-visible messages change across link/list/connect/status flows; UI or logging that matched old URL-embedded strings or a single CloudEnvironmentLinkError tag needs updating.

Overview
Replaces the single CloudEnvironmentLinkError bucket in mobile cloud linking with a Schema.Union of tagged errors and removes URL-heavy, dev-only, and relay-string message builders.

CloudEnvironmentLinkOperationError now records an action, optional environmentId, redacted URL diagnostics via getUrlDiagnostics (length/protocol/hostname only), nested relayError / environmentError, and traceId, with stable user-facing messages like Could not {action} for environment "{id}". Mismatch cases use dedicated types (CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, CloudEnvironmentEndpointProviderMismatchError, CloudEnvironmentLocalBearerRequiredError, CloudRelayUrlNotConfiguredError) with expected/actual fields instead of generic strings.

Synchronous throws for URL parsing and HTTP client setup are routed through Effect.try into operation errors. Per-environment statusError strings now come from these typed message getters. Tests assert secret redaction in serialization and updated _tag / field shapes; isCloudEnvironmentLinkError narrows the union.

Reviewed by Cursor Bugbot for commit d0671a3. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Replace generic cloud link errors with structured, action-specific error types in mobile

  • Introduces several new tagged error classes in linkEnvironment.ts: CloudEnvironmentLinkOperationError, CloudRelayUrlNotConfiguredError, CloudEnvironmentLocalBearerRequiredError, CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, and CloudEnvironmentEndpointProviderMismatchError.
  • All error types carry structured diagnostics (action label, redacted URL fields like protocol/hostname/input-length, traceId, relay/environment error bodies) instead of raw error strings.
  • Exports a CloudEnvironmentLinkError union type and isCloudEnvironmentLinkError guard so callers can reliably discriminate all link-related failures.
  • Behavioral Change: Every failure path in linkEnvironmentToCloud, connectRelayManagedEnvironment, listCloudEnvironments, and getCloudEnvironmentStatus now emits a different _tag and message format than before; callers matching on previous error shapes will need updating.

Macroscope summarized d0671a3.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c198374f-00a5-4982-b0a7-6e8cff91c2e1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/mobile-cloud-link-errors

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling to use structured error types and redacts URL secrets from error diagnostics - a security improvement. The core cloud-linking business logic is unchanged; only error construction and formatting changes.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:25

Dismissing prior approval to re-evaluate fb67183

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from fb67183 to 21bfa07CompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:56

Dismissing prior approval to re-evaluate 21bfa07

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from b87e64a to 3167aebCompareJune 20, 2026 19:21
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 20:12

Dismissing prior approval to re-evaluate 9a2733c

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6eba786 to aacb560CompareJune 20, 2026 22:40
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 9a2733c to e9c868aCompareJune 20, 2026 22:46
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 22:46

Dismissing prior approval to re-evaluate e9c868a

@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from aacb560 to 77e5b36CompareJune 20, 2026 22:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from e9c868a to 8163b74CompareJune 20, 2026 22:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 77e5b36 to 6bc2561CompareJune 20, 2026 23:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from b954b21 to 296e9bbCompareJune 20, 2026 23:14
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6bc2561 to 71f9ff5CompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 296e9bb to adaf66fCompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 71f9ff5 to 8bc20f2CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from adaf66f to 0fcf0f4CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 8bc20f2 to 3f67e2bCompareJune 21, 2026 00:08
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 49b97b4 to 9b6ce56CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 70fdb85 to 5a80908CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 553daf6 to ed36096CompareJune 21, 2026 00:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 2a031a9 to b63cfb3CompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from ed36096 to 15aa01aCompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from b63cfb3 to eadf056CompareJune 21, 2026 01:26
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from bd937be to 517c1eaCompareJune 21, 2026 01:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 1830060 to 534fad3CompareJune 21, 2026 01:44
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 8d916bc to 7670d78CompareJune 21, 2026 01:50
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 534fad3 to 6601ea3CompareJune 21, 2026 01:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 7670d78 to 1ed6271CompareJune 21, 2026 02:03
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6601ea3 to 6c8a6b1CompareJune 21, 2026 02:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 21, 2026 02:04

Dismissing prior approval to re-evaluate 6c8a6b1

@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from c91fad6 to 9e0c536CompareJune 21, 2026 02:22
juliusmarmingeand others added 5 commits June 20, 2026 19:23
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6c8a6b1 to d0671a3CompareJune 21, 2026 02:24
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarminge merged commit a7d56b3 into codex/redact-dpop-request-targetJun 21, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/mobile-cloud-link-errors branch June 21, 2026 02:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Structure mobile cloud-link failures - #3320

Merged
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors
Jun 21, 2026
Merged

[codex] Structure mobile cloud-link failures#3320
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generic mobile cloud-link error bucket and constructor factories with structured Schema errors
  • promote decoded relay errors, environment API failures, and trace IDs through a value-adding static mapper while retaining each exact cause chain
  • represent environment ID, endpoint, and provider mismatches with typed expected/actual attributes
  • type synchronous URL/client initialization failures instead of letting them escape as defects
  • remove cause-derived development messages and the adjacent relay-error switch

Validation

  • vp test run apps/mobile/src/features/cloud/linkEnvironment.test.ts (21 tests)
  • vp run lint:mobile
  • vp check (passes with 20 pre-existing warnings)
  • vp run typecheck

Overlap


Note

Medium Risk
Error _tag values and user-visible messages change across link/list/connect/status flows; UI or logging that matched old URL-embedded strings or a single CloudEnvironmentLinkError tag needs updating.

Overview
Replaces the single CloudEnvironmentLinkError bucket in mobile cloud linking with a Schema.Union of tagged errors and removes URL-heavy, dev-only, and relay-string message builders.

CloudEnvironmentLinkOperationError now records an action, optional environmentId, redacted URL diagnostics via getUrlDiagnostics (length/protocol/hostname only), nested relayError / environmentError, and traceId, with stable user-facing messages like Could not {action} for environment "{id}". Mismatch cases use dedicated types (CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, CloudEnvironmentEndpointProviderMismatchError, CloudEnvironmentLocalBearerRequiredError, CloudRelayUrlNotConfiguredError) with expected/actual fields instead of generic strings.

Synchronous throws for URL parsing and HTTP client setup are routed through Effect.try into operation errors. Per-environment statusError strings now come from these typed message getters. Tests assert secret redaction in serialization and updated _tag / field shapes; isCloudEnvironmentLinkError narrows the union.

Reviewed by Cursor Bugbot for commit d0671a3. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Replace generic cloud link errors with structured, action-specific error types in mobile

  • Introduces several new tagged error classes in linkEnvironment.ts: CloudEnvironmentLinkOperationError, CloudRelayUrlNotConfiguredError, CloudEnvironmentLocalBearerRequiredError, CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, and CloudEnvironmentEndpointProviderMismatchError.
  • All error types carry structured diagnostics (action label, redacted URL fields like protocol/hostname/input-length, traceId, relay/environment error bodies) instead of raw error strings.
  • Exports a CloudEnvironmentLinkError union type and isCloudEnvironmentLinkError guard so callers can reliably discriminate all link-related failures.
  • Behavioral Change: Every failure path in linkEnvironmentToCloud, connectRelayManagedEnvironment, listCloudEnvironments, and getCloudEnvironmentStatus now emits a different _tag and message format than before; callers matching on previous error shapes will need updating.

Macroscope summarized d0671a3.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c198374f-00a5-4982-b0a7-6e8cff91c2e1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/mobile-cloud-link-errors

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling to use structured error types and redacts URL secrets from error diagnostics - a security improvement. The core cloud-linking business logic is unchanged; only error construction and formatting changes.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:25

Dismissing prior approval to re-evaluate fb67183

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from fb67183 to 21bfa07CompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:56

Dismissing prior approval to re-evaluate 21bfa07

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from b87e64a to 3167aebCompareJune 20, 2026 19:21
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 20:12

Dismissing prior approval to re-evaluate 9a2733c

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6eba786 to aacb560CompareJune 20, 2026 22:40
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 9a2733c to e9c868aCompareJune 20, 2026 22:46
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 22:46

Dismissing prior approval to re-evaluate e9c868a

@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from aacb560 to 77e5b36CompareJune 20, 2026 22:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from e9c868a to 8163b74CompareJune 20, 2026 22:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 77e5b36 to 6bc2561CompareJune 20, 2026 23:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from b954b21 to 296e9bbCompareJune 20, 2026 23:14
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6bc2561 to 71f9ff5CompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 296e9bb to adaf66fCompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 71f9ff5 to 8bc20f2CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from adaf66f to 0fcf0f4CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 8bc20f2 to 3f67e2bCompareJune 21, 2026 00:08
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 49b97b4 to 9b6ce56CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 70fdb85 to 5a80908CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 553daf6 to ed36096CompareJune 21, 2026 00:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 2a031a9 to b63cfb3CompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from ed36096 to 15aa01aCompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from b63cfb3 to eadf056CompareJune 21, 2026 01:26
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from bd937be to 517c1eaCompareJune 21, 2026 01:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 1830060 to 534fad3CompareJune 21, 2026 01:44
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 8d916bc to 7670d78CompareJune 21, 2026 01:50
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 534fad3 to 6601ea3CompareJune 21, 2026 01:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 7670d78 to 1ed6271CompareJune 21, 2026 02:03
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6601ea3 to 6c8a6b1CompareJune 21, 2026 02:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 21, 2026 02:04

Dismissing prior approval to re-evaluate 6c8a6b1

@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from c91fad6 to 9e0c536CompareJune 21, 2026 02:22
juliusmarmingeand others added 5 commits June 20, 2026 19:23
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6c8a6b1 to d0671a3CompareJune 21, 2026 02:24
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarminge merged commit a7d56b3 into codex/redact-dpop-request-targetJun 21, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/mobile-cloud-link-errors branch June 21, 2026 02:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge
, '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

[codex] Structure mobile cloud-link failures - #3320

Merged
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors
Jun 21, 2026
Merged

[codex] Structure mobile cloud-link failures#3320
juliusmarminge merged 5 commits into
codex/redact-dpop-request-targetfrom
codex/mobile-cloud-link-errors

Conversation

@juliusmarminge

@juliusmarmingejuliusmarminge commented Jun 20, 2026

Copy link
Copy Markdown
Member

Summary

  • replace the generic mobile cloud-link error bucket and constructor factories with structured Schema errors
  • promote decoded relay errors, environment API failures, and trace IDs through a value-adding static mapper while retaining each exact cause chain
  • represent environment ID, endpoint, and provider mismatches with typed expected/actual attributes
  • type synchronous URL/client initialization failures instead of letting them escape as defects
  • remove cause-derived development messages and the adjacent relay-error switch

Validation

  • vp test run apps/mobile/src/features/cloud/linkEnvironment.test.ts (21 tests)
  • vp run lint:mobile
  • vp check (passes with 20 pre-existing warnings)
  • vp run typecheck

Overlap


Note

Medium Risk
Error _tag values and user-visible messages change across link/list/connect/status flows; UI or logging that matched old URL-embedded strings or a single CloudEnvironmentLinkError tag needs updating.

Overview
Replaces the single CloudEnvironmentLinkError bucket in mobile cloud linking with a Schema.Union of tagged errors and removes URL-heavy, dev-only, and relay-string message builders.

CloudEnvironmentLinkOperationError now records an action, optional environmentId, redacted URL diagnostics via getUrlDiagnostics (length/protocol/hostname only), nested relayError / environmentError, and traceId, with stable user-facing messages like Could not {action} for environment "{id}". Mismatch cases use dedicated types (CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, CloudEnvironmentEndpointProviderMismatchError, CloudEnvironmentLocalBearerRequiredError, CloudRelayUrlNotConfiguredError) with expected/actual fields instead of generic strings.

Synchronous throws for URL parsing and HTTP client setup are routed through Effect.try into operation errors. Per-environment statusError strings now come from these typed message getters. Tests assert secret redaction in serialization and updated _tag / field shapes; isCloudEnvironmentLinkError narrows the union.

Reviewed by Cursor Bugbot for commit d0671a3. Bugbot is set up for automated code reviews on this repo. Configure here.

Note

Replace generic cloud link errors with structured, action-specific error types in mobile

  • Introduces several new tagged error classes in linkEnvironment.ts: CloudEnvironmentLinkOperationError, CloudRelayUrlNotConfiguredError, CloudEnvironmentLocalBearerRequiredError, CloudEnvironmentIdMismatchError, CloudEnvironmentEndpointMismatchError, and CloudEnvironmentEndpointProviderMismatchError.
  • All error types carry structured diagnostics (action label, redacted URL fields like protocol/hostname/input-length, traceId, relay/environment error bodies) instead of raw error strings.
  • Exports a CloudEnvironmentLinkError union type and isCloudEnvironmentLinkError guard so callers can reliably discriminate all link-related failures.
  • Behavioral Change: Every failure path in linkEnvironmentToCloud, connectRelayManagedEnvironment, listCloudEnvironments, and getCloudEnvironmentStatus now emits a different _tag and message format than before; callers matching on previous error shapes will need updating.

Macroscope summarized d0671a3.

@coderabbitai

coderabbitaiBot commented Jun 20, 2026

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: Repository UI

Review profile: CHILL

Plan: Pro

Run ID: c198374f-00a5-4982-b0a7-6e8cff91c2e1

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/mobile-cloud-link-errors

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

@github-actionsgithub-actionsBot added vouch:trusted PR author is trusted by repo permissions or the VOUCHED list. size:XL 500-999 changed lines (additions + deletions). labels Jun 20, 2026
@macroscopeapp

macroscopeappBot commented Jun 20, 2026

Copy link
Copy Markdown
Contributor

Approvability

Verdict: Approved

This PR refactors error handling to use structured error types and redacts URL secrets from error diagnostics - a security improvement. The core cloud-linking business logic is unchanged; only error construction and formatting changes.

You can customize Macroscope's approvability policy. Learn more.

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 14:25

Dismissing prior approval to re-evaluate fb67183

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from fb67183 to 21bfa07CompareJune 20, 2026 16:56
@juliusmarminge
juliusmarminge changed the base branch from main to codex/redact-dpop-request-targetJune 20, 2026 16:56
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 16:56

Dismissing prior approval to re-evaluate 21bfa07

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from b87e64a to 3167aebCompareJune 20, 2026 19:21
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 20:12

Dismissing prior approval to re-evaluate 9a2733c

macroscopeapp[bot]
macroscopeappBot previously approved these changes Jun 20, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6eba786 to aacb560CompareJune 20, 2026 22:40
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 9a2733c to e9c868aCompareJune 20, 2026 22:46
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 20, 2026 22:46

Dismissing prior approval to re-evaluate e9c868a

@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from aacb560 to 77e5b36CompareJune 20, 2026 22:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from e9c868a to 8163b74CompareJune 20, 2026 22:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 77e5b36 to 6bc2561CompareJune 20, 2026 23:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from b954b21 to 296e9bbCompareJune 20, 2026 23:14
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 6bc2561 to 71f9ff5CompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 296e9bb to adaf66fCompareJune 20, 2026 23:20
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 71f9ff5 to 8bc20f2CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from adaf66f to 0fcf0f4CompareJune 20, 2026 23:49
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 8bc20f2 to 3f67e2bCompareJune 21, 2026 00:08
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 49b97b4 to 9b6ce56CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 70fdb85 to 5a80908CompareJune 21, 2026 00:21
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 553daf6 to ed36096CompareJune 21, 2026 00:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 2a031a9 to b63cfb3CompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from ed36096 to 15aa01aCompareJune 21, 2026 01:10
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from b63cfb3 to eadf056CompareJune 21, 2026 01:26
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from bd937be to 517c1eaCompareJune 21, 2026 01:38
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch 2 times, most recently from 1830060 to 534fad3CompareJune 21, 2026 01:44
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch 2 times, most recently from 8d916bc to 7670d78CompareJune 21, 2026 01:50
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 534fad3 to 6601ea3CompareJune 21, 2026 01:51
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from 7670d78 to 1ed6271CompareJune 21, 2026 02:03
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6601ea3 to 6c8a6b1CompareJune 21, 2026 02:04
@macroscopeapp
macroscopeappBot dismissed their stale reviewJune 21, 2026 02:04

Dismissing prior approval to re-evaluate 6c8a6b1

@github-actionsgithub-actionsBot added size:XXL 1,000+ changed lines (additions + deletions). and removed size:XL 500-999 changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarmingeforce-pushed the codex/redact-dpop-request-target branch from c91fad6 to 9e0c536CompareJune 21, 2026 02:22
juliusmarmingeand others added 5 commits June 20, 2026 19:23
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
Co-authored-by: codex <codex@users.noreply.github.com>
@juliusmarminge
juliusmarmingeforce-pushed the codex/mobile-cloud-link-errors branch from 6c8a6b1 to d0671a3CompareJune 21, 2026 02:24
@github-actionsgithub-actionsBot added size:XL 500-999 changed lines (additions + deletions). and removed size:XXL 1,000+ changed lines (additions + deletions). labels Jun 21, 2026
@juliusmarminge
juliusmarminge merged commit a7d56b3 into codex/redact-dpop-request-targetJun 21, 2026
16 checks passed
@juliusmarminge
juliusmarminge deleted the codex/mobile-cloud-link-errors branch June 21, 2026 02:30
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

size:XL500-999 changed lines (additions + deletions).vouch:trustedPR author is trusted by repo permissions or the VOUCHED list.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@juliusmarminge