Skip to content

fix(ui): clarify actions on the connected computer - #301

Merged
hyperb1iss merged 11 commits into
mainfrom
nova/remote-user-copy
Sep 21, 2026
Merged

hyperb1iss merged 11 commits into
mainfrom
nova/remote-user-copy

Conversation

@hyperb1iss

@hyperb1iss hyperb1iss commented Sep 20, 2026

Copy link
Copy Markdown
Owner

What this changes

The shared UI names Hypercolor in actions and errors, and uses "the connected computer" when instructions refer to the machine running the lighting engine. Remote users can now tell where to install OpenRGB or change capture settings without interpreting daemon terminology.

Why

The same UI runs locally and through Remote. Wording such as "this computer" can point at the browser's machine when the action belongs on the connected host.

Verification

  • Added or updated tests
  • Added or updated docs (not applicable to these UI strings)
  • just verify passes locally (targeted UI checks used)
  • just deny passes (no dependency or license changes)
  • just ui-test and just ui-build pass (141 UI unit tests and the production WASM build)
  • SDK checks (not applicable)
  • Python checks (not applicable)
  • Compatibility checks (not applicable)
  • Docs build and link checks (not applicable)
  • Packaging syntax checks (not applicable)
  • Servo integration build (no integration behavior changed)
  • CPU smoke build (not run for copy changes)
  • End-to-end suite (no end-to-end behavior changed)
  • Tested on real hardware, simulator, or e2e harness (not run for copy changes)

The UI unit suite passed after merging the shared Remote transport support. The implementation worker also passed UI Clippy and formatting checks. The diff changes user-facing strings and their matching assertions; configuration keys and protocol identifiers retain their existing names.

hyperb1iss and others added 10 commits September 20, 2026 11:40
Resolve the UI directory before extension installation and publish the same
path through DaemonState. Remote extensions can now inspect the exact static
root used by the local router during install and startup.

Co-Authored-By: Nova (GPT-6) <noreply@openai.com>
Discover the versioned host bridge at runtime and install streaming HTTP and
WebSocket transports alongside native discovery. Remote URL resolution is
confined to the selected daemon's /api/v1 namespace, including encoded path
traversal checks, while the bridge carries abortable request streams.

Co-Authored-By: Nova (GPT-6) <noreply@openai.com>
Retire request cancellation watchers at EOF and abort pending exchanges on
drop. Split browser chunks to each consumer's requested capacity. Socket
drops clear JavaScript callbacks before closing. Startup rejects incomplete
or malformed bridge contracts before installing transports.

Co-Authored-By: Nova (GPT-6) <noreply@openai.com>
Let extension crates detect the browser Remote bridge before app transport
initialization, preventing accidental same-origin requests during bootstrap.
Pin the current reviewed raw HTML sinks so new injection surfaces fail CI.

Co-Authored-By: Nova (GPT-5.6 Sol) <noreply@openai.com>
Render shapes through typed SVG nodes. Load vendor marks as rebased CSS mask
assets so tinting works without injected SVG markup.

Reject every future inner_html attribute in the UI security gate.

Co-Authored-By: Nova (GPT-5.6 Sol) <noreply@openai.com>
Vendor tachys 0.2.18 with a narrow hc-static policy for compiler-generated
DOM templates. Validate owned icon SVG against an inert structural grammar
before conversion and leave general raw HTML assignments browser-blocked.

Create preview workers through the private policy. Only registered blob URLs
from embedded static source can become TrustedScriptURL values.

Co-Authored-By: Nova (GPT-5.6 Sol) <noreply@openai.com>
Reject escaped paint URLs and limit owned SVG conversion to the SVG
renderer. An embedding host can provide the sole static DOM policy so
verified service workers and compiler templates share one named policy.

Restore all other vendored source bytes to the published tachys package.
Keep upstream formatting intact so future patch audits stay narrow.
Malformed JavaScript response headers now return transport errors instead
of throwing through WASM. Require arrays of exact string pairs before
reading their values.

Match forbidden sink identifiers regardless of comments around assignments,
and propagate search failures so a broken gate cannot report success.
Firefox bridge tests cover malformed headers and the valid streamed path.

Co-Authored-By: Nova (GPT-6) <noreply@openai.com>
Name Hypercolor as the product and use this computer for host-local
operations. Keep daemon terminology in APIs, config keys, protocol names,
logs, and developer comments where it identifies the actual process.

Co-Authored-By: Nova (GPT-5.6 Sol) <noreply@openai.com>
Bring the user-facing copy changes onto the merged transport foundation
so the pull request contains only wording and matching assertions.
@coderabbitai

coderabbitai Bot commented Sep 20, 2026

Copy link
Copy Markdown

Warning

Review limit reached

  • Run on-demand review

This review includes 14 billable files and costs up to $3.50.

Or wait 24 seconds for your next included review.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Advanced

Run ID: 1223214e-f47f-40c2-9e0f-2b6d43015258

📥 Commits

Reviewing files that changed from the base of the PR and between 472f8d5 and c56f53f.

📒 Files selected for processing (14)
  • crates/hypercolor-ui/src/api/client.rs
  • crates/hypercolor-ui/src/api/system.rs
  • crates/hypercolor-ui/src/app.rs
  • crates/hypercolor-ui/src/components/canvas_preview.rs
  • crates/hypercolor-ui/src/components/control_panel/capture_group.rs
  • crates/hypercolor-ui/src/components/install_effect_panel.rs
  • crates/hypercolor-ui/src/components/settings_sections.rs
  • crates/hypercolor-ui/src/components/settings_sections/audio.rs
  • crates/hypercolor-ui/src/components/settings_sections/developer.rs
  • crates/hypercolor-ui/src/components/settings_sections/input.rs
  • crates/hypercolor-ui/src/components/settings_sections/openrgb.rs
  • crates/hypercolor-ui/src/components/settings_sections/session.rs
  • crates/hypercolor-ui/src/pages/effects.rs
  • crates/hypercolor-ui/src/ws/transport.rs

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

Combine the user-facing copy with the merged application state isolation
before validating the final engine revision consumed by the native app.
@hyperb1iss
hyperb1iss merged commit 80db5e1 into main Sep 21, 2026
40 checks passed
Sign up for free to 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