feat(runtime-host): preserve capability providers across reconnect - #2608

Merged
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers
Aug 9, 2026
Merged

feat(runtime-host): preserve capability providers across reconnect#2608
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers

Conversation

@M4n5ter

Copy link
Copy Markdown
Member

Summary

  • persist one Desktop Runtime Host Client instance identity under the Electron userData profile;
  • key Client Capability providers by the authenticated principal and persistent Client instance instead of an ephemeral connection;
  • preserve Session affinity while a provider is disconnected and restore it only when that exact authenticated Client returns with an equivalent contract;
  • let a reconnecting Client take over its provider lease before the stale connection finishes closing, without allowing stale unregister or teardown to invalidate the replacement.

The wire registration ID remains an immutable manifest-version identity. Reconnect affinity uses the stable provider identity, so in-flight snapshots can retain their original registration without mutating it in place.

Refs #2522

Verification

  • npm --workspace @maka/runtime-host test — 797 tests passed;
  • npm --workspace @maka/runtime-host run typecheck;
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit;
  • focused real-UDS reconnect coverage verifies disconnect, unavailable state, authenticated rebind, and invocation over the replacement connection;
  • Biome and git diff --check pass for the affected files.

Remaining Phase 4 work

  • shared reconnect and bounded-backoff lifecycle;
  • subscription catch-up and operation-specific indeterminate-outcome handling;
  • unattended capability-provider service mode and provider-unavailable Automation behavior;
  • restart, partition, slow-consumer, revocation, and shutdown journeys.
简体中文

摘要

  • 在 Electron userData profile 下持久化 Desktop Runtime Host Client 实例身份;
  • Client Capability provider 不再绑定临时连接,而是绑定认证主体与持久 Client 实例;
  • provider 断开时保留 Session affinity;只有同一认证 Client 携带等价 contract 返回时才恢复;
  • 新连接可在旧连接完成关闭前接管 provider lease,旧连接后续的 unregister 或 teardown 不会破坏替代连接。

wire registration ID 继续表示不可变的 manifest 版本。重连 affinity 使用稳定 provider 身份,因此正在使用的 snapshot 可以继续引用原 registration,不需要原地修改。

关联 #2522

验证

  • npm --workspace @maka/runtime-host test:797 项测试通过;
  • npm --workspace @maka/runtime-host run typecheck
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit
  • 真实 UDS 重连覆盖验证了断开、不可用状态、认证身份重绑定,以及替代连接上的工具调用;
  • 受影响文件通过 Biome 与 git diff --check

Phase 4 剩余工作

  • 共享重连与有界退避生命周期;
  • subscription catch-up 与按 operation 区分的 indeterminate outcome 处理;
  • 无人值守 capability-provider service mode 与 Automation provider unavailable 行为;
  • restart、partition、slow consumer、revocation 与 shutdown 场景。

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5ter marked this pull request as ready for review August 9, 2026 15:00
@M4n5ter
M4n5ter merged commit 511eeda into mainAug 9, 2026
9 checks passed
@M4n5ter
M4n5ter deleted the feat/2522-reconnect-capability-providers branch August 9, 2026 15:00
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

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

feat(runtime-host): preserve capability providers across reconnect - #2608

Merged
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers
Aug 9, 2026
Merged

feat(runtime-host): preserve capability providers across reconnect#2608
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers

Conversation

@M4n5ter

Copy link
Copy Markdown
Member

Summary

  • persist one Desktop Runtime Host Client instance identity under the Electron userData profile;
  • key Client Capability providers by the authenticated principal and persistent Client instance instead of an ephemeral connection;
  • preserve Session affinity while a provider is disconnected and restore it only when that exact authenticated Client returns with an equivalent contract;
  • let a reconnecting Client take over its provider lease before the stale connection finishes closing, without allowing stale unregister or teardown to invalidate the replacement.

The wire registration ID remains an immutable manifest-version identity. Reconnect affinity uses the stable provider identity, so in-flight snapshots can retain their original registration without mutating it in place.

Refs #2522

Verification

  • npm --workspace @maka/runtime-host test — 797 tests passed;
  • npm --workspace @maka/runtime-host run typecheck;
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit;
  • focused real-UDS reconnect coverage verifies disconnect, unavailable state, authenticated rebind, and invocation over the replacement connection;
  • Biome and git diff --check pass for the affected files.

