Skip to content

Add paired HTTPS phone remote and shared CLI color controls - #61

Merged
mskutin merged 4 commits into
mainfrom
codex/paired-remote
Oct 19, 2026
Merged

mskutin merged 4 commits into
mainfrom
codex/paired-remote

Conversation

@mskutin

@mskutin mskutin commented Oct 19, 2026 •

Copy link
Copy Markdown
Owner

Users can now control a chosen strip from a paired phone on their private network. The opt-in HTTPS server provides power, brightness, solid color and saved offline profiles, with a responsive page, two-minute one-use pairing codes, named clients and immediate revocation. All sessions restart disabled; no capture data or capture-start permission is exposed.

TLS, exact Host/Origin checks, Secure/HttpOnly cookies, hashed credentials, bounded requests and worker-side revocation/pause checks and sleep-aware credential expiry constrain the service. Adds the shared API v1/CLI color command, update-install listener teardown, setup documentation and a complete physical-validation handoff.

Also fixes the USB fast path for extension zones/effects over Solid scenes: send every mapped LED, preserve nonuniform transition output and invalidate the cached solid so revocation restores immediately. The planned 0.15.0 release was withheld before publication after this was found in final review. Games/plugins from #60 first ship here in 0.16.0, together with the remote. Plugins use bounded declarative programs, without executable extensions.

Validation: 99 native tests passed (one unrelated interactive capture test skipped), nine CLI/control cases, strict Clippy/formatting, browser desktop controls, 14 release tests, a real TLS unit roundtrip, mapped USB-packet regression and isolated native Windows HTTPS/phone/CLI smoke. Verified certificate/IP, Origin/auth refusal, pairing reuse refusal, revoked mutations, phone color/brightness/Stop and preserved off state. Tests use loopback and an isolated app identifier; no LAN/firewall or USB/capture changes.

The implementation backlog is empty. Hardware, actual-phone certificate acceptance and screen-reader validation remain open in #37, #38 and #45; the new handoff documents every feature to check.

Closes #17

@chatgpt-codex-connector

chatgpt-codex-connector Bot commented Oct 19, 2026 •

Copy link
Copy Markdown

Codex Review Summary

This comment shows the latest Codex review activity on this pull request.

Review Status Commit Review trigger
📝 Code Review ✅ Completed 2026-10-19T11:07:26.406701Z b82641e PR opened
ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review" or "@codex security review".

Codex reacts with 👀 while any review is running, comments if it has suggestions, and reacts with 👍 once all reviews finish with no findings.

@chatgpt-codex-connector chatgpt-codex-connector Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codex Review

Here are some automated review suggestions for this pull request.

Reviewed commit: b82641e662

ℹ️ About Codex in GitHub

Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you

  • Open a pull request for review
  • Mark a draft as ready
  • Comment "@codex review".

If Codex has suggestions, it will comment; otherwise it will react with 👍.

Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".

Comment thread src-tauri/src/remote.rs
Comment on lines +374 to +379
let target = app
.state::<Handle>()
.fleet
.as_ref()
.unwrap()
.target(&controller)?;

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

P2 Badge Stop sessions when their target controller is removed

If the remote targets a secondary controller and that controller is later deleted, this closure retains its cloned Handle after controllers.rs::remove shuts down the worker and removes it from the fleet. The session continues to report itself as enabled and accepts paired clients, but every command fails against the closed worker until the user manually re-enables the remote; controller removal should revoke the session or commands should detect the stale target and disable it.

Useful? React with 👍 / 👎.

@mskutin
mskutin merged commit fa6889e into main Oct 19, 2026
9 checks passed
@mskutin
mskutin deleted the codex/paired-remote branch October 19, 2026 11:29
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.

Add a paired phone remote on the local network

1 participant