Skip to content

Wire broker readiness notifications - #992

Merged
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime
Jul 2, 2026
Merged

Wire broker readiness notifications#992
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime

Conversation

@wdcui

@wdcuiWeidong Cui (wdcui) commented Jul 1, 2026

Copy link
Copy Markdown
Member

Adds paired broker host serving over control and notification channels, wiring broker-userland and the Linux userland runner through --broker-control-socket and --broker-notification-socket Unix endpoints. The broker core remains transport-neutral, while the runner now opens and drains the notification stream so future broker-originated wakeups have a real local endpoint. Event mutation readiness still returns through the control response, avoiding duplicate readiness notifications for control-originated changes.

Weidong Cui (wdcui)and others added 15 commits June 30, 2026 22:01
Add a paired host-side notification serving path that preserves control request/response sequencing while sending event readiness notifications over the notification channel. Add a broker-local notification receiver and a Unix-socket runtime test covering host emission through local consumption.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename generic control-channel parameters from Channel to ControlChannel so the host adapter remains consistent now that paired notification channels are part of the API.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the control-only host serving path and route broker userland and runner integration through paired control and notification sockets. Keep the runner-side notification channel open with a receiver loop so host readiness notifications have a real local endpoint before eventfd blocking dispatch is added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the mandatory paired control/notification host serving entry point to serve_connection now that notification channels are no longer optional.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use an explicit shared ChannelError generic for paired control and notification channels so their host serving bounds stay symmetric.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Route readiness notifications through per-association host connection state instead of passing the notification channel directly through the request loop. This makes the notification channel the connection-owned broker notification path and keeps room for future notifications that are not direct request-loop side effects.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move readiness notification emission into the broker host event request handler so successful event state mutations trigger notifications at the event handling boundary rather than as request-loop postprocessing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Do not emit readiness notifications for event mutations whose control responses already carry the resulting readiness state. Keep the paired notification channel mandatory so broker-originated readiness updates without a paired control response have a channel when those sources are added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the broker host readiness-response test to drive the public paired serve_connection API. The fake channel now queues Add and Consume requests after observing the broker-assigned create handle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fold the private serve_request_loop helper into serve_connection now that tests exercise the public paired serving entry point directly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the hidden runner control-channel argument from --broker-socket to --broker-control-socket so it matches the paired --broker-notification-socket argument.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the retained notification receiver thread handle to notification_receiver_thread and document that it is intentionally kept alive with the broker connection.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the tuple match in runner broker connection setup with straightforward early returns while preserving errors for mismatched control and notification socket arguments.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make runner broker::connect take concrete control and notification socket paths. The CLI layer now handles optional broker enablement and validates that hidden broker socket arguments are provided as a pair.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace separate control and notification socket retry loops with one connect_with_retry helper parameterized by the channel-specific connect operation and timeout message.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wdcui
Weidong Cui (wdcui) added this pull request to the merge queueJul 2, 2026
Merged via the queue into ulitebox with commit 13c994aJul 2, 2026
8 checks passed
@wdcui
Weidong Cui (wdcui) deleted the wdcui/ulitebox/broker-notification-runtime branch July 2, 2026 16:42
@github-actions

Copy link
Copy Markdown

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure function_parameter_count_changed: pub fn parameter count changed ---
Description:
A publicly-visible function now takes a different number of parameters.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_parameter_count_changed.ron
Failed in:
litebox_broker_host::serve_connection now takes 3 parameters instead of 2, in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure function_requires_different_generic_type_params: function now requires a different number of generic type parameters ---
Description:
A function now requires a different number of generic type parameters than it used to. Uses of this function that supplied the previous number of generic types (e.g. via turbofish syntax) will be broken.
ref: https://doc.rust-lang.org/reference/items/generics.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_requires_different_generic_type_params.ron
Failed in:
function serve_connection (1 -> 3 generic types) in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---
Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron
Failed in:
field CliArgs.broker_control_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:91
field CliArgs.broker_notification_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:101
--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---
Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_pub_field_missing.ron
Failed in:
field broker_socket of struct CliArgs, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-ulitebox/e80682f714674b13f956dabf8cb21a75acf25720/litebox_runner_linux_userland/src/lib.rs:91

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

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

Wire broker readiness notifications - #992

Merged
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime
Jul 2, 2026
Merged

Wire broker readiness notifications#992
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime

