lobehub/src
Arvin Xu 6ca5fc4bdc
feat(hetero-agent): Claude Code runtime, cwd, and sidebar polish (#13970)
*  feat(hetero-agent): synthesize pluginState.todos from CC TodoWrite

Adapter now translates Claude Code's declarative TodoWrite tool_use input into the shared StepContextTodos shape and attaches it to tool_result. Selector drops the GTD identifier filter so any producer honoring pluginState.todos lights up the TodoProgress card.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 🐛 fix(hetero-agent): skip TodoWrite pluginState synthesis on error results

A failed TodoWrite (is_error=true) means the snapshot was never applied on CC's side. Since selectTodosFromMessages now picks the latest pluginState.todos from any producer, leaking a failed-write snapshot could overwrite the live todo UI with changes that never actually happened. Drain the cache either way so a retry with a fresh tool_use id doesn't inherit stale args.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>

* 🐛 fix(hetero-agent): prefer topic-level cwd on send; route UI changes to active topic

Topic-level workingDirectory now takes priority over agent-level on the
send path, matching what the topic is actually pinned to. The UI picker
writes to the active topic's metadata (not the agent default), and warns
before switching when doing so would invalidate an existing CC session.

*  feat(tab): reset tab cache when page type changes to stop stale metadata bleed

Switching a tab from one page type to another (e.g. agent → home) kept
the previous page's cached title/avatar, so the new page rendered with
the wrong header. Reset the cache on type change; preserve the merge
only when the type stays the same.

* 🐛 fix(hetero-agent): kill CC process tree on cancel so tool children exit

SIGINT to just the claude binary was leaving bash/grep/etc. tool
subprocesses running, which kept the CLI hung waiting on them. Spawn
the child detached (Unix) so we can signal the whole group via
process.kill(-pid, sig); use taskkill /T /F on Windows. Escalate
SIGINT → SIGKILL after 2s for tool calls that swallow SIGINT, and do
the same tree kill on disposeSession's SIGTERM path.

*  feat(hetero-agent): show "Full access" badge in CC working-directory bar

Claude Code runs locally with full read/write on the working directory
and permission mode switching isn't wired up yet — the badge sets that
expectation up-front instead of leaving users guessing. Tooltip spells
out the constraint for anyone who wants detail.

* ♻️ refactor(agent-list): show runtime name (Claude Code/Codex) instead of generic "External" tag

The "External" tag on heterogeneous agents didn't tell users which
runtime backs the agent — multiple CLI runtimes (Claude Code, Codex, …)
looked identical in the sidebar. Map the heterogeneous type to its
display name so the tag identifies the actual runtime, with the raw
type as a fallback for any future provider we haven't mapped yet.

---------

Co-authored-by: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-04-19 20:33:11 +08:00
..
app 🐛 fix(auth): clear OIDC sessions when user signs out via better-auth (#13916) 2026-04-17 22:32:29 +08:00
business feat(subscription): add cross-platform subscription support for mobile IAP (#13413) 2026-04-11 00:27:51 +08:00
components feat(desktop): add dedicated topic popup window with cross-window sync (#13957) 2026-04-19 02:15:29 +08:00
config feat(onboarding): add feature flags and footer promotion pipeline (#13853) 2026-04-17 21:14:27 +08:00
const feat(document): add history management and compare workflow (#13725) 2026-04-16 23:24:28 +08:00
envs 🐛 fix: message gateway queue error (#13816) 2026-04-14 22:10:17 +08:00
features feat(hetero-agent): Claude Code runtime, cwd, and sidebar polish (#13970) 2026-04-19 20:33:11 +08:00
helpers 🐛 fix: drop manifests missing api before feeding ToolsEngine (#13856) 2026-04-16 01:04:55 +08:00
hooks feat: promote agent documents as primary workspace panel (#13924) 2026-04-17 23:04:59 +08:00
layout feat(document): add history management and compare workflow (#13725) 2026-04-16 23:24:28 +08:00
libs feat(workflow): tri-state completion status icon for WorkflowCollapse (#13952) 2026-04-19 01:23:51 +08:00
locales feat(hetero-agent): Claude Code runtime, cwd, and sidebar polish (#13970) 2026-04-19 20:33:11 +08:00
routes feat(hetero-agent): Claude Code runtime, cwd, and sidebar polish (#13970) 2026-04-19 20:33:11 +08:00
server ♻️ refactor(agent-documents): fix title/documentId flow + split Inspector per action (#13940) 2026-04-19 01:06:06 +08:00
services feat(desktop): add dedicated topic popup window with cross-window sync (#13957) 2026-04-19 02:15:29 +08:00
spa feat(desktop): add dedicated topic popup window with cross-window sync (#13957) 2026-04-19 02:15:29 +08:00
store feat(hetero-agent): Claude Code runtime, cwd, and sidebar polish (#13970) 2026-04-19 20:33:11 +08:00
styles 🌐 chore: translate non-English comments to English in packages (#13427) 2026-03-31 18:11:39 +08:00
types feat(desktop): add Electron version display in system tools settings (#13630) 2026-04-07 21:53:27 +08:00
utils feat(desktop): add dedicated topic popup window with cross-window sync (#13957) 2026-04-19 02:15:29 +08:00
auth.ts 🔨 chore: project structure businessify (#10930) 2025-12-24 17:52:22 +08:00
initialize.ts feat(resource): add select all hint and improve resource explorer selection (#13134) 2026-03-28 11:51:23 +08:00
instrumentation.node.ts feat:support LobeHub MarketPlace (#8841) 2025-11-11 23:16:19 +08:00
instrumentation.ts 🔨 chore: add ENABLE_BOT_IN_DEV swtich (#13883) 2026-04-16 17:47:31 +08:00
proxy.ts feat(onboarding): agent web onboarding, feature toggle, and lifecycle sync (#13139) 2026-03-30 20:28:54 +08:00
vite.d.ts 🔨 chore(vite): support direct markdown imports (#13216) 2026-03-24 14:33:57 +08:00