Skip to content

fix(desktop): restore upstream managed remote features - #24

Merged
100yenadmin merged 4 commits into
electric/mainfrom
fix/18-upstream-first-managed-remote-es4-20260724
Jul 23, 2026
Merged

100yenadmin merged 4 commits into
electric/mainfrom
fix/18-upstream-first-managed-remote-es4-20260724

Conversation

@100yenadmin

Copy link
Copy Markdown
Member

Closes #18.

Outcome

Makes managed evaOS Agent a thin Electric Sheep envelope over upstream Hermes Desktop:

  • removes the managed HTTP method/API route catalog and broad IPC blocklist;
  • restores upstream attachments, local file pickers, audio/voice, settings, skills, plugins, MCP, cron, memory, sessions, profiles, artifacts, and future remote features;
  • forwards upload payloads and unknown future /api/* methods to the already assigned backend;
  • keeps gateway URL/token/customer/agent injection, local runtime repair/fallback, Nous Cloud switching, and updater-source changes blocked;
  • keeps the loopback one-time WebSocket ticket and server-selected runtime enrollment unchanged;
  • versions the candidate as 2026.7.20-es.4.

Proof

  • npm --prefix apps/desktop run test:managed — 28 passed
  • npm --prefix apps/desktop run typecheck — passed
  • focused attachment/profile/voice Vitest lane — 43 passed
  • npm --prefix apps/desktop run build — passed
  • git diff --check — passed

The managed contract includes unknown future HTTP and gateway-RPC passthrough tests plus negative connection/assignment escape tests.

Boundary

This PR does not change dashboard identity, ws-proxy binding, VM runtime isolation, Mac Access, OpenClaw, or the current distribution route. Signed/notarized artifact and installed customer proof remain in support-control #352 after merge.

@coderabbitai

coderabbitai Bot commented Jul 23, 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: Organization UI

Review profile: ASSERTIVE

Plan: Pro Plus

Run ID: b218c3e7-f4aa-432f-bda4-359b5125843a

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
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch fix/18-upstream-first-managed-remote-es4-20260724

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

@100yenadmin

Copy link
Copy Markdown
Member Author

@codex review Focus on the managed connection/binding escape boundary: client-selected gateway, raw token, customer/agent override, local-backend fallback, profile escape, Nous Cloud/updater contact, and whether unknown upstream HTTP/WebSocket passthrough stays confined to the server-assigned backend. Please review exact head 266a4e7 only.

@100yenadmin

100yenadmin commented Jul 23, 2026 •

Copy link
Copy Markdown
Member Author

@codex review Current exact head is 443865a. Please review the same managed connection/binding escape boundary on this head; the only delta from the prior request is one user-visible sentence clarifying that external gateway overrides—not Hermes profiles within the assigned backend—remain disabled.

@100yenadmin

Copy link
Copy Markdown
Member Author

@codex review Current exact head is 6abf9bf. Delta-only review requested: CI exposed that brokerPost unrefed its timeout, allowing Node to exit while the request promise remained pending. The delta removes only timeout.unref(), so the broker timeout deterministically fires. Please confirm this fixes the lifecycle issue without weakening the managed connection/binding escape boundary.

@chatgpt-codex-connector

Copy link
Copy Markdown

Codex Review: Didn't find any major issues. More of your lovely PRs please.

Reviewed commit: 6abf9bfaa5

ℹ️ 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".

@100yenadmin

Copy link
Copy Markdown
Member Author

@codex review Exact current head is 6744ba7. Delta-only review: CI found one stale test asserting the removed managed feature filter. The test now requires the upstream tool toggle/config plus MCP and Browse Hub surfaces. There is no production-code delta beyond the previously requested one-line timeout lifecycle fix.

@100yenadmin

Copy link
Copy Markdown
Member Author

Independent semantic review completed on exact head 6744ba76efe2b4ca85ab5cc69126a865df9d33c4: no P0/P1 or realistic supported-path P2 findings in the managed binding/connection escape boundary. Reviewed broker-selected host/customer/agent enrollment, main-process token custody, REST/WebSocket passthrough confinement, local-backend prevention, internal-profile boundary, Nous Cloud/updater blocks, and renderer leakage. Residual forward-compatibility authorization remains intentionally delegated to the assigned OS-isolated Hermes backend.

@100yenadmin
100yenadmin merged commit e43e7a2 into electric/main Jul 23, 2026
27 checks passed

@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: 6744ba76ef

ℹ️ 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".

assert.match(chat, /onPickFiles=\{managedEva \? undefined : onPickFiles\}/)
assert.match(chat, /onTranscribeAudio=\{managedEva \? undefined : onTranscribeAudio\}/)
assert.doesNotMatch(settings, /managedViews/)
assert.match(chat, /onPickFiles=\{onPickFiles\}/)

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 Replace source-regex checks with behavior coverage

This updated assertion still verifies managed attachment behavior by reading src/app/chat/index.tsx as text and matching the prop spelling. When the ChatBar wiring is refactored or wrapped with equivalent runtime behavior, this test will fail on source shape rather than user-visible behavior; it can also pass while the rendered managed path is broken. Please exercise the managed ChatView/ChatBar behavior directly, or extract a small helper and test that instead.

AGENTS.md reference: AGENTS.md:L1380-L1384

Useful? React with 👍 / 👎.

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