Skip to content
Merged
Show file tree
Hide file tree
Changes from 72 commits
Commits
Show all changes
260 commits
Select commit Hold shift + click to select a range
68784cf
fix(tui): add scroll support to plan prompt modal
Implementist Jun 3, 2026
1669e3c
fix(tui): address code review feedback on plan prompt modal
Implementist Jun 3, 2026
14db9b2
fix(tui): avoid spurious exit-confirmation on short plan after scroll…
Implementist Jun 3, 2026
537a8bc
fix(tui): replace manual div_ceil with usize::div_ceil to satisfy cli…
Implementist Jun 3, 2026
11c448d
fix(plan_prompt): remove step truncation to allow content overflow in…
Implementist Jun 3, 2026
6d79d55
fix(plan_prompt): use display-width for leading spaces and de-hardcod…
Implementist Jun 3, 2026
47c071a
chore: apply cargo fmt fix to plan_prompt.rs
Implementist Jun 3, 2026
e3a5255
fix(plan_prompt): clear pending_g on Esc, deduplicate render_modal_ch…
Implementist Jun 3, 2026
966b5cf
refactor(plan_prompt): use display-width in wrap_text, skip wasted re…
Implementist Jun 3, 2026
88422f3
fix(plan_prompt): pre-wrap CJK+Latin mixed text to avoid forced line-…
Implementist Jun 3, 2026
4401f7a
feat(tools): hide legacy subagent and shell aliases from model catalo…
Hmbown Jun 4, 2026
27db89c
docs: update TOOL_SURFACE.md with v0.9.0 hidden-alias table (#2682, #…
Hmbown Jun 4, 2026
7b2a7e5
fix: Windows sub-agent completion halves TUI render width
jrcjrcc Jun 3, 2026
159f509
fix(tui): invalidate fanout card rows on sibling starts
Hmbown Jun 4, 2026
8502784
fix(xiaomi-mimo): use token-plan api-key auth
Hmbown Jun 4, 2026
44ceabd
docs: refresh README and v0.9 execution map
Hmbown Jun 4, 2026
5dc1a63
docs: harvest provider fallback chain RFC
Hmbown Jun 4, 2026
111a805
docs: mark mention depth hint harvested
Hmbown Jun 4, 2026
311eb40
feat(tui): add bounded restore snapshot listing
Hmbown Jun 4, 2026
868f99b
docs: update v0.9 PR harvest map
Hmbown Jun 4, 2026
60f8e7d
refactor(web_run): split cache locks for page reads
Hmbown Jun 4, 2026
98edba3
refactor(engine): append turn metadata after user text
HUQIANTAO Jun 4, 2026
42d27c0
ci: soften contribution intake gates
Hmbown Jun 4, 2026
445a7c8
ci: avoid duplicate PR gate comments
Hmbown Jun 4, 2026
5f51f89
chore: seed APPROVED_CONTRIBUTORS with recurring contributors (>=2 me…
Hmbown Jun 4, 2026
23c9481
feat: add HarmonyOS OpenHarmony support
Hmbown Jun 4, 2026
fb86737
test(settings): assert migrated settings display canonical path
Hmbown Jun 4, 2026
002f8f0
ci: enforce mappable co-author credit
Hmbown Jun 4, 2026
66c88dd
feat(runtime): allow thread workspace updates
Hmbown Jun 4, 2026
7ac8063
feat(plan): preserve rich PlanArtifact context
Hmbown Jun 4, 2026
9719b45
fix(skills): merge configured and workspace skill dirs
Hmbown Jun 4, 2026
55024a1
fix(subagent): inherit tool-agent model route
Hmbown Jun 4, 2026
c76ec47
feat(transcript): collapse dense tool runs
Hmbown Jun 4, 2026
e92202c
docs(release): update v0.9 stabilization ledger
Hmbown Jun 4, 2026
3332751
feat(runtime): save completed threads as sessions
Hmbown Jun 4, 2026
e14fc47
fix(tui): label pending input delivery modes
Hmbown Jun 4, 2026
8d4eb0c
fix(context): bound auto-generated project context
Hmbown Jun 4, 2026
185beb5
docs: expand v0.9 stewardship README
Hmbown Jun 4, 2026
3cb4923
feat(sidebar): show full details for truncated rows
Hmbown Jun 4, 2026
ad3d619
feat(subagent): preserve checkpoints for timeout continuation
Hmbown Jun 4, 2026
5b3ee9d
fix(tasks): fail stale running tasks after restart
Hmbown Jun 4, 2026
5d006a9
docs: record superseded transcript collapse PR
Hmbown Jun 4, 2026
8d9cd44
fix(tui): make queued follow-up edits recoverable
Hmbown Jun 4, 2026
6a7063c
ci(ohos): guard unsupported target dependencies
Hmbown Jun 4, 2026
e18f072
perf(context): cache project context with content signatures
Hmbown Jun 4, 2026
f5e6d46
docs: add agent stewardship guidance
Hmbown Jun 4, 2026
13cabac
docs(config): clarify provider path suffix support
Hmbown Jun 4, 2026
586640a
feat(config): add typed harness posture profiles
Hmbown Jun 4, 2026
0d66ef3
feat(hooks): add turn_end observer hook
Hmbown Jun 4, 2026
56f8044
feat(tui): show focused approval details
Hmbown Jun 4, 2026
15b129c
docs: clarify v0.9 README release status
Hmbown Jun 4, 2026
960bdc9
docs(providers): document Xiaomi MiMo Token Plan region endpoints
Hmbown Jun 5, 2026
9e29c22
fix(mcp): preserve underscored MCP server names in tool routing
Hmbown Jun 5, 2026
9d13960
feat(pricing): price Xiaomi MiMo primary models at matching DeepSeek …
Hmbown Jun 5, 2026
74b3268
fix(tui): render hydrated deferred-tool results as loaded, not run done
Hmbown Jun 5, 2026
70adeee
docs(v0.9): record #2746/#2747, #2750, #2756, #2757 harvests and #274…
Hmbown Jun 5, 2026
de86cc1
fix(tui): install rustls provider before HTTP clients
Hmbown Jun 5, 2026
47577d5
fix(tui): #2760 correct sessions resume footer
Hmbown Jun 5, 2026
32be8a3
Merge pull request #2761 from Hmbown/codex/harvest-2760-session-resum…
Hmbown Jun 5, 2026
1f703ba
docs(v0.9): record recent harvest closures
Hmbown Jun 5, 2026
01e5c42
docs(v0.9): record plan and tool harvest closures
Hmbown Jun 5, 2026
28d6b10
docs(v0.9): record runtime and legacy harvest closures
Hmbown Jun 5, 2026
1e54be0
fix(tui): refresh branch status after shell changes
Hmbown Jun 5, 2026
b3bdd6e
Merge pull request #2763 from Hmbown/codex/fix-live-branch-status-ref…
Hmbown Jun 5, 2026
494c8a5
fix(tui): gate shell child kill helper off Windows
Hmbown Jun 5, 2026
c00d5aa
Merge pull request #2764 from Hmbown/codex/fix-windows-shellchild-kil…
Hmbown Jun 5, 2026
cbb1142
test(shell): #2528 widen background completion wait
Hmbown Jun 5, 2026
7919338
Merge pull request #2765 from Hmbown/codex/harvest-2528-shell-test-wait
Hmbown Jun 5, 2026
933637b
feat(search): harvest custom duckduckgo endpoint
Hmbown Jun 5, 2026
8cbdf95
Merge pull request #2767 from Hmbown/codex/harvest-2510-search-base-url
Hmbown Jun 5, 2026
91215d5
feat(tui): harvest custom completion sound files
Hmbown Jun 5, 2026
4b61462
Merge pull request #2768 from Hmbown/codex/harvest-2512-completion-so…
Hmbown Jun 5, 2026
54f7556
fix(tui): harvest provider auth rollback
cyq1017 Jun 5, 2026
499ec42
Merge pull request #2769 from Hmbown/codex/harvest-2755-provider-auth…
Hmbown Jun 5, 2026
c36e4d7
fix(mcp): harvest trusted workspace MCP config
cyq1017 Jun 5, 2026
95e2419
Merge pull request #2770 from Hmbown/codex/harvest-2751-workspace-mcp…
Hmbown Jun 5, 2026
b527bd5
feat(init): harvest LLM-guided AGENTS.md init
HUQIANTAO Jun 5, 2026
f483544
Merge pull request #2771 from Hmbown/codex/harvest-2759-init-polish
Hmbown Jun 5, 2026
912d6ae
fix(tui): #2742 avoid static Ollama model suggestions
Hmbown Jun 5, 2026
68fb6e3
Merge pull request #2772 from Hmbown/codex/harvest-2742-ollama-comple…
Hmbown Jun 5, 2026
8869f6a
fix(mcp): #2744 preserve underscored names in displays
Hmbown Jun 5, 2026
b1d4d74
Merge pull request #2774 from Hmbown/codex/harvest-2744-mcp-display
Hmbown Jun 5, 2026
b000096
docs: drop internal v0.9 execution map
Hmbown Jun 5, 2026
cba5537
fix(config): keep path suffix out of project overrides
Hmbown Jun 5, 2026
bf0a3bc
Merge pull request #2775 from Hmbown/codex/remove-v090-execution-map
Hmbown Jun 5, 2026
0b07b81
Merge pull request #2776 from Hmbown/codex/harden-path-suffix-project…
Hmbown Jun 5, 2026
e5fe46d
feat(tui): expose stream chunk timeout config
Hmbown Jun 5, 2026
3ca8925
Merge pull request #2778 from Hmbown/codex/harvest-2507-stream-timeout
Hmbown Jun 5, 2026
93d08a8
feat(config): add dormant provider fallback chain
Hmbown Jun 5, 2026
1d50ed9
Merge pull request #2779 from Hmbown/codex/harvest-2777-fallback-chai…
Hmbown Jun 5, 2026
02c3579
feat(tui): ghost-text prompt suggestion after each turn
punkcanyang Jun 5, 2026
2e49b14
test(config): isolate provider chain runtime resolution
Hmbown Jun 5, 2026
786e5fe
Merge pull request #2793 from Hmbown/codex/fix-provider-chain-env-test
Hmbown Jun 5, 2026
5d9f93a
fix(tui): expose external URL opener on unsupported targets
Hmbown Jun 5, 2026
8dbe035
Merge pull request #2794 from Hmbown/codex/harvest-2789-open-external…
Hmbown Jun 5, 2026
0b0d815
fix(tui): enrich auth errors with request context
mvanhorn Jun 5, 2026
6d27bca
Merge pull request #2795 from Hmbown/codex/harvest-2792-auth-context
Hmbown Jun 5, 2026
abe366d
feat(tui): add sidebar slash command
aboimpinto Jun 5, 2026
4a7731f
docs(changelog): note sidebar command harvest
Hmbown Jun 5, 2026
8e2fc97
Merge pull request #2796 from Hmbown/codex/harvest-2788-sidebar-command
Hmbown Jun 5, 2026
af8ff03
feat(web_search): add Sofya search provider
yusufgurdogan Jun 5, 2026
b296f5f
Merge pull request #2797 from Hmbown/codex/harvest-2790-sofya-search
Hmbown Jun 5, 2026
f9d7ae7
test(tui): satisfy all-targets clippy map_or lint
Hmbown Jun 5, 2026
c3ec4b5
Merge pull request #2798 from Hmbown/codex/fix-all-targets-clippy-map-or
Hmbown Jun 5, 2026
5926bf3
feat(tui): add Hugging Face env aliases
hongqitai Jun 5, 2026
15c506b
Merge pull request #2799 from Hmbown/codex/harvest-2780-hf-env-aliases
Hmbown Jun 5, 2026
eb1d08b
fix(tui): address review — turn token, try_lock, static client, lifec…
punkcanyang Jun 5, 2026
be37dbd
feat(config): add Xiaomi MiMo token plan mode
xyuai Jun 5, 2026
1256125
Merge pull request #2800 from Hmbown/codex/harvest-2627-xiaomi-token-…
Hmbown Jun 5, 2026
1f9f860
feat(cache): project mode prompts per request
LeoAlex0 Jun 3, 2026
fbe8d9e
Merge pull request #2801 from Hmbown/codex/harvest-2687-runtime-promp…
Hmbown Jun 5, 2026
57e4a7b
feat(hf): harvest Hugging Face MCP helpers
idling11 Jun 5, 2026
71cb221
Merge pull request #2802 from Hmbown/codex/harvest-2782-hf-mcp-concepts
Hmbown Jun 5, 2026
6b7a05a
Harvest pausable custom command MVP
Hmbown Jun 5, 2026
805d748
fix(tui): surface subagent branch status
Hmbown Jun 5, 2026
8fe8900
Merge pull request #2803 from Hmbown/codex/harvest-2732-pausable-comm…
Hmbown Jun 5, 2026
f082762
Merge pull request #2804 from Hmbown/codex/fix-subagent-branch-status
Hmbown Jun 5, 2026
7fc074c
feat(client): harvest deterministic response cache
Hmbown Jun 5, 2026
e03f2ab
Merge pull request #2805 from Hmbown/codex/harvest-2501-response-cach…
Hmbown Jun 5, 2026
19f5c7a
fix(tui): keep agent progress visible in sidebar
Hmbown Jun 5, 2026
e8bdfcd
Merge pull request #2806 from Hmbown/codex/fix-agents-progress-detail…
Hmbown Jun 5, 2026
18027ae
docs(npm): clarify wrapper README configuration
Hmbown Jun 5, 2026
0e80d4e
Merge pull request #2807 from Hmbown/codex/harvest-2784-npm-readme-cl…
Hmbown Jun 5, 2026
ddaaa4d
docs: credit recurring v0.9 contributors
Hmbown Jun 6, 2026
e6078b7
Merge pull request #2809 from Hmbown/codex/v090-credit-contributors
Hmbown Jun 6, 2026
38fd4b1
feat(whaleflow): add typed workflow foundation
Hmbown Jun 6, 2026
ef239df
Merge pull request #2810 from Hmbown/codex/v090-whaleflow-foundation
Hmbown Jun 6, 2026
bed43e7
feat(vscode): add local runtime extension scaffold
Hmbown Jun 6, 2026
bb8b1d3
Merge pull request #2811 from Hmbown/codex/v090-vscode-scaffold
Hmbown Jun 6, 2026
7d8308a
docs: credit VS Code plugin request trail
Hmbown Jun 6, 2026
4c317bb
Merge pull request #2812 from Hmbown/codex/v090-vscode-credit
Hmbown Jun 6, 2026
54cbcd0
chore: map AdityaVG13 for harvested credit
Hmbown Jun 6, 2026
90234c1
Merge pull request #2813 from Hmbown/codex/v090-author-map-adityavg13
Hmbown Jun 6, 2026
ab29986
feat(vscode): add read-only agent view preview
Hmbown Jun 6, 2026
dda5901
Merge pull request #2814 from Hmbown/codex/v090-vscode-agent-view-pre…
Hmbown Jun 6, 2026
f8b26b4
feat(whaleflow): add serializable run result records
Hmbown Jun 6, 2026
a2cc6bd
feat(whaleflow): add trace store schema migration
Hmbown Jun 6, 2026
8ab629a
docs: credit current v0.9 stewardship contributors
Hmbown Jun 6, 2026
7dfc81b
chore: allowlist AdityaVG13 for v0.9 stewardship
Hmbown Jun 6, 2026
d868a0b
feat(prompts): harvest static composer override
Hmbown Jun 6, 2026
5d491bc
feat(config): harvest provider metadata registry
Hmbown Jun 6, 2026
d1f3c65
feat(whaleflow): add typed workflow spec IR
Hmbown Jun 6, 2026
bb88358
feat(runtime-api): add read-only snapshot listing
Hmbown Jun 6, 2026
cfbaba7
feat(whaleflow): add mock executor skeleton
Hmbown Jun 6, 2026
38a0d55
feat(whaleflow): add Starlark compile gate
Hmbown Jun 6, 2026
1bacaf7
feat(runtime-api): expose thread branch metadata
Hmbown Jun 6, 2026
7873835
feat(tui): show live background shell output (#2826)
Hmbown Jun 6, 2026
d10634c
feat(whaleflow): add usage telemetry to mock results (#2827)
Hmbown Jun 6, 2026
293643e
feat(vscode): show runtime restore points (#2828)
Hmbown Jun 6, 2026
79c0bd4
feat(whaleflow): replay recorded workflow outputs (#2829)
Hmbown Jun 6, 2026
5044a29
feat(whaleflow): add model role policy registry (#2830)
Hmbown Jun 6, 2026
e5974aa
feat(whaleflow): run dogfood workflow with mock executor (#2831)
Hmbown Jun 6, 2026
50b773f
feat(vscode): auto-refresh read-only agent view (#2832)
Hmbown Jun 6, 2026
85b5ca5
feat(whaleflow): add memo telemetry counters (#2833)
Hmbown Jun 6, 2026
190e9f3
feat(config): add provider TLS skip verify
Hmbown Jun 6, 2026
6269cb9
fix(cli): include TLS skip flag in runtime option tests
Hmbown Jun 6, 2026
56fa055
fix(tui): count workspace MCP servers in status surfaces
Hmbown Jun 6, 2026
96b825b
docs(runtime): document read-only VS Code Agent View APIs
Hmbown Jun 6, 2026
6bb564e
fix(whaleflow): reject unknown workflow references (#2837)
Hmbown Jun 6, 2026
d784f1e
feat(compaction): add dormant hard compaction planner (#2838)
Hmbown Jun 6, 2026
14d14f5
feat(whaleflow): add teacher candidate artifacts (#2839)
Hmbown Jun 6, 2026
6a527fc
feat(whaleflow): add student replay promotion gate (#2840)
Hmbown Jun 6, 2026
7fc4ec8
feat(whaleflow): mark mock cancellation and budgets (#2841)
Hmbown Jun 6, 2026
a705275
docs(whaleflow): define external memory cutline (#2842)
Hmbown Jun 6, 2026
2bb24d0
docs(release): add v0.9 acceptance matrix (#2843)
Hmbown Jun 6, 2026
efbcc68
docs(harness): define profile cutline (#2844)
Hmbown Jun 6, 2026
e22a7da
docs(harness): align v0.9 profile acceptance
Hmbown Jun 6, 2026
cd9a044
docs(release): fill v0.9 acceptance evidence
Hmbown Jun 6, 2026
23a188e
fix(vscode): keep agent view metadata on snapshot errors
Hmbown Jun 6, 2026
35cd09a
fix(tui): classify stream decode failures as network errors
Hmbown Jun 6, 2026
e60eeb8
feat(config): add dormant harness profile resolver
Hmbown Jun 6, 2026
73c8318
test(whaleflow): replay dogfood workflow from recorded trace
Hmbown Jun 6, 2026
caa1d4a
docs(release): mark deferred v0.9 acceptance gates
Hmbown Jun 6, 2026
e69ea45
docs(release): resolve v0.9 UI acceptance cutline
Hmbown Jun 6, 2026
a5a6b0a
docs(release): record slash picker v0.9 evidence
Hmbown Jun 6, 2026
2561a54
docs(release): close v0.9 credit rollback gates (#2856)
Hmbown Jun 6, 2026
ab8e3a1
docs(release): record v0.9 core gate evidence (#2857)
Hmbown Jun 6, 2026
b2e1ba1
docs(release): mark asset verification as pre-npm gate (#2858)
Hmbown Jun 6, 2026
7bd6827
docs(release): record macOS startup evidence (#2859)
Hmbown Jun 6, 2026
137d65c
docs(release): record DeepSeek v4 live smoke (#2860)
Hmbown Jun 6, 2026
cc3cbc8
docs(release): record Linux startup evidence (#2861)
Hmbown Jun 6, 2026
5bd2f6a
feat(runtime-api): expose git status metadata for agent view (#2862)
Hmbown Jun 6, 2026
e687b07
fix(tui): make prompt suggestion configurable (opt-in, default off)
punkcanyang Jun 6, 2026
80246f0
test(tui): add prompt suggestion config and widget tests
punkcanyang Jun 6, 2026
649d399
feat(tui): add multi-tab system core (manager + persistence)
Jun 6, 2026
7fcd7d7
chore(tui): address Phase 2 bot review on narrow tab-core harvest
Jun 6, 2026
1f99fcb
feat(tui): add hotbar action registry foundation
reidliu41 Jun 6, 2026
da6b814
fix(tui): prevent AltGr from swallowing @/#/$/!/%/ characters in comp…
ousamabenyounes Jun 6, 2026
700a36e
style(tui): format AltGr sidebar shortcut guards
Hmbown Jun 6, 2026
c9ce6c9
fix(tui): harden hotbar action dispatch
Hmbown Jun 6, 2026
ffaf110
fix(tui): advance tab restore counters
Hmbown Jun 6, 2026
461c22f
Merge pull request #2867 from ousamabenyounes/fix/azerty-altgr-at-key…
Hmbown Jun 6, 2026
a7c1c03
Merge pull request #2866 from reidliu41/feat/hotbar-action-registry
Hmbown Jun 6, 2026
0b96e89
Merge pull request #2864 from ljm3790865/feat/tab-core-narrow
Hmbown Jun 6, 2026
6b1de93
chore(release): credit direct v0.9 community merges
Hmbown Jun 6, 2026
ce17f06
feat(vscode): show thread git metadata
Hmbown Jun 6, 2026
ad70739
Merge pull request #2868 from Hmbown/codex/v090-vscode-git-meta
Hmbown Jun 6, 2026
fa9ad02
fix(tui): list saved models from all providers in picker
ousamabenyounes Jun 6, 2026
db0ce5b
refactor(tui): parse provider keys once in picker row build
ousamabenyounes Jun 6, 2026
5300dc4
chore: enforce lf for rust sources
aboimpinto Jun 7, 2026
8e8b45a
test: make command-adjacent tests hermetic
aboimpinto Jun 7, 2026
18df8db
refactor: extract neutral command support
aboimpinto Jun 7, 2026
fefd63f
fix: address command layer review feedback
aboimpinto Jun 7, 2026
59d12f3
Merge pull request #2871 from aboimpinto/feat/2791-command-parity-har…
Hmbown Jun 7, 2026
9b500a7
Prepare v0.9.0 release build
Hmbown Jun 7, 2026
f2159b7
docs(release): honor v0.9 contributor credits
Hmbown Jun 7, 2026
fde931e
chore(release): allow trusted v0.9 contributors
Hmbown Jun 7, 2026
3d676c2
chore(tui): harden exec harness signals
Hmbown Jun 7, 2026
00407b5
feat(config): add hotbar slot persistence
reidliu41 Jun 7, 2026
427bd5d
feat(cache): slim runtime_prompt to minimal tag, move policy descript…
LeoAlex0 Jun 7, 2026
0b5d574
fix(cache): address CR feedback — blank lines, heading hierarchy, deb…
LeoAlex0 Jun 7, 2026
12167b3
refactor(cache): replace taxonomy_body strip hack with source-level r…
LeoAlex0 Jun 7, 2026
039abb2
refactor(cache): remove render_core_tool_taxonomy_block, inline to bo…
LeoAlex0 Jun 7, 2026
c6c3d2c
refactor(cache): inline single-call helpers, remove dead code
LeoAlex0 Jun 7, 2026
7b900b8
test(cache): rename misleading test — does not exercise Op::ChangeMod…
LeoAlex0 Jun 7, 2026
256f34c
fix(cache): set temp spillover root in cache_inspect test to survive …
LeoAlex0 Jun 7, 2026
96bff65
test(tui): add command parity harness
aboimpinto Jun 7, 2026
acaae1c
test(tui): address command harness review
aboimpinto Jun 7, 2026
55d7499
test: add runtime_policy_reference composition test, strengthen Chang…
LeoAlex0 Jun 7, 2026
ef4dc5c
fix: error handling bugs - log instead of silently swallowing errors
HUQIANTAO Jun 7, 2026
27fac5d
fix: security bugs in execpolicy, app-server, and tools
HUQIANTAO Jun 7, 2026
4304c89
fix: concurrency bugs - mutex handling, thread spawning, and resource…
HUQIANTAO Jun 7, 2026
eb3a989
fix: address review comments on engine.rs
HUQIANTAO Jun 7, 2026
75593a0
fix: address security review comments
HUQIANTAO Jun 7, 2026
27ca872
fix: use Box<dyn Write + Send> for cross-platform tracing writer
HUQIANTAO Jun 7, 2026
265b8ee
fix: add tracing dependency to core crate and apply cargo fmt
HUQIANTAO Jun 7, 2026
4dd0a47
style: apply cargo fmt formatting
HUQIANTAO Jun 7, 2026
9aa71e2
chore: update Cargo.lock for tracing dependency in core crate
HUQIANTAO Jun 7, 2026
3c197d7
fix: add sse_task field to SseTransport test initializer
HUQIANTAO Jun 7, 2026
5e761a6
fix: collapse nested if-let to satisfy clippy::collapsible_if lint
HUQIANTAO Jun 7, 2026
5cab151
fix: add tracing dependency to app-server crate
HUQIANTAO Jun 7, 2026
bdf7b15
revert: use std::thread::spawn for fire-and-forget hooks
HUQIANTAO Jun 7, 2026
d90031f
Add Gherkin acceptance E2E harness example
aboimpinto Jun 7, 2026
c25f7af
Address acceptance harness review feedback
aboimpinto Jun 7, 2026
97f6e0b
fix(tui): use sort_by_key to satisfy clippy::unnecessary_sort_by
ousamabenyounes Jun 7, 2026
b0d9c31
Merge PR #2878 from aboimpinto: Layer 2 command parity harness
Hmbown Jun 7, 2026
2c56f77
Merge PR #2887 from aboimpinto: Gherkin acceptance E2E harness
Hmbown Jun 7, 2026
a42e911
Merge PR #2873 from reidliu41: hotbar slot persistence
Hmbown Jun 7, 2026
3619962
Merge PR #2874 from LeoAlex0: slim runtime_prompt to minimal tag
Hmbown Jun 7, 2026
a54d08f
chore(fmt): rustfmt engine tests from PR #2874
Hmbown Jun 7, 2026
face4dc
Merge PR #2877 from LeoAlex0: cache_inspect test spillover root
Hmbown Jun 7, 2026
4caa287
Merge PR #2882 from HUQIANTAO: security fixes in execution policy and…
Hmbown Jun 7, 2026
1a9549b
Merge PR #2881 from HUQIANTAO: log instead of swallowing errors
Hmbown Jun 7, 2026
b39e00e
Merge PR #2883 from HUQIANTAO: concurrency hardening (mutex recovery,…
Hmbown Jun 7, 2026
8d329a4
Merge PR #2869 from ousamabenyounes: list saved models from all provi…
Hmbown Jun 7, 2026
ab65495
Merge PR #2781 from punkcanyang: opt-in ghost-text follow-up suggestion
Hmbown Jun 7, 2026
e2b7d5e
fix: harvest safe bug fixes from PR #2880
Hmbown Jun 7, 2026
4e3184e
fix(client): consume probe response body to return connection to pool
Hmbown Jun 7, 2026
17dbed1
feat(execpolicy): wire permissions.toml ask-rules into runtime
greyfreedom Jun 7, 2026
f88528a
test(subagent): de-flake touch_refreshes_stale_running_agent_heartbeat
Hmbown Jun 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
18 changes: 18 additions & 0 deletions .cargo/config.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# HarmonyOS/OpenHarmony cross-build paths are intentionally not configured
# here. Cargo does not expand environment variables inside target linker paths
# or CMake toolchain paths, so checked-in absolute SDK paths make the workspace
# machine-specific.
#
# See docs/HarmonyOS.md for setup details.
#
# Set OHOS_NATIVE_SDK to the OpenHarmony native SDK directory, then load one of:
#
# PowerShell:
# . .\scripts\ohos-env.ps1
#
# Linux/macOS:
# . ./scripts/ohos-env.sh
#
# The setup scripts export Cargo's target-specific linker, AR, CC, CXX, CFLAGS,
# CXXFLAGS, CARGO_ENCODED_RUSTFLAGS, CC_SHELL_ESCAPED_FLAGS, and
# CMAKE_TOOLCHAIN_FILE variables for aarch64-unknown-linux-ohos.
3 changes: 3 additions & 0 deletions .cnb.yml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,7 @@
script: |
set -eu
./scripts/release/check-versions.sh
./scripts/release/check-ohos-deps.sh
cargo fmt --all -- --check
cargo check --workspace --all-targets --locked
cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
Expand Down Expand Up @@ -75,6 +76,7 @@
script: |
set -eu
./scripts/release/check-versions.sh
./scripts/release/check-ohos-deps.sh
cargo fmt --all -- --check
cargo check --workspace --all-targets --locked
cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
Expand Down Expand Up @@ -123,6 +125,7 @@ $:
apt-get install -y git libdbus-1-dev nodejs pkg-config

./scripts/release/check-versions.sh
./scripts/release/check-ohos-deps.sh
cargo build --release --locked -p codewhale-cli -p codewhale-tui

mkdir -p target/cnb-release
Expand Down
45 changes: 45 additions & 0 deletions .github/APPROVED_CONTRIBUTORS
Original file line number Diff line number Diff line change
Expand Up @@ -9,3 +9,48 @@
# issue:username
# all:username
all:hmbown
all:reidliu41
all:HUQIANTAO
all:merchloubna70-dot
all:h3c-hexin
all:axobase001
all:donglovejava
all:Oliver-ZPLiu
all:idling11
all:angziii
all:aboimpinto
all:encyc
all:Duducoco
all:cyq1017
all:zlh124
all:THINKER-ONLY
all:nightt5879
all:Liu-Vince
all:JiarenWang
all:wdw8276
all:pengyou200902
all:linzhiqin2003
all:LING71671
all:JasonOA888
all:Inference1
all:hongqitai
all:gordonlu
all:gaord
all:zhuangbiaowei
all:yuanchenglu
all:Vishnu1837
all:sximelon
all:Sskift
all:New2Niu
all:mvanhorn
all:MengZ-super
all:membphis
all:LeoAlex0
all:Lee-take
all:lbcheng888
all:kunpeng-ai-lab
all:elowen53
all:CrepuscularIRIS
all:chnjames
all:ChaceLyee2101
all:AresNing
91 changes: 91 additions & 0 deletions .github/AUTHOR_MAP
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
# Contributor credit identity map.
#
# Format:
# alias = Display Name <id+login@users.noreply.github.com>
#
# The right-hand side must use GitHub's numeric noreply address so harvested
# co-author credit lands in the contributor graph. The left-hand side may be a
# GitHub login, old-style noreply address, raw email from a contributor commit,
# or local machine email seen in older harvested history.

hmbown = Hmbown <101357273+Hmbown@users.noreply.github.com>
reidliu41 = reidliu41 <61492567+reidliu41@users.noreply.github.com>
reid201711@gmail.com = reidliu41 <61492567+reidliu41@users.noreply.github.com>
HUQIANTAO = HUQIANTAO <58421104+HUQIANTAO@users.noreply.github.com>
Hu Qiantao = HUQIANTAO <58421104+HUQIANTAO@users.noreply.github.com>
huqiantao@users.noreply.github.com = HUQIANTAO <58421104+HUQIANTAO@users.noreply.github.com>
huqiantao@HudeMacBook-Air.local = HUQIANTAO <58421104+HUQIANTAO@users.noreply.github.com>
tom_huu@qq.com = HUQIANTAO <58421104+HUQIANTAO@users.noreply.github.com>
merchloubna70-dot = merchloubna70-dot <258170091+merchloubna70-dot@users.noreply.github.com>
h3c-hexin = h3c-hexin <13790929+h3c-hexin@users.noreply.github.com>
he.xin@h3c.com = h3c-hexin <13790929+h3c-hexin@users.noreply.github.com>
axobase001 = axobase001 <138223345+axobase001@users.noreply.github.com>
donglovejava = donglovejava <211940267+donglovejava@users.noreply.github.com>
Oliver-ZPLiu = Oliver-ZPLiu <47081637+Oliver-ZPLiu@users.noreply.github.com>
idling11 = idling11 <8055620+idling11@users.noreply.github.com>
Hanmiao Li = idling11 <8055620+idling11@users.noreply.github.com>
894876246@qq.com = idling11 <8055620+idling11@users.noreply.github.com>
angziii = angziii <177907677+angziii@users.noreply.github.com>
aboimpinto = aboimpinto <1231687+aboimpinto@users.noreply.github.com>
Paulo Aboim Pinto = aboimpinto <1231687+aboimpinto@users.noreply.github.com>
aboimpinto@gmail.com = aboimpinto <1231687+aboimpinto@users.noreply.github.com>
encyc = encyc <62669951+encyc@users.noreply.github.com>
Duducoco = Duducoco <69681789+Duducoco@users.noreply.github.com>
cyq1017 = cyq1017 <61975706+cyq1017@users.noreply.github.com>
cyq = cyq1017 <61975706+cyq1017@users.noreply.github.com>
15000851237@163.com = cyq1017 <61975706+cyq1017@users.noreply.github.com>
zlh124 = zlh124 <56312993+zlh124@users.noreply.github.com>
THINKER-ONLY = THINKER-ONLY <181556007+THINKER-ONLY@users.noreply.github.com>
nightt5879 = nightt5879 <87569709+nightt5879@users.noreply.github.com>
Liu-Vince = Liu-Vince <56624166+Liu-Vince@users.noreply.github.com>
Vince = Liu-Vince <56624166+Liu-Vince@users.noreply.github.com>
liuwenchang.x@qq.com = Liu-Vince <56624166+Liu-Vince@users.noreply.github.com>
JiarenWang = JiarenWang <33421508+JiarenWang@users.noreply.github.com>
wdw8276 = wdw8276 <3972439+wdw8276@users.noreply.github.com>
pengyou200902 = pengyou200902 <35026241+pengyou200902@users.noreply.github.com>
linzhiqin2003 = linzhiqin2003 <123250980+linzhiqin2003@users.noreply.github.com>
LING71671 = LING71671 <231181387+LING71671@users.noreply.github.com>
JasonOA888 = JasonOA888 <101583541+JasonOA888@users.noreply.github.com>
Inference1 = Inference1 <68734681+Inference1@users.noreply.github.com>
hongqitai = hongqitai <188678175+hongqitai@users.noreply.github.com>
gordonlu = gordonlu <3125629+gordonlu@users.noreply.github.com>
gaord = gaord <9567937+gaord@users.noreply.github.com>
Ben Gao = gaord <9567937+gaord@users.noreply.github.com>
bengao168@msn.com = gaord <9567937+gaord@users.noreply.github.com>
zhuangbiaowei = zhuangbiaowei <93194+zhuangbiaowei@users.noreply.github.com>
yuanchenglu = yuanchenglu <4088730+yuanchenglu@users.noreply.github.com>
Vishnu1837 = Vishnu1837 <104626273+Vishnu1837@users.noreply.github.com>
sximelon = sximelon <15710511+sximelon@users.noreply.github.com>
Sskift = Sskift <163287349+Sskift@users.noreply.github.com>
New2Niu = New2Niu <19551155+New2Niu@users.noreply.github.com>
mvanhorn = mvanhorn <455140+mvanhorn@users.noreply.github.com>
MengZ-super = MengZ-super <121712068+MengZ-super@users.noreply.github.com>
membphis = membphis <6814606+membphis@users.noreply.github.com>
LeoAlex0 = LeoAlex0 <31839998+LeoAlex0@users.noreply.github.com>
Lee-take = Lee-take <210963840+Lee-take@users.noreply.github.com>
lbcheng888 = lbcheng888 <6716643+lbcheng888@users.noreply.github.com>
kunpeng-ai-lab = kunpeng-ai-lab <16793595+kunpeng-ai-lab@users.noreply.github.com>
elowen53 = elowen53 <88364845+elowen53@users.noreply.github.com>
Elowen = elowen53 <88364845+elowen53@users.noreply.github.com>
xrnc@outlook.com = elowen53 <88364845+elowen53@users.noreply.github.com>
CrepuscularIRIS = CrepuscularIRIS <126939795+CrepuscularIRIS@users.noreply.github.com>
chnjames = chnjames <44110547+chnjames@users.noreply.github.com>
ChaceLyee2101 = ChaceLyee2101 <95995339+ChaceLyee2101@users.noreply.github.com>
AresNing = AresNing <49557311+AresNing@users.noreply.github.com>

shenjackyuanjie = shenjackyuanjie <54507071+shenjackyuanjie@users.noreply.github.com>
shenjack = shenjackyuanjie <54507071+shenjackyuanjie@users.noreply.github.com>
3695888@qq.com = shenjackyuanjie <54507071+shenjackyuanjie@users.noreply.github.com>
xyuai = xyuai <281015099+xyuai@users.noreply.github.com>
Implementist = Implementist <24910011+Implementist@users.noreply.github.com>
implecao = Implementist <24910011+Implementist@users.noreply.github.com>
yuyuyu4993@qq.com = Implementist <24910011+Implementist@users.noreply.github.com>
jrcjrcc = jrcjrcc <192965070+jrcjrcc@users.noreply.github.com>
jrcjrcc@users.noreply.github.com = jrcjrcc <192965070+jrcjrcc@users.noreply.github.com>
RefuseOdd = RefuseOdd <192543033+RefuseOdd@users.noreply.github.com>
wywsoor = wywsoor <26341601+wywsoor@users.noreply.github.com>
hsdbeebou = hsdbeebou <284843096+hsdbeebou@users.noreply.github.com>
tdccccc = tdccccc <79492752+tdccccc@users.noreply.github.com>
greyfreedom = greyfreedom <11493871+greyfreedom@users.noreply.github.com>
greyfreedom@163.com = greyfreedom <11493871+greyfreedom@users.noreply.github.com>
puneetdixit200 = puneetdixit200 <236133619+puneetdixit200@users.noreply.github.com>
1 change: 1 addition & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
Expand Up @@ -11,3 +11,4 @@
- [ ] Updated docs or comments as needed
- [ ] Added or updated tests where relevant
- [ ] Verified TUI behavior manually if UI changes
- [ ] Harvested/co-authored credit uses a GitHub numeric noreply address
20 changes: 20 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,16 @@ jobs:
node-version: 20
- name: Check version drift
run: ./scripts/release/check-versions.sh
- name: Check OHOS dependency graph
run: ./scripts/release/check-ohos-deps.sh

lint:
name: Lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- uses: dtolnay/rust-toolchain@stable
with:
components: rustfmt, clippy
Expand All @@ -50,6 +54,22 @@ jobs:
run: cargo clippy --workspace --all-features --locked -- -D warnings
- name: Check provider registry drift
run: python3 scripts/check-provider-registry.py
- name: Check harvested contributor credit
if: github.event_name != 'schedule'
shell: bash
run: |
if [[ "${{ github.event_name }}" == "pull_request" ]]; then
git fetch --no-tags origin "${{ github.base_ref }}"
RANGE="origin/${{ github.base_ref }}..HEAD"
elif [[ "${{ github.event.before }}" != "0000000000000000000000000000000000000000" ]]; then
RANGE="${{ github.event.before }}..${{ github.sha }}"
else
RANGE="HEAD~1..HEAD"
fi
python3 scripts/check-coauthor-trailers.py \
--author-map .github/AUTHOR_MAP \
--range "$RANGE" \
--check-authors
- name: Linux clippy location
run: echo "Linux clippy/test gates run on CNB for mirrored fix/*, rebrand/*, work/v*, and main branches."

Expand Down
41 changes: 13 additions & 28 deletions .github/workflows/issue-gate.yml
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
name: Contribution gate - issues
name: Contribution intake - issues

on:
issues:
Expand All @@ -8,29 +8,18 @@ permissions:
contents: read
issues: write

env:
# Keep new gates observable first. Switch to "enforce" only after maintainers
# have seeded active contributors and reviewed the dry-run signal.
CONTRIBUTION_GATE_MODE: dry-run

jobs:
gate:
runs-on: ubuntu-latest
steps:
- name: Gate unapproved external issues
- name: Welcome new external issue reporters
uses: actions/github-script@v7
with:
script: |
const issue = context.payload.issue;
const owner = context.repo.owner;
const repo = context.repo.repo;
const privileged = new Set(['OWNER', 'MEMBER', 'COLLABORATOR']);
const gateMode = (process.env.CONTRIBUTION_GATE_MODE || 'dry-run').trim().toLowerCase();
const enforceGate = gateMode === 'enforce';

if (!['dry-run', 'enforce'].includes(gateMode)) {
core.warning(`Unknown CONTRIBUTION_GATE_MODE "${gateMode}"; defaulting to dry-run.`);
}

if (privileged.has(issue.author_association)) return;
if (issue.user.login === 'github-actions[bot]') return;
Expand Down Expand Up @@ -71,29 +60,25 @@ jobs:
return;
}

const gateMessage = enforceGate
? 'This repository currently uses a maintainer-managed contribution gate, so issues from contributors who are not listed in `.github/APPROVED_CONTRIBUTORS` are closed automatically.'
: 'This repository is currently observing a maintainer-managed contribution gate in dry-run mode, so this issue is staying open. When enforcement is enabled, issues from contributors who are not listed in `.github/APPROVED_CONTRIBUTORS` will be closed automatically.';
const marker = '<!-- codewhale-issue-intake -->';
const { data: comments } = await github.rest.issues.listComments({
owner,
repo,
issue_number: issue.number,
per_page: 100,
});
if (comments.some(comment => (comment.body || '').includes(marker))) return;

await github.rest.issues.createComment({
owner,
repo,
issue_number: issue.number,
body: [
marker,
`Thanks @${issue.user.login} for the report.`,
'',
gateMessage,
'This issue is staying open for maintainer triage. CodeWhale gets better because people bring us real edge cases from real machines, providers, regions, and workflows.',
'',
'Please read `CONTRIBUTING.md` for the expected issue shape. A maintainer can grant issue access by commenting `/lgtmi` on an issue.',
'If you can add a reproduction, logs, version output, screenshots, or the provider/model involved, that makes it much easier for us to verify and harvest the fix. Maintainers may comment `/lgtmi` to mark recurring issue reporters as approved so this intake note is skipped next time.',
].join('\n'),
});

if (!enforceGate) return;

await github.rest.issues.update({
owner,
repo,
issue_number: issue.number,
state: 'closed',
state_reason: 'not_planned',
});
31 changes: 21 additions & 10 deletions .github/workflows/pr-gate.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,21 +73,32 @@ jobs:
}

const gateMessage = enforceGate
? 'This repository currently uses a maintainer-managed contribution gate, so pull requests from contributors who are not listed in `.github/APPROVED_CONTRIBUTORS` are closed automatically.'
: 'This repository is currently observing a maintainer-managed contribution gate in dry-run mode, so this pull request is staying open. When enforcement is enabled, pull requests from contributors who are not listed in `.github/APPROVED_CONTRIBUTORS` will be closed automatically.';
? 'This repository currently limits automated PR intake to contributors listed in `.github/APPROVED_CONTRIBUTORS`. This is a maintainer-safety control for code review and CI load, not a judgment on the contribution. A maintainer can grant recurring PR access with `/lgtm` after review; once the generated allowlist PR is merged, this pull request can be reopened or resubmitted.'
: 'This repository is observing a maintainer-managed PR intake gate in dry-run mode, so this pull request is staying open. This note helps maintainers prepare the allowlist before any enforcement is considered.';

await github.rest.issues.createComment({
const marker = '<!-- codewhale-pr-gate -->';
const { data: comments } = await github.rest.issues.listComments({
owner,
repo,
issue_number: pr.number,
body: [
`Thanks @${pr.user.login} for taking the time to contribute.`,
'',
gateMessage,
'',
'Please read `CONTRIBUTING.md` for the expected contribution shape. A maintainer can grant PR access by commenting `/lgtm` on a pull request.',
].join('\n'),
per_page: 100,
});
const alreadyNoted = comments.some(comment => (comment.body || '').includes(marker));
if (!alreadyNoted) {
await github.rest.issues.createComment({
owner,
repo,
issue_number: pr.number,
body: [
marker,
`Thanks @${pr.user.login} for taking the time to contribute.`,
'',
gateMessage,
'',
'Please read `CONTRIBUTING.md` for the expected contribution shape. A maintainer can grant recurring PR access by commenting `/lgtm` on a pull request.',
].join('\n'),
});
}

if (!enforceGate) return;

Expand Down
2 changes: 2 additions & 0 deletions .github/workflows/release.yml
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,8 @@ jobs:
run: cargo fmt --all -- --check
- name: Compile check
run: cargo check --workspace --all-targets --locked
- name: OHOS dependency graph
run: ./scripts/release/check-ohos-deps.sh
- name: Clippy
run: cargo clippy --workspace --all-targets --all-features --locked -- -D warnings
- name: Workspace tests
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ docs/*.pdf
# Local dev scripts and temp files
*.sh
*.cmd
!ohos-clang.sh
!ohos-clangxx.sh
!scripts/**
!.github/scripts/**
test.txt
Expand Down
22 changes: 22 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
# Repository Agent Guidance

## CodeWhale Stewardship

- Treat community contributors as partners. Good-faith PRs, issue reports,
repros, logs, reviews, and verification comments are maintainer evidence,
not queue noise.
- Keep gates warm and dry-run unless Hunter explicitly approves enforcement.
Gate copy should guide contributors clearly and respectfully.
- Credit every harvested PR, issue report, or comment that materially shaped a
fix. Preserve authorship when possible; otherwise use mappable GitHub
noreply `Co-authored-by` trailers from `.github/AUTHOR_MAP`.
- Do not tag, publish, create a GitHub Release, or push release artifacts
without Hunter approval.
- Use CodeWhale branding while keeping DeepSeek support first-class. Retiring
legacy `deepseek-tui` names must never read as deprecating DeepSeek models or
provider support.
- Review PRs from code, tests, linked issues, comments, and check results.
Never merge, close, harvest, or defer community work from title or labels
alone.
- Respect concurrent work in the tree. Do not revert or rewrite unrelated
edits by other people or agents.
Loading
Loading