Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
363 commits
Select commit Hold shift + click to select a range
aea062b
tui: resolve job names the same way in /logs, /restart and /stopjob
thedancingdeveloper Sep 29, 2026
20ccdc7
tui: show @ candidates under the prompt, and index queued follow-ups
thedancingdeveloper Sep 29, 2026
5d4d9cf
tools: tell the model bash calls don't share a shell, and what a time…
thedancingdeveloper Sep 29, 2026
019eac4
tools: add grep context lines, a type filter and head_limit
thedancingdeveloper Sep 29, 2026
14efe31
memory: load user-level memory from ~/.klaudia/MEMORY.md
thedancingdeveloper Sep 29, 2026
7400a87
tools: defer Browser tools and trim the always-loaded toolset
thedancingdeveloper Sep 29, 2026
1cc0011
skill: frontmatter parity and base directory in results
thedancingdeveloper Sep 29, 2026
ba9d689
lsp: add hover, document symbols, rename, implementation, and source …
thedancingdeveloper Sep 29, 2026
9da8e84
tui: notify when attention is needed (bell / OSC 9 / OSC 777)
thedancingdeveloper Sep 29, 2026
319a315
hooks: add PreToolUse/PostToolUse/UserPromptSubmit/Stop hooks
thedancingdeveloper Sep 29, 2026
15600b7
mcp: tools/list_changed, prompts as slash commands, remote OAuth
thedancingdeveloper Sep 29, 2026
b966c43
lsp: append new diagnostics to Edit/Write results
thedancingdeveloper Sep 29, 2026
42b9fb2
agent: validate tool input before the host gate and approval
thedancingdeveloper Sep 29, 2026
70eeb9f
tui: add /rewind to drop the last N exchanges
thedancingdeveloper Sep 29, 2026
d8da3d3
cli: add headless doctor and config show subcommands
thedancingdeveloper Sep 29, 2026
fa193d8
cli: add --system-prompt/--append-system-prompt, --mcp-config, --add-dir
thedancingdeveloper Sep 29, 2026
67c8861
auth: read Claude Code creds on Linux, add klaudia login, honour ANTH…
thedancingdeveloper Sep 29, 2026
d91cba9
tui: open the current prompt draft in $EDITOR with Ctrl+G
thedancingdeveloper Sep 29, 2026
f0c2eda
agent: run consecutive read-only tool calls concurrently
thedancingdeveloper Sep 29, 2026
09b2ef7
compaction: add /compact <focus>, /summary [edit], and use the live m…
thedancingdeveloper Sep 29, 2026
acf7428
tui: expand @file into contents and attach images at submit
thedancingdeveloper Sep 29, 2026
6296d6c
cost: add price table, total_cost_usd, /stats + status bar cost, --ma…
thedancingdeveloper Sep 29, 2026
d8898bd
subagent: background sub-agents, /agents status view, worktree isolat…
thedancingdeveloper Sep 29, 2026
cad320a
session: add titles, /resume picker, sessions ls|rm, /rename, retention
thedancingdeveloper Sep 29, 2026
865343f
permission: always-allow on a chained Bash command saves rules for ev…
thedancingdeveloper Sep 29, 2026
aecb519
agent: sanitise over-long tool names and stale thinking blocks after …
thedancingdeveloper Sep 29, 2026
965c621
Merge pull request #13 from TheDancingDeveloper-org/test/layered-testing
thedancingdeveloper Sep 29, 2026
a1df380
Merge pull request #14 from TheDancingDeveloper-org/fix/plan-mode-all…
thedancingdeveloper Sep 29, 2026
eb8f8b5
Merge pull request #15 from TheDancingDeveloper-org/fix/project-confi…
thedancingdeveloper Sep 29, 2026
5338ece
Merge pull request #17 from TheDancingDeveloper-org/fix/exec-granting…
thedancingdeveloper Sep 29, 2026
8686254
Merge pull request #18 from TheDancingDeveloper-org/fix/approval-show…
thedancingdeveloper Sep 29, 2026
1d90b0f
Merge pull request #19 from TheDancingDeveloper-org/fix/git-probes-ig…
thedancingdeveloper Sep 29, 2026
7cb8d02
Merge pull request #20 from TheDancingDeveloper-org/fix/session-resum…
thedancingdeveloper Sep 29, 2026
c1d982d
Merge pull request #21 from TheDancingDeveloper-org/fix/sanitize-blan…
thedancingdeveloper Sep 29, 2026
4c7a496
Merge pull request #22 from TheDancingDeveloper-org/docs/upstream-rev…
thedancingdeveloper Sep 29, 2026
b9ca8bc
Merge pull request #23 from TheDancingDeveloper-org/fix/compaction-ov…
thedancingdeveloper Sep 29, 2026
33b5618
Merge pull request #24 from TheDancingDeveloper-org/fix/stream-interr…
thedancingdeveloper Sep 29, 2026
303cb3c
Merge pull request #25 from TheDancingDeveloper-org/fix/mcp-project-s…
thedancingdeveloper Sep 29, 2026
06c768b
Merge pull request #28 from TheDancingDeveloper-org/fix/sandbox-hide-…
thedancingdeveloper Sep 29, 2026
b9db84e
Merge pull request #29 from TheDancingDeveloper-org/feat/model-table-5-5
thedancingdeveloper Sep 29, 2026
d6ed185
Merge pull request #30 from TheDancingDeveloper-org/feat/project-inst…
thedancingdeveloper Sep 29, 2026
9a6c783
Merge pull request #31 from TheDancingDeveloper-org/fix/skill-frontma…
thedancingdeveloper Sep 29, 2026
bf5656f
Merge pull request #32 from TheDancingDeveloper-org/fix/mcp-result-co…
thedancingdeveloper Sep 29, 2026
5519a20
Merge pull request #35 from TheDancingDeveloper-org/fix/mcp-tools-list
thedancingdeveloper Sep 29, 2026
0287fae
Merge pull request #36 from TheDancingDeveloper-org/fix/atomic-writes…
thedancingdeveloper Sep 29, 2026
85a106e
Merge pull request #37 from TheDancingDeveloper-org/fix/bounded-bash-…
thedancingdeveloper Sep 29, 2026
1e04f19
Merge pull request #38 from TheDancingDeveloper-org/fix/subagent-part…
thedancingdeveloper Sep 29, 2026
8fd0950
Merge pull request #39 from TheDancingDeveloper-org/fix/goal-retry-ap…
thedancingdeveloper Sep 29, 2026
71c30a6
Merge pull request #40 from TheDancingDeveloper-org/fix/transcript-wr…
thedancingdeveloper Sep 29, 2026
4f4b972
Merge pull request #42 from TheDancingDeveloper-org/fix/mcp-reconnect
thedancingdeveloper Sep 29, 2026
0b68546
Merge pull request #43 from TheDancingDeveloper-org/fix/read-long-lin…
thedancingdeveloper Sep 29, 2026
ed5754e
Merge pull request #46 from TheDancingDeveloper-org/fix/bash-no-match…
thedancingdeveloper Sep 29, 2026
4b7e338
Merge pull request #49 from TheDancingDeveloper-org/fix/kill-detached…
thedancingdeveloper Sep 29, 2026
4bfc1df
Merge pull request #164 from TheDancingDeveloper-org/fix/keep-cut-off…
thedancingdeveloper Sep 29, 2026
5746683
Merge pull request #167 from TheDancingDeveloper-org/feat/bundled-skills
thedancingdeveloper Sep 29, 2026
693b98a
Merge pull request #168 from TheDancingDeveloper-org/fix/memory-bulle…
thedancingdeveloper Sep 29, 2026
b3c50fd
Merge pull request #171 from TheDancingDeveloper-org/fix/positional-p…
thedancingdeveloper Sep 29, 2026
ce8a89f
Merge pull request #172 from TheDancingDeveloper-org/fix/print-read-s…
thedancingdeveloper Sep 29, 2026
2d8d2cd
Merge pull request #173 from TheDancingDeveloper-org/fix/edit-empty-o…
thedancingdeveloper Sep 29, 2026
a3804ef
Merge pull request #174 from TheDancingDeveloper-org/fix/merge-input-…
thedancingdeveloper Sep 29, 2026
b847b50
Merge pull request #175 from TheDancingDeveloper-org/fix/resume-after…
thedancingdeveloper Sep 29, 2026
7f74522
Merge pull request #177 from TheDancingDeveloper-org/fix/append-only-…
thedancingdeveloper Sep 29, 2026
387d9a2
Merge pull request #178 from TheDancingDeveloper-org/fix/commit-flag-…
thedancingdeveloper Sep 29, 2026
de67fee
Merge pull request #179 from TheDancingDeveloper-org/fix/bashoutput-c…
thedancingdeveloper Sep 29, 2026
cf07702
Merge pull request #181 from TheDancingDeveloper-org/fix/picker-mid-turn
thedancingdeveloper Sep 29, 2026
a71ec61
Merge pull request #183 from TheDancingDeveloper-org/fix/skill-synced…
thedancingdeveloper Sep 29, 2026
6fbf8f9
Merge pull request #184 from TheDancingDeveloper-org/fix/search-gitig…
thedancingdeveloper Sep 29, 2026
b6ad3d7
Merge pull request #185 from TheDancingDeveloper-org/fix/memory-knowl…
thedancingdeveloper Sep 29, 2026
3b17c26
Merge pull request #187 from TheDancingDeveloper-org/fix/bash-backgro…
thedancingdeveloper Sep 29, 2026
a65abdf
Merge pull request #188 from TheDancingDeveloper-org/fix/tty-refusal-…
thedancingdeveloper Sep 29, 2026
36654d6
Merge pull request #189 from TheDancingDeveloper-org/feat/subagent-co…
thedancingdeveloper Sep 29, 2026
93b3dd9
Merge pull request #192 from TheDancingDeveloper-org/fix/trust-classi…
thedancingdeveloper Sep 29, 2026
cd5abee
Merge pull request #195 from TheDancingDeveloper-org/fix/memory-index…
thedancingdeveloper Sep 29, 2026
8cdf4a8
Merge pull request #197 from TheDancingDeveloper-org/fix/create-confi…
thedancingdeveloper Sep 29, 2026
2e952a3
Merge pull request #199 from TheDancingDeveloper-org/feat/streamjson-…
thedancingdeveloper Sep 29, 2026
bdf69b8
Merge pull request #202 from TheDancingDeveloper-org/chore/cli-polish
thedancingdeveloper Sep 29, 2026
165a6f7
Merge pull request #203 from TheDancingDeveloper-org/docs/env-vars-table
thedancingdeveloper Sep 29, 2026
8a9f7c1
Merge pull request #204 from TheDancingDeveloper-org/fix/slash-path-p…
thedancingdeveloper Sep 29, 2026
6606ecb
Merge pull request #207 from TheDancingDeveloper-org/feat/redirect-ev…
thedancingdeveloper Sep 29, 2026
c795980
Merge pull request #212 from TheDancingDeveloper-org/fix/help-keys-args
thedancingdeveloper Sep 29, 2026
3e9bdec
Merge pull request #213 from TheDancingDeveloper-org/fix/job-command-…
thedancingdeveloper Sep 29, 2026
92f1590
Merge pull request #214 from TheDancingDeveloper-org/fix/at-completio…
thedancingdeveloper Sep 29, 2026
1bc0735
Merge pull request #218 from TheDancingDeveloper-org/feat/trim-toolset
thedancingdeveloper Sep 29, 2026
49f823d
Merge pull request #220 from TheDancingDeveloper-org/feat/lsp-hover-s…
thedancingdeveloper Sep 29, 2026
0e3cb78
Merge pull request #224 from TheDancingDeveloper-org/feat/lsp-diagnos…
thedancingdeveloper Sep 29, 2026
336345e
Merge pull request #225 from TheDancingDeveloper-org/fix/validate-inp…
thedancingdeveloper Sep 29, 2026
d5ce8d5
Merge pull request #226 from TheDancingDeveloper-org/feat/tui-rewind
thedancingdeveloper Sep 29, 2026
f073d4a
Merge pull request #227 from TheDancingDeveloper-org/feat/headless-do…
thedancingdeveloper Sep 29, 2026
aa93d62
Merge pull request #230 from TheDancingDeveloper-org/feat/tui-ctrl-g-…
thedancingdeveloper Sep 29, 2026
34a1be1
Merge pull request #237 from TheDancingDeveloper-org/fix/always-allow…
thedancingdeveloper Sep 29, 2026
a62cda2
Merge pull request #16 from TheDancingDeveloper-org/fix/bash-rules-ev…
thedancingdeveloper Sep 29, 2026
42c2500
Merge pull request #26 from TheDancingDeveloper-org/fix/sanitize-inje…
thedancingdeveloper Sep 29, 2026
a98a95a
Merge pull request #27 from TheDancingDeveloper-org/fix/path-permissi…
thedancingdeveloper Sep 29, 2026
1214033
Merge pull request #33 from TheDancingDeveloper-org/fix/cap-mcp-grep-…
thedancingdeveloper Sep 29, 2026
ac23f49
Merge pull request #34 from TheDancingDeveloper-org/fix/mcp-timeouts
thedancingdeveloper Sep 29, 2026
b9e24b9
Merge pull request #41 from TheDancingDeveloper-org/fix/mcp-redact-ex…
thedancingdeveloper Sep 29, 2026
aa6bd6e
Merge pull request #44 from TheDancingDeveloper-org/fix/search-respec…
thedancingdeveloper Sep 29, 2026
e997e90
Merge pull request #45 from TheDancingDeveloper-org/feat/user-subagents
thedancingdeveloper Sep 29, 2026
6500946
Merge pull request #47 from TheDancingDeveloper-org/feat/safe-mode
thedancingdeveloper Sep 29, 2026
7905b28
Merge pull request #48 from TheDancingDeveloper-org/feat/mcp-headers
thedancingdeveloper Sep 29, 2026
12a8b7a
Merge pull request #50 from TheDancingDeveloper-org/feat/sandbox-fail…
thedancingdeveloper Sep 29, 2026
ffd971f
Merge pull request #165 from TheDancingDeveloper-org/feat/lsp-workspa…
thedancingdeveloper Sep 29, 2026
8a694d3
Merge pull request #166 from TheDancingDeveloper-org/feat/sandbox-mem…
thedancingdeveloper Sep 29, 2026
6ca8cbc
Merge pull request #169 from TheDancingDeveloper-org/feat/effort-thin…
thedancingdeveloper Sep 29, 2026
ff915ac
Merge pull request #170 from TheDancingDeveloper-org/feat/fallback-model
thedancingdeveloper Sep 29, 2026
02114e8
Merge pull request #176 from TheDancingDeveloper-org/fix/config-parse…
thedancingdeveloper Sep 29, 2026
7120795
Merge pull request #180 from TheDancingDeveloper-org/fix/summary-requ…
thedancingdeveloper Sep 29, 2026
1e82493
Merge pull request #182 from TheDancingDeveloper-org/fix/lsp-diagnost…
thedancingdeveloper Sep 29, 2026
3ae9652
Merge pull request #186 from TheDancingDeveloper-org/fix/read-truncat…
thedancingdeveloper Sep 29, 2026
2bcfd16
Merge pull request #190 from TheDancingDeveloper-org/feat/auto-resume…
thedancingdeveloper Sep 29, 2026
b7e8bd2
Merge pull request #191 from TheDancingDeveloper-org/fix/clear-rotate…
thedancingdeveloper Sep 29, 2026
e7986c6
Merge pull request #193 from TheDancingDeveloper-org/fix/goal-resume-…
thedancingdeveloper Sep 29, 2026
097ae56
Merge pull request #194 from TheDancingDeveloper-org/fix/project-root…
thedancingdeveloper Sep 29, 2026
0e44601
Merge pull request #196 from TheDancingDeveloper-org/fix/config-root-…
thedancingdeveloper Sep 29, 2026
e95040c
Merge pull request #198 from TheDancingDeveloper-org/fix/unknown-mode…
thedancingdeveloper Sep 29, 2026
6e70130
Merge pull request #200 from TheDancingDeveloper-org/fix/openai-model…
thedancingdeveloper Sep 30, 2026
154d035
Merge pull request #201 from TheDancingDeveloper-org/fix/headless-jso…
thedancingdeveloper Sep 30, 2026
89a2742
Merge pull request #205 from TheDancingDeveloper-org/feat/build-info
thedancingdeveloper Sep 30, 2026
d25920e
Merge pull request #206 from TheDancingDeveloper-org/feat/diff-pager
thedancingdeveloper Sep 30, 2026
3965a26
Merge pull request #209 from TheDancingDeveloper-org/feat/slash-arg-c…
thedancingdeveloper Sep 30, 2026
0f6e96d
Merge pull request #210 from TheDancingDeveloper-org/fix/picker-keybo…
thedancingdeveloper Sep 30, 2026
57af778
Merge pull request #211 from TheDancingDeveloper-org/feat/persistent-…
thedancingdeveloper Sep 30, 2026
d36d638
Merge pull request #215 from TheDancingDeveloper-org/chore/bash-tool-…
thedancingdeveloper Sep 30, 2026
86a5733
Merge pull request #216 from TheDancingDeveloper-org/feat/grep-contex…
thedancingdeveloper Sep 30, 2026
5dc0e85
Merge pull request #217 from TheDancingDeveloper-org/feat/user-memory
thedancingdeveloper Sep 30, 2026
25276e3
Merge pull request #219 from TheDancingDeveloper-org/feat/skill-front…
thedancingdeveloper Sep 30, 2026
604d03d
Merge pull request #221 from TheDancingDeveloper-org/feat/tui-notify
thedancingdeveloper Sep 30, 2026
740657f
Merge pull request #222 from TheDancingDeveloper-org/feat/hooks
thedancingdeveloper Sep 30, 2026
885ef1f
Merge pull request #223 from TheDancingDeveloper-org/feat/mcp-oauth-p…
thedancingdeveloper Sep 30, 2026
cba008a
Merge pull request #228 from TheDancingDeveloper-org/feat/cli-prompt-…
thedancingdeveloper Sep 30, 2026
fc9d221
Merge pull request #229 from TheDancingDeveloper-org/feat/auth-login-…
thedancingdeveloper Sep 30, 2026
eb7d1ed
Merge pull request #231 from TheDancingDeveloper-org/feat/concurrent-…
thedancingdeveloper Sep 30, 2026
468af45
Merge pull request #232 from TheDancingDeveloper-org/feat/compaction-…
thedancingdeveloper Sep 30, 2026
aa9bdc1
Merge pull request #233 from TheDancingDeveloper-org/feat/tui-atfile-…
thedancingdeveloper Sep 30, 2026
b3e2268
Merge pull request #234 from TheDancingDeveloper-org/feat/cost-tracking
thedancingdeveloper Sep 30, 2026
a12a80e
Merge pull request #235 from TheDancingDeveloper-org/feat/background-…
thedancingdeveloper Sep 30, 2026
771d91e
Merge pull request #236 from TheDancingDeveloper-org/feat/session-man…
thedancingdeveloper Sep 30, 2026
fa4e69a
Merge pull request #238 from TheDancingDeveloper-org/fix/sanitize-too…
thedancingdeveloper Sep 30, 2026
4f233d8
test: reconcile cli tests with merged features
thedancingdeveloper Sep 30, 2026
2c778fa
test: reconcile tools tests with merged features
thedancingdeveloper Sep 30, 2026
4e650df
tui: reconcile tests with merged goal, redirect, picker, and add-dir …
thedancingdeveloper Sep 30, 2026
8702ee8
mcp: keep the SSE session alive past its connect deadline
thedancingdeveloper Sep 30, 2026
ab66942
Land the embedded relative-paths commits on main (msp-agent's pin) (m…
thedancingdeveloper Oct 3, 2026
b7bd55c
test: make CI green — tests that pin HOME also pin KLAUDIA_CONFIG_DIR…
thedancingdeveloper Oct 3, 2026
2e644c9
Two bugs
17twenty Oct 6, 2026
bb67917
api: quote a provider's 400 instead of guessing, and explain the mode…
thedancingdeveloper Oct 6, 2026
912006b
goal: coexist with a dirty tree by default; never discard unowned cha…
thedancingdeveloper Oct 6, 2026
d266446
docs: pin the stream-json embedding contract, and add --capabilities …
thedancingdeveloper Oct 6, 2026
0fa00a6
all: one turn contract, ACP, sub-agent worktrees, hooks, MCP alignment
17twenty Oct 6, 2026
bb1b523
cli: refuse `klaudia goal run` instead of running it as a prompt; doc…
thedancingdeveloper Oct 6, 2026
f4ba9ff
goal: add a no-branch / no-commit (artifact) mode for goals that are …
thedancingdeveloper Oct 6, 2026
84073d6
merge: upstream greenthread-ai/klaudia 2e644c9 and 0fa00a6 into the fork
thedancingdeveloper Oct 6, 2026
f2f9ad7
cli: add --prompt-interactive to open the TUI with a first message
thedancingdeveloper Oct 6, 2026
d2b6c8d
Merge pull request #261 from TheDancingDeveloper-org/sync/upstream-20…
thedancingdeveloper Oct 6, 2026
0e17422
Merge pull request #262 from TheDancingDeveloper-org/feat/prompt-inte…
thedancingdeveloper Oct 6, 2026
e4a22b3
tui: swallow terminal query replies instead of typing them (#264)
thedancingdeveloper Oct 7, 2026
f840e7a
api: retry opaque 400s and log model calls on the openai path
thedancingdeveloper Oct 7, 2026
8d512a3
api: log model calls to stderr and dump a redacted failed request
thedancingdeveloper Oct 7, 2026
bb6a4b7
api: gofmt
thedancingdeveloper Oct 7, 2026
7e3bd27
api,tui: keep model-call lines off the TUI frame; treat an enveloped …
thedancingdeveloper Oct 7, 2026
c3ada60
Merge pull request #265 from TheDancingDeveloper-org/feat/openai-retr…
thedancingdeveloper Oct 7, 2026
ec7c436
agent: inline $defs before a tool schema is sent (#271)
thedancingdeveloper Oct 8, 2026
45025d3
streamjson: pass inbound image blocks through to the turn (#272)
thedancingdeveloper Oct 8, 2026
c857c66
tui: test that a quiet start shows no tagline (#273)
thedancingdeveloper Oct 8, 2026
f35f9aa
cli: guard pre-existing changes in every session, not only the goal l…
thedancingdeveloper Oct 8, 2026
5aa376d
tui: label the status-bar token count as uncached in+out (#275)
thedancingdeveloper Oct 8, 2026
b242e3b
agent,cli: deliver background sub-agents over -p, stream-json and acp
thedancingdeveloper Oct 8, 2026
601e714
Merge pull request #277 from TheDancingDeveloper-org/fix/headless-bac…
thedancingdeveloper Oct 8, 2026
140c950
agent: background writers use the seeded worktree
thedancingdeveloper Oct 8, 2026
7531247
agent: children inherit the launching turn's context
thedancingdeveloper Oct 8, 2026
5abf5bd
agent: honour a sub-agent's requested working directory
thedancingdeveloper Oct 8, 2026
5053dd2
Merge pull request #281 from TheDancingDeveloper-org/fix/subagent-par…
thedancingdeveloper Oct 8, 2026
9276fcd
agent: fold a sub-agent's spend into the parent's budget
thedancingdeveloper Oct 8, 2026
6088fa0
agent: one registry for every child, and bounded parallel launches
thedancingdeveloper Oct 8, 2026
f5113f9
agent: fix the checkout race, subdir adoption, and background spend
thedancingdeveloper Oct 8, 2026
42d9507
agent: emit sub-agent lifecycle events and persist children
thedancingdeveloper Oct 8, 2026
7f300f2
agent: adopt subdir edits, match the event contract, queue permission…
thedancingdeveloper Oct 8, 2026
7c00f94
agent: sub-agent events, a drain flag, and resumable children
thedancingdeveloper Oct 8, 2026
579b3bc
tui: write nothing at an idle prompt, and title the terminal with the…
thedancingdeveloper Oct 8, 2026
74cc18a
agent: scope sub-agent events per conversation and queue every ask
thedancingdeveloper Oct 8, 2026
8f591a9
tools: say what Grep and Glob did not search, and honour context flags
thedancingdeveloper Oct 8, 2026
f3df097
agent: honour a sub-agent type's own turn cap and isolation
thedancingdeveloper Oct 8, 2026
77c6de4
subagent: validate custom agent types at load
thedancingdeveloper Oct 8, 2026
40c1790
tui: return to idle after an ask that arrived while idle
thedancingdeveloper Oct 8, 2026
be88767
subagent: keep isolation: none literal, and tighten the load checks
thedancingdeveloper Oct 8, 2026
be8cd0b
tui: do not return to the free-text answer after a queued ask
thedancingdeveloper Oct 8, 2026
bc97a59
tui: restore the terminal's title on exit, and title only a terminal
thedancingdeveloper Oct 8, 2026
34c8019
tools: keep searches out of credentials, and quiet the skip note on hits
thedancingdeveloper Oct 8, 2026
966be54
tui: restore the terminal title in a defer
thedancingdeveloper Oct 8, 2026
d22e880
Merge pull request #282 from TheDancingDeveloper-org/fix/subagent-usa…
thedancingdeveloper Oct 8, 2026
9f46447
Merge pull request #285 from TheDancingDeveloper-org/feat/subagent-cu…
thedancingdeveloper Oct 8, 2026
afb32e8
Merge pull request #286 from TheDancingDeveloper-org/fix/idle-quiet-tui
thedancingdeveloper Oct 8, 2026
89b9c27
Merge pull request #287 from TheDancingDeveloper-org/fix/grep-skips-v…
thedancingdeveloper Oct 8, 2026
c731fd7
agent: per-call model, isolation, turns and name on the Agent tool
thedancingdeveloper Oct 8, 2026
8a97aac
agent: cap a child's turns at the default and tidy the per-call overr…
thedancingdeveloper Oct 8, 2026
2eee97b
agent: check a child's answer against output_schema, once
thedancingdeveloper Oct 8, 2026
d8f14ca
agent: run a type's verify command before adopting its checkout
thedancingdeveloper Oct 8, 2026
2aebfcd
agent: gate verify through the child's Bash and refuse external schem…
thedancingdeveloper Oct 8, 2026
f38095f
agent: cap nested sub-agents at the configured depth
thedancingdeveloper Oct 8, 2026
3b3ceb4
subagent: read a type's verify command from its frontmatter
thedancingdeveloper Oct 8, 2026
2a2b4ca
agent: drop the unwired max_depth plumbing
thedancingdeveloper Oct 8, 2026
ebd78ad
Merge pull request #288 from TheDancingDeveloper-org/feat/subagent-to…
thedancingdeveloper Oct 9, 2026
d2e947b
gitguard: judge a git command by the repository it runs in
thedancingdeveloper Oct 9, 2026
ee14681
agent: accept a linked worktree of the session's repository as workin…
thedancingdeveloper Oct 9, 2026
dbb574a
gitguard: fail closed when another tree cannot be captured; cache probes
thedancingdeveloper Oct 9, 2026
bed8dc9
Merge pull request #290 from TheDancingDeveloper-org/fix/gitguard-tar…
thedancingdeveloper Oct 9, 2026
d338aa6
Merge pull request #292 from TheDancingDeveloper-org/fix/subagent-lin…
thedancingdeveloper Oct 9, 2026
0cb0210
gitguard: judge --git-dir and --work-tree against the start repository
thedancingdeveloper Oct 9, 2026
b2b366c
gitguard: GIT_INDEX_FILE, GIT_COMMON_DIR and core.worktree keep the s…
thedancingdeveloper Oct 9, 2026
861b309
gitguard: match core.worktree without regard to case
thedancingdeveloper Oct 9, 2026
dba624f
Merge pull request #294 from TheDancingDeveloper-org/fix/gitguard-git…
thedancingdeveloper Oct 9, 2026
37af562
cli: add klaudia hook gitguard for Codex
thedancingdeveloper Oct 9, 2026
e22a956
cli: capture a missing gitguard baseline on any SessionStart
thedancingdeveloper Oct 9, 2026
19e74f4
Merge pull request #298 from TheDancingDeveloper-org/feat/codex-gitgu…
thedancingdeveloper Oct 9, 2026
b93c22f
cli: host an MCP tool that runs codex in a seeded worktree
thedancingdeveloper Oct 9, 2026
fbe790c
cli: pin the codex child's posture and confine its working dir
thedancingdeveloper Oct 9, 2026
79bbfe7
cli: drop the approval flag codex exec rejects
thedancingdeveloper Oct 9, 2026
fdedc37
cli: refuse a codex that would unsandbox the child
thedancingdeveloper Oct 9, 2026
c2324b4
Merge pull request #300 from TheDancingDeveloper-org/feat/codex-subagent
thedancingdeveloper Oct 9, 2026
96ecd4b
cli: add klaudia mcp browser for Codex
thedancingdeveloper Oct 9, 2026
6395f05
browsermcp: refuse private networks and serialise the shared page
thedancingdeveloper Oct 9, 2026
150845b
cli: register the browser server on the shared mcp command
thedancingdeveloper Oct 9, 2026
580366c
Merge pull request #299 from TheDancingDeveloper-org/feat/codex-brows…
thedancingdeveloper Oct 9, 2026
6994256
gitguard: drop a cached baseline when the tree's git dir changes
thedancingdeveloper Oct 9, 2026
de576e4
gitguard: key the baseline identity on the tree's top, by dev/inode a…
thedancingdeveloper Oct 9, 2026
ad23e42
gitguard: re-probe a cached directory when a .git appears below its t…
thedancingdeveloper Oct 9, 2026
8e7c133
gitguard: treat a non-ENOENT Lstat error in the re-probe walk as a ne…
thedancingdeveloper Oct 9, 2026
5434a8a
gitguard: follow cd across pipes and quoted heredoc commit messages (…
thedancingdeveloper Oct 9, 2026
53cfc56
gitguard: do not follow any cd on a line that mentions lastpipe (#296)
thedancingdeveloper Oct 9, 2026
36675dc
gitguard: mark only non-final pipe sides as subshells (#296)
thedancingdeveloper Oct 9, 2026
c84106e
gitguard: fail closed on any piped line and on ${ ...; } substitution…
thedancingdeveloper Oct 10, 2026
52ab6ce
gitguard: follow a cd across a pipe of ordinary programs (#289)
thedancingdeveloper Oct 11, 2026
e96e696
gitguard: an allowlist for pipe sides; stop following after shell movers
thedancingdeveloper Oct 11, 2026
7dc8db3
gitguard: quote-split names; no relative cd after a variable is set
thedancingdeveloper Oct 11, 2026
e48de2b
hostgate: an approved scope covers the same paths over ssh (#305)
thedancingdeveloper Oct 11, 2026
a099c29
hostgate: close the #305 review findings
thedancingdeveloper Oct 11, 2026
a7ecaeb
hostgate: abbreviated --recursive, links and xargs are not spelled out
thedancingdeveloper Oct 11, 2026
9d0a51d
hostgate: a remote scope covers deletes only; match xargs by basename
thedancingdeveloper Oct 11, 2026
baadaf5
permission: make acceptEdits a real mode instead of an autonomous ali…
thedancingdeveloper Oct 12, 2026
3930637
gitguard: stage a baseline path the session edited, and a merge it is…
thedancingdeveloper Oct 12, 2026
dcd7458
gitguard: keep a session's baseline across resume, with work-tree ide…
thedancingdeveloper Oct 13, 2026
beaf694
tools: default Grep to content mode with a 200-line cap (#310)
thedancingdeveloper Oct 13, 2026
7c45a7f
agent: nudge a turn that only announces its next step (#311)
thedancingdeveloper Oct 13, 2026
d518b50
cli: make the codex-subagent end-to-end test pass the wrapper check
thedancingdeveloper Oct 15, 2026
07d4084
codexsub: drop --ephemeral when the child gets a session id
thedancingdeveloper Oct 15, 2026
93ed8cd
gitguard: keep pre-staged work out of a plain git commit
Oct 15, 2026
cb29a14
gitguard: refuse commit -i/--include when pre-staged work would ride …
thedancingdeveloper Oct 15, 2026
03ea541
gitguard: catch clustered -i, abbreviated --include, and a pre-staged…
Oct 15, 2026
1a4023a
codexsub: publish output_schema as an object and stop the child readi…
thedancingdeveloper Oct 15, 2026
40226d0
gitguard: keep a linked worktree baseline across shared config rewrites
thedancingdeveloper Oct 16, 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
  •  
  •  
  •  
39 changes: 30 additions & 9 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,24 +8,45 @@ on:
permissions:
contents: read

# The layers are described in docs/testing.md. Everything here is hermetic: no
# credential, no network beyond module download. The live-model layers
# (scripts/smoke.sh, scripts/torture.sh) are run by hand.
jobs:
build-test:
static:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4

- uses: actions/setup-go@v5
with:
go-version: '1.26'
check-latest: true
cache: true

# Pure Go: the build must stay CGO_ENABLED=0-clean (no cgo, no system libs).
- name: Build
run: CGO_ENABLED=0 go build ./...
- name: gofmt, vet, build
run: make static

- name: Vet
run: go vet ./...
unit:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.26'
check-latest: true
cache: true
- name: Unit tests (race)
run: make unit
- name: Unit tests against a poisoned HOME
run: make hermetic

- name: Test
run: go test ./internal/... -count=1
e2e:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-go@v5
with:
go-version: '1.26'
check-latest: true
cache: true
- name: Binary against a scripted model
run: make e2e
3 changes: 3 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,6 @@
# does not need to be. See .mcp.json.example. Commit a secret-free team config
# with `git add -f .mcp.json` if you want one.
/.mcp.json

# scripts/cover.sh output
/coverage/
2 changes: 1 addition & 1 deletion .mcp.json.example
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@
"gitea": {
"command": "gitea-mcp",
"args": ["-t", "stdio", "-r", "-S", "issue,pull_request,actions"],
"env": { "GITEA_HOST": "https://git.example.com" },
"env": { "GITEA_HOST": "${GITEA_HOST:-https://git.example.com}" },
"readOnly": true
},
"third-party": {
Expand Down
2,165 changes: 2,165 additions & 0 deletions CHANGELOG.md

Large diffs are not rendered by default.

46 changes: 39 additions & 7 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,15 @@ CLI agent that helps users with software engineering tasks.
```bash
CGO_ENABLED=0 go install ./cmd/klaudia # updates the `klaudia` on your PATH
CGO_ENABLED=0 go build ./... # compile check only — writes no binary
go test ./internal/...
go test ./internal/... # unit tests
go test ./e2e/... # the binary against a scripted model
make check # every hermetic layer — what CI runs
```

Testing is layered (static, unit, hermetic, e2e, live); `docs/testing.md` says
what each layer is for and where a new test belongs. Unit tests must not read
the real `$HOME` — `make hermetic` runs them against a poisoned one.

`go build ./...` with multiple packages compiles and *discards* the results: it
is a build check, not an install. `go build ./cmd/klaudia` does write a binary,
but into the working directory, not onto `$PATH`. Running `klaudia` after either
Expand All @@ -22,30 +28,56 @@ Use `go install` when you mean to try the change.
- **api** - Provider abstraction: Anthropic client + OpenAI-compatible shim
- **tools** - Local tool implementations
- **browser** - Lazy headless-Chrome engine + web search
- **permission** - Permission modes + allow/deny rules (a leaf package)
- **permission** - The three permission modes (a leaf package)
- **trust** - Zones, command/tool classification, session-scoped grants
- **session** - Transcripts, resume, persisted compaction summaries
- **compaction** - Context/history compression (micro + auto)
- **mcp** - Model Context Protocol support
- **subagent** - Built-in sub-agent types
- **skill** - User-defined skills (`.klaudia/skills`)
- **mcp** - Model Context Protocol client (2026-07-28) + form elicitation
- **subagent** - Sub-agent types: built-in, and markdown-defined (`.klaudia/agents`)
- **worktree** - Per-sub-agent git checkouts: seed, adopt, conflict reporting
- **skill** - Bundled skills (`skill/bundled/*.md`) + user-defined skills (`.klaudia/skills`)
- **hooks** - Lifecycle hooks: the four events, project-hook trust, execution
- **gitguard** - Keeps an autonomous run (the goal loop) from discarding or staging uncommitted work it does not own
- **memory** - Auto-memory store
- **doctor** - `/doctor` environment diagnostics
- **gitprobe** - Klaudia's own read-only git calls, guarded against repo config
- **streamjson** - Bidirectional stream-json frontend
- **acp** - Agent Client Protocol v1 agent (editor-driven sessions)
- **tui** - Terminal UI (Bubble Tea)
- **prompt** - Prompt construction
- **cli** - CLI entry point and wiring
- **native** - Pure-Go search / bash-parsing / PDF
- **textsafe** - Cleaning text from files and servers before the model sees it
- **sandbox** - Local / OS-confined / container Bash execution
- **schema** - Type/schema definitions
- **version** - Version info

`e2e/` (outside `internal/`) holds the end-to-end tests. `internal/fakeapi` is
the scripted Anthropic API they and the `internal/cli` tests share — test
support, imported by nothing in the product.

## Design record

`docs/ux-spec.md` is the authoritative record of the two terminal-UX specs and
where the implementation deliberately differs from them — read it before
"fixing" something that looks unimplemented. `docs/trust.md`, `docs/jobs.md` and
`docs/working-tree.md` cover the three subsystems in detail.
"fixing" something that looks unimplemented. `docs/trust.md`, `docs/jobs.md`,
`docs/working-tree.md`, `docs/hooks.md` and `docs/acp.md` cover five subsystems
in detail; `docs/embedding.md` is the versioned stream-json contract, and
`docs/testing.md` covers the test layers.

Hooks are the one subsystem that executes a string from a config file, so
`docs/hooks.md` is where the reasoning for the trust prompt lives. A hook runs
*after* the host gate, never instead of it: anything that lets a config file
grant permission is a bug, not a feature request.

There are three frontends — TUI, stream-json, ACP — and one contract between
them: `agent.Turn`, applied by `Turn.Apply`. A new capability is a **field on
`Turn`**, not another parameter on a per-frontend `RunFunc`; the per-frontend
signatures are what let `AskUserQuestion` and `ExitPlanMode` sit dead over
stream-json for months, because a frontend that omitted a capability was
indistinguishable from one that did not want it. `docs/acp.md` records what the
ACP frontend declines (client-side writes, `terminal/*`, `session/delete`) and
why those are decisions rather than gaps.

## Rules

Expand Down
46 changes: 46 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
# Test layers — see docs/testing.md. `make check` is what CI runs.
#
# static gofmt, go vet, CGO_ENABLED=0 build
# unit package tests under internal/ (race detector on)
# hermetic unit tests again, against a poisoned HOME
# e2e the real binary against a scripted model; no network, no credential
# smoke the real binary against a live model (needs a credential)
# torture the Phase 2 agent-loop torture test (credential, docker, python3)
#
# cover statement coverage of unit + e2e, merged, per package

GO ?= go

.PHONY: check static unit hermetic e2e smoke torture cover install

check: static unit hermetic e2e

static:
@out="$$(gofmt -l cmd internal e2e)"; if [ -n "$$out" ]; then echo "gofmt needed:"; echo "$$out"; exit 1; fi
$(GO) vet ./...
CGO_ENABLED=0 $(GO) build ./...

# atexit_sleep_ms=0: a race-built binary sleeps 1s on exit by default, and the
# lsp and mcp tests re-exec the test binary as a fake server — a second per
# server stop, 3s for one mcp test. The sleep only helps report races in
# goroutines still running at exit; the parent test binary still reports them.
unit:
GORACE=atexit_sleep_ms=0 $(GO) test -race -count=1 ./internal/...

hermetic:
scripts/hermetic.sh -count=1

e2e:
$(GO) test -count=1 ./e2e/...

smoke:
scripts/smoke.sh

torture:
scripts/torture.sh

cover:
scripts/cover.sh

install:
CGO_ENABLED=0 $(GO) install ./cmd/klaudia
Loading
Loading