Conversation

@wdcui

@wdcuiWeidong Cui (wdcui) commented Jul 1, 2026

Copy link
Copy Markdown
Member

Adds paired broker host serving over control and notification channels, wiring broker-userland and the Linux userland runner through --broker-control-socket and --broker-notification-socket Unix endpoints. The broker core remains transport-neutral, while the runner now opens and drains the notification stream so future broker-originated wakeups have a real local endpoint. Event mutation readiness still returns through the control response, avoiding duplicate readiness notifications for control-originated changes.

Weidong Cui (wdcui)and others added 15 commits June 30, 2026 22:01
Add a paired host-side notification serving path that preserves control request/response sequencing while sending event readiness notifications over the notification channel. Add a broker-local notification receiver and a Unix-socket runtime test covering host emission through local consumption.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename generic control-channel parameters from Channel to ControlChannel so the host adapter remains consistent now that paired notification channels are part of the API.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the control-only host serving path and route broker userland and runner integration through paired control and notification sockets. Keep the runner-side notification channel open with a receiver loop so host readiness notifications have a real local endpoint before eventfd blocking dispatch is added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the mandatory paired control/notification host serving entry point to serve_connection now that notification channels are no longer optional.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use an explicit shared ChannelError generic for paired control and notification channels so their host serving bounds stay symmetric.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Route readiness notifications through per-association host connection state instead of passing the notification channel directly through the request loop. This makes the notification channel the connection-owned broker notification path and keeps room for future notifications that are not direct request-loop side effects.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move readiness notification emission into the broker host event request handler so successful event state mutations trigger notifications at the event handling boundary rather than as request-loop postprocessing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Do not emit readiness notifications for event mutations whose control responses already carry the resulting readiness state. Keep the paired notification channel mandatory so broker-originated readiness updates without a paired control response have a channel when those sources are added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the broker host readiness-response test to drive the public paired serve_connection API. The fake channel now queues Add and Consume requests after observing the broker-assigned create handle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fold the private serve_request_loop helper into serve_connection now that tests exercise the public paired serving entry point directly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the hidden runner control-channel argument from --broker-socket to --broker-control-socket so it matches the paired --broker-notification-socket argument.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the retained notification receiver thread handle to notification_receiver_thread and document that it is intentionally kept alive with the broker connection.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the tuple match in runner broker connection setup with straightforward early returns while preserving errors for mismatched control and notification socket arguments.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make runner broker::connect take concrete control and notification socket paths. The CLI layer now handles optional broker enablement and validates that hidden broker socket arguments are provided as a pair.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace separate control and notification socket retry loops with one connect_with_retry helper parameterized by the channel-specific connect operation and timeout message.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wdcui
Weidong Cui (wdcui) added this pull request to the merge queueJul 2, 2026
Merged via the queue into ulitebox with commit 13c994aJul 2, 2026
8 checks passed
@wdcui
Weidong Cui (wdcui) deleted the wdcui/ulitebox/broker-notification-runtime branch July 2, 2026 16:42
@github-actions

Copy link
Copy Markdown

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure function_parameter_count_changed: pub fn parameter count changed ---
Description:
A publicly-visible function now takes a different number of parameters.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_parameter_count_changed.ron
Failed in:
litebox_broker_host::serve_connection now takes 3 parameters instead of 2, in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure function_requires_different_generic_type_params: function now requires a different number of generic type parameters ---
Description:
A function now requires a different number of generic type parameters than it used to. Uses of this function that supplied the previous number of generic types (e.g. via turbofish syntax) will be broken.
ref: https://doc.rust-lang.org/reference/items/generics.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_requires_different_generic_type_params.ron
Failed in:
function serve_connection (1 -> 3 generic types) in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---
Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron
Failed in:
field CliArgs.broker_control_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:91
field CliArgs.broker_notification_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:101
--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---
Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_pub_field_missing.ron
Failed in:
field broker_socket of struct CliArgs, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-ulitebox/e80682f714674b13f956dabf8cb21a75acf25720/litebox_runner_linux_userland/src/lib.rs:91

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

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

Wire broker readiness notifications - #992

Merged
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime
Jul 2, 2026
Merged

Wire broker readiness notifications#992
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime

Conversation

@wdcui

@wdcuiWeidong Cui (wdcui) commented Jul 1, 2026

Copy link
Copy Markdown
Member

