mirror of
https://github.com/BloopAI/vibe-kanban.git
synced 2026-11-14 21:40:28 +00:00
db424bcc6036db33b2cc2e1c8cc61691cf2a7a5e
227
Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
fc32c88e46 |
Remove all #[ts(export)] attributes — they are no-ops (#3167)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
7d6afecc9d |
bump opencode version (#2828)
* bump opencode version * fix(opencode): handle message.part.delta * handle todo.updated more accurately * fix: track messages and parts more accurately * fix: cargo fmt |
||
|
|
d627b6e5fb |
feat: wrap app in Tauri v2 with auto-updater and CI pipeline (Vibe Kanban) (#2896)
* feat: wrap app in Tauri v2 for native desktop distribution
Adds a new `crates/tauri-app` workspace crate that runs the existing
Axum server in-process and opens a native webview window. Extracts
shared server initialization logic into `crates/server/src/startup.rs`
so both the standalone binary and Tauri app can reuse it.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: use object-form beforeBuildCommand with explicit cwd for Tauri build
The plain string form ran from the wrong directory, causing the frontend
build step to fail with "No such file or directory".
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add Electron wrapper for comparison testing with Tauri
Spawns the existing Rust server binary as a child process, parses
stdout for the auto-assigned port, and opens a BrowserWindow. Temporary
setup for evaluating Electron vs Tauri desktop distribution.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: skip macOS code signing for Electron dev builds
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add rerun-if-env-changed to server build.rs for compile-time env vars
Without these directives, Cargo cached the build script output and
never re-embedded env vars like VK_SHARED_API_BASE when they changed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: load .env from workspace root in server build.rs
dotenv::dotenv() searched CWD which is the crate directory, not the
workspace root. Use CARGO_MANIFEST_DIR to resolve the workspace root
and load .env via dotenv::from_path() explicitly.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add build.rs to local-deployment for VK_SHARED_API_BASE recompilation
The crate uses option_env!("VK_SHARED_API_BASE") at compile time but
had no rerun-if-env-changed directive, so Cargo never recompiled it
when the env var was set or changed.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: load .env in local-deployment build.rs for VK_SHARED_API_BASE
The local-deployment crate reads VK_SHARED_API_BASE via option_env!()
at compile time, but its build script had no dotenv loading. Since .env
files use KEY=VALUE without export, the var was never visible to Cargo
child processes. Now both server and local-deployment build scripts
load .env from the workspace root and pass the value via cargo:rustc-env.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add Tauri auto-updater plugin, remove Electron wrapper
Remove the temporary Electron wrapper (electron/ directory and scripts).
Add tauri-plugin-updater v2 with background update checking on startup,
event emission to frontend (update-available, update-installed), and
automatic download+install. Updater pubkey and endpoint are placeholders
that need to be configured before release.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add Tauri auto-update CI pipeline with R2-hosted update manifest
Add build-tauri and upload-tauri-update jobs to pre-release workflow that
build the Tauri app for macOS (aarch64 + x86_64), sign updater artifacts,
generate a latest.json manifest, and upload everything to R2. The updater
endpoint in tauri.conf.json uses a __TAURI_UPDATE_ENDPOINT__ placeholder
that CI substitutes with the real R2 public URL before building.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: skip beforeBuildCommand in Tauri CI build to avoid OOM
The frontend is already pre-built and downloaded as an artifact in CI,
so the beforeBuildCommand (pnpm run build) is redundant and causes a
JavaScript heap out of memory error on the macOS runner.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: generate Tauri icons from vibe-kanban favicon with black background
Replace placeholder purple icons with proper icons generated from
frontend/public/favicon-vk-dark.svg using cargo tauri icon.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: add Apple code signing and notarization to Tauri CI build
Pass APPLE_CERTIFICATE and APPLE_CERTIFICATE_PASSWORD env vars to
cargo tauri build so Tauri signs the .app bundle via codesign. Extract
API key fields from APP_STORE_API_KEY JSON secret and write the .p8
file for Tauri's notarization via xcrun notarytool.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: collect DMG artifacts and improve Tauri code signing setup
- Add DMG collection to build-tauri CI job so DMGs appear in GitHub Release
- Add explicit APPLE_API_KEY_PATH env var for notarization
- Add APPLE_SIGNING_IDENTITY env var for code signing identity
- Format frontend code
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: use individual secrets for Tauri notarization instead of parsing JSON
The APP_STORE_API_KEY JSON didn't have the expected field names,
causing TypeError in CI. Switch to APPLE_API_KEY_ID, APPLE_API_ISSUER,
and APPLE_API_PRIVATE_KEY secrets which already exist in the repo.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: open OAuth popups in system browser for Tauri app
Tauri's webview blocks window.open() by default, breaking OAuth login.
Create the main window programmatically with on_new_window handler that
intercepts popup requests and opens them in the system browser via
tauri-plugin-opener. The existing polling mechanism detects auth
completion without needing a popup reference.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: fix Tauri dev mode to use Vite dev server with HMR
- Add beforeDevCommand to start frontend + backend concurrently
- Skip embedded Axum server in dev builds (cfg!(debug_assertions))
- Skip updater check in dev to avoid placeholder endpoint errors
- Update tauri:dev script with proper env vars (RUST_LOG, etc.)
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: skip updater plugin registration in dev builds
The updater plugin validates config endpoints at init time, causing a
panic on the __TAURI_UPDATE_ENDPOINT__ placeholder. Conditionally
register the plugin only in release builds.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: load .env file in tauri:dev script for VK_SHARED_API_BASE
Source .env before setting env vars so VK_SHARED_API_BASE is available
for VITE_VK_SHARED_API_BASE and other vars that depend on it.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: bring Tauri window to front after OAuth login completes
After authenticating in the system browser, focus the app window so the
user doesn't have to find it manually. Uses window.focus() as a
fallback and the Tauri-specific plugin:window|set_focus IPC call with
the core:window:allow-set-focus capability.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* style: apply Prettier formatting
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* revert: remove Tauri window focus hack after OAuth login
The window.focus() / IPC set_focus approach doesn't reliably bring the
Tauri window to the front. Instead, rely on the server's existing
close_window_response which already shows "you may close it manually"
when window.close() fails (as it does in a system browser tab opened
by Tauri).
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: don't auto-close OAuth tab when opened from desktop app
Check window.opener to determine if the page was opened as a popup
(normal browser flow) vs a regular tab (Tauri desktop app). Only
auto-close in the popup case; otherwise show a message telling the
user to close the tab and return to the app.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: keep OAuth tab open for desktop app, auto-close for browser
When running in Tauri, the OAuth flow opens in the system browser.
Previously the callback page always tried window.close(), which closed
the tab before the user could see the success message.
Now the frontend tags the callback URL with ?source=desktop when
running inside Tauri. The server checks this param and skips the
auto-close script, leaving the tab open with a "return to the app"
message. Browser popup flows continue to auto-close as before.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* chore: rename app display name to "Vibe Kanban"
Update productName, window title, bundle description, and capability
description to use the proper "Vibe Kanban" branding. Internal
identifiers (crate name, bundle identifier) remain kebab-case.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: enable Cmd+/Cmd- zoom hotkeys in Tauri webview
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: disable overscroll bounce in desktop app
Add overscroll-behavior: none to html element to prevent the macOS
elastic bounce effect when scrolling past the page edges in the Tauri
webview.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* feat: add Linux x86_64 Tauri build to CI pipeline
- Add x86_64-unknown-linux-gnu to the build-tauri matrix
- Install Linux system deps (WebKit2GTK, appindicator, etc.)
- Replace macOS-only sed -i with cross-platform Node.js patching
- Gate Apple signing/notarization steps on runner.os == 'macOS'
- Collect AppImage and deb installers alongside DMGs
- Include all platform installers in GitHub Release
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
* fix: pin aws-lc-sys to 0.37.0 to fix Windows cross-compilation
The 0.37.1 version was pulled in during Tauri dependency resolution,
breaking the Windows backend build (aws-lc-sys uses wrong clang target
on 0.37.1). Matches the pin from
|
||
|
|
4e9e539cdc |
feat(codex): support fast mode and bump to v0.114.0 (#3102)
* feat(codex): support fast mode and bump to v0.114.0 Add /fast slash command to toggle codex fast mode (highest speed inference at 2× plan usage). - Bump codex-protocol and codex-app-server-protocol to 0.114.0 - Add /fast slash command with on/off/toggle support - Show service tier in /status from codex config * nit * feat(codex): add per-session fast mode via model name variants Add gpt-5.4-fast and gpt-5.3-codex-fast model variants that enable per-session fast mode. * keep variant for 5.4 only |
||
|
|
bd932bfa1a |
fix(codex): explicitly set collaboration mode and plan flag on mode switch (#3101)
When retrying after switching from plan to non-plan mode, the collaboration mode was left as None, causing Codex to fall back to plan mode from session history. |
||
|
|
c5fa5d6cf3 |
chore: bump claude code version (#3093)
* chore: bump claude code version The latest version enables adaptive thinkings by default. * feat: claude effort [Effort](https://platform.claude.com/docs/en/build-with-claude/effort) Control how many tokens Claude uses when responding. By default, Claude uses high effort. * noramalize the new Agent tool * use version 2.1.62 The latest broke session resume * check for existing tool use entry before creating a new one * clippy fix * cargo fmt |
||
|
|
b197dc47e6 | chore: add gpt-5.4 in cursor agent (#3080) | ||
|
|
e270105ce2 | feat: add gpt-5.4 to copilot (#3081) | ||
|
|
0bb212cac6 |
Bump Codex to v0.110.0 and add GPT-5.4 support (Vibe Kanban) (#3051)
* bump codex to v0.110.0 and add gpt-5.4 model * fix codex v0.110.0 server notification compatibility * fix clippy single-match warning in codex log normalizer |
||
|
|
9b3cc5f1e7 | Update droid models (#3046) | ||
|
|
1c4bd61024 | Update copilot models (#3047) | ||
|
|
a30f259852 | Update cursor models (#3045) | ||
|
|
6fc622b5eb |
feat: Codex plan mode (#3018)
* feat: Codex plan mode Implement Plan for codex as a permission policy similar to Claude code. Including the Ask question tool which is enabled in ask and plan permission modes. Migrate codex app-server client to v2, which also replaces manual forking and thread compaction using codex-core. * fix: switch to normal mode on plan approval |
||
|
|
696fb5ac72 | fix/claude: bump claude sonnet model to 4.6 (#2966) | ||
|
|
83d1df47fc |
perf: deduplicate consecutive patches in historical normalized log streaming (#2999)
* perf: deduplicate consecutive patches in historical normalized log streaming
Restores the dedup optimization from
|
||
|
|
7a249195d0 |
fix(claude): set the correct default context windows for the 1m models (#2969)
claude code doesn't supply accurate context window information until the end of the process, so we currently rely on sane defaults. |
||
|
|
4ae11f683e | fix(codex/logs): deduplicate model name log entries (#2935) | ||
|
|
22b72451b9 |
feat: ask question tool for Claude Code and Opencode (#2834)
* feat: As Question tool for Claude Code and Opencode Adds full-stack support for Claude Code & Opencode AskUserQuestion tool, allowing the agent to present interactive questions with selectable options to the user. * enable the quesion tool in opencode * fix: use correct opencode tool id for the ask question tool * Resolve race conditions between log normalizer and approval service Refactor the approvals service to remove access to the msg_store and keeping the log normalizer as the only log writer. Approvals and questions were not working reliably due to race conditions. * fmt * disable ask question in claude auto mode * fmt: fix prettier formatting in SessionChatBox --------- Co-authored-by: Vadym Kotai <vdmkotai@gmail.com> |
||
|
|
5a0e88e2f0 |
Bump Gemini CLI to 0.29.3, add Gemini 3.1 Pro preview, and reduce Gemini ACP log noise (Vibe Kanban) (#2860)
* Bump Gemini CLI to 0.29.3 and add Gemini 3.1 Pro preview model * Avoid ACP set_model call for Gemini sessions * executors: suppress Gemini startup profiler stderr noise via ACP opt-in filter * executors: suppress Gemini YOLO-mode stderr notice |
||
|
|
410ab07fc0 |
fix: handle signature_delta in Claude streaming to suppress mismatch warning (#2846)
The Claude API sends signature_delta events at the end of thinking content blocks for extended thinking verification. These were deserializing as Unknown and triggering a spurious "Mismatched content types" warning. Add a SignatureDelta variant and handle it as a no-op. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
33913c5e80 |
Bump Claude Code to 2.1.45 and handle new message types (Vibe Kanban) (#2816)
* Bump claude-code to 2.1.45 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Handle rate_limit_event message type from Claude Code Add RateLimitEvent variant to ClaudeJson enum so these messages are parsed and silently ignored instead of surfacing as "Unrecognized JSON message" system messages in the conversation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Silence task_started system messages from Claude Code Background task notifications arrive out of order (after task completion) and add no value since the tool_use entry already shows the task was launched. Ignore them like compact_boundary. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
47dfcb1607 |
fix: don't classify >/dev/null and fd as edit commands (#2801)
* fix: don't classify >/dev/null and fd duplications as file writes in command categorization * fmt |
||
|
|
ea2ff95589 |
Revert "fix: deduplicate consecutive patches in historical normalized log streaming (Vibe Kanban) (#2587)"
This reverts commit
|
||
|
|
b63b35e3cc |
feat: Model selector (#2571)
* feat: Model selector * implement get_preset_options for Amp * fix permission selector Also fix default value of the agent selector * make the 'default' agent option selectable * clear selected model on executor change * ditto * fix executor action parsing * opencode default agent * refactoring: speedup initial load and consolidate with slash commands Merge slash commands discovery with model selector discovery. Preload global fallback at startup and periodically to make model selector faster. * make selector chips size consistent |
||
|
|
d7830bdd4b |
fix: deduplicate consecutive patches in historical normalized log streaming (Vibe Kanban) (#2587)
* fix: deduplicate consecutive patches in historical normalized log streaming For historical log replay, the normalizer produces many intermediate replacement patches for the same entry. This adds a streaming dedup adapter that buffers the current patch and only emits it when the next patch targets a different path, sending only the final state per entry. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use collect-then-emit for historical normalized log dedup The previous stream-based unfold approach used take_while(!Finished) which terminated on the Finished message in MsgStore history before the normalizer's spawned tasks could produce any JsonPatch messages. Instead, yield to let the normalizer complete, then collect patches from history and deduplicate consecutive same-path entries in memory before emitting them as a simple iterator stream. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: stream historical normalized log dedup instead of collect-then-emit Replace the collect-then-emit approach (which blocked all patches until the normalizer finished) with a streaming dedup using unfold. A sentinel LogMsg::Ready is pushed after the normalizer tasks complete, signaling the dedup stream to flush its buffer and terminate. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * fix: use JoinHandles for reliable normalizer completion in historical log dedup yield_now() was unreliable on multi-threaded tokio runtimes — spawned normalizer tasks might not have started before the Ready sentinel was pushed, causing the WS to send only {"finished":true} with no logs. Changed normalize_logs trait to return Vec<JoinHandle<()>> so the sentinel task can await all normalizer handles before pushing Ready, providing a correctness guarantee with zero timing assumptions. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Cleanup script changes for workspace 24629ac9-f0bc-4c77-8e13-f415e7cc4f87 * fix: resolve clippy never_loop lint in streaming dedup unfold Replace `loop { ... break ... }` with direct `match` expression since every arm exits on the first iteration. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * convert replace patch ops to add * only deduplicate consecutive add and replace patch ops --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> Co-authored-by: Solomon <abcpro11051@disroot.org> |
||
|
|
aa501815b2 |
Remove Amp forking and disable Amp retry/edit-retry flows (Vibe Kanban) (#2675)
* executors/amp: remove thread forking and resume with --continue * executors/amp: use threads --continue for follow-up sessions * executors/amp: use threads continue for follow-up sessions * disable amp retry capability and gate new-ui edit retry * frontend: apply prettier formatting for ui-new retry gating * fix and cleanups - Reset also depends on Fork, The backend will fail the request. - Remove redundant inEditMode gating as edit mode is never set to true as the edit button is always hidden. - Remove redundant api call for the same reason as above, and the backend already handles it. --------- Co-authored-by: Solomon <abcpro11051@disroot.org> |
||
|
|
37ad9c8c8a |
feat: Categorize common shell commands for better visual aggregation (#2758)
* feat: Categorize common shell commands for better visual aggregation Sort common shell command into read, search, edit, and fetch categories, and apply display grouping of adjacent commands under labelled sections. * remove zsh -lc for codex commands * clippy fix |
||
|
|
afc7bdb08e | fix(cursor): allow cursor to run in non-yolo mode (#2757) | ||
|
|
3af5f3b5e1 |
Bump codex version to 0.101.0 and filter noisy stderr (Vibe Kanban) (#2736)
* Bump codex crates from rust-v0.98.0 to rust-v0.99.0 Update codex-protocol, codex-app-server-protocol, and codex-core to rust-v0.99.0. Migrate tungstenite/tokio-tungstenite patches from JakkuSakura forks to openai-oss-forks to match upstream. Handle new CollabResumeBegin/CollabResumeEnd event variants in normalize_logs. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Bump codex npx package from 0.98.0 to 0.99.0 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Filter noisy codex "state db missing rollout path" stderr messages Codex 0.99.0 unconditionally logs an error when its internal SQLite state DB doesn't have a rollout path indexed, even when the feature is disabled. Add a codex-specific stderr normalizer that suppresses these messages via a transform_lines filter on PlainTextLogProcessor. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Add comment with context for suppressed codex stderr pattern Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Bump codex to 0.101.0 (crates + npx package) Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
2971a3be6f |
Bump Claude Code to 2.1.41 and filter noisy fast mode stderr warning (Vibe Kanban) (#2738)
* Bump Claude Code version from 2.1.32 to 2.1.41 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Filter noisy fast mode warning from Claude Code stderr Replaces the shared stderr processor with a Claude-specific one that filters out the "[WARN] Fast mode requires the native binary" message, which isn't actionable for workspace users. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
e258fb93e8 |
Remove all #[ts(export)] annotations across crates (#2722)
These annotations are no-ops in our repo and add unnecessary noise. Removed 73 occurrences across 31 files. Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
1ee9edf155 | Bump opencode version (#2705) | ||
|
|
2619b7e8de |
Surface Codex review sub-agent in the UI (Vibe Kanban) (#2670)
* Surface Codex review sub-agent in the UI Handle EnteredReviewMode and ExitedReviewMode events in the Codex normalizer instead of silently ignoring them. These events are now rendered as TaskCreate subagent entries using the existing ChatSubagentEntry UI component, showing a spinner while the review runs and the review output on completion. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Cleanup script changes for workspace bca070ad-e22c-4323-86da-ebdceeeb42cb * Include review scores in Codex review sub-agent output Add overall correctness/confidence and per-finding confidence scores to the review result text rendered in the collapsed tool output. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Cleanup script changes for workspace bca070ad-e22c-4323-86da-ebdceeeb42cb * Refactor review normalizer to use ReviewState struct and include scores Wrap review entry tracking in a ReviewState struct (consistent with CommandState, McpToolState, etc.) and include overall correctness, confidence, and per-finding priority/confidence in the tool result. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Cleanup script changes for workspace bca070ad-e22c-4323-86da-ebdceeeb42cb * Extract review output rendering into ReviewState::complete method Move the inline rendering logic from the ExitedReviewMode match arm into a dedicated method on ReviewState, keeping the match arm short and consistent with how other event handlers work. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use markdown formatting for review output with explicit labels Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Use relative paths and put file location on separate line in review output Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
b0bf9b9a7f | Add composer 1.5 to Cursor agent (#2642) | ||
|
|
41ea1e0f19 |
fix(droid): reuse existing session id instead of forking (#2638)
* fix(droid): pass existing session id instead of forking fixes #2620 and #2060 * droid doesn't support fork anymore --------- Co-authored-by: Solomon <abcpro11051@disroot.org> |
||
|
|
b4208cc5f6 | fix: Display subagent results for Opencode (#2589) | ||
|
|
4196470279 |
Use @sourcegraph/amp@latest in AMP executor (Vibe Kanban) (#2630)
* chore(executors): bump @sourcegraph/amp to 0.0.1770631794-g51e285 * chore(executors): use @sourcegraph/amp@latest in amp executor |
||
|
|
d401ffe1fa |
Bump codex dependencies to v0.98.0 and fix approval matching (Vibe Kanban) (#2570)
* Bump codex dependencies to v0.98.0 - Update codex-protocol, codex-app-server-protocol, and codex-core from rev rust-v0.86.0 to tag rust-v0.98.0 - Remove codex-mcp-types dependency (package removed upstream) - Add patch sections for codex-core's forked tokio-tungstenite with proxy support - Add GPT_5_3_CODEX profile variant with gpt-5.3-codex model - Adapt to API changes: InitializeParams.capabilities, InputItem.text_elements, new ServerRequest/EventMsg variants, CallToolResult.content now Vec<Value> Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Cleanup script changes for workspace c93361b8-f776-430f-a184-7c30f5de3346 * fix: set call_id on CommandState in ExecApprovalRequest handler When ExecApprovalRequest is the first event for a call_id (no prior ExecCommandBegin), the CommandState created via or_default() had an empty call_id. This caused find_matching_tool_use() to never match the approval request to its tool entry, resulting in a timeout shown in the UI instead of an approval prompt. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * Remove model default from codex profiles --------- Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
b347dafd98 |
Bump claude-code to 2.1.32 (#2556)
Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com> |
||
|
|
29b697c6e1 | bump agent versions (#2548) | ||
|
|
dd0194ca72 |
chore: bump claude-code to 2.1.31 (#2533)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> |
||
|
|
67185af83e |
feat: add archive script that runs when workspace is archived (Vibe Kanban) (#2438)
* feat: add archive script that runs when workspace is archived Add support for archive scripts that automatically execute when a workspace is being archived. This follows the same pattern as cleanup scripts. Changes: - Add archive_script field to repos table and model - Add ArchiveScript variant to ExecutionProcessRunReason and ScriptContext - Add run_archive_script API endpoint and frontend action - Auto-trigger archive script when workspace is archived (non-blocking) - Add archive script field to repo settings UI - Add keyboard shortcut (R A) for running archive script manually Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Cleanup script changes for workspace 23d01191-aa85-4622-9166-1fa3991b9a65 * feat: auto-run archive script when workspace is archived Adds automatic execution of archive scripts when workspaces are archived from any of the 4 code paths: - Manual archive via update_workspace API - Direct merge via merge_task_attempt - Attaching merged PR via attach_existing_pr - PR monitor detecting merged PR The archive script execution creates an ExecutionProcess record that blocks workspace cleanup until the script completes. Users can monitor progress and cancel via the Processes tab. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Cleanup script changes for workspace 23d01191-aa85-4622-9166-1fa3991b9a65 * refactor: move archive script logic to ContainerService Replace the callback pattern with a cleaner approach: - Add try_run_archive_script() method to ContainerService trait - Pass ContainerService directly to PrMonitorService (generic) - Change Deployment trait to use associated type for Container - Simplify spawn_archive_script_if_configured to delegate to the method This consolidates the archive script execution logic in one place and follows existing patterns in ContainerService. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Cleanup script changes for workspace 23d01191-aa85-4622-9166-1fa3991b9a65 * simplify: remove CHECK constraint from run_reason column The Rust enum already enforces valid values, making the SQL CHECK constraint redundant. Removing it avoids the need to maintain the constraint list every time we add a new run_reason value. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * Revert "simplify: remove CHECK constraint from run_reason column" This reverts commit 1a2d0b9623c410a5be4d23e3ec99993a44362540. * refactor: move PR monitor spawn into LocalDeployment::new() Move the PR monitor service spawn from main.rs into LocalDeployment::new(), following the same pattern as image cleanup. This: - Removes spawn_pr_monitor_service from the Deployment trait - Removes the associated type Container from the trait - Keeps the trait simple with &impl ContainerService return type - Allows LocalDeployment to directly clone its container for the monitor Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: render archive script in conversation history Add ArchiveScript case to switch statements in both conversation history hooks so archive script output is displayed in the UI. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: add Run Archive Script to action bar Scripts menu Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * feat: render archive script consistently with other scripts in conversation UI - Add 'archive' to ScriptType union in ScriptFixerDialog - Handle archive script in ScriptFixerDialog (save, test, run) - Add 'Archive Script' to script tool name arrays in both conversation entry components - Update getScriptType to map archive script correctly - Add archiveScriptTitle translation Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * refactor: remove archive script from old UI settings Archive script setting is only available in the new UI. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: don't un-archive workspace when running archive script - Remove spawn_archive_script_if_configured wrapper, call try_run_archive_script directly like other scripts - Skip set_archived(false) in start_execution for archive scripts so the workspace stays archived while the script runs Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * i18n: add archive script translation keys to all locales Add missing translation keys for archive script feature: - settings.repos.scripts.archive.helper - settings.repos.scripts.archive.label - followUp.runArchiveScript - followUp.noArchiveScript - scriptFixer.archiveScriptTitle Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore: regenerate SQLx cache after rebase Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * style: remove unnecessary comments and blank lines in archive script code Address review feedback to remove redundant comments and extra blank lines in the archive script implementation. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * fix: add remote_client param to PrMonitorService and remove non-existent route - Pass remote_client to PrMonitorService::spawn in LocalDeployment - Remove /search route that referenced non-existent search_workspace_files function - Remove unused JoinHandle import Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> * chore: bump migration version to avoid conflict Rename 20260128000000_add_archive_script_to_repos.sql to 20260203000000_add_archive_script_to_repos.sql to avoid UNIQUE constraint violation with add_migration_state migration that was added in main with the same version. Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com> --------- Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> |
||
|
|
9691dab832 |
Add customizable commit reminder prompt setting (Vibe Kanban) (#2410)
- Added commit_reminder_enabled (defaults to true) and commit_reminder_prompt fields to v8 config using serde defaults |
||
|
|
6a307b6688 | Stop claude code on approval timeout, up default timeout to 10 hours (#2485) | ||
|
|
5676a483a7 |
Fix Opencode process leak (#2478)
* fix: Kill opencode process on drop to prevent memory leaks Observer memory leaks on Linux related to opencode processes not being killed on drop despite the process being created with `kill_on_drop(true)`. * fix: opencode executor breaks when external env has defined OPENCODE_SERVER_USERNAME |
||
|
|
c50e5122f6 |
feat: opencode rename mode to agent (#2413)
Opencode calls them agents not modes, modes have a different meaning in opencode, which can be confusing. |
||
|
|
8a1d9bb393 |
fix: base command handling bug (#2404)
Base command override is broken on Windows, it consistenly errors with "base command is empty after parsing". |
||
|
|
e86696189b |
chore: bump claude-code to 2.1.22 (#2376)
Co-authored-by: Claude Opus 4.5 <noreply@anthropic.com> |
||
|
|
89e59d903e | fix: windows compilation error (#2394) | ||
|
|
a90b6ceb4f |
Display subagent (Task tool) conversation logs in workspace UI (Vibe Kanban) (#2367)
* I've implemented the feature to display subagent (Task tool) conversation logs in the workspace UI. Here's a summary of the changes:
## Changes Made
### 1. Backend (Rust)
**`crates/executors/src/logs/mod.rs`**
- Extended `ActionType::TaskCreate` to include:
- `subagent_type: Option<String>` - The type of subagent (e.g., "Explore", "Plan")
- `result: Option<ToolResult>` - The subagent's output/result
**`crates/executors/src/executors/claude.rs`**
- Updated `extract_action_type` to pass `subagent_type` from the Task tool data
- Added Task tool result processing in the tool result handling section (around line 1109) to capture and store the subagent output when the Task tool completes
**`crates/executors/src/executors/opencode/normalize_logs.rs`**
- Updated `TaskCreate` to include the new fields with default `None` values
### 2. Frontend (TypeScript/React)
**`frontend/src/components/ui-new/primitives/conversation/ChatSubagentEntry.tsx`** (new file)
- Created a new collapsible component to display subagent entries
- Shows the subagent type (e.g., "Explore", "Plan") and description in the header
- Status indicator (spinning for in-progress, checkmark for success, X for failed)
- Expandable section showing the subagent's output when clicked
**`frontend/src/components/ui-new/containers/NewDisplayConversationEntry.tsx`**
- Added import for `ChatSubagentEntry`
- Added handling for `task_create` action type to render with the new `SubagentEntry` component
- Created `SubagentEntry` wrapper that manages expansion state
**`frontend/src/stores/useUiPreferencesStore.ts`**
- Added `subagent:${string}` to the `PersistKey` type for expansion state persistence
### 3. Generated Types
**`shared/types.ts`**
- Updated `ActionType` to include the new `task_create` structure with `subagent_type` and `result` fields
## How It Works
1. When Claude Code spawns a subagent via the Task tool, the initial entry shows:
- Subagent type (e.g., "Explore", "Plan")
- Task description
- A spinning indicator while in progress
2. When the subagent completes, the entry is updated with:
- Success/failure status indicator
- The full result content is stored and can be viewed by expanding the entry
3. Users can click on the entry to expand/collapse and view the subagent's full output, formatted as markdown.
* Cleanup script changes for workspace 28d13f9a-81f0-4501-a2c3-1f6ca447b61c
* All type checks pass. I've replaced the hardcoded strings with translation calls:
**Changes made to `ChatSubagentEntry.tsx`:**
1. Added `useTranslation` import from `react-i18next`
2. Added `const { t } = useTranslation('common')` hook
3. Replaced `'Subagent'` with `t('conversation.subagent.defaultType')`
4. Replaced `'Output'` with `t('conversation.output')` (using existing translation)
**Added translations to all locale files:**
- `en/common.json`: "Subagent"
- `es/common.json`: "Subagente"
- `fr/common.json`: "Sous-agent"
- `ja/common.json`: "サブエージェント"
- `ko/common.json`: "서브에이전트"
- `zh-Hans/common.json`: "子代理"
- `zh-Hant/common.json`: "子代理"
* Type checks pass. I've updated the `ChatSubagentEntry` component to handle all `ToolStatus` values consistently with `ToolStatusDot`:
**Status mapping:**
- **Success**: `success` → green checkmark icon, success border/background
- **Error**: `failed`, `denied`, `timed_out` → red X icon, error border/background
- **Pending**: `created`, `pending_approval` → spinning icon, neutral border
* Cleanup script changes for workspace 28d13f9a-81f0-4501-a2c3-1f6ca447b61c
* cargo fmt
|