Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
43026bb
Vendor agent-core from deck
broisnees Nov 2, 2026
6d01ab1
Vendor agent-claude from deck
broisnees Nov 2, 2026
0d17daa
Vendor agent-cli from deck
broisnees Nov 2, 2026
3fa546c
Add the agent crates as dependencies
broisnees Nov 2, 2026
7466884
Let agents take extra CLI flags
broisnees Nov 2, 2026
3ee2c65
Use opencode run on OpenCode 2
broisnees Nov 2, 2026
99cf10f
Add SQL access level classifier
broisnees Nov 2, 2026
f6b4096
Enforce access levels in the MCP server
broisnees Nov 2, 2026
efff31b
Make MCP port and token helpers crate-visible
broisnees Nov 2, 2026
3f5fdd2
Fix get_database_stats on Postgres
broisnees Nov 2, 2026
bd6fb9c
Add local agent backend
broisnees Nov 2, 2026
0f8374c
Fix duplicate AI model profiles
broisnees Nov 2, 2026
244508d
Add agent API wrappers
broisnees Nov 2, 2026
06d4f90
Add local agent helpers
broisnees Nov 2, 2026
b132545
Add agent model profiles
broisnees Nov 2, 2026
09bd648
Add shared agent session
broisnees Nov 2, 2026
dd0e589
Rebuild the model picker
broisnees Nov 2, 2026
959bf3c
Hide agent profiles in Manage models
broisnees Nov 2, 2026
b0e203d
Add effort and access chips
broisnees Nov 2, 2026
177fb34
Skip small talk in chat titles
broisnees Nov 2, 2026
c9f9401
Compact tables in AI replies
broisnees Nov 2, 2026
788ee91
Title chats from the first real message
broisnees Nov 2, 2026
c8b181d
Run agent turns in the AI chat
broisnees Nov 2, 2026
a3b167a
Queue messages while the AI answers
broisnees Nov 2, 2026
3598317
Tidy the AI composer and spinner
broisnees Nov 2, 2026
111ab0d
Rebuild the empty chat screen
broisnees Nov 2, 2026
695d1de
Make the chat list resizable
broisnees Nov 2, 2026
d7d9df2
Toggle the chat list with Ctrl+B
broisnees Nov 2, 2026
fd15c69
Restyle user messages in the AI chat
broisnees Nov 2, 2026
1ae2db0
Float the AI chat header buttons
broisnees Nov 2, 2026
eb78a00
Anchor each turn at the top
broisnees Nov 2, 2026
775c3dd
Fill the box on slash command pick
broisnees Nov 2, 2026
efdff96
Show full slash command names
broisnees Nov 2, 2026
7e6c34e
Make table chips neutral
broisnees Nov 2, 2026
0c39128
Restyle the sidebar messages and spinner
broisnees Nov 2, 2026
d488c41
Run agent turns in the sidebar
broisnees Nov 2, 2026
b02a8f9
Drop the dialog scroll lock
broisnees Nov 2, 2026
4212456
Fade the Settings dialog in
broisnees Nov 2, 2026
4303efb
Fix copy buttons on every JSON line
broisnees Nov 2, 2026
8b13275
Set the JSON row panel apart from the grid
broisnees Nov 2, 2026
b395997
Fix rows showing through the Related header
broisnees Nov 2, 2026
d4b43a4
Fix gap after the toolbar row range
broisnees Nov 2, 2026
e165f17
Tidy the status bar
broisnees Nov 2, 2026
9b80ed5
Rename About Stroke to About and license
broisnees Nov 2, 2026
92e3442
Add changeset
broisnees Nov 2, 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
23 changes: 23 additions & 0 deletions .changeset/local-ai-agents.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
### New Features
- Claude Code, Codex and OpenCode run as AI models when their CLI is installed, using Stroke's database tools only
- Four access levels for agents: read only, read & write, modify schema, dangerous
- Effort and access chips in the AI composer
- Messages sent while the AI is answering are queued
- Ctrl+B toggles the AI chat list, and the list is resizable

### Bug Fixes
- The same AI model no longer shows up twice in the picker
- The sidebar assistant works with local agent models
- get_database_stats works on Postgres
- Rows no longer show through the Related panel's header
- The JSON copy button shows only on the hovered line
- No gap after the row range in the table toolbar

### Changes
- New model picker with provider tabs, search and favourites
- Rebuilt AI chat: tool steps fold into one "Worked for" line, each answer anchors under its message, header buttons float
- Chat titles skip greetings like "hi"
- Slash commands fill the sidebar box instead of sending
- Settings fades in, and dialogs no longer lock page scroll
- Clearer status bar
- "About Stroke" is now "About and license"
60 changes: 60 additions & 0 deletions src-tauri/Cargo.lock

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

4 changes: 4 additions & 0 deletions src-tauri/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -34,6 +34,10 @@ tower-http = { version = "0.5", features = ["cors"] }
sqlx = { version = "0.8", features = ["runtime-tokio", "tls-rustls", "postgres", "sqlite", "mysql", "json", "chrono", "uuid", "rust_decimal"] }
reqwest = { version = "0.12", default-features = false, features = ["json", "rustls-tls-webpki-roots", "stream"] }
futures = "0.3"
# Local agent CLIs (Claude Code, Codex, OpenCode), vendored from deck.
agent-core = { path = "crates/agent-core" }
agent-claude = { path = "crates/agent-claude" }
agent-cli = { path = "crates/agent-cli" }
sysinfo = { version = "0.33", default-features = false, features = ["system"] }
libc = "0.2"
# Global allocator. glibc malloc keeps one ~64MB arena per worker thread and
Expand Down
19 changes: 19 additions & 0 deletions src-tauri/crates/agent-claude/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
# Vendored from deck (github.com/broisnees/deck, crates/agent-claude).
[package]
name = "agent-claude"
version = "0.1.0"
edition = "2021"
publish = false

[dependencies]
agent-core = { path = "../agent-core" }
anyhow = "1"
async-trait = "0.1"
futures = "0.3"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
smol_str = { version = "0.3", features = ["serde"] }
tokio = { version = "1", features = ["rt-multi-thread", "macros", "process", "io-util", "sync", "time", "fs"] }
tracing = "0.1"
parking_lot = "0.12"
base64 = "0.22"
Loading
Loading