Skip to content

feat(hosted): serve the deployment-test phone page from the stack origin - #439

Merged
Lokesh7025 merged 2 commits into
RCfrom
remote/phone-hosting
Sep 25, 2026
Merged

Lokesh7025 merged 2 commits into
RCfrom
remote/phone-hosting

Conversation

@Lokesh7025

Copy link
Copy Markdown
Contributor

Summary

Stacked on #434. Review only the top two commits:

  • feat(hosted): serve the deployment-test phone page from the stack origin
  • docs(hosted): describe scanning the pairing code and unsafe daemons

The deployment-test distribution serves the phone page for /remote under /remote/. The page, the browser binding's worker, the control plane, the witness, and the relay then share one origin.

  • Private S3 bucket: public access blocked, bucket-owner-enforced, SSE. It is read only by this distribution through Origin Access Control, with a bucket policy scoped to the distribution ARN.
  • Routing: an ordered /remote* behaviour (GET and HEAD, caching disabled). A CloudFront function redirects /remote to /remote/ and maps directory paths to index.html.
  • Response headers:
    • CSP: default-src 'none'; script-src 'self' 'wasm-unsafe-eval'; worker-src 'self'; connect-src 'self'; style-src 'self'; img-src 'self' data:; base-uri 'none'; form-action 'none'; frame-ancestors 'none'
    • also nosniff, DENY framing, no referrer, HSTS, no-store, and COOP
  • remote-page.sh builds the browser binding with this stack's witness trust, builds the page, and publishes it with explicit content types.
  • remote-config.sh writes a daemon's owner-only remote config from the stack secret.
  • New outputs: remote_page_url, remote_page_bucket.

Test plan

  • terraform apply on the deployment-test stack: 8 added, 1 changed, 0 destroyed
  • The page is served at https://<distribution>/remote/ with the headers above. It loads its module, worker, and WebAssembly under the CSP.
  • End to end with feat(remote): control the daemon from a phone with /remote #438: a phone-sized browser paired with a local daemon and sent, received, and stopped turns

@coderabbitai

coderabbitai Bot commented Sep 25, 2026 •

Copy link
Copy Markdown

Important

Review skipped

Auto reviews are disabled on base/target branches other than the default branch.

Please check the settings in the CodeRabbit UI or the .coderabbit.yaml file in this repository. To trigger a single review, invoke the @coderabbitai review command.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Advanced

Run ID: f0285edd-da9b-4009-bede-6e2ad83df2a2

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

Use the checkbox below for a quick retry:

  • 🔍 Trigger review

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

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

@github-actions

Copy link
Copy Markdown

⚠️ Deprecation Warning: The deny-licenses option is deprecated for possible removal in the next major release. For more information, see issue 997.

Dependency Review

✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.

Scanned Files

None

The phone page for remote access is published to a private S3 bucket and
served by the existing CloudFront distribution under /remote/ with a strict
Content-Security-Policy, so the page, the browser binding worker, the witness
gateway, and the relay share one origin. remote-page.sh builds the page and
the deployment-test browser binding pinned to this stack's witness trust and
uploads them; remote-config.sh writes the daemon's remote configuration.

Signed-off-by: Lokesh <lokeshselvam7025@gmail.com>
Signed-off-by: Lokesh <lokeshselvam7025@gmail.com>
@Lokesh7025
Lokesh7025 merged commit 0ce8fd0 into RC Sep 25, 2026
8 checks passed
@Lokesh7025
Lokesh7025 deleted the remote/phone-hosting branch September 25, 2026 15:45
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