Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
58 commits
Select commit Hold shift + click to select a range
551e38c
Merge pull request #148 from benfavre/dev
pedrokarim Aug 28, 2026
4c4d061
feat(workspaces): add exact attention navigation
benfavre Aug 28, 2026
df0294a
Merge pull request #149 from benfavre/fix/attention-board-navigation-128
benfavre Aug 28, 2026
a323a30
fix(security): restore maintained dependency paths
benfavre Aug 28, 2026
1f29294
fix(tray): replace GTK backend with native GPUI
benfavre Aug 28, 2026
7280938
fix: require a visible Windows tray icon
benfavre Aug 28, 2026
2e60eda
fix(windows): restore tray after Explorer restart
benfavre Aug 28, 2026
f94c216
ci(windows): rely on native tray icon test
benfavre Aug 28, 2026
9222697
ci(windows): require native tray test discovery
benfavre Aug 28, 2026
62fbae6
Merge pull request #151 from benfavre/fix/native-linux-tray-125
benfavre Aug 28, 2026
f7b749a
fix(security): upgrade notify dependency
benfavre Aug 28, 2026
4c1e06b
Merge pull request #152 from benfavre/fix/rustsec-notify-125
benfavre Aug 28, 2026
c70a558
fix(core): add authoritative platform attention model
benfavre Aug 28, 2026
48d66e5
fix(attention): harden resync and local custody
benfavre Aug 28, 2026
acce360
chore(deps): repin Automonique attention contract
benfavre Aug 28, 2026
2315e9a
Merge pull request #153 from benfavre/fix/platform-attention-core-128
benfavre Aug 28, 2026
4c737eb
fix(security): upgrade stacksafe dependency
benfavre Aug 28, 2026
f83ee56
Merge pull request #154 from benfavre/fix/stacksafe-rustsec-125
benfavre Aug 28, 2026
fe0459f
feat(review): add confirmed rerun custody
benfavre Aug 28, 2026
7124281
fix(ui): box the grown review action outcome
benfavre Aug 29, 2026
0cfb227
Merge pull request #155 from benfavre/fix/platform-review-custody-128
benfavre Aug 29, 2026
d5ec35d
feat(attention): activate authoritative board safely
benfavre Aug 28, 2026
907f66c
fix(attention): harden native activation custody
benfavre Aug 28, 2026
7d392a0
fix(attention): defer reads until visible activation
benfavre Aug 28, 2026
c15c456
docs(testing): renumber activation IDs above the custody lane
benfavre Aug 29, 2026
531e58e
Merge pull request #156 from benfavre/fix/platform-attention-activati…
benfavre Aug 29, 2026
b79da8f
test(attention): replay the shared succession corpus against the board
benfavre Aug 29, 2026
b72cb5a
Merge pull request #157 from benfavre/fix/attention-conformance-repla…
benfavre Aug 29, 2026
7e520d4
docs(security): record why the six baseline advisories cannot clear yet
benfavre Aug 29, 2026
df87905
feat(review): project one combined worktree with bounded safe previews
benfavre Aug 29, 2026
1ae36c1
Merge pull request #158 from benfavre/fix/rustsec-baseline-migrations…
benfavre Aug 29, 2026
c177829
Merge pull request #159 from benfavre/fix/review-staging-previews-128
benfavre Aug 29, 2026
8025291
feat(attention): order attention as a chronological activity
benfavre Aug 29, 2026
4cc77d5
feat(review): persist anchored notes and fence every review mutation
benfavre Aug 29, 2026
5856321
Merge pull request #160 from benfavre/fix/review-comments-activity-128
benfavre Aug 29, 2026
2446a93
chore(platform): move the protocol pin onto the review capability con…
benfavre Aug 29, 2026
e7c94a8
feat(review): send selected review comments to the authorized session
benfavre Aug 29, 2026
0acc6b3
docs(testing): record the capability-fenced batch delivery lane
benfavre Aug 29, 2026
350b802
Merge pull request #161 from benfavre/feat/review-batch-send-128
benfavre Aug 29, 2026
e8ddbb7
Bump automonique to 524073c for the git staging capability
benfavre Aug 29, 2026
39b76a7
Offer a staging control only where the server proved a slot
benfavre Aug 29, 2026
d8cb007
Record the staging slice in SDUC-495 and the SDTEST inventories
benfavre Aug 29, 2026
85e7d5e
Keep the staging controls beside the badge that names them
benfavre Aug 29, 2026
e6bb7ed
Merge pull request #162 from benfavre/feat/review-staging-controls-128
benfavre Aug 29, 2026
1ce4f21
Re-test the six baseline advisories against live upstreams
benfavre Aug 30, 2026
ea6de52
Merge pull request #164 from benfavre/fix/security-baseline-125-rever…
benfavre Aug 30, 2026
1e9a8b5
Record why hunk staging cannot be fenced, at the site that would wire it
benfavre Aug 30, 2026
6a4d02e
Merge pull request #165 from benfavre/fix/163-hunk-staging-identity
benfavre Aug 30, 2026
ebb2a74
feat(agents): build the worktree cockpit
benfavre Sep 1, 2026
19a94bf
fix(ci): remove unused provider pane helper
benfavre Sep 1, 2026
ee2ef34
Merge pull request #166 from benfavre/fix/agent-workspace-cockpit
benfavre Sep 1, 2026
df44de1
v0.9.5: agent workspace cockpit
benfavre Sep 1, 2026
fb46a73
fix(agents): restore remote cockpit integration
benfavre Sep 1, 2026
643a4e4
Merge pull request #167 from benfavre/fix/remote-agent-cockpit-integr…
benfavre Sep 1, 2026
4c75a6a
v0.9.6: restore remote agent cockpit integration
benfavre Sep 1, 2026
9660d1b
feat(marketing): add responsive user-support promo
pedrokarim Aug 27, 2026
ae00de3
fix(marketing): center flow icons
pedrokarim Sep 7, 2026
4ed1a91
Merge pull request #168 from benfavre/fix/marketing-user-support-video
pedrokarim Sep 7, 2026
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
60 changes: 34 additions & 26 deletions .agents/agent-console.md
Original file line number Diff line number Diff line change
@@ -1,28 +1,36 @@
# Agent console presentation
# Agent cockpit presentation

