Multiplatform: remote host, browser client, phone shells (parked) - #175

Draft
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked
Draft

Multiplatform: remote host, browser client, phone shells (parked)#175
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked

Conversation

@Tryanks

Copy link
Copy Markdown
Owner

Draft — parked for later. This is the multiplatform work from #173, taken back out of main by #174 and held here until we pick it up again.

Nothing was failing. All seven CI jobs were green when #173 merged; it was parked by choice, not by defect.

Why this branch and not the original

Re-merging feat/multiplatform-groundwork would not work. Its commits are still ancestors of main through the merge #174 reverted, so git treats them as already applied and a PR from it shows an empty diff. Reverting the revert is the way back, which is what the single commit on this branch does.

What it contains

A sync host the desktop app starts on loopback at launch, plus tcode-server for machines with no display. A wire protocol (docs/sync-protocol.md) where clients send commands and the host streams events, each carrying a per-session sequence number a reconnecting client resumes from. A shared client UI compiled to wasm, Android and iOS — one implementation, three shells — that follows a session, sends turns, and answers approvals. Devices get in with a six-character pairing code, once.

Four CI jobs that actually gate it. The previous workflow proved only that the desktop build worked: client-app is outside the workspace and five other crates compile to empty shells on a host. These build them for their real targets, with no failure suppression.

Known state when parked

Status
Desktop host, headless host, browser clientExercised end to end
AndroidLinks for aarch64-linux-android, all JNI entry points exported. Never run on a device
iOSLinks against the iOS SDK. Never run on a device or simulator

The mobile rows are the open question. Linking proves every symbol GPUI, wgpu, Metal, Vulkan and psm need resolves — which cargo check does not — and is still not the same as having seen a frame. The likely first failure on both is renderer creation meeting real hardware.

docs/remote-and-mobile.md is the user-facing guide; docs/multiplatform-plan.md records the architecture and the approaches rejected along the way.

🤖 Generated with Claude Code

Tryanksand others added 2 commits July 26, 2026 14:37
…dwork"
This reverts commit 490aa67, reversing
changes made to 2cbb089d1b90da1d68a3f6851ff0f13d7e7dae5b.
Parked rather than abandoned: the remote host, the browser and phone
clients, and the multiplatform CI gates all come back out of main while the
work continues on its branch. Nothing here was failing — CI was green on
all seven jobs when it merged.
Note for whoever brings it back: re-merging the original branch will not
restore these changes, because its commits remain ancestors of main through
the merge this reverts. The way back is to revert *this* commit, which is
what the follow-up branch does.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reverts the revert in #174, restoring the remote sync host, the browser and
phone clients, the shared client UI, and the multiplatform CI gates.
This is the only way back. Re-merging `feat/multiplatform-groundwork`
would not work: its commits remain ancestors of `main` through the merge
that #174 reverted, so git treats them as already applied and the diff comes
out empty.
Everything here was green on all seven CI jobs before it was parked. Future
work continues on this branch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

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

Multiplatform: remote host, browser client, phone shells (parked) - #175

Draft
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked
Draft

Multiplatform: remote host, browser client, phone shells (parked)#175
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked

Conversation

@Tryanks

Copy link
Copy Markdown
Owner

Draft — parked for later. This is the multiplatform work from #173, taken back out of main by #174 and held here until we pick it up again.

Nothing was failing. All seven CI jobs were green when #173 merged; it was parked by choice, not by defect.

Why this branch and not the original

Re-merging feat/multiplatform-groundwork would not work. Its commits are still ancestors of main through the merge #174 reverted, so git treats them as already applied and a PR from it shows an empty diff. Reverting the revert is the way back, which is what the single commit on this branch does.

What it contains

A sync host the desktop app starts on loopback at launch, plus tcode-server for machines with no display. A wire protocol (docs/sync-protocol.md) where clients send commands and the host streams events, each carrying a per-session sequence number a reconnecting client resumes from. A shared client UI compiled to wasm, Android and iOS — one implementation, three shells — that follows a session, sends turns, and answers approvals. Devices get in with a six-character pairing code, once.