Remaining Phase 4 work

  • shared reconnect and bounded-backoff lifecycle;
  • subscription catch-up and operation-specific indeterminate-outcome handling;
  • unattended capability-provider service mode and provider-unavailable Automation behavior;
  • restart, partition, slow-consumer, revocation, and shutdown journeys.
简体中文

摘要

  • 在 Electron userData profile 下持久化 Desktop Runtime Host Client 实例身份;
  • Client Capability provider 不再绑定临时连接,而是绑定认证主体与持久 Client 实例;
  • provider 断开时保留 Session affinity;只有同一认证 Client 携带等价 contract 返回时才恢复;
  • 新连接可在旧连接完成关闭前接管 provider lease,旧连接后续的 unregister 或 teardown 不会破坏替代连接。

wire registration ID 继续表示不可变的 manifest 版本。重连 affinity 使用稳定 provider 身份,因此正在使用的 snapshot 可以继续引用原 registration,不需要原地修改。

关联 #2522

验证

  • npm --workspace @maka/runtime-host test:797 项测试通过;
  • npm --workspace @maka/runtime-host run typecheck
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit
  • 真实 UDS 重连覆盖验证了断开、不可用状态、认证身份重绑定,以及替代连接上的工具调用;
  • 受影响文件通过 Biome 与 git diff --check

Phase 4 剩余工作

  • 共享重连与有界退避生命周期;
  • subscription catch-up 与按 operation 区分的 indeterminate outcome 处理;
  • 无人值守 capability-provider service mode 与 Automation provider unavailable 行为;
  • restart、partition、slow consumer、revocation 与 shutdown 场景。

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5ter marked this pull request as ready for review August 9, 2026 15:00
@M4n5ter
M4n5ter merged commit 511eeda into mainAug 9, 2026
9 checks passed
@M4n5ter
M4n5ter deleted the feat/2522-reconnect-capability-providers branch August 9, 2026 15:00
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

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

feat(runtime-host): preserve capability providers across reconnect - #2608

Merged
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers
Aug 9, 2026
Merged

feat(runtime-host): preserve capability providers across reconnect#2608
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers

Conversation

@M4n5ter

Copy link
Copy Markdown
Member

Summary

  • persist one Desktop Runtime Host Client instance identity under the Electron userData profile;
  • key Client Capability providers by the authenticated principal and persistent Client instance instead of an ephemeral connection;
  • preserve Session affinity while a provider is disconnected and restore it only when that exact authenticated Client returns with an equivalent contract;
  • let a reconnecting Client take over its provider lease before the stale connection finishes closing, without allowing stale unregister or teardown to invalidate the replacement.

The wire registration ID remains an immutable manifest-version identity. Reconnect affinity uses the stable provider identity, so in-flight snapshots can retain their original registration without mutating it in place.

Refs #2522

Verification

  • npm --workspace @maka/runtime-host test — 797 tests passed;
  • npm --workspace @maka/runtime-host run typecheck;
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit;
  • focused real-UDS reconnect coverage verifies disconnect, unavailable state, authenticated rebind, and invocation over the replacement connection;
  • Biome and git diff --check pass for the affected files.

Remaining Phase 4 work

  • shared reconnect and bounded-backoff lifecycle;
  • subscription catch-up and operation-specific indeterminate-outcome handling;
  • unattended capability-provider service mode and provider-unavailable Automation behavior;
  • restart, partition, slow-consumer, revocation, and shutdown journeys.
简体中文

摘要

  • 在 Electron userData profile 下持久化 Desktop Runtime Host Client 实例身份;
  • Client Capability provider 不再绑定临时连接,而是绑定认证主体与持久 Client 实例;
  • provider 断开时保留 Session affinity;只有同一认证 Client 携带等价 contract 返回时才恢复;
  • 新连接可在旧连接完成关闭前接管 provider lease,旧连接后续的 unregister 或 teardown 不会破坏替代连接。

wire registration ID 继续表示不可变的 manifest 版本。重连 affinity 使用稳定 provider 身份,因此正在使用的 snapshot 可以继续引用原 registration,不需要原地修改。

关联 #2522