Adds paired broker host serving over control and notification channels, wiring broker-userland and the Linux userland runner through --broker-control-socket and --broker-notification-socket Unix endpoints. The broker core remains transport-neutral, while the runner now opens and drains the notification stream so future broker-originated wakeups have a real local endpoint. Event mutation readiness still returns through the control response, avoiding duplicate readiness notifications for control-originated changes.

Weidong Cui (wdcui)and others added 15 commits June 30, 2026 22:01
Add a paired host-side notification serving path that preserves control request/response sequencing while sending event readiness notifications over the notification channel. Add a broker-local notification receiver and a Unix-socket runtime test covering host emission through local consumption.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename generic control-channel parameters from Channel to ControlChannel so the host adapter remains consistent now that paired notification channels are part of the API.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the control-only host serving path and route broker userland and runner integration through paired control and notification sockets. Keep the runner-side notification channel open with a receiver loop so host readiness notifications have a real local endpoint before eventfd blocking dispatch is added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the mandatory paired control/notification host serving entry point to serve_connection now that notification channels are no longer optional.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use an explicit shared ChannelError generic for paired control and notification channels so their host serving bounds stay symmetric.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Route readiness notifications through per-association host connection state instead of passing the notification channel directly through the request loop. This makes the notification channel the connection-owned broker notification path and keeps room for future notifications that are not direct request-loop side effects.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move readiness notification emission into the broker host event request handler so successful event state mutations trigger notifications at the event handling boundary rather than as request-loop postprocessing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Do not emit readiness notifications for event mutations whose control responses already carry the resulting readiness state. Keep the paired notification channel mandatory so broker-originated readiness updates without a paired control response have a channel when those sources are added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the broker host readiness-response test to drive the public paired serve_connection API. The fake channel now queues Add and Consume requests after observing the broker-assigned create handle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fold the private serve_request_loop helper into serve_connection now that tests exercise the public paired serving entry point directly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the hidden runner control-channel argument from --broker-socket to --broker-control-socket so it matches the paired --broker-notification-socket argument.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the retained notification receiver thread handle to notification_receiver_thread and document that it is intentionally kept alive with the broker connection.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the tuple match in runner broker connection setup with straightforward early returns while preserving errors for mismatched control and notification socket arguments.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make runner broker::connect take concrete control and notification socket paths. The CLI layer now handles optional broker enablement and validates that hidden broker socket arguments are provided as a pair.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace separate control and notification socket retry loops with one connect_with_retry helper parameterized by the channel-specific connect operation and timeout message.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wdcui
Weidong Cui (wdcui) added this pull request to the merge queueJul 2, 2026
Merged via the queue into ulitebox with commit 13c994aJul 2, 2026
8 checks passed
@wdcui
Weidong Cui (wdcui) deleted the wdcui/ulitebox/broker-notification-runtime branch July 2, 2026 16:42
@github-actions

Copy link
Copy Markdown

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure function_parameter_count_changed: pub fn parameter count changed ---
Description:
A publicly-visible function now takes a different number of parameters.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_parameter_count_changed.ron
Failed in:
litebox_broker_host::serve_connection now takes 3 parameters instead of 2, in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure function_requires_different_generic_type_params: function now requires a different number of generic type parameters ---
Description:
A function now requires a different number of generic type parameters than it used to. Uses of this function that supplied the previous number of generic types (e.g. via turbofish syntax) will be broken.
ref: https://doc.rust-lang.org/reference/items/generics.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_requires_different_generic_type_params.ron
Failed in:
function serve_connection (1 -> 3 generic types) in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---
Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron
Failed in:
field CliArgs.broker_control_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:91
field CliArgs.broker_notification_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:101
--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---
Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_pub_field_missing.ron
Failed in:
field broker_socket of struct CliArgs, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-ulitebox/e80682f714674b13f956dabf8cb21a75acf25720/litebox_runner_linux_userland/src/lib.rs:91

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

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

Wire broker readiness notifications - #992

Merged
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime
Jul 2, 2026
Merged

Wire broker readiness notifications#992
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime

Conversation

@wdcui

@wdcuiWeidong Cui (wdcui) commented Jul 1, 2026

Copy link
Copy Markdown
Member