Four CI jobs that actually gate it. The previous workflow proved only that the desktop build worked: client-app is outside the workspace and five other crates compile to empty shells on a host. These build them for their real targets, with no failure suppression.

Known state when parked

Status
Desktop host, headless host, browser clientExercised end to end
AndroidLinks for aarch64-linux-android, all JNI entry points exported. Never run on a device
iOSLinks against the iOS SDK. Never run on a device or simulator

The mobile rows are the open question. Linking proves every symbol GPUI, wgpu, Metal, Vulkan and psm need resolves — which cargo check does not — and is still not the same as having seen a frame. The likely first failure on both is renderer creation meeting real hardware.

docs/remote-and-mobile.md is the user-facing guide; docs/multiplatform-plan.md records the architecture and the approaches rejected along the way.

🤖 Generated with Claude Code

Tryanksand others added 2 commits July 26, 2026 14:37
…dwork"
This reverts commit 490aa67, reversing
changes made to 2cbb089d1b90da1d68a3f6851ff0f13d7e7dae5b.
Parked rather than abandoned: the remote host, the browser and phone
clients, and the multiplatform CI gates all come back out of main while the
work continues on its branch. Nothing here was failing — CI was green on
all seven jobs when it merged.
Note for whoever brings it back: re-merging the original branch will not
restore these changes, because its commits remain ancestors of main through
the merge this reverts. The way back is to revert *this* commit, which is
what the follow-up branch does.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reverts the revert in #174, restoring the remote sync host, the browser and
phone clients, the shared client UI, and the multiplatform CI gates.
This is the only way back. Re-merging `feat/multiplatform-groundwork`
would not work: its commits remain ancestors of `main` through the merge
that #174 reverted, so git treats them as already applied and the diff comes
out empty.
Everything here was green on all seven CI jobs before it was parked. Future
work continues on this branch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

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

Multiplatform: remote host, browser client, phone shells (parked) - #175

Draft
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked
Draft

Multiplatform: remote host, browser client, phone shells (parked)#175
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked

Conversation

@Tryanks

Copy link
Copy Markdown
Owner

Draft — parked for later. This is the multiplatform work from #173, taken back out of main by #174 and held here until we pick it up again.

Nothing was failing. All seven CI jobs were green when #173 merged; it was parked by choice, not by defect.

Why this branch and not the original

Re-merging feat/multiplatform-groundwork would not work. Its commits are still ancestors of main through the merge #174 reverted, so git treats them as already applied and a PR from it shows an empty diff. Reverting the revert is the way back, which is what the single commit on this branch does.

What it contains

A sync host the desktop app starts on loopback at launch, plus tcode-server for machines with no display. A wire protocol (docs/sync-protocol.md) where clients send commands and the host streams events, each carrying a per-session sequence number a reconnecting client resumes from. A shared client UI compiled to wasm, Android and iOS — one implementation, three shells — that follows a session, sends turns, and answers approvals. Devices get in with a six-character pairing code, once.

Four CI jobs that actually gate it. The previous workflow proved only that the desktop build worked: client-app is outside the workspace and five other crates compile to empty shells on a host. These build them for their real targets, with no failure suppression.

Known state when parked

Status
Desktop host, headless host, browser clientExercised end to end
AndroidLinks for aarch64-linux-android, all JNI entry points exported. Never run on a device
iOSLinks against the iOS SDK. Never run on a device or simulator

The mobile rows are the open question. Linking proves every symbol GPUI, wgpu, Metal, Vulkan and psm need resolves — which cargo check does not — and is still not the same as having seen a frame. The likely first failure on both is renderer creation meeting real hardware.

docs/remote-and-mobile.md is the user-facing guide; docs/multiplatform-plan.md records the architecture and the approaches rejected along the way.

🤖 Generated with Claude Code