The Dev Agents surface combines provider JSONL control records with a Markdown
conversation. Keep those two layers visually and semantically separate.
The Dev Agents surface is a worktree-first cockpit: project/worktree
navigation, named concurrent sessions, a compact tab strip, and one ordered
conversation/execution timeline.

- Claude `type="system"` is not synonymous with Ready. Only
`subtype="init"` becomes `AgentStreamEvent::Ready`; hook and status records
must not flood the visible trace.
- Consecutive identical activity labels collapse. Keep technical activity out
of the transcript flow: a round header button opens a bounded popover with
the twelve newest labels, so progress never pushes the conversation away.
- The transcript is chat prose, not a document. Render it with
`Markdown::compact()` to retain the shared 8 px conversation rhythm used by
Support, Monique, and the assistant.
- Bound the Markdown renderer to the transcript column with a zero minimum
width and clipped overflow. Its horizontal-rule child is absolutely sized
and otherwise escapes the 860 px conversation measure on wide windows.
- Keep the transcript/activity column as the single scroll owner and the
composer as its non-shrinking sibling. Do not nest another transcript scroll
or place the composer inside it.
- Keep the prompt on the shared `Composer`; its frame inherits the same theme
radius, border, shadow, hover and focus tokens as ShellDeck `Input`. Do not
add Agent-only card chrome around it.
- Treat provider, target, permissions, and workdir as one execution context.
The first three use adabraka `Select::context_label` inside one divided
frame; workdir is the editable final row. The model override belongs in the
Composer footer because it applies to the next message, and must remain a
free-form CLI value rather than a hard-coded shortlist.
- Use `shelldeck_core::agent_session::AgentSessionCollection` as the canonical
session, status, attention, message, and trace model. Keep only GPUI draft
state and run-to-session routing in the view.
- Route provider events by run UUID. The compatibility singleton event method
is insufficient for parallel agents and background-session attention.
- Render every structured `AgentTraceKind` inline with conversation messages:
commands, file reads, diffs, tests, tools, and fallback activity. Do not hide
technical work in a popover.
- Render agent prose with `Markdown::compact()` and technical details with the
shared monospace style. Bound both through the core session/runtime model.
- Keep provider, status, unread attention, and identity visible in navigator
rows and tabs. Selecting an actually visible session marks it read and
restores its context and composer draft; hidden selection is navigation
identity only.
- Treat provider, target, permissions, workdir, and model as one execution
context, collapsed into the compact session header by default.
- Change execution context through the core context setter so an opaque resume
token never crosses target, permission, workdir, model, or provider changes.
- Lock execution-context controls once Workspace binds a session to a checkout;
worktree navigation creates or selects a separately bound session instead of
mutating the context underneath an existing workspace tab.
- A catalog-bound local run enters its retained Workspace cockpit. Keep its
agent tabs in one pane, create the authorized checkout file pane alongside
it, and let the typed split controls expose the retained terminal without
duplicating one AgentConsole host for different session bindings.
- Mutating access always requires confirmation. Running sessions cannot be
removed, and concurrency limits remain enforced by the core model/runtime.
- Keep the timeline as the single scroll owner and the composer as its
non-shrinking sibling. Do not nest a transcript scroll or put the composer
inside it.
18 changes: 4 additions & 14 deletions .cargo/audit.toml
Original file line number Diff line number Diff line change
Expand Up @@ -5,21 +5,11 @@
ignore = [
# GPUI / Linux platform stack. Track removal in
# docs/security-advisory-baseline.md instead of one bot issue per crate.
"RUSTSEC-2024-0370", # proc-macro-error through GTK3 macros
"RUSTSEC-2024-0384", # instant through GPUI's futures-lite 1 stack
"RUSTSEC-2024-0412", # GTK3 bindings required by the Linux tray
"RUSTSEC-2024-0413", # GTK3 bindings required by the Linux tray
"RUSTSEC-2024-0415", # GTK3 bindings required by the Linux tray
"RUSTSEC-2024-0416", # GTK3 bindings required by the Linux tray
"RUSTSEC-2024-0418", # GTK3 bindings required by the Linux tray
"RUSTSEC-2024-0419", # GTK3 bindings required by the Linux tray
"RUSTSEC-2024-0420", # GTK3 bindings required by the Linux tray
"RUSTSEC-2024-0429", # glib VariantStrIter path is unused by ShellDeck
"RUSTSEC-2024-0436", # paste through image codecs
"RUSTSEC-2025-0052", # async-std through GPUI's HTTP/tar stack
"RUSTSEC-2024-0384", # instant through futures-lite 1 in adabraka_util
"RUSTSEC-2024-0436", # paste through metal, pulp/exr and rav1e/ravif
"RUSTSEC-2025-0052", # async-std through async-tar 0.5 in adabraka_http_client
"RUSTSEC-2025-0134", # rustls-pemfile through zed-reqwest
"RUSTSEC-2026-0173", # proc-macro-error2 through GPUI's stacksafe
"RUSTSEC-2026-0192", # ttf-parser through cosmic-text/fontdb and lopdf
"RUSTSEC-2026-0192", # ttf-parser through cosmic-text/fontdb; pop-os/cosmic-text#526

# Existing protocol/backend constraints.
"RUSTSEC-2023-0071", # rsa: no patched release; transitive through russh
Expand Down
39 changes: 33 additions & 6 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -37,9 +37,7 @@ jobs:
libxcb1-dev \
libxkbcommon-x11-dev \
libdbus-1-dev \
libgtk-3-dev \
libxdo-dev \
libayatana-appindicator3-dev
libxdo-dev

- name: Install Rust toolchain
# Pinned to match rust-toolchain.toml — a floating nightly drops the
Expand Down Expand Up @@ -71,7 +69,7 @@ jobs:
- name: Test portable-pty Unix cwd authority regression
shell: bash
run: |
crate_dir="$(find "${CARGO_HOME:-$HOME/.cargo}/registry/src" -maxdepth 2 -type d -name 'portable-pty-0.8.1' | head -1)"
crate_dir="$(find "${CARGO_HOME:-$HOME/.cargo}/registry/src" -maxdepth 2 -type d -name 'portable-pty-0.9.0' | head -1)"
test -n "$crate_dir"
grep -F -q '// SDTEST-1745' "$crate_dir/src/cmdbuilder.rs"
cargo update --manifest-path "$crate_dir/Cargo.toml"
Expand Down Expand Up @@ -130,6 +128,12 @@ jobs:
shell: bash
run: ./scripts/apply-crate-patches.sh

# The changed AppKit/GPUI tray path lives outside shelldeck-core. Keep a
# native macOS compile gate for the actual application binary.
- name: Check native macOS tray integration
if: runner.os == 'macOS'
run: cargo check -p shelldeck --bin shelldeck

# ShellDeck's own PTY boundary must reject a vanished authorized cwd on
# every supported OS before any native PTY or process side effect.
- name: Test terminal cwd authority boundary
Expand All @@ -139,7 +143,7 @@ jobs:
if: runner.os != 'Windows'
shell: bash
run: |
crate_dir="$(find "${CARGO_HOME:-$HOME/.cargo}/registry/src" -maxdepth 2 -type d -name 'portable-pty-0.8.1' | head -1)"
crate_dir="$(find "${CARGO_HOME:-$HOME/.cargo}/registry/src" -maxdepth 2 -type d -name 'portable-pty-0.9.0' | head -1)"
test -n "$crate_dir"
grep -F -q '// SDTEST-1745' "$crate_dir/src/cmdbuilder.rs"
cargo update --manifest-path "$crate_dir/Cargo.toml"
Expand All @@ -155,12 +159,35 @@ jobs:
if: runner.os == 'Windows'
shell: bash
run: |
crate_dir="$(find "${CARGO_HOME:-$HOME/.cargo}/registry/src" -maxdepth 2 -type d -name 'portable-pty-0.8.1' | head -1)"
crate_dir="$(find "${CARGO_HOME:-$HOME/.cargo}/registry/src" -maxdepth 2 -type d -name 'portable-pty-0.9.0' | head -1)"
test -n "$crate_dir"
grep -F -q '// SDTEST-1744' "$crate_dir/src/cmdbuilder.rs"
cargo update --manifest-path "$crate_dir/Cargo.toml"
cargo test --manifest-path "$crate_dir/Cargo.toml" explicit_missing_cwd_is_forwarded_instead_of_falling_back_home

# SDPATCH-120 owns the ICO selector, CreateIconFromResourceEx boundary,
# and fail-closed Explorer-restart custody. Run its vendored unit tests
# explicitly because dependency tests are not part of ShellDeck's suite.
- name: Test native Windows tray integration
if: runner.os == 'Windows'
shell: bash
run: |
# Path dependencies are intentionally outside the workspace, so copy
# the vendored crate into the disposable runner temp tree to execute
# its own unit tests without broadening `cargo test --workspace`.
gpui_test_root="${RUNNER_TEMP}/shelldeck-gpui-test"
mkdir -p "$gpui_test_root/patches" "$gpui_test_root/packaging/icons"
cp -R patches/adabraka-gpui "$gpui_test_root/patches/"
cp packaging/icons/shelldeck.ico "$gpui_test_root/packaging/icons/"
cp Cargo.lock "$gpui_test_root/patches/adabraka-gpui/Cargo.lock"
native_tray_tests="$(CARGO_TARGET_DIR="${GITHUB_WORKSPACE}/target" cargo test --manifest-path "$gpui_test_root/patches/adabraka-gpui/Cargo.toml" --lib -- --list | tr -d '\r')"
grep -Fqx 'platform::windows::platform::tests::sdtest_1813_taskbar_created_message_registration_is_live: test' <<<"$native_tray_tests"
grep -Fqx 'platform::windows::tray::tests::sdtest_1813_explorer_restart_readd_is_authoritative_and_retains_icon: test' <<<"$native_tray_tests"
grep -Fqx 'platform::windows::tray::tests::sdtest_1814_ico_resource_selects_closest_then_highest_depth: test' <<<"$native_tray_tests"
grep -Fqx 'platform::windows::tray::tests::sdtest_1815_shell_deck_ico_creates_a_native_hicon: test' <<<"$native_tray_tests"
CARGO_TARGET_DIR="${GITHUB_WORKSPACE}/target" \
cargo test --manifest-path "$gpui_test_root/patches/adabraka-gpui/Cargo.toml" --lib sdtest_181

- name: Test shelldeck-core
run: cargo test -p shelldeck-core

Expand Down
2 changes: 0 additions & 2 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -108,9 +108,7 @@ jobs:
libxcb1-dev \
libxkbcommon-x11-dev \
libdbus-1-dev \
libgtk-3-dev \
libxdo-dev \
libayatana-appindicator3-dev \
libfuse2

# macOS dependencies
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/security.yml
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ jobs:
token: ${{ secrets.GITHUB_TOKEN }}
# Keep this in sync with .cargo/audit.toml. audit-check otherwise opens
# one scheduled issue per package occurrence, including duplicates.
ignore: "RUSTSEC-2023-0071,RUSTSEC-2024-0370,RUSTSEC-2024-0384,RUSTSEC-2024-0412,RUSTSEC-2024-0413,RUSTSEC-2024-0415,RUSTSEC-2024-0416,RUSTSEC-2024-0418,RUSTSEC-2024-0419,RUSTSEC-2024-0420,RUSTSEC-2024-0429,RUSTSEC-2024-0436,RUSTSEC-2025-0052,RUSTSEC-2025-0134,RUSTSEC-2026-0173,RUSTSEC-2026-0192"
ignore: "RUSTSEC-2023-0071,RUSTSEC-2024-0384,RUSTSEC-2024-0436,RUSTSEC-2025-0052,RUSTSEC-2025-0134,RUSTSEC-2026-0192"

dependency-policy:
name: Licenses, bans and sources
Expand Down
Loading
Loading