Adds paired broker host serving over control and notification channels, wiring broker-userland and the Linux userland runner through --broker-control-socket and --broker-notification-socket Unix endpoints. The broker core remains transport-neutral, while the runner now opens and drains the notification stream so future broker-originated wakeups have a real local endpoint. Event mutation readiness still returns through the control response, avoiding duplicate readiness notifications for control-originated changes.

Weidong Cui (wdcui)and others added 15 commits June 30, 2026 22:01
Add a paired host-side notification serving path that preserves control request/response sequencing while sending event readiness notifications over the notification channel. Add a broker-local notification receiver and a Unix-socket runtime test covering host emission through local consumption.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename generic control-channel parameters from Channel to ControlChannel so the host adapter remains consistent now that paired notification channels are part of the API.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the control-only host serving path and route broker userland and runner integration through paired control and notification sockets. Keep the runner-side notification channel open with a receiver loop so host readiness notifications have a real local endpoint before eventfd blocking dispatch is added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the mandatory paired control/notification host serving entry point to serve_connection now that notification channels are no longer optional.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use an explicit shared ChannelError generic for paired control and notification channels so their host serving bounds stay symmetric.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Route readiness notifications through per-association host connection state instead of passing the notification channel directly through the request loop. This makes the notification channel the connection-owned broker notification path and keeps room for future notifications that are not direct request-loop side effects.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move readiness notification emission into the broker host event request handler so successful event state mutations trigger notifications at the event handling boundary rather than as request-loop postprocessing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Do not emit readiness notifications for event mutations whose control responses already carry the resulting readiness state. Keep the paired notification channel mandatory so broker-originated readiness updates without a paired control response have a channel when those sources are added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the broker host readiness-response test to drive the public paired serve_connection API. The fake channel now queues Add and Consume requests after observing the broker-assigned create handle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fold the private serve_request_loop helper into serve_connection now that tests exercise the public paired serving entry point directly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the hidden runner control-channel argument from --broker-socket to --broker-control-socket so it matches the paired --broker-notification-socket argument.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the retained notification receiver thread handle to notification_receiver_thread and document that it is intentionally kept alive with the broker connection.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the tuple match in runner broker connection setup with straightforward early returns while preserving errors for mismatched control and notification socket arguments.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make runner broker::connect take concrete control and notification socket paths. The CLI layer now handles optional broker enablement and validates that hidden broker socket arguments are provided as a pair.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace separate control and notification socket retry loops with one connect_with_retry helper parameterized by the channel-specific connect operation and timeout message.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wdcui
Weidong Cui (wdcui) added this pull request to the merge queueJul 2, 2026
Merged via the queue into ulitebox with commit 13c994aJul 2, 2026
8 checks passed
@wdcui
Weidong Cui (wdcui) deleted the wdcui/ulitebox/broker-notification-runtime branch July 2, 2026 16:42
@github-actions

Copy link
Copy Markdown

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure function_parameter_count_changed: pub fn parameter count changed ---
Description:
A publicly-visible function now takes a different number of parameters.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_parameter_count_changed.ron
Failed in:
litebox_broker_host::serve_connection now takes 3 parameters instead of 2, in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure function_requires_different_generic_type_params: function now requires a different number of generic type parameters ---
Description:
A function now requires a different number of generic type parameters than it used to. Uses of this function that supplied the previous number of generic types (e.g. via turbofish syntax) will be broken.
ref: https://doc.rust-lang.org/reference/items/generics.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_requires_different_generic_type_params.ron
Failed in:
function serve_connection (1 -> 3 generic types) in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---
Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron
Failed in:
field CliArgs.broker_control_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:91
field CliArgs.broker_notification_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:101
--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---
Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_pub_field_missing.ron
Failed in:
field broker_socket of struct CliArgs, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-ulitebox/e80682f714674b13f956dabf8cb21a75acf25720/litebox_runner_linux_userland/src/lib.rs:91

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

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

Wire broker readiness notifications - #992

Merged
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime
Jul 2, 2026
Merged

Wire broker readiness notifications#992
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime

Conversation

@wdcui

@wdcuiWeidong Cui (wdcui) commented Jul 1, 2026

Copy link
Copy Markdown
Member

Adds paired broker host serving over control and notification channels, wiring broker-userland and the Linux userland runner through --broker-control-socket and --broker-notification-socket Unix endpoints. The broker core remains transport-neutral, while the runner now opens and drains the notification stream so future broker-originated wakeups have a real local endpoint. Event mutation readiness still returns through the control response, avoiding duplicate readiness notifications for control-originated changes.