验证

  • npm --workspace @maka/runtime-host test:797 项测试通过;
  • npm --workspace @maka/runtime-host run typecheck
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit
  • 真实 UDS 重连覆盖验证了断开、不可用状态、认证身份重绑定,以及替代连接上的工具调用;
  • 受影响文件通过 Biome 与 git diff --check

Phase 4 剩余工作

  • 共享重连与有界退避生命周期;
  • subscription catch-up 与按 operation 区分的 indeterminate outcome 处理;
  • 无人值守 capability-provider service mode 与 Automation provider unavailable 行为;
  • restart、partition、slow consumer、revocation 与 shutdown 场景。

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5ter marked this pull request as ready for review August 9, 2026 15:00
@M4n5ter
M4n5ter merged commit 511eeda into mainAug 9, 2026
9 checks passed
@M4n5ter
M4n5ter deleted the feat/2522-reconnect-capability-providers branch August 9, 2026 15:00
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

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

feat(runtime-host): preserve capability providers across reconnect - #2608

Merged
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers
Aug 9, 2026
Merged

feat(runtime-host): preserve capability providers across reconnect#2608
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers

Conversation

@M4n5ter

Copy link
Copy Markdown
Member

Summary

  • persist one Desktop Runtime Host Client instance identity under the Electron userData profile;
  • key Client Capability providers by the authenticated principal and persistent Client instance instead of an ephemeral connection;
  • preserve Session affinity while a provider is disconnected and restore it only when that exact authenticated Client returns with an equivalent contract;
  • let a reconnecting Client take over its provider lease before the stale connection finishes closing, without allowing stale unregister or teardown to invalidate the replacement.

The wire registration ID remains an immutable manifest-version identity. Reconnect affinity uses the stable provider identity, so in-flight snapshots can retain their original registration without mutating it in place.

Refs #2522

Verification

  • npm --workspace @maka/runtime-host test — 797 tests passed;
  • npm --workspace @maka/runtime-host run typecheck;
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit;
  • focused real-UDS reconnect coverage verifies disconnect, unavailable state, authenticated rebind, and invocation over the replacement connection;
  • Biome and git diff --check pass for the affected files.

Remaining Phase 4 work

  • shared reconnect and bounded-backoff lifecycle;
  • subscription catch-up and operation-specific indeterminate-outcome handling;
  • unattended capability-provider service mode and provider-unavailable Automation behavior;
  • restart, partition, slow-consumer, revocation, and shutdown journeys.
简体中文

摘要

  • 在 Electron userData profile 下持久化 Desktop Runtime Host Client 实例身份;
  • Client Capability provider 不再绑定临时连接,而是绑定认证主体与持久 Client 实例;
  • provider 断开时保留 Session affinity;只有同一认证 Client 携带等价 contract 返回时才恢复;
  • 新连接可在旧连接完成关闭前接管 provider lease,旧连接后续的 unregister 或 teardown 不会破坏替代连接。

wire registration ID 继续表示不可变的 manifest 版本。重连 affinity 使用稳定 provider 身份,因此正在使用的 snapshot 可以继续引用原 registration,不需要原地修改。

关联 #2522

验证

  • npm --workspace @maka/runtime-host test:797 项测试通过;
  • npm --workspace @maka/runtime-host run typecheck
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit
  • 真实 UDS 重连覆盖验证了断开、不可用状态、认证身份重绑定,以及替代连接上的工具调用;
  • 受影响文件通过 Biome 与 git diff --check

Phase 4 剩余工作

  • 共享重连与有界退避生命周期;
  • subscription catch-up 与按 operation 区分的 indeterminate outcome 处理;
  • 无人值守 capability-provider service mode 与 Automation provider unavailable 行为;
  • restart、partition、slow consumer、revocation 与 shutdown 场景。

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5ter marked this pull request as ready for review August 9, 2026 15:00
@M4n5ter
M4n5ter merged commit 511eeda into mainAug 9, 2026
9 checks passed
@M4n5ter
M4n5ter deleted the feat/2522-reconnect-capability-providers branch August 9, 2026 15:00
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

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

feat(runtime-host): preserve capability providers across reconnect - #2608

Merged
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers
Aug 9, 2026
Merged

feat(runtime-host): preserve capability providers across reconnect#2608
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers

Conversation

@M4n5ter

Copy link
Copy Markdown
Member

Summary

  • persist one Desktop Runtime Host Client instance identity under the Electron userData profile;
  • key Client Capability providers by the authenticated principal and persistent Client instance instead of an ephemeral connection;
  • preserve Session affinity while a provider is disconnected and restore it only when that exact authenticated Client returns with an equivalent contract;
  • let a reconnecting Client take over its provider lease before the stale connection finishes closing, without allowing stale unregister or teardown to invalidate the replacement.

The wire registration ID remains an immutable manifest-version identity. Reconnect affinity uses the stable provider identity, so in-flight snapshots can retain their original registration without mutating it in place.

Refs #2522

Verification

  • npm --workspace @maka/runtime-host test — 797 tests passed;
  • npm --workspace @maka/runtime-host run typecheck;
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit;
  • focused real-UDS reconnect coverage verifies disconnect, unavailable state, authenticated rebind, and invocation over the replacement connection;
  • Biome and git diff --check pass for the affected files.

Remaining Phase 4 work

  • shared reconnect and bounded-backoff lifecycle;
  • subscription catch-up and operation-specific indeterminate-outcome handling;
  • unattended capability-provider service mode and provider-unavailable Automation behavior;
  • restart, partition, slow-consumer, revocation, and shutdown journeys.
简体中文

摘要

  • 在 Electron userData profile 下持久化 Desktop Runtime Host Client 实例身份;
  • Client Capability provider 不再绑定临时连接,而是绑定认证主体与持久 Client 实例;
  • provider 断开时保留 Session affinity;只有同一认证 Client 携带等价 contract 返回时才恢复;
  • 新连接可在旧连接完成关闭前接管 provider lease,旧连接后续的 unregister 或 teardown 不会破坏替代连接。

wire registration ID 继续表示不可变的 manifest 版本。重连 affinity 使用稳定 provider 身份,因此正在使用的 snapshot 可以继续引用原 registration,不需要原地修改。

关联 #2522

验证

  • npm --workspace @maka/runtime-host test:797 项测试通过;
  • npm --workspace @maka/runtime-host run typecheck
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit
  • 真实 UDS 重连覆盖验证了断开、不可用状态、认证身份重绑定,以及替代连接上的工具调用;
  • 受影响文件通过 Biome 与 git diff --check

Phase 4 剩余工作

  • 共享重连与有界退避生命周期;
  • subscription catch-up 与按 operation 区分的 indeterminate outcome 处理;
  • 无人值守 capability-provider service mode 与 Automation provider unavailable 行为;
  • restart、partition、slow consumer、revocation 与 shutdown 场景。

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5ter marked this pull request as ready for review August 9, 2026 15:00
@M4n5ter
M4n5ter merged commit 511eeda into mainAug 9, 2026
9 checks passed
@M4n5ter
M4n5ter deleted the feat/2522-reconnect-capability-providers branch August 9, 2026 15:00
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

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

feat(runtime-host): preserve capability providers across reconnect - #2608

Merged
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers
Aug 9, 2026
Merged

feat(runtime-host): preserve capability providers across reconnect#2608
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers

Conversation

@M4n5ter

Copy link
Copy Markdown
Member

Summary

  • persist one Desktop Runtime Host Client instance identity under the Electron userData profile;
  • key Client Capability providers by the authenticated principal and persistent Client instance instead of an ephemeral connection;
  • preserve Session affinity while a provider is disconnected and restore it only when that exact authenticated Client returns with an equivalent contract;
  • let a reconnecting Client take over its provider lease before the stale connection finishes closing, without allowing stale unregister or teardown to invalidate the replacement.

The wire registration ID remains an immutable manifest-version identity. Reconnect affinity uses the stable provider identity, so in-flight snapshots can retain their original registration without mutating it in place.

Refs #2522

Verification

  • npm --workspace @maka/runtime-host test — 797 tests passed;
  • npm --workspace @maka/runtime-host run typecheck;
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit;
  • focused real-UDS reconnect coverage verifies disconnect, unavailable state, authenticated rebind, and invocation over the replacement connection;
  • Biome and git diff --check pass for the affected files.

