Skip to content

Commit eaff0eb

Browse files
Release 0.27.0: ship a managed llama.cpp runtime and official vendor images.
Local GGUF rows no longer depend on a user-started Ollama or PATH-only binary. Codex, Claude, and Cursor receive real image bytes on their documented interfaces. Co-authored-by: Cursor <cursoragent@cursor.com>
1 parent b646a9b commit eaff0eb

41 files changed

Lines changed: 805 additions & 212 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

‎.gitignore‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,3 +34,5 @@ ui/playwright-report/
3434
src/shadow_agent/_assets/
3535
/target
3636
/src-tauri/gen/
37+
/tools/llama.cpp/
38+
/packaging/llama.cpp/bin/

‎CHANGELOG.md‎

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,19 @@
11
# Changelog
22

3+
## 0.27.0 — Managed local inference
4+
5+
- Local GGUF rows load through a ShadowCode-managed llama.cpp runtime
6+
(`~/.local/lib/shadowcode/llama-server`). The engine prefers that binary over
7+
PATH. It does not start Ollama or LM Studio. Removing a catalog entry still
8+
never deletes weights. One GGUF is loaded at a time.
9+
- Codex, Claude Code, and Cursor now receive real image bytes on their official
10+
interfaces (Codex `localImage`, Claude image source blocks, ACP `image`).
11+
Antigravity still rejects attachments because its stream-json input does not
12+
document image blocks. Local GGUF vision is enabled only when an mmproj
13+
companion file is present.
14+
- CPU llama.cpp is compiled from a pinned upstream commit and installed with
15+
the AppImage. Models are never auto-downloaded.
16+
317
## 0.26.0 — Desktop coding agent
418

519
- One searchable composer picker with **Subscriptions** and **On this computer**.

‎Cargo.lock‎

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎Cargo.toml‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ default-members = ["native/core"]
44
resolver = "2"
55

66
[workspace.package]
7-
version = "0.26.0"
7+
version = "0.27.0"
88
edition = "2021"
99
rust-version = "1.95"
1010
license = "MIT"

‎README.md‎

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# ShadowCode
22

