Brings over the uncommitted agent-mei work (Mac checkout, Sep 22) plus box follow-ups (Oct 17: agent_mei action namespace in keymap/zed.rs, MEI_BRIDGE.md, RENAME_AGENT_MEI.md, unmetered receipts report 0 uJ). joule_core, JOULE_CODE_* and JouleDB names unchanged. *.bak.* scratch files excluded.
6.8 KiB
Upstream Divergence — what we removed & modified
Generated 2026-06-14. Fork baseline
a084434("hard fork of zed@e2e7a67") → HEAD.git diff --stat a084434 HEAD: 245 files, +13,564 / −187,592. The binary compiles clean (cargo check -p zed --bin agent-mei→ exit 0; 8 benign warnings).
The deletions are almost entirely upstream's agent + agent_ui + sidebar; the insertions are almost entirely the new crates/agent_mei_panel.
1. Entire crates / features removed
LOC = Rust LOC at baseline.
| Crate / feature | LOC | What it did upstream | Reason |
|---|---|---|---|
crates/agent |
~75,549 | Native in-tree agent: thread engine, tool suite, prompt templates, eval fixtures, agent DB | Replaced by agent_mei_panel (federated ACP + local cascade) |
crates/agent_ui |
~74,075 | Agent Panel UI: thread views, model selector, inline assistant, provider modals, agent_diff | Replaced by agent_mei_panel UI |
crates/sidebar |
~22,660 | Thread/workspace switcher (+14.6k LOC tests) | Tied to removed agent_ui thread model; bloat |
crates/skill_creator |
~1,993 | "Skill" authoring UI | Tied to removed agent skill system |
crates/auto_update |
~1,555 | In-app updater; held live egress to Joule release servers | Privacy / no-phone-home |
crates/auto_update_ui |
~391 | Release-notes / update banner | Privacy |
crates/auto_update_helper |
~858 | Windows updater helper exe | Privacy |
crates/acp_tools |
~842 | ACP protocol-inspector devtool | Bloat |
crates/eval_cli |
~898 | Headless agent eval harness | Bloat |
crates/eval_utils |
~146 | Eval helpers | Bloat |
title_bar/src/update_version.rs |
148 | Title-bar "update available" | Privacy |
zed/src/zed/open_listener.rs |
264 | zed:// URL handler (AgentPanel/SharedAgentThread/InstallSkill deep-links) |
Depended on removed agent_ui |
settings_ui/.../tool_permissions_setup.rs |
1,461 | Agent tool-permission setup page | Tied to removed agent tool-permissions |
Added: crates/agent_mei_panel (~+12k LOC) + conformance vectors.
2. Core files modified
| File (lines) | What changed | Classification |
|---|---|---|
zed/src/main.rs (~269) |
Removed agent_ui::init/acp_tools::init/auto_update*::init/PromptBuilder; added agent_mei_panel::init. authenticate() → no-op (no startup sign-in — "the real phone-home"). Deleted agent deep-link handlers. Added --jc-control/-params/-sock/-tcp/-token/-mcp flags + control/MCP dispatch. Multi-instance by default (single now opt-in). |
privacy + wiring |
zed/src/zed.rs (~148) |
Removed Sidebar, acp_tools toolbar, and the entire initialize_agent_panel/setup_or_teardown_ai_panel/DisableAiSettings machinery. Loads AgentMeiPanel. |
wiring + dead-removal |
http_client/src/http_client.rs (~84) |
The four build_zed_*_url builders now bail! instead of returning a URL. |
privacy (egress backstop) |
client/src/telemetry.rs (~18) |
MINIDUMP_ENDPOINT = None (ignores env); send_event builds but never transmits. |
privacy (crash + telemetry) |
telemetry/src/telemetry.rs (~14) |
send_event/init no-ops; neutralizes ~43 telemetry::event! sites with one edit. |
privacy |
title_bar/src/title_bar.rs (~132) |
Removed update_version, SimulateUpdateAvailable, and the Sign-In button (render_sign_in_button deleted). |
privacy + branding |
onboarding/{basics_page,onboarding}.rs (~109) |
Removed render_zed_agent_button (Joule-cloud promo) + the SignIn action/handler. |
privacy |
remote_connection/src/remote_connection.rs (~112) |
download_server_binary_locally → "disabled" error; get_download_url → Ok(None); removed AutoUpdater dep (closes residual SSH remote-server fetch). |
privacy |
project/src/agent_registry_store.rs (~28) |
init_global no longer auto-refresh()es; refresh_if_stale no-op. On-disk cache only; explicit refresh() retained. |
privacy (ACP registry auto-fetch) |
activity_indicator.rs (~5) |
DismissMessage re-homed from removed auto_update crate. |
clean re-home |
zed/Cargo.toml, Cargo.toml |
Binary zed→agent-mei; bundle id dev.zed.Zed→science.transaction.AgentJoule; member/path-dep changes. |
branding + wiring |
assets/settings/default.json (~37) |
Theme→"Agent Mei"; auto_install_extensions emptied; added local vllm provider + agent_servers (claude-acp/gemini/codex). |
privacy + wiring + branding |
assets/keymaps/* |
Removed agent::*/agents_sidebar::*/onboarding::SignIn bindings (would panic keymap validation); added agent_mei::*. |
wiring + privacy |
3. Privacy hardening — claims vs code (all verified ✅)
PRIVACY_HARDENING.md claims check out against the diff:
- A Sign-in removed ✅
main.rs::authenticateno-op; title-bar button +onboarding::SignIn+ keymap bindings removed.clientcrate retained, signed-out. - B Auto-update removed ✅ all three
auto_update*crates deleted; inits removed; menu items gone;remote_connectiondownload stubbed (closes residual SSH egress). - C Telemetry neutralized ✅ both
send_eventpaths confirmed inert. - D Crash upload disabled ✅
MINIDUMP_ENDPOINT = None(forced). - E ACP registry auto-fetch disabled ✅
init_globalauto-refresh removed +refresh_if_staleno-op (was ~36 startup connections tocdn.agentclientprotocol.com); explicit refresh retained. - F Egress backstop ✅ all four
build_zed_*_urlbail!. - Extensions ✅
auto_install_extensionsemptied.
The doc's tshark-SNI "network-silent startup" runtime claim is asserted there, not re-run in this audit.
4. Dangling risk — none load-bearing
Build compiles (exit 0). Per removed-crate grep:
acp_tools,auto_update_ui,auto_update_helper,eval_cli,eval_utils→ 0 references. Clean.agent_ui→ 3 benign refs (a comment, aclippy.tomlallow-path, andvisual_test_runner.rsbehind thevisual-testsfeature — not built by the binary). Latent: thevisual-testsfeature is itself now broken (calls removedagent_ui::init); dev-only.sidebar→ all false positives (the word "sidebar" inagents_sidebaraction ns,AgentSettings.sidebar_side, aSidebarHandleincrates/workspace).skill_creator/agents_sidebar→ dead string literals inzed.rs::test_action_namespaces:5135(only fails if that test runs).auto_update→ all refs are the inert settings key (a harmless dead config bool).
Cleanly handled: DismissMessage re-homed (not dangling); render_sign_in_button fully deleted; keymap bindings removed in lockstep (avoids the documented startup keymap-validation panic).
Cleanup left behind (see FINDINGS.md P3): 8 unused-import/var warnings in zed.rs/main.rs; the broken visual-tests feature; the dead "skill_creator"/"agents_sidebar" test-namespace strings.