Tryanksand others added 2 commits July 26, 2026 14:37
…dwork"
This reverts commit 490aa67, reversing
changes made to 2cbb089d1b90da1d68a3f6851ff0f13d7e7dae5b.
Parked rather than abandoned: the remote host, the browser and phone
clients, and the multiplatform CI gates all come back out of main while the
work continues on its branch. Nothing here was failing — CI was green on
all seven jobs when it merged.
Note for whoever brings it back: re-merging the original branch will not
restore these changes, because its commits remain ancestors of main through
the merge this reverts. The way back is to revert *this* commit, which is
what the follow-up branch does.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reverts the revert in #174, restoring the remote sync host, the browser and
phone clients, the shared client UI, and the multiplatform CI gates.
This is the only way back. Re-merging `feat/multiplatform-groundwork`
would not work: its commits remain ancestors of `main` through the merge
that #174 reverted, so git treats them as already applied and the diff comes
out empty.
Everything here was green on all seven CI jobs before it was parked. Future
work continues on this branch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

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

Multiplatform: remote host, browser client, phone shells (parked) - #175

Draft
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked
Draft

Multiplatform: remote host, browser client, phone shells (parked)#175
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked

Conversation

@Tryanks

Copy link
Copy Markdown
Owner

Draft — parked for later. This is the multiplatform work from #173, taken back out of main by #174 and held here until we pick it up again.

Nothing was failing. All seven CI jobs were green when #173 merged; it was parked by choice, not by defect.

Why this branch and not the original

Re-merging feat/multiplatform-groundwork would not work. Its commits are still ancestors of main through the merge #174 reverted, so git treats them as already applied and a PR from it shows an empty diff. Reverting the revert is the way back, which is what the single commit on this branch does.

What it contains

A sync host the desktop app starts on loopback at launch, plus tcode-server for machines with no display. A wire protocol (docs/sync-protocol.md) where clients send commands and the host streams events, each carrying a per-session sequence number a reconnecting client resumes from. A shared client UI compiled to wasm, Android and iOS — one implementation, three shells — that follows a session, sends turns, and answers approvals. Devices get in with a six-character pairing code, once.

Four CI jobs that actually gate it. The previous workflow proved only that the desktop build worked: client-app is outside the workspace and five other crates compile to empty shells on a host. These build them for their real targets, with no failure suppression.

Known state when parked

Status
Desktop host, headless host, browser clientExercised end to end
AndroidLinks for aarch64-linux-android, all JNI entry points exported. Never run on a device
iOSLinks against the iOS SDK. Never run on a device or simulator

The mobile rows are the open question. Linking proves every symbol GPUI, wgpu, Metal, Vulkan and psm need resolves — which cargo check does not — and is still not the same as having seen a frame. The likely first failure on both is renderer creation meeting real hardware.

docs/remote-and-mobile.md is the user-facing guide; docs/multiplatform-plan.md records the architecture and the approaches rejected along the way.

🤖 Generated with Claude Code

Tryanksand others added 2 commits July 26, 2026 14:37
…dwork"
This reverts commit 490aa67, reversing
changes made to 2cbb089d1b90da1d68a3f6851ff0f13d7e7dae5b.
Parked rather than abandoned: the remote host, the browser and phone
clients, and the multiplatform CI gates all come back out of main while the
work continues on its branch. Nothing here was failing — CI was green on
all seven jobs when it merged.
Note for whoever brings it back: re-merging the original branch will not
restore these changes, because its commits remain ancestors of main through
the merge this reverts. The way back is to revert *this* commit, which is
what the follow-up branch does.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reverts the revert in #174, restoring the remote sync host, the browser and
phone clients, the shared client UI, and the multiplatform CI gates.
This is the only way back. Re-merging `feat/multiplatform-groundwork`
would not work: its commits remain ancestors of `main` through the merge
that #174 reverted, so git treats them as already applied and the diff comes
out empty.
Everything here was green on all seven CI jobs before it was parked. Future
work continues on this branch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

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

Multiplatform: remote host, browser client, phone shells (parked) - #175