Weidong Cui (wdcui)and others added 15 commits June 30, 2026 22:01
Add a paired host-side notification serving path that preserves control request/response sequencing while sending event readiness notifications over the notification channel. Add a broker-local notification receiver and a Unix-socket runtime test covering host emission through local consumption.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename generic control-channel parameters from Channel to ControlChannel so the host adapter remains consistent now that paired notification channels are part of the API.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the control-only host serving path and route broker userland and runner integration through paired control and notification sockets. Keep the runner-side notification channel open with a receiver loop so host readiness notifications have a real local endpoint before eventfd blocking dispatch is added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the mandatory paired control/notification host serving entry point to serve_connection now that notification channels are no longer optional.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use an explicit shared ChannelError generic for paired control and notification channels so their host serving bounds stay symmetric.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Route readiness notifications through per-association host connection state instead of passing the notification channel directly through the request loop. This makes the notification channel the connection-owned broker notification path and keeps room for future notifications that are not direct request-loop side effects.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move readiness notification emission into the broker host event request handler so successful event state mutations trigger notifications at the event handling boundary rather than as request-loop postprocessing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Do not emit readiness notifications for event mutations whose control responses already carry the resulting readiness state. Keep the paired notification channel mandatory so broker-originated readiness updates without a paired control response have a channel when those sources are added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the broker host readiness-response test to drive the public paired serve_connection API. The fake channel now queues Add and Consume requests after observing the broker-assigned create handle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fold the private serve_request_loop helper into serve_connection now that tests exercise the public paired serving entry point directly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the hidden runner control-channel argument from --broker-socket to --broker-control-socket so it matches the paired --broker-notification-socket argument.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the retained notification receiver thread handle to notification_receiver_thread and document that it is intentionally kept alive with the broker connection.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the tuple match in runner broker connection setup with straightforward early returns while preserving errors for mismatched control and notification socket arguments.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make runner broker::connect take concrete control and notification socket paths. The CLI layer now handles optional broker enablement and validates that hidden broker socket arguments are provided as a pair.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace separate control and notification socket retry loops with one connect_with_retry helper parameterized by the channel-specific connect operation and timeout message.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wdcui
Weidong Cui (wdcui) added this pull request to the merge queueJul 2, 2026
Merged via the queue into ulitebox with commit 13c994aJul 2, 2026
8 checks passed
@wdcui
Weidong Cui (wdcui) deleted the wdcui/ulitebox/broker-notification-runtime branch July 2, 2026 16:42
@github-actions

Copy link
Copy Markdown

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure function_parameter_count_changed: pub fn parameter count changed ---
Description:
A publicly-visible function now takes a different number of parameters.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_parameter_count_changed.ron
Failed in:
litebox_broker_host::serve_connection now takes 3 parameters instead of 2, in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure function_requires_different_generic_type_params: function now requires a different number of generic type parameters ---
Description:
A function now requires a different number of generic type parameters than it used to. Uses of this function that supplied the previous number of generic types (e.g. via turbofish syntax) will be broken.
ref: https://doc.rust-lang.org/reference/items/generics.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_requires_different_generic_type_params.ron
Failed in:
function serve_connection (1 -> 3 generic types) in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---
Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron
Failed in:
field CliArgs.broker_control_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:91
field CliArgs.broker_notification_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:101
--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---
Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_pub_field_missing.ron
Failed in:
field broker_socket of struct CliArgs, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-ulitebox/e80682f714674b13f956dabf8cb21a75acf25720/litebox_runner_linux_userland/src/lib.rs:91

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

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

Wire broker readiness notifications - #992

Merged
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime
Jul 2, 2026
Merged

Wire broker readiness notifications#992
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime

Conversation

@wdcui

@wdcuiWeidong Cui (wdcui) commented Jul 1, 2026

Copy link
Copy Markdown
Member

Adds paired broker host serving over control and notification channels, wiring broker-userland and the Linux userland runner through --broker-control-socket and --broker-notification-socket Unix endpoints. The broker core remains transport-neutral, while the runner now opens and drains the notification stream so future broker-originated wakeups have a real local endpoint. Event mutation readiness still returns through the control response, avoiding duplicate readiness notifications for control-originated changes.