Remaining Phase 4 work

  • shared reconnect and bounded-backoff lifecycle;
  • subscription catch-up and operation-specific indeterminate-outcome handling;
  • unattended capability-provider service mode and provider-unavailable Automation behavior;
  • restart, partition, slow-consumer, revocation, and shutdown journeys.
简体中文

摘要

  • 在 Electron userData profile 下持久化 Desktop Runtime Host Client 实例身份;
  • Client Capability provider 不再绑定临时连接,而是绑定认证主体与持久 Client 实例;
  • provider 断开时保留 Session affinity;只有同一认证 Client 携带等价 contract 返回时才恢复;
  • 新连接可在旧连接完成关闭前接管 provider lease,旧连接后续的 unregister 或 teardown 不会破坏替代连接。

wire registration ID 继续表示不可变的 manifest 版本。重连 affinity 使用稳定 provider 身份,因此正在使用的 snapshot 可以继续引用原 registration,不需要原地修改。

关联 #2522

验证

  • npm --workspace @maka/runtime-host test:797 项测试通过;
  • npm --workspace @maka/runtime-host run typecheck
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit
  • 真实 UDS 重连覆盖验证了断开、不可用状态、认证身份重绑定,以及替代连接上的工具调用;
  • 受影响文件通过 Biome 与 git diff --check

Phase 4 剩余工作

  • 共享重连与有界退避生命周期;
  • subscription catch-up 与按 operation 区分的 indeterminate outcome 处理;
  • 无人值守 capability-provider service mode 与 Automation provider unavailable 行为;
  • restart、partition、slow consumer、revocation 与 shutdown 场景。

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5ter marked this pull request as ready for review August 9, 2026 15:00
@M4n5ter
M4n5ter merged commit 511eeda into mainAug 9, 2026
9 checks passed
@M4n5ter
M4n5ter deleted the feat/2522-reconnect-capability-providers branch August 9, 2026 15:00
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

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

feat(runtime-host): preserve capability providers across reconnect - #2608

Merged
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers
Aug 9, 2026
Merged

feat(runtime-host): preserve capability providers across reconnect#2608
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers

Conversation

@M4n5ter

Copy link
Copy Markdown
Member

Summary

  • persist one Desktop Runtime Host Client instance identity under the Electron userData profile;
  • key Client Capability providers by the authenticated principal and persistent Client instance instead of an ephemeral connection;
  • preserve Session affinity while a provider is disconnected and restore it only when that exact authenticated Client returns with an equivalent contract;
  • let a reconnecting Client take over its provider lease before the stale connection finishes closing, without allowing stale unregister or teardown to invalidate the replacement.

The wire registration ID remains an immutable manifest-version identity. Reconnect affinity uses the stable provider identity, so in-flight snapshots can retain their original registration without mutating it in place.

Refs #2522

Verification

  • npm --workspace @maka/runtime-host test — 797 tests passed;
  • npm --workspace @maka/runtime-host run typecheck;
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit;
  • focused real-UDS reconnect coverage verifies disconnect, unavailable state, authenticated rebind, and invocation over the replacement connection;
  • Biome and git diff --check pass for the affected files.

Remaining Phase 4 work

  • shared reconnect and bounded-backoff lifecycle;
  • subscription catch-up and operation-specific indeterminate-outcome handling;
  • unattended capability-provider service mode and provider-unavailable Automation behavior;
  • restart, partition, slow-consumer, revocation, and shutdown journeys.
简体中文

摘要

  • 在 Electron userData profile 下持久化 Desktop Runtime Host Client 实例身份;
  • Client Capability provider 不再绑定临时连接,而是绑定认证主体与持久 Client 实例;
  • provider 断开时保留 Session affinity;只有同一认证 Client 携带等价 contract 返回时才恢复;
  • 新连接可在旧连接完成关闭前接管 provider lease,旧连接后续的 unregister 或 teardown 不会破坏替代连接。

wire registration ID 继续表示不可变的 manifest 版本。重连 affinity 使用稳定 provider 身份,因此正在使用的 snapshot 可以继续引用原 registration,不需要原地修改。

关联 #2522

验证

  • npm --workspace @maka/runtime-host test:797 项测试通过;
  • npm --workspace @maka/runtime-host run typecheck
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit
  • 真实 UDS 重连覆盖验证了断开、不可用状态、认证身份重绑定,以及替代连接上的工具调用;
  • 受影响文件通过 Biome 与 git diff --check