Draft
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked
Draft

Multiplatform: remote host, browser client, phone shells (parked)#175
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked

Conversation

@Tryanks

Copy link
Copy Markdown
Owner

Draft — parked for later. This is the multiplatform work from #173, taken back out of main by #174 and held here until we pick it up again.

Nothing was failing. All seven CI jobs were green when #173 merged; it was parked by choice, not by defect.

Why this branch and not the original

Re-merging feat/multiplatform-groundwork would not work. Its commits are still ancestors of main through the merge #174 reverted, so git treats them as already applied and a PR from it shows an empty diff. Reverting the revert is the way back, which is what the single commit on this branch does.

What it contains

A sync host the desktop app starts on loopback at launch, plus tcode-server for machines with no display. A wire protocol (docs/sync-protocol.md) where clients send commands and the host streams events, each carrying a per-session sequence number a reconnecting client resumes from. A shared client UI compiled to wasm, Android and iOS — one implementation, three shells — that follows a session, sends turns, and answers approvals. Devices get in with a six-character pairing code, once.

Four CI jobs that actually gate it. The previous workflow proved only that the desktop build worked: client-app is outside the workspace and five other crates compile to empty shells on a host. These build them for their real targets, with no failure suppression.

Known state when parked

Status
Desktop host, headless host, browser clientExercised end to end
AndroidLinks for aarch64-linux-android, all JNI entry points exported. Never run on a device
iOSLinks against the iOS SDK. Never run on a device or simulator

The mobile rows are the open question. Linking proves every symbol GPUI, wgpu, Metal, Vulkan and psm need resolves — which cargo check does not — and is still not the same as having seen a frame. The likely first failure on both is renderer creation meeting real hardware.

docs/remote-and-mobile.md is the user-facing guide; docs/multiplatform-plan.md records the architecture and the approaches rejected along the way.

🤖 Generated with Claude Code

Tryanksand others added 2 commits July 26, 2026 14:37
…dwork"
This reverts commit 490aa67, reversing
changes made to 2cbb089d1b90da1d68a3f6851ff0f13d7e7dae5b.
Parked rather than abandoned: the remote host, the browser and phone
clients, and the multiplatform CI gates all come back out of main while the
work continues on its branch. Nothing here was failing — CI was green on
all seven jobs when it merged.
Note for whoever brings it back: re-merging the original branch will not
restore these changes, because its commits remain ancestors of main through
the merge this reverts. The way back is to revert *this* commit, which is
what the follow-up branch does.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reverts the revert in #174, restoring the remote sync host, the browser and
phone clients, the shared client UI, and the multiplatform CI gates.
This is the only way back. Re-merging `feat/multiplatform-groundwork`
would not work: its commits remain ancestors of `main` through the merge
that #174 reverted, so git treats them as already applied and the diff comes
out empty.
Everything here was green on all seven CI jobs before it was parked. Future
work continues on this branch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

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

Multiplatform: remote host, browser client, phone shells (parked) - #175

Draft
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked
Draft

Multiplatform: remote host, browser client, phone shells (parked)#175
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked

Conversation

@Tryanks

Copy link
Copy Markdown
Owner

Draft — parked for later. This is the multiplatform work from #173, taken back out of main by #174 and held here until we pick it up again.

Nothing was failing. All seven CI jobs were green when #173 merged; it was parked by choice, not by defect.

Why this branch and not the original

Re-merging feat/multiplatform-groundwork would not work. Its commits are still ancestors of main through the merge #174 reverted, so git treats them as already applied and a PR from it shows an empty diff. Reverting the revert is the way back, which is what the single commit on this branch does.

What it contains

A sync host the desktop app starts on loopback at launch, plus tcode-server for machines with no display. A wire protocol (docs/sync-protocol.md) where clients send commands and the host streams events, each carrying a per-session sequence number a reconnecting client resumes from. A shared client UI compiled to wasm, Android and iOS — one implementation, three shells — that follows a session, sends turns, and answers approvals. Devices get in with a six-character pairing code, once.

