Skip to content

v0.1.7

Pre-release
Pre-release

Choose a tag to compare

@The3eard The3eard released this 15 Apr 18:36

AI Provider Architecture

  • New ai-provider crate: AiProvider trait with 17 methods across 7 capability groups (identity, detection, headless execution, specialized actions, interactive launch, session/worktree introspection, config/attribution)
  • Shared types: AiProviderKind, AiSession, AiWorktree, AiConfigFile, ExecuteOptions, AttributionPattern
  • Trait builds std::process::Command objects without executing — execution delegated to TaskManager (headless) or TerminalManager (interactive)
  • Default implementations return empty/None/NotSupported — providers override what they support

Claude Code (First Provider)

  • New claude-code crate implementing AiProvider for Claude Code CLI
  • Binary detection via which + version parsing from claude --version
  • Repo artifact detection (.claude/ directory, CLAUDE.md file)
  • Headless command builder: --print, --output-format, --model, --max-budget-usd
  • Interactive launch: spawns claude binary directly in PTY terminal
  • Worktree support: --worktree [name] flag
  • Session introspection: parses ~/.claude/sessions/*.json, PID liveness checks (kill(pid, 0) on Unix)
  • Worktree introspection: git worktree list --porcelain parser, filters worktree-* branches, status detection (Active/Clean/Orphaned)
  • Config discovery: user/project/local settings.json, .claude/agents/*.md, .claude/skills/*/SKILL.md, CLAUDE.md hierarchy
  • Commit attribution: detects Authored-by: footer, Co-authored-by: trailer with Claude/Anthropic mention, author name matching

16 Tauri Commands

  • Detection: ai_get_providers, ai_get_repo_status, ai_refresh_detection
  • Headless actions (via TaskManager): ai_generate_commit_message, ai_analyze_code, ai_generate_pr_description, ai_review_code, ai_review_pr
  • Interactive launch (via TerminalManager): ai_launch_interactive, ai_launch_worktree
  • Introspection: ai_list_sessions, ai_list_worktrees, ai_cleanup_worktree, ai_get_config_files
  • Preference: ai_get_preferred_provider, ai_set_preferred_provider

AI Provider Settings

  • New "AI Provider" section in Settings replacing the WIP "Editor" section
  • Shows all known providers (Claude Code, Codex, OpenCode) with detection status
  • Detected providers show version and "Detected" badge; unavailable ones are greyed out
  • Click to set default provider, click again to reset to auto-detect
  • Preference persisted in AppConfig.preferred_ai_provider across restarts
  • Refresh button to re-scan PATH for provider binaries

AI Button Validation

  • AI Commit Message button now shows a warning toast when no staged changes exist
  • AI Code Review button now shows a warning toast when no changes exist at all
  • Previously both buttons silently triggered tasks with no input

Terminal AI Launch

  • Terminal dropdown "Claude Code" now calls ai_launch_interactive — spawns the claude binary directly in PTY (Claude Code starts automatically)
  • Terminal tabs show Claude Code SVG brand icon (coral #d97757) instead of generic terminal icon
  • Brand-colored status dots: Claude (#d97757), Codex (#10a37f), OpenCode (#8b8b8b)
  • Same icon treatment in both standalone TerminalTab and composite tab terminal segments
  • TerminalTabInfo extended with optional provider field for brand identification

Changes Section Redesign

  • Pinned commit box at bottom with toolbar row: amend toggle, AI buttons, overflow menu
  • AI Commit Message button (purple accent) with loading spinner; Code Review button (blue accent)
  • Overflow menu: Create Patch, Clean, History (reflog), Push — replacing scattered buttons
  • Commit message textarea with Cmd+Enter shortcut
  • Single commit button replacing separate stage+commit actions

Reflog Section Overhaul

  • Fixed broken "Create Branch" context menu action — was creating branch at HEAD instead of at the reflog entry's commit. New create_branch_at(name, oid) backend operation
  • Fixed misleading "Checkout" action — was performing reset --mixed (destructive). New checkout_detached(oid) backend operation for proper detached HEAD checkout
  • Fixed selection model — selectedReflogOid used just the OID which is not unique across reflog entries. Switched to index-based selection
  • Removed duplicate repo-changed listeners — SplitView now handles lifecycle exclusively
  • Added action buttons to detail pane: Checkout, Create Branch, Reset (dropdown with Soft/Mixed/Hard), Copy SHA
  • Added refresh button to list header
  • Context menu actions now refresh the reflog list after operations
  • Selection cleared when navigating away to prevent stale state on return
  • File diff panel: clicking a file in the reflog commit detail now shows a resizable diff editor below

Submodule Management — Add & Remove

  • New "Add Submodule" button in header — opens inline form with URL and path inputs
  • New add_submodule(url, path) backend operation (git submodule add)
  • New "Remove Submodule" in right-click context menu with confirmation dialog
  • New remove_submodule(path) backend operation (git submodule deinit -f + git rm -f)
  • Empty state no longer blocks the "Add Submodule" button

UI Polish

  • Folder icons changed from orange to blue for better visual cohesion
  • Tab badge style changed from solid orange pill to subtle green tint with green text
  • Tab hover tooltips with project snapshot (branch, changes, last commit)
  • Project snapshot cache for instant tooltip display
  • Task panel command bar truncated to single line with ellipsis (fixes output being pushed off-screen by long AI commands)

Bug Fixes

  • Fixed task panel output not visible when AI commands have long prompts (command bar had no max-height)
  • Fixed width: 100% missing on SplitView — right pane not reaching container edge in flex layouts
  • Fixed graph tooltip positioning and content
  • Fixed terminal resize on tab switch
  • Fixed project switch clearing stale data (reflog, conflict state, diffs)
  • Fixed unstaged file diff preview not loading after project tab switch
  • Removed gitignore editor component (functionality preserved via context menu)

E2E Test Infrastructure

  • Global vitest setup mocking @tauri-apps/api/core, @tauri-apps/api/event, @tauri-apps/api/window, @tauri-apps/plugin-dialog
  • Configurable mockInvokeResponse() helper for per-test IPC mocking
  • 6 E2E workflow test suites: repo-open, staging-commit, branch-ops, tag-ops, stash-ops, ai-provider
  • 103 new tests (149 total frontend tests, all passing)