Phase 4 剩余工作

  • 共享重连与有界退避生命周期;
  • subscription catch-up 与按 operation 区分的 indeterminate outcome 处理;
  • 无人值守 capability-provider service mode 与 Automation provider unavailable 行为;
  • restart、partition、slow consumer、revocation 与 shutdown 场景。

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5ter marked this pull request as ready for review August 9, 2026 15:00
@M4n5ter
M4n5ter merged commit 511eeda into mainAug 9, 2026
9 checks passed
@M4n5ter
M4n5ter deleted the feat/2522-reconnect-capability-providers branch August 9, 2026 15:00
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

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

feat(runtime-host): preserve capability providers across reconnect - #2608

Merged
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers
Aug 9, 2026
Merged

feat(runtime-host): preserve capability providers across reconnect#2608
M4n5ter merged 2 commits into
mainfrom
feat/2522-reconnect-capability-providers

Conversation

@M4n5ter

Copy link
Copy Markdown
Member

Summary

  • persist one Desktop Runtime Host Client instance identity under the Electron userData profile;
  • key Client Capability providers by the authenticated principal and persistent Client instance instead of an ephemeral connection;
  • preserve Session affinity while a provider is disconnected and restore it only when that exact authenticated Client returns with an equivalent contract;
  • let a reconnecting Client take over its provider lease before the stale connection finishes closing, without allowing stale unregister or teardown to invalidate the replacement.

The wire registration ID remains an immutable manifest-version identity. Reconnect affinity uses the stable provider identity, so in-flight snapshots can retain their original registration without mutating it in place.

Refs #2522

Verification

  • npm --workspace @maka/runtime-host test — 797 tests passed;
  • npm --workspace @maka/runtime-host run typecheck;
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit;
  • focused real-UDS reconnect coverage verifies disconnect, unavailable state, authenticated rebind, and invocation over the replacement connection;
  • Biome and git diff --check pass for the affected files.

Remaining Phase 4 work

  • shared reconnect and bounded-backoff lifecycle;
  • subscription catch-up and operation-specific indeterminate-outcome handling;
  • unattended capability-provider service mode and provider-unavailable Automation behavior;
  • restart, partition, slow-consumer, revocation, and shutdown journeys.
简体中文

摘要

  • 在 Electron userData profile 下持久化 Desktop Runtime Host Client 实例身份;
  • Client Capability provider 不再绑定临时连接,而是绑定认证主体与持久 Client 实例;
  • provider 断开时保留 Session affinity;只有同一认证 Client 携带等价 contract 返回时才恢复;
  • 新连接可在旧连接完成关闭前接管 provider lease,旧连接后续的 unregister 或 teardown 不会破坏替代连接。

wire registration ID 继续表示不可变的 manifest 版本。重连 affinity 使用稳定 provider 身份,因此正在使用的 snapshot 可以继续引用原 registration,不需要原地修改。

关联 #2522

验证

  • npm --workspace @maka/runtime-host test:797 项测试通过;
  • npm --workspace @maka/runtime-host run typecheck
  • npm exec -- tsc -p apps/desktop/tsconfig.main.json --noEmit
  • 真实 UDS 重连覆盖验证了断开、不可用状态、认证身份重绑定,以及替代连接上的工具调用;
  • 受影响文件通过 Biome 与 git diff --check

Phase 4 剩余工作

  • 共享重连与有界退避生命周期;
  • subscription catch-up 与按 operation 区分的 indeterminate outcome 处理;
  • 无人值守 capability-provider service mode 与 Automation provider unavailable 行为;
  • restart、partition、slow consumer、revocation 与 shutdown 场景。

Checklist

  • Tests cover the change and fail without it
  • Lint, format, typecheck and the affected suites pass locally

Does this PR entail a change in behavior?

  • Yes — described under Summary above
  • No

@M4n5ter
M4n5ter marked this pull request as ready for review August 9, 2026 15:00
@M4n5ter
M4n5ter merged commit 511eeda into mainAug 9, 2026
9 checks passed
@M4n5ter
M4n5ter deleted the feat/2522-reconnect-capability-providers branch August 9, 2026 15:00
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

@M4n5ter