Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
202 commits
Select commit Hold shift + click to select a range
4d33a1f
test(reference): pin Grok provenance and compatibility inventory
Blackman99 Sep 19, 2026
dcffcc9
test(reference): close reviewed coverage and evidence gaps
Blackman99 Sep 19, 2026
bd08179
test(reference): audit hidden commands and source-only coverage
Blackman99 Sep 19, 2026
6347f67
test(reference): align security and interactive acceptance
Blackman99 Sep 19, 2026
e4c366a
fix(reference): map compatibility contracts by context
Blackman99 Sep 19, 2026
0648ed0
fix(reference): preserve functional ownership across contexts
Blackman99 Sep 19, 2026
b02d5d2
fix(reference): ground aliases and controls in functional contracts
Blackman99 Sep 19, 2026
6e36d5f
fix(reference): preserve fenced contracts and functional ownership
Blackman99 Sep 19, 2026
1b3ec53
fix(reference): cover quoted examples and control effects
Blackman99 Sep 19, 2026
2f96073
fix(reference): map functional aliases and memory subcontracts
Blackman99 Sep 19, 2026
75c9c6e
fix(reference): audit all generic config fallback ownership
Blackman99 Sep 20, 2026
744fa24
fix(reference): retain literal env names and goal routing precedence
Blackman99 Sep 20, 2026
d9f5d3c
fix(reference): preserve non-shell literal environment names
Blackman99 Sep 20, 2026
e2bc9ba
feat(cli): add isolated offline Rust launch preview
Blackman99 Sep 20, 2026
8429206
fix(cli): reject filesystem aliases of legacy homes
Blackman99 Sep 20, 2026
baf3ef0
fix(cli): refuse ambiguous missing home aliases
Blackman99 Sep 20, 2026
7753ed0
fix(cli): reject unresolved legacy home symlinks
Blackman99 Sep 20, 2026
5452e0a
fix(cli): respect legacy Home resolver semantics
Blackman99 Sep 20, 2026
f4a32f9
fix(cli): refuse unresolved Unicode Home names
Blackman99 Sep 20, 2026
fd08b45
fix(cli): refuse firmlink aliases of legacy homes
Blackman99 Sep 20, 2026
78404b6
feat(rust): stream real dsh turns over ACP
Blackman99 Sep 20, 2026
ce1d91c
feat(rust): approve real dsh file tools with diffs
Blackman99 Sep 20, 2026
7fa807a
feat(rust): cancel live dsh turns and return to the prompt
Blackman99 Sep 20, 2026
b2280d1
fix(rust): name cancel teardown and align idle Ctrl+C help
Blackman99 Sep 20, 2026
c0a82f4
feat(rust): resume the same dsh session and refuse a second writer
Blackman99 Sep 20, 2026
dc09422
fix(rust): mark interrupted tools unknown and keep the write owner
Blackman99 Sep 20, 2026
043fcf4
feat(rust): inspectable first-run config mapped into isolated dsh set…
Blackman99 Sep 20, 2026
96981f6
fix(rust): owner-only credentials, overlay api_key, and applied inspect
Blackman99 Sep 20, 2026
3bd2cb4
fix(rust): reload on empty Enter and preserve credential records
Blackman99 Sep 20, 2026
1c46e38
feat(rust): map model backends and reasoning effort through dsh
Blackman99 Sep 20, 2026
253b737
fix(rust): verify responses/messages and stop fake usage
Blackman99 Sep 20, 2026
105f8aa
feat(rust): inspect dsh context and compact through dsh
Blackman99 Sep 20, 2026
9d4d48f
fix(rust): keep compact failure, live surface, and cancel on dsh
Blackman99 Sep 20, 2026
a0ef478
fix(rust): prove dsh auto-compact and drop scratch report
Blackman99 Sep 20, 2026
dc84ab9
fix(rust): show dsh context buckets and compacted summary text
Blackman99 Sep 20, 2026
6481b47
feat(rust): add managed policy, locked requirements, and workspace trust
Blackman99 Sep 20, 2026
da22464
fix(rust): keep untrusted project instructions out of dsh sessions
Blackman99 Sep 20, 2026
a16bc1f
feat(rust): switch fullscreen and native-history modes in process
Blackman99 Sep 20, 2026
c39cea3
fix(rust): prove same-session mode switch and native history
Blackman99 Sep 20, 2026
2793eb9
fix(rust): keep compact history and drop aborted slash drafts
Blackman99 Sep 20, 2026
7425a07
fix(rust): answer cursor queries on screen-mode quit
Blackman99 Sep 21, 2026
1d96ea1
fix(rust): wait for live session after compact purge
Blackman99 Sep 21, 2026
25a8ee4
feat(rust): fork and rewind conversations through dsh
Blackman99 Sep 20, 2026
c6a066c
fix(rust): refuse live-turn rewind and fork only on /fork
Blackman99 Sep 20, 2026
88a02f9
fix(rust): rustfmt rewind match and drop unused ACP Config kind
Blackman99 Sep 21, 2026
21ca7fd
fix(rust): store fork/rewind UI prefs in GROK_HOME config.toml
Blackman99 Sep 21, 2026
2232130
fix(rust): purge minimal native history on rewind and fork
Blackman99 Sep 21, 2026
15c639d
feat(rust): wire settings, themes, and status line
Blackman99 Sep 22, 2026
ded3837
fix(rust): apply settings live and hit-test the modal
Blackman99 Sep 22, 2026
a3237f3
feat(rust): add explicit legacy dsh config import
Blackman99 Sep 22, 2026
417306d
feat(rust): add explicit legacy dsh config import
Blackman99 Sep 22, 2026
1c77a8a
fix(rust): import the named legacy model without flattening settings
Blackman99 Sep 22, 2026
8106810
feat(rust): add isolated plugin marketplace and install lifecycle
Blackman99 Sep 22, 2026
651c0e2
fix(rust): load git marketplace catalogs and keep plugin config patch…
Blackman99 Sep 22, 2026
a06c375
test(rust): assert Ctrl+L does not open the plugins overlay
Blackman99 Sep 22, 2026
c757742
fix(rust): install each marketplace plugin and persist git update SHA
Blackman99 Sep 22, 2026
b81952b
fix(rust): refuse unpinned git plugin updates under require_sha
Blackman99 Sep 22, 2026
e11e5ec
fix(rust): bind strict marketplace allowlist to catalog and install
Blackman99 Sep 22, 2026
dde67f8
fix(rust): bind marketplace allowlists to the clone URL
Blackman99 Sep 22, 2026
7248642
fix(rust): keep GitHub marketplace path case distinct
Blackman99 Sep 22, 2026
f3bfb3b
feat(rust): add substitute login, logout, and managed setup
Blackman99 Sep 22, 2026
a9062f4
fix(rust): refuse API-key auth when an organization pin is set
Blackman99 Sep 22, 2026
0746c7a
fix(rust): reconnect dsh after slash login under an org pin
Blackman99 Sep 22, 2026
d8cafae
fix(rust): refresh expired sessions and keep dsh on settings failure
Blackman99 Sep 22, 2026
e9dc069
fix(rust): keep login and API keys usable after expired auth
Blackman99 Sep 22, 2026
44d982b
fix(rust): bind signed policy and hand identity sessions to dsh
Blackman99 Sep 22, 2026
db756a4
fix(rust): bind managed signatures without a caller team
Blackman99 Sep 22, 2026
a172ed8
feat(rust): keep feedback local until an explicit opt-in submit
Blackman99 Sep 22, 2026
a0504be
fix(rust): make privacy switches stop the matching send
Blackman99 Sep 22, 2026
f315f2f
feat(rust): enforce allow/ask/deny rules and remembered project grants
Blackman99 Sep 21, 2026
bcf2401
fix(rust): fail closed on unsplittable shell and unreadable policy
Blackman99 Sep 21, 2026
f7e28a1
fix(rust): peel wrappers and keep deny on inner shell commands
Blackman99 Sep 21, 2026
9229452
fix(rust): peel only wrapper positionals and follow symlink deny
Blackman99 Sep 21, 2026
c42fbf3
fix(rust): close brace, ANSI-C, prefix, and Claude rule bypasses
Blackman99 Sep 22, 2026
ec3dbab
fix(rust): match unquoted shell words and git write flags
Blackman99 Sep 22, 2026
8c4908e
fix(rust): deny unique git prefixes that delete or write
Blackman99 Sep 22, 2026
36050cf
fix(rust): deny path-qualified rm and quiet git and sort writes
Blackman99 Sep 22, 2026
df30cd1
fix(rust): fold command case and attached sort -o writes
Blackman99 Sep 22, 2026
77f91eb
fix(rust): deny attached git branch upstream writes
Blackman99 Sep 22, 2026
a0926da
fix(rust): peel sudo, nohup, and xargs before deny
Blackman99 Sep 23, 2026
406ff8d
fix(rust): deny prefixed rm, shell -o scripts, and bare git branch -u
Blackman99 Sep 23, 2026
4dcbef8
fix(rust): fail closed on plain parameter expansion
Blackman99 Sep 23, 2026
cdf97b5
fix(rust): fail closed on every unquoted parameter expansion
Blackman99 Sep 23, 2026
0e8e8b0
fix(rust): fail closed on pathname globs and git branch --track
Blackman99 Sep 23, 2026
5ceee50
fix(rust): keep unsaved drafts across prompt mode switches
Blackman99 Sep 23, 2026
9b79da4
fix(rust): document slash stash and keep the draft untyped
Blackman99 Sep 23, 2026
8d20254
fix(rust): record a submitted prompt once
Blackman99 Sep 23, 2026
660c8e2
fix(rust): keep a refused prompt draft
Blackman99 Sep 23, 2026
f2e2c5d
fix(rust): keep unavailable status on a narrow screen
Blackman99 Sep 23, 2026
4aace88
feat(rust): restore reading position, search, and mouse selection
Blackman99 Sep 23, 2026
89141ee
feat(rust): render dsh markdown, tool cards, and diffs
Blackman99 Sep 23, 2026
efbd6ca
fix(rust): clear full content and keep markdown colors
Blackman99 Sep 23, 2026
cceac25
fix(rust): keep generic and comparison brackets in pretty markdown
Blackman99 Sep 23, 2026
065170b
fix(rust): paint full content once
Blackman99 Sep 23, 2026
dd20e19
feat(rust): dictate into the draft through a substitute speech service
Blackman99 Sep 23, 2026
71c8deb
fix(rust): restore the parked draft when Esc leaves a recording
Blackman99 Sep 23, 2026
9741f70
feat(rust): search, rename, and resume sessions from the dashboard
Blackman99 Sep 23, 2026
2272ffb
fix(rust): keep the write owner when a session switch fails
Blackman99 Sep 23, 2026
7a69068
fix(rust): keep the live session when a same-directory resume is refused
Blackman99 Sep 23, 2026
6b868aa
fix(rust): resume before closing a same-directory session
Blackman99 Sep 24, 2026
c837d73
feat(rust): attach workspace files through the prompt
Blackman99 Sep 23, 2026
25fe2c0
fix(rust): keep single-line mentions, nested ignores, and pasted prose
Blackman99 Sep 23, 2026
4316d41
fix(rust): hide globstar logs and restore one queued chip
Blackman99 Sep 23, 2026
548a033
fix(rust): hide slash-anchored gitignore paths
Blackman99 Sep 23, 2026
b8dffe0
fix(rust): refuse a pasted gitignored path
Blackman99 Sep 24, 2026
27cc9a5
style(rust): format the pasted gitignore attachment fixture
Blackman99 Sep 24, 2026
b9d14f9
feat(rust): load trusted rules, skills, and commands into dsh
Blackman99 Sep 23, 2026
e178b3a
fix(rust): match frozen skill priority, commands, and session rules
Blackman99 Sep 23, 2026
b5bb800
fix(rust): forward vendor skill scan overrides
Blackman99 Sep 23, 2026
56b7832
fix(rust): qualify login skills and stop the walk at five
Blackman99 Sep 24, 2026
0d60ca1
fix(rust): match the frozen skill walk depth
Blackman99 Sep 24, 2026
402c8e4
fix(rust): cap configured skill paths at the frozen walk depth
Blackman99 Sep 24, 2026
3607f5e
fix(rust): start configured skill children at depth 1
Blackman99 Sep 24, 2026
a5e7d89
fix(rust): keep packed inspect JSON assets when the native binary is …
Blackman99 Sep 24, 2026
8ccef15
fix(rust): paint resumed turn markers in fullscreen
Blackman99 Sep 24, 2026
43d67ea
feat(rust): export, share, and delete one selected session
Blackman99 Sep 24, 2026
facf489
fix(rust): export live dsh sessions and disarm delete on move
Blackman99 Sep 24, 2026
6e07276
fix(rust): refuse session deletion until dsh exposes it
Blackman99 Sep 24, 2026
c7c4fd5
fix(rust): keep session export inside the real sessions tree
Blackman99 Sep 24, 2026
9dac279
fix(rust): share over HTTPS with the configured extra CA
Blackman99 Sep 24, 2026
f7515f9
feat(rust): integrate scoped memory and retain configured session routes
Blackman99 Sep 24, 2026
c232afa
feat(rust): enforce filesystem sandbox profiles through dsh
Blackman99 Sep 24, 2026
a50487d
feat(rust): integrate image inputs with scoped session state
Blackman99 Sep 24, 2026
1fc242c
feat(rust): integrate configured web tools with cancellable requests
Blackman99 Sep 24, 2026
2d835e5
fix(rust): pin the preview GROK_HOME to the isolated Home again
Blackman99 Sep 24, 2026
b2c0bd7
fix(rust): keep image drafts in the running process
Blackman99 Sep 24, 2026
73843bb
fix(rust): say Windows image paste is unavailable and keep typed imag…
Blackman99 Sep 24, 2026
b442cab
fix(rust): wrap rules once and leave image blocks alone
Blackman99 Sep 24, 2026
d4cefee
fix(rust): keep the live memory toggle through an empty /remember
Blackman99 Sep 24, 2026
7d4011a
fix(rust): stop claiming a late memory toggle survives /new
Blackman99 Sep 24, 2026
800905b
fix(rust): keep the late memory close hint honest
Blackman99 Sep 24, 2026
5414c62
feat(rust): run one plain prompt through released dsh
Blackman99 Sep 24, 2026
0e4a63f
fix(rust): apply the plain tool mask before the first request
Blackman99 Sep 24, 2026
7ef97bf
fix(rust): keep --verbatim user text and refuse typed agent filters
Blackman99 Sep 24, 2026
80f2ba9
fix(rust): run integrated flags in plain prompts and close Agent filt…
Blackman99 Sep 24, 2026
0534479
fix(rust): keep plain rules, drop the turn cap, and resolve --prompt-…
Blackman99 Sep 24, 2026
4b95a55
fix(rust): name completions when refusing --leader-socket
Blackman99 Sep 24, 2026
1c42be3
fix(rust): keep one prompt-wrap path after the plain-mode merge
Blackman99 Sep 24, 2026
5ada614
fix(rust): restore plain-mode flags in the long help
Blackman99 Sep 24, 2026
42992a1
fix(rust): enforce sandbox denies at resolved paths and run dsh bash …
Blackman99 Sep 24, 2026
6769eeb
fix(rust): pin deny-glob prefixes against rename and prove no launchd…
Blackman99 Sep 24, 2026
4947ee5
fix(rust): keep inspect diagnostics when a sandbox profile is set
Blackman99 Sep 24, 2026
39232a5
fix(rust): pin deny-glob tail directories against rename
Blackman99 Sep 24, 2026
0117e5f
fix(rust): stop a workspace deny glob from pinning /tmp
Blackman99 Sep 24, 2026
07635a0
fix(rust): keep inspect diagnostics without dropping --cwd
Blackman99 Sep 24, 2026
dcfa48c
fix(rust): wrap rules once after the plain-mode merge
Blackman99 Sep 24, 2026
bdb480c
feat(rust): add a keyless SearXNG web search protocol
Blackman99 Sep 24, 2026
a0c66f5
feat(rust): enforce sandbox network deny and shell environment filtering
Blackman99 Sep 24, 2026
a3904d4
feat(rust): print headless JSON without inventing tools or spend
Blackman99 Sep 24, 2026
590f9bf
fix(rust): report a rejected approval and omit an invented partial bill
Blackman99 Sep 24, 2026
edebbd8
feat(rust): serve editor ACP sessions through dsh
Blackman99 Sep 24, 2026
2d37287
feat(rust): run Grok command hooks on the dsh lifecycle
Blackman99 Sep 24, 2026
993e570
feat(rust): show dsh bash output, exit code, and cancellation
Blackman99 Sep 24, 2026
ec9d6ae
fix(rust): apply the shell environment policy to the dsh process
Blackman99 Sep 24, 2026
d60b8de
feat(rust): filter denied paths out of dsh search results
Blackman99 Sep 24, 2026
091da92
fix(rust): keep going to the shell search after a denied root
Blackman99 Sep 24, 2026
6e717a4
feat(rust): share ACP sessions across clients with agent serve and le…
Blackman99 Sep 24, 2026
7f927ee
feat(rust): run typed dsh subagents with a task view
Blackman99 Sep 24, 2026
e2b56a8
feat(rust): queue, send-now, steer, and /btw side questions
Blackman99 Sep 24, 2026
1f7de23
feat(rust): discover local MCP servers and call their tools through dsh
Blackman99 Sep 25, 2026
7b96914
feat(rust): isolate sessions and subagents in git worktrees
Blackman99 Sep 25, 2026
452a09d
feat(rust): plan mode, question card, and todos through dsh (#179)
Blackman99 Sep 25, 2026
5866e2a
feat(rust): plugin content enable/disable and extension view (#166)
Blackman99 Sep 25, 2026
1b03085
feat(rust): run Rhai workflows as dsh subagents
Blackman99 Sep 25, 2026
16aa77a
feat(rust): background commands and completion wake through dsh jobs
Blackman99 Sep 25, 2026
ede08cc
feat(rust): workflow parallelism, budget and output contracts (#182)
Blackman99 Sep 25, 2026
d61436c
feat(rust): optional Ship extension with the wayfinder phase through …
Blackman99 Sep 25, 2026
a06632d
feat(rust): scheduled prompts with independent fires (#177)
Blackman99 Sep 25, 2026
9833087
feat(rust): background workflow runs with /workflow view, pause, resu…
Blackman99 Sep 25, 2026
92cbe9b
feat(rust): goal rounds with verified completion and stop conditions …
Blackman99 Sep 25, 2026
ce09b16
feat(rust): saved project and personal workflow catalog (ticket 52 / …
Blackman99 Sep 25, 2026
338e9c7
feat(rust): saved scheduled loops across restarts with owner fencing …
Blackman99 Sep 25, 2026
6efa5ed
feat(rust): plugin workflow catalog contributions (ticket 73 / #205)
Blackman99 Sep 25, 2026
14edaca
feat(rust): remote workspace over SSH with reattach and honest restar…
Blackman99 Sep 25, 2026
ab67660
feat(rust): monitors with event wakes through dsh jobs (#176)
Blackman99 Sep 25, 2026
9bd0449
feat(rust): clone with git as the Grove substitute, and the Grove wor…
Blackman99 Sep 25, 2026
5b300a8
feat(rust): built-in deep-research workflow (ticket 74 / #206)
Blackman99 Sep 25, 2026
bced290
feat(rust): organization identity for remote workspaces with a deploy…
Blackman99 Sep 25, 2026
e02467f
feat(rust): subagent messages and resume_from continuation (#173)
Blackman99 Sep 25, 2026
e896d31
feat(rust): memory capture, Dream consolidation and diagnostics (tick…
Blackman99 Sep 25, 2026
493c0e2
feat(ship): serve the live Ship graph to a local browser, consistent …
Blackman99 Sep 25, 2026
99ebc6a
feat(rust): mount plugin MCP servers through the shared MCP path (#204)
Blackman99 Sep 25, 2026
5f48970
feat(rust): session usage and cost accounting across surfaces (ticket…
Blackman99 Sep 25, 2026
3f072be
chore: drop committed scripts/__pycache__ and ignore __pycache__/
Blackman99 Sep 25, 2026
287ee62
feat(rust): copy legacy sessions into the isolated Home with provenan…
Blackman99 Sep 25, 2026
7ba4372
feat(ship): run the whole /ship flow through the Rust Ship extension …
Blackman99 Sep 25, 2026
c59e676
feat(rust): clipboard delivery, terminal doctor, wrap, and notificati…
Blackman99 Sep 25, 2026
cbcbfcf
feat(rust): verified prebuilt install, update and rollback for the Ru…
Blackman99 Sep 25, 2026
33c1699
feat(rust): remote MCP servers with OAuth sign-in, elicitation, and m…
Blackman99 Sep 25, 2026
022a417
feat(rust): image generation and editing services (ticket 55 / #187)
Blackman99 Sep 26, 2026
95070ba
feat(rust): video generation and media job states (ticket 56 / #188)
Blackman99 Sep 26, 2026
9b6eb6c
fix(rust): memory follow-ups from the #186 real-model check (#215 #21…
Blackman99 Sep 26, 2026
22f6bb8
fix(rust): title sessions by the typed prompt, not injected memory (#…
Blackman99 Sep 26, 2026
490a12f
fix(rust): deep-research web tools from config, partial notice, headl…
Blackman99 Sep 26, 2026
e0d31bf
feat(rust): ask a subagent's approval in the main session (#220)
Blackman99 Sep 27, 2026
412741e
feat(rust): macOS prebuilt install, update and rollback (#198)
Blackman99 Sep 28, 2026
a0281ca
feat(rust): Linux prebuilt install and first-phase platform run (#199)
Blackman99 Sep 28, 2026
664781c
feat(rust): Windows prebuilt and native console run (#200)
Blackman99 Sep 28, 2026
9bdaf41
fix(rust): macOS interaction performance against the frozen reference…
Blackman99 Sep 28, 2026
596d5af
fix(rust): three-platform capability matrix (#201)
Blackman99 Sep 28, 2026
d90fc62
docs(rewrite): record Kara-accepted #202 perf gaps
Blackman99 Sep 28, 2026
b78e28d
fix(rust): concurrency and long-run resource stress against the froze…
Blackman99 Sep 29, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 6 additions & 0 deletions .changeset/child-approvals-main-session.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

`codsh --rust`: an approval request from a subagent or workflow child (for example a deep-research researcher's `web_fetch` in the default ask mode) is now asked in the main interactive session instead of being refused. The status line names the workflow or subagent, the tool, and the target; `y` allows once, `a` remembers it like a main-session grant, `n` returns the refusal to the child. Requests queue, cancelled children close theirs, and headless runs keep the refusal (#220).
6 changes: 6 additions & 0 deletions .changeset/isolated-rust-launch-preview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Add an opt-in `codsh --rust` launch preview beside the unchanged legacy client. Locally packed native candidates reuse licensed upstream Rust welcome/input components with an isolated dsh Home/Profile, offline startup, explicit unavailable-execution feedback, and terminal cleanup. Include source/dependency notices and installed-product PTY verification. Refuse filesystem-resolved legacy Home aliases and ambiguous case-only overlaps with initially absent Homes before any writes; refuse unresolved symlinks in explicit/default legacy Homes, while retaining valid separate legacy links. Interpret `DSH_HOME` with released dsh's blank/tilde/lexical-normalization rules. Preserve literal `GROK_HOME` and conservatively refuse every parent-traversal (`..`) component, including separate Homes, instead of guessing symlink traversal. Protect default Homes even with overrides. Refuse any unresolved non-ASCII Home component before writes instead of approximating Unicode filesystem identity, including separate missing names; retain native resolution for existing Unicode directories and missing ASCII children beneath them. Compare device/inode ancestry with missing suffixes anchored to existing directories so firmlink aliases cannot evade isolation through different realpath strings; retain separate aliased Homes and fail closed on unavailable directory identity. Include installed-product path-matrix regressions and separate missing/resolvable-Home controls. This does not enable the dsh adapter, publish native releases, or change the default client.
6 changes: 6 additions & 0 deletions .changeset/memory-remember-session-toggle-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

Fix `codsh --rust`: an empty `/remember` (the two-step draft prompt) no longer resets this session's `t` memory toggle back to `config.toml`'s value on save or cancel. Turning memory on with `t` after this session's first prompt was already sent now says it is too late for any prompt here. `/new` drops that toggle and follows `config.toml` again, so the notice does not claim the change carries into the next new session.
6 changes: 6 additions & 0 deletions .changeset/rust-background-commands.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

`codsh --rust` runs background shell commands through dsh jobs. Ctrl+B moves the running command to the background, a command past `[toolset.bash] foreground_block_budget_ms` moves on its own (or is killed at its timeout with `auto_background_on_timeout = false`), and send-now moves a running command instead of killing it. The status line counts running commands, a message interrupts a blocking `job_output` wait, `/tasks` (Ctrl+G) shows command output and stops one with `x`, and a finished command wakes an idle session with a `◎ Task completed` turn. `/new`, session switches, and quit stop the session's commands; a resumed history never shows them as running. Plain `-p` and editor ACP are unchanged.
19 changes: 19 additions & 0 deletions .changeset/rust-capability-matrix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

Three-platform capability matrix for the installed Rust client (#201):
`scripts/rust-capability-matrix.py` and the `capability-matrix` job record OS /
terminal versions and the real effect of keys, mouse, shell, cancel, screen
modes, terminal restore, the real clipboard (macOS pasteboard, X11 `xclip`,
Windows `clip.exe` UTF-16LE), voice doctor without fixtures, sandbox profiles,
loopback SSH, real tmux, and the Windows ConPTY harness. Missing devices and
refused features are `refused` / `unavailable`, never a silent pass. Related:
`docs/rewrite/platform-capabilities.md`, `scripts/rust-clipboard-pty-test.py`,
`scripts/rust-tmux-pty-test.py`. Windows `/copy` sends UTF-16LE to `clip.exe`
so CJK survives; an unreachable Linux display is no longer reported as an
empty clipboard. macOS `/copy` forces a UTF-8 locale for `pbcopy` so CJK is not
turned into MacRoman, and a closed terminal window now ends the client on
macOS too (stdin readable with nothing pending counts as a hangup when no
POLLHUP arrives).
6 changes: 6 additions & 0 deletions .changeset/rust-clone-grove-substitute.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

`codsh --rust clone` clones with plain git in place of the reference Grove lazy clone, behind the reference gates (`GROK_CLONE`, `GROK_GROVE` / `[cli] grove`, Grove's `[clone] enabled`): depth 1 of one branch with blobs on demand, `--full-history`, `--cone`, git credentials or `GROVE_AUTH_TOKEN` (never `codsh --rust login`), a missing or empty target only, nothing left behind after a failure or Ctrl-C, and `--remote ssh://…` to clone on another host. A Grove worktree request (`GROK_WORKTREE_TYPE`, `[cli] grove_worktree`, `GROK_GROVE`) is recorded and falls back to a plain git worktree.
6 changes: 6 additions & 0 deletions .changeset/rust-deep-research-fixes.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

`codsh --rust`: web search and fetch registration now follows the effective settings (`config.toml` with its env overrides, requirements and `--disable-web-search`) instead of launcher environment variables, so a setup configured only in `config.toml` gives the session, `/deep-research` researchers and in-session web search their `web_search`/`web_fetch` tools. A deep-research run that completes with a partial result reads `complete (result: partial)` in the completion notice, the tasks pane and the workflow block, as `/workflow runs` already said. `codsh --rust -p "/deep-research <query>"` runs the built-in workflow in the foreground and prints its result (no query prints the usage), and the `streaming-messages-json` init line lists the session's tools and `deep-research`.
6 changes: 6 additions & 0 deletions .changeset/rust-deep-research.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

`codsh --rust`: `/deep-research <query>` runs the built-in deep-research workflow, the reference script pinned byte for byte from grok-build. It plans questions, researches them in parallel with web search, has separate verifier agents open each cited source, and writes a cited report. Only verified claims are reported; failed branches, missing web services, rate limits, contradicted sources and failed citation checks mark the result partial (`Result status: partial`), and a stop, the agent budget or a missing query end the run as cancelled, budget-limited or blocked. The built-in takes precedence over project, personal and plugin workflows of the same name and cannot be saved over. It uses the configured web search substitute; it was tested only with the mock model and fake local web services.
6 changes: 6 additions & 0 deletions .changeset/rust-dotenv-temp-pin.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

Stop a workspace deny glob from pinning `/tmp` when the workspace lives under the resolved `/private/tmp` write root. Renaming a workspace directory onto a fresh `/tmp` sibling stays allowed, while a directory inside `secrets/**/*.key` stays pinned.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-auth-enterprise-services.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Add substitute login, logout, and managed-config setup to `codsh --rust`. Identity tokens stay isolated from model keys and other services; organization pins refuse API-key-only use until a matching session exists; unsigned or unverifiable organization policy is refused, and official grok.com entitlements are not reproduced. Startup and inspect refresh an expired session or clear it without blocking login or an otherwise valid API key. Slash login keeps the live dsh client when a settings write fails, and replaces it when the settings patch changes. A usable identity session is passed to the executing dsh child, while other parent `GROK_AUTH_*` variables are not. Logout revokes the session at the identity provider before clearing it, and keeps the local session when revocation fails. A signature for another principal is refused at setup and when the sidecar is loaded, including a deployment-key caller with no team. Fail-closed policy with no pubkey and no sidecar is refused.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-cancel-live-turn.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Cancel a live dsh turn from the isolated Rust client without losing an unrelated draft. Empty-draft Ctrl+C sends ACP session/cancel; Esc never cancels a turn or pending approval. Cancelled tools cannot run from a late allow or process teardown.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-config-enter-reload.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

Empty Enter reloads isolated config and connects without submitting, and credential writes patch one ref while keeping existing records.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-context-compaction.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Inspect dsh context occupancy and advertised model limits without fabricating zeros, and run manual/automatic compaction through dsh so resume keeps the same checkpoint, retained tools/todos, and original records on failure.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-editor-acp.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Editors can attach to the isolated Rust client with `codsh --rust agent stdio`. The process speaks ACP/JSON-RPC 1 and forwards sessions, prompts, config, approval, and cancel to dsh. `session/load` resumes the same dsh session and replays saved history without running tools again. A denied tool whose call id lives on the nested session message is replayed as failed. Model and reasoning changes are written to `$GROK_HOME/model-selection.toml` before the next prompt and restored on load and on a terminal resume, including an advertised model that is not a catalog id. An unknown model is refused. Terminal `/dontAsk` and `/acceptEdits` share the editor permission mode, and that mode is written before dsh starts. Unsupported `x.ai` methods return method-not-found instead of a success stub. Closing the editor releases the write owner so a terminal can resume the same session.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-effective-config-fix.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

Write isolated dsh credentials owner-only, apply overlay `api_key`, inspect the telemetry values actually forced off for dsh, and keep first-run config fields visible.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-effective-config.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Add first-run compatible `config.toml` mapping into isolated dsh settings, with inspectable origins. `codsh --rust inspect` / `inspect --json` report CLI, environment, overlay, file, and default sources. Invalid files are preserved; old credentials and official login/telemetry are not used.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-explicit-memory.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Browse, save, search, edit, and forget local memory notes with `/memory`, `/remember`, and `codsh --rust memory clear`. `/remember` appends to the workspace `MEMORY.md` after confirmation. The memory modal highlights the selected row, hides the preview under 80 columns, and cannot delete `MEMORY.md`. `[memory] enabled = false` keeps notes out of the next prompt until the session toggle. `/new`, switch, fork, and rewind drop that toggle. `/cd` then `/new` reads the new workspace. The first turn of a new session injects a bounded global and workspace note, plus keyword session matches. `index.sqlite` is a SQLite FTS5 keyword index rebuilt from the notes; a foreign database is left unchanged. Workspace clear removes `MEMORY.md`, `sessions/`, and `index.sqlite`. A session toggle does not rewrite config, and disabling memory does not delete or upload the files.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-file-attachments.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

The isolated Rust client attaches workspace files from the `@` picker, a single line or line range, or a pasted path. Dotfiles and gitignored files, including nested `.gitignore` files, `**` patterns such as `**/*.log`, and patterns that contain `/` (`logs/*.log`, `/secret.rs`, anchored at the directory that owns that `.gitignore`), stay hidden until the query starts with `!`. Pasting one of those paths leaves the text in the draft and does not read or send the file. Pasted prose that only names a path stays text. A prompt sent during a turn is queued with its chips, and Alt+Up restores that prompt once. A removed chip is not sent. A missing file, a file over 256 KiB, a permission failure, or a file that changed after preview stays in the composer and does not send its bytes. dsh receives the admitted text, and a resumed session shows the same `@path` mention.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-file-search.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Search and list files through dsh grep and glob, and continue a long read with the offset dsh returns. A denied path is left out of the model result and the tool card, including a shell search of that file. An empty search, a binary file, a file that changed after it was read, and a missing language server are reported as those failures and do not invent contents or locations. A missing language server says that no LSP provider handles the file.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-file-tool-approval.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Ask once before real dsh file write/edit tools run from the isolated Rust client. The UI shows the pending operation and dsh-supplied diff, allows that call once, and rejects or ends input without writing. Missing files, tool errors, and stale or duplicate approval replies are reported as failures.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-fork-rewind-review.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

Refuse /rewind during a live turn, accept /fork --no-worktree, apply the fork model only on fork, store confirm/fork UI prefs in `$GROK_HOME/config.toml`, and reset minimal native history on rewind/fork.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-fork-rewind.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Fork and rewind conversations through dsh seed/projection without restoring files. Isolated `codsh --rust` supports `/rewind`, `/undo`, `/fork`, `--fork-session`, and refuses `--restore-code`.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-fullscreen-minimal.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Switch the isolated Rust client between official fullscreen alternate-screen and minimal native-history rendering in process. `/minimal` and `/fullscreen` keep the dsh session, draft, running turn, and pending approval; session-scoped `--minimal`/`--fullscreen` do not rewrite `[ui] screen_mode`.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-hooks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Run Grok-compatible command hooks from `codsh --rust` at SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop, and SessionEnd. Exit 2 or `decision: deny` blocks the prompt or tool. A timeout, crash, or other non-zero exit is a recorded failure, not a success. Hook stdout and stderr stay hook output. An allowing hook cannot skip permission checks or widen a sandbox or permission deny. Untrusted project hooks stay skipped.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-image-draft-lifecycle.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

In the isolated Rust client an unsent composer draft lives only in the running process, as in the reference: it is not written to `$GROK_HOME`, a new launch in any project starts with an empty composer, a sent prompt and its image never come back, and an exec screen-mode relaunch resumes the session without the draft. `--resume` shows a sent image turn with its `[Image #N]` placeholders, without the text-only `<pasted-image>` path, and sends nothing again. On a text-only model the attach notice says the model cannot see images and gets only the saved path, whose attribute is escaped. Rules, session rules, and the first-turn memory note wrap that user text once; they are not copied onto the `<pasted-image>` element or an attached file body. On macOS an empty bracketed paste (Cmd+V on an image-only clipboard) reads the clipboard image; on Windows it and Alt+V say the clipboard image read is not available yet and attach nothing. Whitespace alone inserts nothing, and pasting or dropping the absolute path or `file://` URL of an image file attaches it as an image instead of a binary `@file` mention.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-image-input.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

The isolated Rust client pastes a clipboard image as an atomic `[Image #N]` chip. Hovering the chip, or resting the cursor on it, shows the sniffed size (png, gif, jpeg, or webp), byte length, digest, and saved path. That notice is metadata, not a terminal-graphics picture. A model that declares `image` in `input_modalities` receives an ACP image block. A text-only model receives the saved path under the isolated attachment store and does not get a hidden vision route. A queued image is rebuilt for the model selected when it sends. An empty clipboard, a corrupt file, and a file over 256 KiB stay in the composer with a notice. Removing the chip drops it from the next submit. `/minimal`, `/fullscreen`, and closing the model menu restore the parked bytes with the placeholder. The packed launcher forwards `CODSH_CLIPBOARD_IMAGE` and `GROK_CLIPBOARD_NO_NATIVE_READ`. `[model.<id>] provider` selects the dsh provider; it defaults to the catalog id. Entries that share a provider and the same key, backend, URL, and headers are written as one provider with several models. A reused provider with different credentials or a different backend is refused.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-legacy-config-import.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Add explicit `codsh --rust import` for selected legacy dsh providers and preferences. Preview lists conversions, conflicts, and unsupported items from current `settings.yaml` sources without copying tokens, credential files, or trust grants. The imported model follows `agent-default-model` when that model is listed. Inline keys are not copied, a missing `apiKeyEnv` is not invented, and existing nested settings are kept. UI density maps to isolated compact mode; apply writes only into the isolated Home.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-managed-policy-trust.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Add managed defaults, locked requirements, and workspace folder trust to `codsh --rust`. Inspectable origins keep locked values from being bypassed; untrusted project Hooks/plugins/instructions stay inactive until an explicit grant.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-mcp-local.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': patch
'codsh-bundle': patch
---

The isolated Rust client supports local MCP servers. `codsh --rust mcp list|add|remove|enable|disable|doctor` manages `[mcp_servers]` in `$GROK_HOME/config.toml`, and trusted folders add `.grok/config.toml` and `.mcp.json` servers (untrusted ones are listed but not started). dsh's own MCP client mounts the servers for each session; a missing program, a startup crash, or a refused `initialize` is reported by name while the session starts with the rest. Tools keep dsh's `mcp__<server>__<tool>` names, and Grok's `search_tool` and `use_tool` are added. Every call runs once through the same permission rules (`server__tool`), Hooks, and cancellation. Output above `[mcp] max_output_bytes` (default 20000) is cut with the full text saved to disk, startup and per-tool timeouts are enforced, and `/mcps` shows state, failures, and tools and can enable, disable, or restart servers. SSE, OAuth, plugin-provided servers, and managed MCP policy are not handled yet.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-model-protocol-effort.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Map configured model backends and reasoning effort into isolated dsh, and let `/model` `/effort` select only advertised catalog options. Same-named models on different protocols stay distinct; unsupported options are refused; usage and context stay unknown unless the provider or config supplies them.
6 changes: 6 additions & 0 deletions .changeset/rust-dsh-mouse-search-reading.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
---
'codsh-cli': minor
'codsh-bundle': minor
---

Add fullscreen mouse selection, transcript search, turn jump, and reading-position restore to the isolated Rust client. Selection survives rebuild, hit testing uses the painted gutter, and scrollback Ctrl+D half-pages instead of quitting. `/find` and `/jump` refuse in minimal with the `/fullscreen` remedy.
Loading
Loading