Weidong Cui (wdcui)and others added 15 commits June 30, 2026 22:01
Add a paired host-side notification serving path that preserves control request/response sequencing while sending event readiness notifications over the notification channel. Add a broker-local notification receiver and a Unix-socket runtime test covering host emission through local consumption.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename generic control-channel parameters from Channel to ControlChannel so the host adapter remains consistent now that paired notification channels are part of the API.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the control-only host serving path and route broker userland and runner integration through paired control and notification sockets. Keep the runner-side notification channel open with a receiver loop so host readiness notifications have a real local endpoint before eventfd blocking dispatch is added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the mandatory paired control/notification host serving entry point to serve_connection now that notification channels are no longer optional.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use an explicit shared ChannelError generic for paired control and notification channels so their host serving bounds stay symmetric.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Route readiness notifications through per-association host connection state instead of passing the notification channel directly through the request loop. This makes the notification channel the connection-owned broker notification path and keeps room for future notifications that are not direct request-loop side effects.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move readiness notification emission into the broker host event request handler so successful event state mutations trigger notifications at the event handling boundary rather than as request-loop postprocessing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Do not emit readiness notifications for event mutations whose control responses already carry the resulting readiness state. Keep the paired notification channel mandatory so broker-originated readiness updates without a paired control response have a channel when those sources are added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the broker host readiness-response test to drive the public paired serve_connection API. The fake channel now queues Add and Consume requests after observing the broker-assigned create handle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fold the private serve_request_loop helper into serve_connection now that tests exercise the public paired serving entry point directly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the hidden runner control-channel argument from --broker-socket to --broker-control-socket so it matches the paired --broker-notification-socket argument.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the retained notification receiver thread handle to notification_receiver_thread and document that it is intentionally kept alive with the broker connection.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the tuple match in runner broker connection setup with straightforward early returns while preserving errors for mismatched control and notification socket arguments.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make runner broker::connect take concrete control and notification socket paths. The CLI layer now handles optional broker enablement and validates that hidden broker socket arguments are provided as a pair.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace separate control and notification socket retry loops with one connect_with_retry helper parameterized by the channel-specific connect operation and timeout message.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wdcui
Weidong Cui (wdcui) added this pull request to the merge queueJul 2, 2026
Merged via the queue into ulitebox with commit 13c994aJul 2, 2026
8 checks passed
@wdcui
Weidong Cui (wdcui) deleted the wdcui/ulitebox/broker-notification-runtime branch July 2, 2026 16:42
@github-actions

Copy link
Copy Markdown

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure function_parameter_count_changed: pub fn parameter count changed ---
Description:
A publicly-visible function now takes a different number of parameters.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_parameter_count_changed.ron
Failed in:
litebox_broker_host::serve_connection now takes 3 parameters instead of 2, in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure function_requires_different_generic_type_params: function now requires a different number of generic type parameters ---
Description:
A function now requires a different number of generic type parameters than it used to. Uses of this function that supplied the previous number of generic types (e.g. via turbofish syntax) will be broken.
ref: https://doc.rust-lang.org/reference/items/generics.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_requires_different_generic_type_params.ron
Failed in:
function serve_connection (1 -> 3 generic types) in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---
Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron
Failed in:
field CliArgs.broker_control_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:91
field CliArgs.broker_notification_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:101
--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---
Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_pub_field_missing.ron
Failed in:
field broker_socket of struct CliArgs, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-ulitebox/e80682f714674b13f956dabf8cb21a75acf25720/litebox_runner_linux_userland/src/lib.rs:91

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

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

Wire broker readiness notifications - #992

Merged
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime
Jul 2, 2026
Merged

Wire broker readiness notifications#992
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime

Conversation

@wdcui

@wdcuiWeidong Cui (wdcui) commented Jul 1, 2026

Copy link
Copy Markdown
Member

Adds paired broker host serving over control and notification channels, wiring broker-userland and the Linux userland runner through --broker-control-socket and --broker-notification-socket Unix endpoints. The broker core remains transport-neutral, while the runner now opens and drains the notification stream so future broker-originated wakeups have a real local endpoint. Event mutation readiness still returns through the control response, avoiding duplicate readiness notifications for control-originated changes.

