Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 14 additions & 1 deletion .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -179,6 +179,10 @@ jobs:

- name: Build
uses: actions-rs/cargo@844f36862e911db73fe0815f00a4a2602c279505 # v1.0.3
env:
# Compiled in by code_assistant_core's build.rs: only builds that
# carry a feed update themselves (docs/self-update.md).
CODE_ASSISTANT_UPDATE_FEED: https://github.com/${{ github.repository }}/releases/latest/download/update-manifest.json
with:
command: build
args: --locked --release --target ${{ matrix.target }}
Expand Down Expand Up @@ -361,6 +365,13 @@ jobs:
echo "tag=$TAG" >> "$GITHUB_OUTPUT"
echo "Tagged $TAG at $TAG_SHA"

- name: Write update manifest
run: |
./scripts/update-manifest.sh "$RELEASE_VERSION" \
"https://github.com/${{ github.repository }}/releases/download/${{ steps.tag.outputs.tag }}" \
dist/*.zip > dist/update-manifest.json
cat dist/update-manifest.json

- name: Create GitHub release
uses: softprops/action-gh-release@efb35369e0ad2afab669f228072c1b0d510eae64 # v3.0.3
with:
Expand All @@ -369,7 +380,9 @@ jobs:
name: Release ${{ steps.tag.outputs.tag }}
draft: false
prerelease: false
files: dist/*.zip
files: |
dist/*.zip
dist/update-manifest.json

- name: Bump to next development version
run: |
Expand Down
11 changes: 11 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,17 @@ Layer 5 (binary): code_assistant — CLI, config, feature-gated frontend
worktree session) and stack rebases (`git::stack_rebase`, scratch repo)
are git-crate work the core drives

### Self-update
- Release builds (the workflow compiles in `CODE_ASSISTANT_UPDATE_FEED`)
read `update-manifest.json` from the latest GitHub release; all other
builds never update themselves (`version::update_feed()`)
- Layer-0 `app_update`: manifest, download (resumed with `Range`, retried,
sha256-checked), swap next to the installation (macOS bundle after a
codesign/team check, bare executable, Windows rename trick), cleanup
- `code_assistant_core::updates::UpdateService`: checks after 15 s and every
4 h, download on click, app-scoped `UiEvent::UpdateStateChanged`; the GPUI
title-bar chip installs and calls `cx.restart()`; see `docs/self-update.md`

### Session Storage
- One folder per session below `sessions/`, the ID is its path:
`<project-slug>/<YYYY-MM-DD>-<NNN>` (`persistence::layout`)
Expand Down
22 changes: 22 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
[workspace]
members = ["crates/agent_core", "crates/agent_orchestration", "crates/code_assistant", "crates/code_assistant_core", "crates/audio", "crates/ui_acp", "crates/ui_gpui", "crates/ui_terminal", "crates/command_executor", "crates/fs_explorer", "crates/git", "crates/github", "crates/llm", "crates/mcp_client", "crates/mcp_server", "crates/pty_session", "crates/sandbox", "crates/terminal", "crates/terminal_output", "crates/terminal_test_app", "crates/terminal_view", "crates/tools_core", "crates/web"]
members = ["crates/agent_core", "crates/app_update", "crates/agent_orchestration", "crates/code_assistant", "crates/code_assistant_core", "crates/audio", "crates/ui_acp", "crates/ui_gpui", "crates/ui_terminal", "crates/command_executor", "crates/fs_explorer", "crates/git", "crates/github", "crates/llm", "crates/mcp_client", "crates/mcp_server", "crates/pty_session", "crates/sandbox", "crates/terminal", "crates/terminal_output", "crates/terminal_test_app", "crates/terminal_view", "crates/tools_core", "crates/web"]

resolver = "2"

Expand Down
33 changes: 33 additions & 0 deletions crates/app_update/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
[package]
name = "app_update"
version = "0.1.0"
edition = "2024"
license = "MIT"

[dependencies]
anyhow = "1.0"
futures = "0.3"
reqwest = { version = "0.13", default-features = false, features = [
"rustls",
"charset",
"http2",
"system-proxy",
"stream",
] }
semver = { version = "1.0", features = ["serde"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
sha2 = "0.11.0"
tokio = { version = "1.48", features = ["fs", "io-util", "process", "time", "rt"] }
tracing = "0.1"
zip = { version = "8.6", default-features = false, features = ["deflate"] }

[target.'cfg(target_os = "macos")'.dependencies]
# sysctlbyname("sysctl.proc_translated"): running under Rosetta
libc = "0.2"

[dev-dependencies]
axum = "0.7"
bytes = "1.10"
tempfile = "3.23"
tokio = { version = "1.48", features = ["full"] }
Loading
Loading