3-
![version](https://img.shields.io/badge/version-0.26.0-386c51) ![Rust](https://img.shields.io/badge/runtime-Rust%201.95-orange) ![license](https://img.shields.io/badge/license-MIT-green)
3+
![version](https://img.shields.io/badge/version-0.27.0-386c51) ![Rust](https://img.shields.io/badge/runtime-Rust%201.95-orange) ![license](https://img.shields.io/badge/license-MIT-green)
44

55
**Your ideas. Your models. Your machine.**
66

@@ -10,8 +10,9 @@ context, tools, permissions, checkpoints, plans, and verification.
1010

1111
![ShadowCode workspace](docs/images/workspace-light.png)
1212

13-
**Native 0.26 release:** one unified model picker (Codex, Claude Code, Cursor,
14-
Antigravity, and local models). The `main` branch builds a Rust/Tauri desktop window
13+
**Native 0.27 release:** one unified model picker (Codex, Claude Code, Cursor,
14+
Antigravity, and local models). Local GGUF rows run through a managed llama.cpp
15+
runtime installed with the app. They do not start Ollama or LM Studio. The `main` branch builds a Rust/Tauri desktop window
1516
with the interface embedded in the executable. It needs no Python runtime or
1617
browser launcher. See the [native desktop guide](docs/NATIVE_DESKTOP.md)
1718
and the [goals](docs/NATIVE_GOALS.md) and [model routing](docs/NATIVE_ROUTING.md)
@@ -37,16 +38,16 @@ Integrations and release checks are tracked under the [release gates](docs/NATIV
3738

3839
## Native AppImage
3940

40-
Download the `v0.26.0` **x86_64 AppImage**
41+
Download the `v0.27.0` **x86_64 AppImage**
4142
and its `SHA256SUMS` file from [GitHub releases](https://github.com/Shadowfetchapps/ShadowCode/releases/latest).
4243
The native application embeds its interface; Python, Node.js and a browser
4344
launcher are not runtime dependencies. The release targets **Ubuntu 24.04 or
4445
newer / glibc 2.39+**. Git and a model provider such as Ollama remain external.
4546

4647
```bash
4748
sha256sum --ignore-missing -c SHA256SUMS
48-
chmod +x ShadowCode_0.26.0_amd64.AppImage
49-
./ShadowCode_0.26.0_amd64.AppImage --appimage-extract-and-run
49+
chmod +x ShadowCode_0.27.0_amd64.AppImage
50+
./ShadowCode_0.27.0_amd64.AppImage --appimage-extract-and-run
5051
```
5152

5253
Extraction mode works without FUSE. To install into `~/Applications`, add a
@@ -55,7 +56,7 @@ stable `shadow` and `shadowcode` commands, and replace the desktop launcher:
5556
```bash
5657
git clone https://github.com/Shadowfetchapps/ShadowCode.git
5758
cd ShadowCode
58-
./scripts/install-appimage.sh /path/to/ShadowCode_0.26.0_amd64.AppImage
59+
./scripts/install-appimage.sh /path/to/ShadowCode_0.27.0_amd64.AppImage
5960
```
6061

6162
Keep `SHA256SUMS` beside the download and the installer verifies its matching

‎SECURITY.md‎

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -96,13 +96,22 @@ coordination sidecars. Directory capabilities confine database/sidecar paths;
9696
query work, concurrent readers and output are bounded. Cancellation interrupts
9797
SQLite and releases its connection; an OS filesystem stall may delay return.
9898

99+
## Local GGUF inference
100+
101+
ShadowCode can spawn a managed `llama-server` on 127.0.0.1 with one user-owned
102+
GGUF at a time. It does not start Ollama or LM Studio and does not download
103+
weights. Removing a catalog row deletes only the pointer, never the file. The
104+
managed binary lives under `~/.local/lib/shadowcode/` after install.
105+
99106
## Vendor subscription CLIs
100107

101108
Codex, Claude Code, Cursor, and Antigravity run as official local CLIs.
102109
ShadowCode does not scrape cookies, extract OAuth tokens, or treat a Gemini API
103110
key as Antigravity subscription access. Disconnecting ShadowCode does not always
104111
log out a shared native CLI — use that vendor's own logout when you want the
105-
CLI session gone.
112+
CLI session gone. Image attachments are forwarded only on official vendor fields
113+
(Codex `localImage`, Claude image source blocks, Cursor ACP `image`). Antigravity
114+
rejects images.
106115

107116
## Secrets and transcript content
108117

‎docs/NATIVE_DESKTOP.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -140,8 +140,8 @@ From the repository root, build both package formats with:
140140
```sh
141141
node scripts/build-native.mjs
142142
node scripts/check-native-package.mjs \
143-
target/release/bundle/appimage/ShadowCode_0.26.0_amd64.AppImage \
144-
target/release/bundle/deb/ShadowCode_0.26.0_amd64.deb
143+
target/release/bundle/appimage/ShadowCode_0.27.0_amd64.AppImage \
144+
target/release/bundle/deb/ShadowCode_0.27.0_amd64.deb
145145
node scripts/test-native-runtime.mjs
146146
node --test scripts/test-native-source-fetch.mjs
147147
node scripts/test-native-runtime-sources.mjs

‎docs/RELEASE_NOTES.md‎

Lines changed: 9 additions & 81 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,12 @@
1+
ShadowCode 0.27.0 keeps the desktop coding-agent picker and adds a real
2+
managed local runtime. Local GGUF files you already have load through
3+
`~/.local/lib/shadowcode/llama-server`. ShadowCode does not start Ollama or
4+
LM Studio. Weights are never auto-downloaded or deleted when a catalog row is
5+
removed. Codex, Claude Code, and Cursor receive official image bytes; Antigravity
6+
still rejects attachments.
7+
8+
Downloads: `ShadowCode_0.27.0_amd64.AppImage`, `ShadowCode_0.27.0_amd64.deb`.
9+
110
ShadowCode 0.26.0 is a desktop coding agent: open a project, pick one
211
execution target, describe the task, watch it work. The composer has a single
312
searchable picker for Codex, Claude Code, Cursor, Antigravity, and local
@@ -25,84 +34,3 @@ to simplify the onboarding flow and elevate workspace feel.
2534
Downloads: `ShadowCode_0.25.0_amd64.AppImage`, `ShadowCode_0.25.0_amd64.deb`,
2635
the AppImage runtime source archive, and `SHA256SUMS`. Binaries target x86_64,
2736
Ubuntu 24.04+ / glibc 2.39+.
28-
29-
---
30-
31-
ShadowCode 0.24.0 adds vendor CLI agent backends. You can run Claude, Codex, or
32-
Grok subscriptions by spawning the official CLI. ShadowCode never reads or
33-
stores those OAuth tokens.
34-
35-
- **Codex:** `codex app-server` JSON-RPC, falling back to `codex exec --json`
36-
only when app-server is unavailable.
37-
- **Grok:** `grok agent stdio` (Agent Client Protocol).
38-
- **Claude:** headless stream-json. Anthropic forbids third-party use of
39-
Pro/Max OAuth tokens directly (enforced 2026); the official binary with the
40-
user's own login is currently tolerated but not guaranteed.
41-
- Doctor, picker, and Settings → Advanced knobs. Rewind does not apply to
42-
vendor-agent tasks.
43-
44-
Downloads: `ShadowCode_0.24.0_amd64.AppImage`, `ShadowCode_0.24.0_amd64.deb`,
45-
the AppImage runtime source archive, and `SHA256SUMS`. Binaries target x86_64,
46-
Ubuntu 24.04+ / glibc 2.39+. Git and model providers such as Ollama remain
47-
external. Vendor CLIs are optional and are never bundled.
48-
49-
---
50-
51-
ShadowCode 0.23.0 hardens the verification gate, live steering and parallel
52-
workspace recovery. The Rust/Tauri app embeds its interface and needs no Python
53-
or Node runtime.
54-
55-
- **Honest verification:** a task is verified only when its last test, build,
56-
lint or type-check command succeeded and nothing failed afterwards. The
57-
failing-test-first flow requested for bug fixes now completes as verified;
58-
model prose never does. Bug-fix wording is matched as whole words.
59-
- **Steering:** a rejected pause on a queued task can no longer park it at its
60-
first boundary. One Steer action pauses and records the instruction; the task
61-
stays paused until Resume.
62-
- **Parallel workspaces:** a checkout deleted outside ShadowCode is reported by
63-
name and pruned during cleanup while its branch is retained.
64-
- **Secrets:** `.env.example`-style templates are readable; `.env`, `secrets.env`,
65-
credential JSON and private keys remain refused, and tool output is redacted
66-
before reaching the model.
67-
68-
Downloads: `ShadowCode_0.23.0_amd64.AppImage`, `ShadowCode_0.23.0_amd64.deb`,
69-
the AppImage runtime source archive, and `SHA256SUMS`. Binaries target x86_64,
70-
Ubuntu 24.04+ / glibc 2.39+. Git and model providers such as Ollama remain external.
71-
72-
---
73-
74-
ShadowCode 0.22.3 improved native Linux coding workflows, project isolation and recovery.
75-
76-
- **Conversation control:** fork from a response with completed tool context;
77-
later turns stay out of the fork and the original remains intact.
78-
- **Safe recovery:** pause, steer and resume tasks; checkpoint rewind waits for
79-
a safe boundary and refuses competing workspace activity.
80-
Attached windows retain events after engine replacement and can close during
81-
reconnection without waiting for a new engine.
82-
- **Local model tuning:** visible context and Ollama residency controls, with
83-
validated settings preserved when selecting saved models.
84-
- **Parallel workspaces:** prepare up to two branches, open explicit tasks,
85-
check the combined merge result and remove clean checkouts while retaining
86-
commits. No automatic worker dispatch or integration is implied.
87-
- **Code intelligence:** private bounded AST cache, confined file access,
88-
Unicode-safe signatures, stale-entry removal and syntactic call-site queries.
89-
- **Execution hardening:** owned scratch directories, correct project mount
90-
order, early bubblewrap probing and no replay of failed shell executions.
91-
- **Guardian:** optional diagnostics and properly scoped proposal approval.
92-
Diagnostics identify test commands but do not run tests or generate patches.
93-
- **Linux launch reliability:** preserve the caller directory and relative project
94-
paths; keep external Python tools usable and both installed CLI names in sync.
95-
- **Reproducible release checks:** clean hosts build the real application before
96-
process tests, and packaging retains Rustup while excluding unsafe PATH entries.
97-
98-
Downloads: `ShadowCode_0.22.3_amd64.AppImage`,
99-
`ShadowCode_0.22.3_amd64.deb`, the AppImage runtime source archive, and `SHA256SUMS`.
100-
Binaries target x86_64, Ubuntu 24.04+ / glibc 2.39+. Git and model providers such
101-
as Ollama remain external.
102-
103-
Keep SHA256SUMS beside the AppImage and run
104-
`scripts/install-appimage.sh /path/to/ShadowCode_0.22.3_amd64.AppImage` to verify
105-
and install it in `~/Applications`. Existing settings, keys and task history
106-
are preserved. Extraction mode works without FUSE.
107-
108-
See `docs/SHADOWCODE_022_QUALIFICATION_REPORT.md` for tested scope and limitations.

‎docs/RELEASING.md‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
11
# Native release procedure
22

3-
This procedure publishes the Rust/Tauri 0.26 application. The tag workflow is
3+
This procedure publishes the Rust/Tauri 0.27 application. The tag workflow is
44
the release authority: it does not build, upload, or mention the legacy Python
55
wheel, source distribution, portable archive, or browser launcher.
66

77
## Prepare the release
88

99
1. Update the shared version in `Cargo.toml` and `src-tauri/tauri.conf.json`.
10-
They must match the tag exactly, for example `v0.26.0`.
10+
They must match the tag exactly, for example `v0.27.0`.
1111
2. Update `CHANGELOG.md`, `docs/RELEASE_NOTES.md`, README download commands and
1212
native migration/verification records with only evidence that is current for
1313
the tagged commit.

‎docs/SIMPLIFICATION_CHECKLIST.md‎

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,26 @@
1-
# ShadowCode 0.26 product simplification
1+
# ShadowCode 0.27 product simplification
22

33
Visual target: the two six-panel desktop boards (home, unified picker, accounts, activity, review, local models). Names, percents, and pass counts in those boards are layout examples only.
44

55
## Status
66

7-
- [x] Inspect origin/main (0.25.0 already shipped) and keep reliable vendor CLI code
7+
- [x] Inspect origin/main (0.26.0 already shipped) and keep reliable vendor CLI code
88
- [x] One searchable composer picker: Subscriptions + On this computer
99
- [x] Cursor ACP adapter (`cursor-agent acp`) and Antigravity `agy` stream-json adapter
1010
- [x] Keep Grok adapter; do not feature it in the primary picker
1111
- [x] Truthful usage snapshots (unknown/stale/shared; never invent percents)
12-
- [x] Built-in GGUF catalog + optional llama.cpp spawn (no auto-download)
13-
- [x] Image attach only when the selected route actually supports vision
12+
- [x] Built-in GGUF catalog + managed llama.cpp runtime (no auto-download)
13+
- [x] Image attach only when the selected route actually forwards vision bytes
1414
- [x] Compact activity timeline; Mode tabs / chip stack off the default composer
1515
- [x] Accounts + Local models settings (official login commands, no password forms)
16-
- [x] Deterministic tests for picker, usage, image rejection, cancel, new protocols
17-
- [x] Version 0.26.0, docs, AppImage install, push origin/main
16+
- [x] Deterministic tests for picker, usage, image forwarding, cancel, new protocols
17+
- [x] Version 0.27.0, docs, AppImage install, push origin/main
1818

1919
## Honest limits
2020

2121
- Antigravity 1.2.8 has no `usage` command; quota stays "Usage unavailable"
2222
- Cursor `about` reports plan tier, not remaining allowance — do not render a percent
23-
- llama.cpp is not bundled; Ready only after the user points at a verified binary and a GGUF they already have
23+
- llama.cpp is bundled as a managed CPU binary; Ready after that binary is installed and a user-owned GGUF is cataloged
2424
- Ollama tags stay optional compatibility rows, never treated as GGUF
25-
- Vendor CLIs own their tool loops; images on those routes are rejected until the adapter passes real image bytes
25+
- Vendor CLIs own their tool loops. Codex/Claude/Cursor receive official image bytes. Antigravity rejects images.
26+
- No chat GGUF existed on this machine; live generation against user weights was not proven

0 commit comments

Comments
 (0)