Weidong Cui (wdcui)and others added 15 commits June 30, 2026 22:01
Add a paired host-side notification serving path that preserves control request/response sequencing while sending event readiness notifications over the notification channel. Add a broker-local notification receiver and a Unix-socket runtime test covering host emission through local consumption.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename generic control-channel parameters from Channel to ControlChannel so the host adapter remains consistent now that paired notification channels are part of the API.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the control-only host serving path and route broker userland and runner integration through paired control and notification sockets. Keep the runner-side notification channel open with a receiver loop so host readiness notifications have a real local endpoint before eventfd blocking dispatch is added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the mandatory paired control/notification host serving entry point to serve_connection now that notification channels are no longer optional.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use an explicit shared ChannelError generic for paired control and notification channels so their host serving bounds stay symmetric.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Route readiness notifications through per-association host connection state instead of passing the notification channel directly through the request loop. This makes the notification channel the connection-owned broker notification path and keeps room for future notifications that are not direct request-loop side effects.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move readiness notification emission into the broker host event request handler so successful event state mutations trigger notifications at the event handling boundary rather than as request-loop postprocessing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Do not emit readiness notifications for event mutations whose control responses already carry the resulting readiness state. Keep the paired notification channel mandatory so broker-originated readiness updates without a paired control response have a channel when those sources are added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the broker host readiness-response test to drive the public paired serve_connection API. The fake channel now queues Add and Consume requests after observing the broker-assigned create handle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fold the private serve_request_loop helper into serve_connection now that tests exercise the public paired serving entry point directly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the hidden runner control-channel argument from --broker-socket to --broker-control-socket so it matches the paired --broker-notification-socket argument.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the retained notification receiver thread handle to notification_receiver_thread and document that it is intentionally kept alive with the broker connection.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the tuple match in runner broker connection setup with straightforward early returns while preserving errors for mismatched control and notification socket arguments.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make runner broker::connect take concrete control and notification socket paths. The CLI layer now handles optional broker enablement and validates that hidden broker socket arguments are provided as a pair.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace separate control and notification socket retry loops with one connect_with_retry helper parameterized by the channel-specific connect operation and timeout message.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wdcui
Weidong Cui (wdcui) added this pull request to the merge queueJul 2, 2026
Merged via the queue into ulitebox with commit 13c994aJul 2, 2026
8 checks passed
@wdcui
Weidong Cui (wdcui) deleted the wdcui/ulitebox/broker-notification-runtime branch July 2, 2026 16:42
@github-actions

Copy link
Copy Markdown

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure function_parameter_count_changed: pub fn parameter count changed ---
Description:
A publicly-visible function now takes a different number of parameters.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_parameter_count_changed.ron
Failed in:
litebox_broker_host::serve_connection now takes 3 parameters instead of 2, in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure function_requires_different_generic_type_params: function now requires a different number of generic type parameters ---
Description:
A function now requires a different number of generic type parameters than it used to. Uses of this function that supplied the previous number of generic types (e.g. via turbofish syntax) will be broken.
ref: https://doc.rust-lang.org/reference/items/generics.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_requires_different_generic_type_params.ron
Failed in:
function serve_connection (1 -> 3 generic types) in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---
Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron
Failed in:
field CliArgs.broker_control_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:91
field CliArgs.broker_notification_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:101
--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---
Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_pub_field_missing.ron
Failed in:
field broker_socket of struct CliArgs, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-ulitebox/e80682f714674b13f956dabf8cb21a75acf25720/litebox_runner_linux_userland/src/lib.rs:91

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

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

Wire broker readiness notifications - #992

Merged
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime
Jul 2, 2026
Merged

Wire broker readiness notifications#992
Weidong Cui (wdcui) merged 15 commits into
uliteboxfrom
wdcui/ulitebox/broker-notification-runtime

Conversation

@wdcui

@wdcuiWeidong Cui (wdcui) commented Jul 1, 2026

Copy link
Copy Markdown
Member

Adds paired broker host serving over control and notification channels, wiring broker-userland and the Linux userland runner through --broker-control-socket and --broker-notification-socket Unix endpoints. The broker core remains transport-neutral, while the runner now opens and drains the notification stream so future broker-originated wakeups have a real local endpoint. Event mutation readiness still returns through the control response, avoiding duplicate readiness notifications for control-originated changes.

