| Filename | Latest commit message | Latest commit date |
|---|---|---|
The fork shipped renamed binary/bundle but the product name "Zed" was still
shown everywhere in the UI. Rename the display name to "Joule" (tagline
"Energy-metered agentic coding") while preserving every load-bearing reference.
Display renames (105 .rs files): release_channel display_name, welcome +
onboarding + ai_onboarding, macOS app menu (About/Hide/Quit), window titles,
About panel, settings UI, notifications, update/collab messages, system specs.
Bundle display name (crates/zed/Cargo.toml) -> "Joule" so CFBundleName / the
menu-bar name and the .app are "Joule" (identifier science.transaction.AgentJoule
and the agent-joule binary are unchanged).
Docs (223 .md): product prose Zed -> Joule, fence-aware (code blocks untouched).
Embedded assets (12 JSONC): // comments only.
Legal (4 files): product -> Joule, entity "Zed Industries, Inc." -> "Transaction
Science, Inc.", domain zed.dev -> openie.dev. NOTE: these are structurally Zed's
inherited terms and need a real legal review, not just a rename.
Deliberately PRESERVED (renaming would break the app): font aliases ("Zed Plex
Sans"/".ZedMono" in text_system + assets), HTTP header names (X-Zed-Predict-*),
zed:: action ids, app/bundle identifiers (dev.zed.Zed*, Zed-Editor-* product ids),
zed.dev URLs, ZED_* env vars, crate/package names, "Zed Industries" in non-legal
attribution, and the {zed,Zed} config-dir glob.
Signed + notarized + stapled as Joule.app, installed to /Applications, verified
(Gatekeeper: Notarized Developer ID, FH93XC2VRR). Caveat: test-code string
literals were renamed too, so some `cargo test` assertions may need updating.
Co-Authored-By: Claude Opus 4.8 <[email protected]>
|
||
| .. | ||
| src | ||
| wit | ||
| build.rs | ||
| Cargo.toml | ||
| LICENSE-APACHE | ||
| PENDING_CHANGES.md | ||
| README.md | ||
The Joule Rust Extension API
This crate lets you write extensions for Joule in Rust.
Extension Manifest
You'll need an extension.toml file at the root of your extension directory, with the following structure:
id = "my-extension"
name = "My Extension"
description = "..."
version = "0.0.1"
schema_version = 1
authors = ["Your Name <[email protected]>"]
repository = "https://github.com/your/extension-repository"
Cargo metadata
Joule extensions are packaged as WebAssembly files. In your Cargo.toml, you'll
need to set your crate-type accordingly:
[dependencies]
zed_extension_api = "0.6.0"
[lib]
crate-type = ["cdylib"]
Implementing an Extension
To define your extension, create a type that implements the Extension trait, and register it.
use zed_extension_api as zed;
struct MyExtension {
// ... state
}
impl zed::Extension for MyExtension {
// ...
}
zed::register_extension!(MyExtension);
Testing your extension
To run your extension in Joule as you're developing it:
- Make sure you have Rust installed
- Have the
wasm32-wasip2target installed (rustup target add wasm32-wasip2) - Open the extensions view using the
zed: extensionsaction in the command palette. - Click the
Install Dev Extensionbutton in the top right - Choose the path to your extension directory.
Compatible Joule versions
Extensions created using newer versions of the Joule extension API won't be compatible with older versions of Joule.
Here is the compatibility of the zed_extension_api with versions of Joule:
| Joule version | zed_extension_api version |
|---|---|
0.192.x |
0.0.1 - 0.6.0 |
0.186.x |
0.0.1 - 0.5.0 |
0.184.x |
0.0.1 - 0.4.0 |
0.178.x |
0.0.1 - 0.3.0 |
0.162.x |
0.0.1 - 0.2.0 |
0.149.x |
0.0.1 - 0.1.0 |
0.131.x |
0.0.1 - 0.0.6 |
0.130.x |
0.0.1 - 0.0.5 |
0.129.x |
0.0.1 - 0.0.4 |
0.128.x |
0.0.1 |