Four CI jobs that actually gate it. The previous workflow proved only that the desktop build worked: client-app is outside the workspace and five other crates compile to empty shells on a host. These build them for their real targets, with no failure suppression.

Known state when parked

Status
Desktop host, headless host, browser clientExercised end to end
AndroidLinks for aarch64-linux-android, all JNI entry points exported. Never run on a device
iOSLinks against the iOS SDK. Never run on a device or simulator

The mobile rows are the open question. Linking proves every symbol GPUI, wgpu, Metal, Vulkan and psm need resolves — which cargo check does not — and is still not the same as having seen a frame. The likely first failure on both is renderer creation meeting real hardware.

docs/remote-and-mobile.md is the user-facing guide; docs/multiplatform-plan.md records the architecture and the approaches rejected along the way.

🤖 Generated with Claude Code

Tryanksand others added 2 commits July 26, 2026 14:37
…dwork"
This reverts commit 490aa67, reversing
changes made to 2cbb089d1b90da1d68a3f6851ff0f13d7e7dae5b.
Parked rather than abandoned: the remote host, the browser and phone
clients, and the multiplatform CI gates all come back out of main while the
work continues on its branch. Nothing here was failing — CI was green on
all seven jobs when it merged.
Note for whoever brings it back: re-merging the original branch will not
restore these changes, because its commits remain ancestors of main through
the merge this reverts. The way back is to revert *this* commit, which is
what the follow-up branch does.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reverts the revert in #174, restoring the remote sync host, the browser and
phone clients, the shared client UI, and the multiplatform CI gates.
This is the only way back. Re-merging `feat/multiplatform-groundwork`
would not work: its commits remain ancestors of `main` through the merge
that #174 reverted, so git treats them as already applied and the diff comes
out empty.
Everything here was green on all seven CI jobs before it was parked. Future
work continues on this branch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

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

Multiplatform: remote host, browser client, phone shells (parked) - #175

Draft
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked
Draft

Multiplatform: remote host, browser client, phone shells (parked)#175
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked

Conversation

@Tryanks

Copy link
Copy Markdown
Owner

Draft — parked for later. This is the multiplatform work from #173, taken back out of main by #174 and held here until we pick it up again.

Nothing was failing. All seven CI jobs were green when #173 merged; it was parked by choice, not by defect.

Why this branch and not the original

Re-merging feat/multiplatform-groundwork would not work. Its commits are still ancestors of main through the merge #174 reverted, so git treats them as already applied and a PR from it shows an empty diff. Reverting the revert is the way back, which is what the single commit on this branch does.

What it contains

A sync host the desktop app starts on loopback at launch, plus tcode-server for machines with no display. A wire protocol (docs/sync-protocol.md) where clients send commands and the host streams events, each carrying a per-session sequence number a reconnecting client resumes from. A shared client UI compiled to wasm, Android and iOS — one implementation, three shells — that follows a session, sends turns, and answers approvals. Devices get in with a six-character pairing code, once.

Four CI jobs that actually gate it. The previous workflow proved only that the desktop build worked: client-app is outside the workspace and five other crates compile to empty shells on a host. These build them for their real targets, with no failure suppression.

Known state when parked

Status
Desktop host, headless host, browser clientExercised end to end
AndroidLinks for aarch64-linux-android, all JNI entry points exported. Never run on a device
iOSLinks against the iOS SDK. Never run on a device or simulator

The mobile rows are the open question. Linking proves every symbol GPUI, wgpu, Metal, Vulkan and psm need resolves — which cargo check does not — and is still not the same as having seen a frame. The likely first failure on both is renderer creation meeting real hardware.

docs/remote-and-mobile.md is the user-facing guide; docs/multiplatform-plan.md records the architecture and the approaches rejected along the way.

🤖 Generated with Claude Code