Weidong Cui (wdcui)and others added 15 commits June 30, 2026 22:01
Add a paired host-side notification serving path that preserves control request/response sequencing while sending event readiness notifications over the notification channel. Add a broker-local notification receiver and a Unix-socket runtime test covering host emission through local consumption.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename generic control-channel parameters from Channel to ControlChannel so the host adapter remains consistent now that paired notification channels are part of the API.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Remove the control-only host serving path and route broker userland and runner integration through paired control and notification sockets. Keep the runner-side notification channel open with a receiver loop so host readiness notifications have a real local endpoint before eventfd blocking dispatch is added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the mandatory paired control/notification host serving entry point to serve_connection now that notification channels are no longer optional.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Use an explicit shared ChannelError generic for paired control and notification channels so their host serving bounds stay symmetric.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Route readiness notifications through per-association host connection state instead of passing the notification channel directly through the request loop. This makes the notification channel the connection-owned broker notification path and keeps room for future notifications that are not direct request-loop side effects.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Move readiness notification emission into the broker host event request handler so successful event state mutations trigger notifications at the event handling boundary rather than as request-loop postprocessing.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Do not emit readiness notifications for event mutations whose control responses already carry the resulting readiness state. Keep the paired notification channel mandatory so broker-originated readiness updates without a paired control response have a channel when those sources are added.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Update the broker host readiness-response test to drive the public paired serve_connection API. The fake channel now queues Add and Consume requests after observing the broker-assigned create handle.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Fold the private serve_request_loop helper into serve_connection now that tests exercise the public paired serving entry point directly.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the hidden runner control-channel argument from --broker-socket to --broker-control-socket so it matches the paired --broker-notification-socket argument.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Rename the retained notification receiver thread handle to notification_receiver_thread and document that it is intentionally kept alive with the broker connection.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace the tuple match in runner broker connection setup with straightforward early returns while preserving errors for mismatched control and notification socket arguments.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Make runner broker::connect take concrete control and notification socket paths. The CLI layer now handles optional broker enablement and validates that hidden broker socket arguments are provided as a pair.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Replace separate control and notification socket retry loops with one connect_with_retry helper parameterized by the channel-specific connect operation and timeout message.
Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
@wdcui
Weidong Cui (wdcui) added this pull request to the merge queueJul 2, 2026
Merged via the queue into ulitebox with commit 13c994aJul 2, 2026
8 checks passed
@wdcui
Weidong Cui (wdcui) deleted the wdcui/ulitebox/broker-notification-runtime branch July 2, 2026 16:42
@github-actions

Copy link
Copy Markdown

🤖 SemverChecks 🤖 ⚠️ Potential breaking API changes detected ⚠️

Click for details
--- failure function_parameter_count_changed: pub fn parameter count changed ---
Description:
A publicly-visible function now takes a different number of parameters.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#fn-change-arity
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_parameter_count_changed.ron
Failed in:
litebox_broker_host::serve_connection now takes 3 parameters instead of 2, in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure function_requires_different_generic_type_params: function now requires a different number of generic type parameters ---
Description:
A function now requires a different number of generic type parameters than it used to. Uses of this function that supplied the previous number of generic types (e.g. via turbofish syntax) will be broken.
ref: https://doc.rust-lang.org/reference/items/generics.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/function_requires_different_generic_type_params.ron
Failed in:
function serve_connection (1 -> 3 generic types) in /home/runner/work/litebox/litebox/litebox_broker_host/src/lib.rs:38
--- failure constructible_struct_adds_field: externally-constructible struct adds field ---
Description:
A pub struct constructible with a struct literal has a new pub field. Existing struct literals must be updated to include the new field.
ref: https://doc.rust-lang.org/reference/expressions/struct-expr.html
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/constructible_struct_adds_field.ron
Failed in:
field CliArgs.broker_control_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:91
field CliArgs.broker_notification_socket in /home/runner/work/litebox/litebox/litebox_runner_linux_userland/src/lib.rs:101
--- failure struct_pub_field_missing: pub struct's pub field removed or renamed ---
Description:
A publicly-visible struct has at least one public field that is no longer available under its prior name. It may have been renamed or removed entirely.
ref: https://doc.rust-lang.org/cargo/reference/semver.html#item-remove
impl: https://github.com/obi1kenobi/cargo-semver-checks/tree/v0.48.0/src/lints/struct_pub_field_missing.ron
Failed in:
field broker_socket of struct CliArgs, previously in file /home/runner/work/litebox/litebox/target/semver-checks/git-ulitebox/e80682f714674b13f956dabf8cb21a75acf25720/litebox_runner_linux_userland/src/lib.rs:91

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

@wdcui