* fix: process carriage returns in bash tool output for Windows
* fix: normalize CRLF before processing carriage returns
Normalize \r\n to \n first so Windows CRLF line endings aren't
mistakenly treated as overwrite frames, which would blank out
ordinary output lines.
* fix: preserve visible frame when trailing \r produces empty segment
When terminal output ends with a bare carriage return (e.g. '50%\r'),
split('\r') produces an empty last segment. Instead of returning the
empty string (which blanks the progress display), walk backward to
find the last non-empty segment.
Anonymous users don't have access to kilo-auto/frontier (a paid model set),
so the extension silently fails when they try to use it. Change the hardcoded
default to kilo-auto/free so new installs work out of the box without login.
Every child_process.spawn() call was missing windowsHide: true, causing
a visible CMD console window to briefly appear on every shell command,
LSP server start, ripgrep search, clipboard operation, and process kill
on Windows. This option is a no-op on non-Windows platforms.
Remove the info/note callout added by PR #6366 that directed users to
manually edit exec-approvals.json or use the OpenClaw CLI when a node
doesn't advertise exec approval capabilities.
Update permission stories to render ChatView with PermissionDock above the
chatbox instead of old inline permission buttons. Add new stories for
todowrite permission dock, write permission with file patterns, and question
dock above chatbox.
Replace inline permission rendering with a dedicated PermissionDock component
using kilo-ui's DockPrompt, matching the pattern from packages/app/. The prompt
input is now hidden when a permission or question is pending, instead of being
stacked below it.
* refactor: always diff worktrees against remote tracking ref
* fix: use seed repo to control initial branch name in CI tests
The createTempRepoWithOrigin helper used git init --bare which
inherits the system default branch name (master on some CI).
Now uses a seed repo with an explicit branch rename to main.
* fix: address review feedback - validate remote refs and avoid slash-parsing
- Only set remote for existing branches when remote tracking ref exists
- Pass remote explicitly to aheadBehind() instead of parsing from ref
- Use resolved remote in defaultBranch() instead of hardcoded origin
* fix: verify remote name against actual remotes in backward compat path
stripRemotePrefix now checks the git remote list instead of
refExistsLocally to avoid treating slash-named local branches
like release/1.0 as remote-prefixed refs.
When a subagent (task tool) runs, it creates a child session. Permission
requests and questions from child sessions were invisible because
ChatView filtered them to only show the current session's requests.
This caused the subagent to appear stuck/crashed when it was actually
waiting for a permission response that the user never saw.
Changes:
- Show ALL pending permissions/questions in the bottom dock, not just
those from the current session
- Block the prompt input when any permission or question is pending
(from any tracked session, including child sessions)
- Add '(subagent)' indicator to permission subtitle when it comes from
a child session
- Priority ordering: prefer current-session non-tool permissions first,
then fall back to any pending permission
Add --cloud-fork flag to run, attach, and thread commands that imports
a cloud session to local storage before continuing. Extract shared
validateCloudFork helper to reduce duplication. Use graceful exit
patterns in attach.ts and thread.ts to ensure proper cleanup.
The .selected state on mode-switcher-item and thinking-selector-item set
background to --vscode-list-activeSelectionBackground (a strong blue in
light themes) but never set a foreground color. Text inherited dark
colors from the parent, producing unreadable dark-on-blue text in light
VSCode themes.
- Add color using --text-on-interactive-base / --vscode-list-activeSelectionForeground
to .mode-switcher-item.selected and .thinking-selector-item.selected
- Move description text color to :not(.selected) so it inherits the
correct foreground when selected
- Add missing --surface-interactive-active token to vscode-bridge.css