Tryanksand others added 2 commits July 26, 2026 14:37
…dwork"
This reverts commit 490aa67, reversing
changes made to 2cbb089d1b90da1d68a3f6851ff0f13d7e7dae5b.
Parked rather than abandoned: the remote host, the browser and phone
clients, and the multiplatform CI gates all come back out of main while the
work continues on its branch. Nothing here was failing — CI was green on
all seven jobs when it merged.
Note for whoever brings it back: re-merging the original branch will not
restore these changes, because its commits remain ancestors of main through
the merge this reverts. The way back is to revert *this* commit, which is
what the follow-up branch does.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reverts the revert in #174, restoring the remote sync host, the browser and
phone clients, the shared client UI, and the multiplatform CI gates.
This is the only way back. Re-merging `feat/multiplatform-groundwork`
would not work: its commits remain ancestors of `main` through the merge
that #174 reverted, so git treats them as already applied and the diff comes
out empty.
Everything here was green on all seven CI jobs before it was parked. Future
work continues on this branch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

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

Multiplatform: remote host, browser client, phone shells (parked) - #175

Draft
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked
Draft

Multiplatform: remote host, browser client, phone shells (parked)#175
Tryanks wants to merge 2 commits into
mainfrom
feat/multiplatform-parked

Conversation

@Tryanks

Copy link
Copy Markdown
Owner

Draft — parked for later. This is the multiplatform work from #173, taken back out of main by #174 and held here until we pick it up again.

Nothing was failing. All seven CI jobs were green when #173 merged; it was parked by choice, not by defect.

Why this branch and not the original

Re-merging feat/multiplatform-groundwork would not work. Its commits are still ancestors of main through the merge #174 reverted, so git treats them as already applied and a PR from it shows an empty diff. Reverting the revert is the way back, which is what the single commit on this branch does.

What it contains

A sync host the desktop app starts on loopback at launch, plus tcode-server for machines with no display. A wire protocol (docs/sync-protocol.md) where clients send commands and the host streams events, each carrying a per-session sequence number a reconnecting client resumes from. A shared client UI compiled to wasm, Android and iOS — one implementation, three shells — that follows a session, sends turns, and answers approvals. Devices get in with a six-character pairing code, once.

Four CI jobs that actually gate it. The previous workflow proved only that the desktop build worked: client-app is outside the workspace and five other crates compile to empty shells on a host. These build them for their real targets, with no failure suppression.

Known state when parked

Status
Desktop host, headless host, browser clientExercised end to end
AndroidLinks for aarch64-linux-android, all JNI entry points exported. Never run on a device
iOSLinks against the iOS SDK. Never run on a device or simulator

The mobile rows are the open question. Linking proves every symbol GPUI, wgpu, Metal, Vulkan and psm need resolves — which cargo check does not — and is still not the same as having seen a frame. The likely first failure on both is renderer creation meeting real hardware.

docs/remote-and-mobile.md is the user-facing guide; docs/multiplatform-plan.md records the architecture and the approaches rejected along the way.

🤖 Generated with Claude Code

Tryanksand others added 2 commits July 26, 2026 14:37
…dwork"
This reverts commit 490aa67, reversing
changes made to 2cbb089d1b90da1d68a3f6851ff0f13d7e7dae5b.
Parked rather than abandoned: the remote host, the browser and phone
clients, and the multiplatform CI gates all come back out of main while the
work continues on its branch. Nothing here was failing — CI was green on
all seven jobs when it merged.
Note for whoever brings it back: re-merging the original branch will not
restore these changes, because its commits remain ancestors of main through
the merge this reverts. The way back is to revert *this* commit, which is
what the follow-up branch does.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Reverts the revert in #174, restoring the remote sync host, the browser and
phone clients, the shared client UI, and the multiplatform CI gates.
This is the only way back. Re-merging `feat/multiplatform-groundwork`
would not work: its commits remain ancestors of `main` through the merge
that #174 reverted, so git treats them as already applied and the diff comes
out empty.
Everything here was green on all seven CI jobs before it was parked. Future
work continues on this branch.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant

@Tryanks