From ef0afde8a2e68c41e72348e3a4cc0784a9f4f0bc Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Carlos=20Flor=C3=AAncio?=
Date: Fri, 28 Aug 2026 20:03:23 +0000
Subject: [PATCH] docs: add product screenshots to public guides (#3126)
---
README.md | 5 +-
docs/public/agents-and-profiles.md | 2 +
docs/public/automation-and-mcp.md | 6 +
docs/public/configuration.md | 2 +-
docs/public/developer-tools.md | 12 +-
docs/public/executors.md | 2 +
docs/public/integrations.md | 2 +
docs/public/operations.md | 19 +-
docs/public/plugins-marketplace.md | 2 +
docs/public/plugins.md | 5 +
docs/public/sessions-and-review.md | 8 +-
docs/screenshots.md | 256 ++++++++++++++++--
docs/screenshots/agent-updates.png | Bin 0 -> 21186 bytes
docs/screenshots/automation-editor.png | Bin 0 -> 470516 bytes
docs/screenshots/automation-list.png | Bin 0 -> 384402 bytes
docs/screenshots/automation-sidebar.png | Bin 0 -> 65873 bytes
docs/screenshots/plugin-browse.png | Bin 0 -> 506350 bytes
docs/screenshots/plugin-github-status-bar.png | Bin 0 -> 11290 bytes
docs/screenshots/plugin-github-status.png | Bin 0 -> 244724 bytes
docs/screenshots/plugin-kandy.png | Bin 0 -> 98269 bytes
docs/screenshots/plugin-mcp-explorer.png | Bin 0 -> 334217 bytes
docs/screenshots/plugin-provider-usage.png | Bin 0 -> 124544 bytes
docs/screenshots/plugin-session-cost.png | Bin 0 -> 76928 bytes
docs/screenshots/plugin-settings.png | Bin 0 -> 425459 bytes
docs/screenshots/pr-auto-fix.png | Bin 0 -> 181783 bytes
docs/screenshots/settings-agents.png | Bin 0 -> 508801 bytes
docs/screenshots/settings-appearance.png | Bin 0 -> 453156 bytes
docs/screenshots/settings-executors.png | Bin 0 -> 396186 bytes
docs/screenshots/settings-integrations.png | Bin 0 -> 393350 bytes
.../settings-keyboard-shortcuts.png | Bin 0 -> 405835 bytes
docs/screenshots/settings-layouts.png | Bin 0 -> 401719 bytes
docs/screenshots/settings-task-behavior.png | Bin 0 -> 506137 bytes
.../screenshots/settings-terminal-editors.png | Bin 0 -> 383296 bytes
docs/screenshots/settings-terminal.png | Bin 0 -> 368401 bytes
docs/screenshots/stats-github-workload.png | Bin 0 -> 371114 bytes
docs/screenshots/stats-overview.png | Bin 0 -> 371615 bytes
docs/screenshots/stats.png | Bin 130536 -> 0 bytes
docs/screenshots/system-docker-cleanup.png | Bin 0 -> 322760 bytes
.../screenshots/system-maintenance-policy.png | Bin 0 -> 352345 bytes
docs/screenshots/system-quarantine.png | Bin 0 -> 149795 bytes
docs/screenshots/system-status.png | Bin 0 -> 307863 bytes
docs/screenshots/system-storage.png | Bin 0 -> 364480 bytes
42 files changed, 287 insertions(+), 34 deletions(-)
create mode 100644 docs/screenshots/agent-updates.png
create mode 100644 docs/screenshots/automation-editor.png
create mode 100644 docs/screenshots/automation-list.png
create mode 100644 docs/screenshots/automation-sidebar.png
create mode 100644 docs/screenshots/plugin-browse.png
create mode 100644 docs/screenshots/plugin-github-status-bar.png
create mode 100644 docs/screenshots/plugin-github-status.png
create mode 100644 docs/screenshots/plugin-kandy.png
create mode 100644 docs/screenshots/plugin-mcp-explorer.png
create mode 100644 docs/screenshots/plugin-provider-usage.png
create mode 100644 docs/screenshots/plugin-session-cost.png
create mode 100644 docs/screenshots/plugin-settings.png
create mode 100644 docs/screenshots/pr-auto-fix.png
create mode 100644 docs/screenshots/settings-agents.png
create mode 100644 docs/screenshots/settings-appearance.png
create mode 100644 docs/screenshots/settings-executors.png
create mode 100644 docs/screenshots/settings-integrations.png
create mode 100644 docs/screenshots/settings-keyboard-shortcuts.png
create mode 100644 docs/screenshots/settings-layouts.png
create mode 100644 docs/screenshots/settings-task-behavior.png
create mode 100644 docs/screenshots/settings-terminal-editors.png
create mode 100644 docs/screenshots/settings-terminal.png
create mode 100644 docs/screenshots/stats-github-workload.png
create mode 100644 docs/screenshots/stats-overview.png
delete mode 100644 docs/screenshots/stats.png
create mode 100644 docs/screenshots/system-docker-cleanup.png
create mode 100644 docs/screenshots/system-maintenance-policy.png
create mode 100644 docs/screenshots/system-quarantine.png
create mode 100644 docs/screenshots/system-status.png
create mode 100644 docs/screenshots/system-storage.png
diff --git a/README.md b/README.md
index 6a5ade5c9a..262ed1b8d8 100644
--- a/README.md
+++ b/README.md
@@ -36,6 +36,7 @@ Open source, multi-provider, no telemetry, not tied to any cloud.
- **Integrated workspace** - Built-in terminal, code editor with LSP, git changes panel, embedded vscode and chat in one IDE-like view
- **Kanban task management** - Drag-and-drop boards, columns, and workflow automation
- **Agentic workflows** - Multi-step pipelines that mix-and-match agents per step - for example, Claude Code Opus to design a plan, GitHub Copilot Sonnet to implement it, and Codex GPT 5.4 to review the changes. See [docs/workflow-tips.md](docs/workflow-tips.md)
+- **Automations** - Trigger agent tasks on schedules or webhooks, with configurable run destinations, context, and concurrency
- **Sub-tasks** - Agents can spawn sub-tasks that resume from the parent task's session. Useful for splitting a task that has grown too big, or producing several PRs from the same starting point.
- **CLI passthrough** - Drop into raw agent CLI mode for direct terminal interaction with agents that support it, leveraging their full native TUI
- **Workspace isolation** - Git worktrees prevent concurrent agents from conflicting
@@ -44,6 +45,7 @@ Open source, multi-provider, no telemetry, not tied to any cloud.
- **Runtime settings** - Executor profiles, secrets, custom prompts, utility agents, and resource metrics are configurable from Settings
- **Task-agent MCP** - Agents can create subtasks, target sibling repos, attach extra branches for multiple PRs, message other tasks, read conversations, and inspect related tasks
- **External MCP** - Manage Kandev from outside coding agents over streamable HTTP or SSE, with copyable config snippets for popular agent CLIs
+- **Plugin marketplace and management** - Browse, install, update, enable, disable, and configure plugins from Settings, including MCP Explorer and the [Bitbucket plugin](https://github.com/kdlbs/kandev-plugin-bitbucket)
- **Workflow portability** - Export and import workflows as portable YAML across workspaces or Kandev installs
- **Session management** - Resume and review agent conversations
- **Shareable task snapshots** - Publish redacted task conversation snapshots as secret GitHub Gists, with preview and revoke controls
@@ -63,10 +65,11 @@ We're working on **Office mode**, a feature-flagged autonomy layer for persisten
+
-Connect Kandev to the tools your team already uses — pull issues into the kanban, link tasks to PRs, and surface review activity inline.
+Connect Kandev to GitHub, GitLab, Jira, Linear, Sentry, and Azure DevOps to pull issues into the kanban, link tasks to PRs, and surface review activity inline. Bitbucket support is available through the [Bitbucket plugin](https://github.com/kdlbs/kandev-plugin-bitbucket).
## Supported ACP Agents
diff --git a/docs/public/agents-and-profiles.md b/docs/public/agents-and-profiles.md
index 15535eabeb..0a1958fa58 100644
--- a/docs/public/agents-and-profiles.md
+++ b/docs/public/agents-and-profiles.md
@@ -20,6 +20,8 @@ Agent authentication is separate from repository and integration credentials.
Open **Settings > Agents** (`/settings/agents`). Kandev scans the host on which its backend runs, not the browser computer.
+
+
The production registry currently shows Auggie, Claude, Codex, Copilot, Gemini, OpenCode, Amp, Qwen, iFlow (beta), Droid, Kilocode, Pi, Cursor, Kimi, Kiro, Qoder, Trae, `omp`, Devin, Grok, and Hermes. An entry is usable only when its executable is supported on the current platform and available to the Kandev process. Development and E2E profiles can add mock agents that are not product integrations.
Hermes launches with `hermes acp`. Install the required `hermes` executable from its **Settings > Agents** card, which runs the official Hermes installer. Hermes currently supports task and workspace sessions. Office-assigned skill injection is not yet supported.
diff --git a/docs/public/automation-and-mcp.md b/docs/public/automation-and-mcp.md
index 08abfac1ae..74b1ebc345 100644
--- a/docs/public/automation-and-mcp.md
+++ b/docs/public/automation-and-mcp.md
@@ -39,6 +39,8 @@ See [Tasks and workflows](tasks-and-workflows.md) for event configuration and de
Open **Settings > Workspaces > _Workspace_ > Automations** (`/settings/workspace/{workspaceId}/automations`) and select **New Automation**. The top-level `/settings/automations` route redirects to, or asks you to select, a workspace.
+
+
1. Enter a required name and optional description.
2. Select an agent profile and executor profile. Passthrough profiles are not offered. Worktree and Local-compatible profiles can run without a repository in a task-owned scratch workspace.
3. Choose the run destination:
@@ -53,6 +55,8 @@ Open **Settings > Workspaces > _Workspace_ > Automations** (`/settings/workspace
8. Choose a schedule and optional GitHub condition, or switch to webhook mode.
9. Save, use **Run now** on the automation's page, then read what it said before widening credentials or scope.
+
+
The form can save an empty agent or executor selection, but launch still needs a usable profile. Scheduled, manual, webhook, and provider-triggered runs can remain repository-free. When a provider event supplies an exact repository through its established contract, Kandev uses that event context. A GitHub pull-request run with configured repository access checks out that PR's head branch and uses its base branch.
### What a firing produces
@@ -174,6 +178,8 @@ Trigger payloads are untrusted input. Do not let a PR body or webhook field sile
**Automations** in the sidebar lists the workspace's automations with a health dot. Picking one opens it. **`/automations`** is the agenda across all of them, what fires next, and the recent runs of every automation in one feed. **`/automations/`** is one automation's conversation: it opens on the newest run's transcript, carries the run's title snapshot and a reply box, and groups runs as Running / Completed in a rail or mobile drawer. A selected open run exposes **Stop current run**, which cancels its exact task, session, and turn without touching another run in a shared session. Configuration is behind **Details**, because an automation is configured once and read continuously.
+
+
`/runs` still resolves to the same places, so older links keep working.
## Concurrency, history, and cleanup
diff --git a/docs/public/configuration.md b/docs/public/configuration.md
index 94f9099b11..b3cc4a5511 100644
--- a/docs/public/configuration.md
+++ b/docs/public/configuration.md
@@ -493,7 +493,7 @@ Plugins are part of the base product and are not a runtime toggle.
The source checkout's `make dev` activates the embedded development profile, which enables Office, debug surfaces, ACP logging, and a mock agent; authentication and Claude background prompt handoff remain opt-in. Installed `run`/desktop builds select the safe production profile unless the environment explicitly opts in. E2E mock variables and routes are test-only and must never be enabled on a public deployment.
## Credentials and product settings
-The **Unread Messages** preference in **Settings > General > Task Actions** controls the Slack-style **New** divider in session transcripts. It defaults off for each user, persists with user settings, and takes effect immediately. Enabling it also allows that user's active transcript view to advance the session read cursor.
+The **Unread Messages** preference in **Settings > Preferences > Task Behavior** controls the Slack-style **New** divider in session transcripts. It defaults off for each user, persists with user settings, and takes effect immediately. Enabling it also allows that user's active transcript view to advance the session read cursor.
Most integrations, executor profiles, agent profiles, MCP servers, repository settings, and UI preferences are persistent database records edited under **Settings**. They are not fields in `config.yaml`. Secret values use an encrypted secret store backed by `/data/master.key`; filesystem permissions, database backups, and key backup are part of the security boundary.
diff --git a/docs/public/developer-tools.md b/docs/public/developer-tools.md
index 6506a459e4..d324bfff8e 100644
--- a/docs/public/developer-tools.md
+++ b/docs/public/developer-tools.md
@@ -47,7 +47,7 @@ Quick Chat supports multiple tabs, tab renaming, and **+** to open another ordin
Your chats and their names are shared by every browser and device signed in to the same Kandev instance. Starting, renaming, or closing a chat on one device updates the others, and a device that was offline catches up when it reconnects.
-When **Settings > General > Task Actions > Agent-generated task titles** is enabled, an ordinary
+When **Settings > Preferences > Task Behavior > Agent-generated task titles** is enabled, an ordinary
Quick Chat starts with its normal provisional label and its owner agent can replace that label with a
short title based on your first request. Structured and CLI-passthrough chats receive the title
instruction through their existing first-turn path. The new title appears on every connected device
@@ -173,7 +173,7 @@ Open the context menu on any file or folder in the Files tree: right-click on de
Use the workbench top bar's split-editor action to open the selected session worktree in the default editor. Its menu lets you choose another configured editor. A file's **Open with** menu can also open a specific editor, copy the path, or ask the operating system to show the folder.
-Open **Settings > General > Editors** (`/settings/general/editors`) to set a default and configure integrations. Kandev discovers these built-in desktop editors when installed:
+Open **Settings > Preferences > Terminal & Editors** (`/settings/preferences/terminal-editors`) to set a default and configure integrations. Kandev discovers these built-in desktop editors when installed:
- Visual Studio Code
- Zed
@@ -193,7 +193,9 @@ Desktop editor discovery and custom commands run on the Kandev backend host. The
## Language servers
-Language-server settings are part of **Settings > General > Editors**. Kandev currently registers servers for:
+
+
+Language-server settings are part of **Settings > Preferences > Terminal & Editors**. Kandev currently registers servers for:
- TypeScript and JavaScript;
- Go;
@@ -239,7 +241,9 @@ On desktop, select **+ > Terminals > New Terminal**. Parked terminal sessions ca
Do not confuse a user terminal with a CLI-passthrough agent tab: both use PTYs, but only the agent tab is the agent's native interface. `Cmd/Ctrl+J` toggles the bottom terminal area.
-Open **Settings > General > Terminal** (`/settings/general/terminal`) to configure:
+
+
+Open **Settings > Preferences > Terminal & Editors** (`/settings/preferences/terminal-editors`) to configure:
- preferred shell, which defaults to the system shell; the built-in choices are zsh, bash, and sh on macOS/Linux, and PowerShell (`pwsh`), Windows PowerShell, and cmd on Windows, plus a custom executable;
- terminal font, with a default Menlo/Monaco-style stack;
diff --git a/docs/public/executors.md b/docs/public/executors.md
index f6900918ab..8f1ed4159b 100644
--- a/docs/public/executors.md
+++ b/docs/public/executors.md
@@ -42,6 +42,8 @@ download requirements.
Open **Settings > Executors**, then choose **Local**, **Worktree**, **Docker**, **Sprites.dev**, or **SSH** under **Create New Profile**. Local and Worktree profiles already exist in a new database.
+
+
Workspaces > _Workspace_ > Integrations**, then choose a provider. The direct routes are:
+
+
- `/settings/workspace/{workspaceId}/integrations/github`
- `/settings/workspace/{workspaceId}/integrations/gitlab`
- `/settings/workspace/{workspaceId}/integrations/azure-devops`
diff --git a/docs/public/operations.md b/docs/public/operations.md
index cefbe83d6f..f0f407f43b 100644
--- a/docs/public/operations.md
+++ b/docs/public/operations.md
@@ -29,7 +29,7 @@ See [Desktop app](desktop-app.md), [CLI](cli.md), [Run as a service](run-as-a-se
## Prevent host sleep during active tasks
-Administrators can open **Settings > General > Task Actions** and enable
+Administrators can open **Settings > Preferences > Task Behavior** and enable
**Prevent host sleep while tasks run**. The install-wide setting is off by
default and is saved with the Kandev database. It applies only to the machine
running the backend; it does not change executor or node power policy.
@@ -56,6 +56,8 @@ availability policy instead. Enabling the preference is safe when moving the
database between hosts: Kandev reacquires a native request only after startup
if the new backend can provide it and a working task still exists.
+
+
## Health and readiness
Use the top-level liveness endpoint for process supervisors:
@@ -86,6 +88,8 @@ curl -fsS http://127.0.0.1:38429/api/v1/system/health
This diagnostic checks the Git executable, GitHub authentication/rate limits, agent discovery, and Linux inotify pressure. It returns a JSON `healthy` field and issue list, but normally uses HTTP 200 even when `healthy` is false; do not substitute it for `/health` in a status-only probe.
+
+
For a managed service, also check its process manager:
```bash
@@ -133,12 +137,15 @@ The System Database and Backups pages use the configured SQLite file path. They
Storage maintenance details
-Open **Settings > System > Storage** to inspect Kandev-managed disk usage and configure cleanup.
+Open **Settings > System > Data & Logs**, then use the **Storage** section to
+inspect Kandev-managed disk usage and configure cleanup.
**Analyze** is read-only. **Run now** applies only the enabled cleanup rules and refuses to start
while another maintenance run owns the cleanup gate. If task resources are active, the page names
the active work and offers **Run anyway** after an explicit disruption warning. Use that override
only when the active task work can tolerate cleanup running alongside it.
+
+
Storage analysis results are cached in the running backend for 15 minutes, so page reloads and
policy saves reuse the displayed snapshot instead of scanning disk again. The page shows when that
snapshot was last analyzed. Select **Analyze** to force a fresh scan; restarting the backend also
@@ -156,6 +163,8 @@ permanent deletion. Each entry shows its `delete_after` retention deadline: **De
time, not an exact promise, the first successful scheduled or full manual maintenance run after the
deadline performs the purge, subject to the idle gate and any preemption.
+
+
Use **Clear eligible** to remove only entries whose deadlines have passed. It reports protected
entries that remain. **Force clear all** requires typing `DELETE ALL NOW` and attempts to permanently
remove every active quarantine entry, discarding restore windows for entries that are successfully
@@ -163,6 +172,8 @@ deleted. Safety-validation or deletion failures may leave entries visible and re
override bypasses only the retention timestamp; path, ownership, state, and filesystem safety
checks still apply.
+
+
Kandev keeps at most one restorable Go-cache generation for each original cache path. If that
generation is still active when the replacement cache exceeds its limit, the next rotation is
deferred. The maintenance run succeeds and reports `active_quarantine`; both the live cache and
@@ -194,6 +205,8 @@ Host-wide Docker build-cache and unused-image cleanup remain disabled until you
owns a dedicated Docker daemon.
Do not enable those rules on a daemon shared with unrelated workloads.
+
+
The Storage page also reports **Kandev temporary artifacts** created by services that need a
short-lived directory under the host temporary root. Each current artifact is registered in the
Kandev database and carries an owner-only marker in its exact directory. Active artifacts and
@@ -469,6 +482,8 @@ Collection starts only while at least one connected client displays metrics in t
These metrics are lightweight UI observability. Set alerts, retention, CPU/memory limits, and disk quotas in the host, container platform, or external monitoring stack.
+
+
## Status bar visibility
The status surface is off by default for each user. Open **Settings > Preferences > Appearance > Status Bar**, enable **Show status bar**, and use the page's shared **Save changes** action. The portable preference applies immediately without restarting Kandev. It shows a 24 px bottom bar on desktop and fine-pointer tablets; phones use native Status controls and an inset Status drawer.
diff --git a/docs/public/plugins-marketplace.md b/docs/public/plugins-marketplace.md
index e5370f2175..e6e2b507a1 100644
--- a/docs/public/plugins-marketplace.md
+++ b/docs/public/plugins-marketplace.md
@@ -47,6 +47,8 @@ Open **Settings > Plugins > Browse**. Each plugin shows as a card with its
name, description, author, categories, source repository link, latest version,
and GitHub star count. To narrow the list:
+
+
- **Search**: type in the search box to match plugin name or description.
- **Category**: filter to a single category with the category dropdown.
- **Sort**: **Most stars** (default), **Recently updated** (by latest release
diff --git a/docs/public/plugins.md b/docs/public/plugins.md
index d049d4e7ae..3133246c7b 100644
--- a/docs/public/plugins.md
+++ b/docs/public/plugins.md
@@ -148,6 +148,11 @@ a required setting that has no value yet:

+The Installed tab also gives you an overview of automatic updates, installed
+versions, available updates, and per-plugin controls:
+
+
+
Filesystem sideload and synchronization
diff --git a/docs/public/sessions-and-review.md b/docs/public/sessions-and-review.md
index 8acad13f38..c5ae659f83 100644
--- a/docs/public/sessions-and-review.md
+++ b/docs/public/sessions-and-review.md
@@ -119,7 +119,13 @@ the workspace-search shortcuts untouched. Click a mode or press **Tab** /
search field. File matches are grouped by repository. Hover a mode to see its
direct shortcut.
-Open **Settings > General > Layouts** to configure reusable desktop workbench profiles. Select a tab in a built-in layout to reveal its nearby edit controls, arrange or remove tabs and splits, then use the floating **Save changes** control. Kandev keeps the built-in row visible, marks it **Customized**, and stores your override without requiring a duplicate. Choose **Reset** beside a customized built-in to restore its original definition.
+Open **Settings > Preferences > Keyboard Shortcuts** to customize these bindings.
+
+
+
+Open **Settings > Preferences > Layouts** to configure reusable desktop workbench profiles. Select a tab in a built-in layout to reveal its nearby edit controls, arrange or remove tabs and splits, then use the floating **Save changes** control. Kandev keeps the built-in row visible, marks it **Customized**, and stores your override without requiring a duplicate. Choose **Reset** beside a customized built-in to restore its original definition.
+
+
**PR Details** is a reusable Layouts panel whose visibility follows the active task's review association. Without a linked GitHub pull request or GitLab merge request, the tab stays hidden, even when the selected layout includes it. Once a review is linked, Kandev adds PR Details as an inactive tab: beside **Agent** for the built-in Default, or in the group and tab position you configured in the Layouts editor. Closing that tab prevents it from reappearing automatically in the same session. Changing the default applies to task environments without a saved task-specific layout and **Reset Layout**, not a layout already saved for a task. Removing Terminal from the Default layout also prevents Kandev from creating its initial user shell.
diff --git a/docs/screenshots.md b/docs/screenshots.md
index 56627a875e..f507b37d08 100644
--- a/docs/screenshots.md
+++ b/docs/screenshots.md
@@ -1,5 +1,169 @@
# Screenshots
+## Table of contents
+
+- [Core workflow](#core-workflow)
+- [Automations](#automations)
+- [Plugins](#plugins)
+- [Workspace & agent settings](#workspace--agent-settings)
+- [Mobile](#mobile)
+- [Preferences](#preferences)
+- [System settings](#system-settings)
+
+## Core workflow
+
+
+
+ Kanban
 |
+ Add Task
 |
+
+
+ Task Session
 |
+ Plan Mode
 |
+
+
+ Workflows
 |
+ Pipeline
 |
+
+
+ Workflow Details
 |
+ File Editor
 |
+
+
+ Embedded VS Code
 |
+ Git Operations
 |
+
+
+ Review PRs
 |
+ Review Dialog
 |
+
+
+
+ PR auto-fix
+ Automate CI fixes, review-comment follow-up, and optional auto-merge or requeue when ready.
+
+ |
+
+ Agent updates and version notifications
+ Get a visible prompt when a managed agent runtime has a newer version.
+
+ |
+
+
+ Plan Comments
 |
+ CLI Agent
 |
+
+
+ Quick Chats
 |
+
+ Stats
+ Review task, session, Git activity, provider, GitHub, workload, and telemetry metrics.
+ 
+
+ |
+
+
+
+## Automations
+
+
+
+
+ Workspace automations
+ Review scheduled and webhook automations, their enabled state, and recent activity.
+
+ |
+
+ Automation editor
+ Configure repository access, run destination, context, concurrency, and save changes.
+
+ |
+
+
+
+ Automation sidebar
+ Open workspace automations from the main navigation.
+
+ |
+
+
+
+## Plugins
+
+Kandev plugins and companion tools add focused views for exploring MCP servers,
+monitoring service health, and tracking usage.
+
+
+
+
+ Plugin marketplace
+ Browse, filter, and install plugins from the in-app catalog.
+
+ |
+
+ Plugin settings
+ Manage installed plugins, updates, activation, and configuration.
+
+ |
+
+
+
+ MCP Explorer
+ Inspect connected servers, available tools, and estimated token costs.
+
+ |
+
+ GitHub Status (plugin repository)
+ See GitHub health at a glance, then open detailed component and incident status.
+ 
+
+ |
+
+
+
+ Provider Usage (plugin repository)
+ Monitor provider quota usage and reset windows from the status bar.
+
+ |
+
+ Session Cost (plugin repository)
+ Track session spend, turns, token totals, cache reads, and per-model costs.
+
+ |
+
+
+
+ Kandy (plugin repository)
+ Add playful progress feedback with levels, experience, status, and celebrations.
+
+ |
+
+
+
+## Workspace & agent settings
+
+
+
+
+ Integrations
+ Connect a workspace to GitHub, GitLab, Jira, Linear, Sentry, and Azure DevOps.
+
+ |
+
+ Agents
+ Review detected agent CLIs, profiles, availability, and runtime updates.
+
+ |
+
+
+
+ Executors
+ Configure local, worktree, Docker, Sprites.dev, and SSH execution profiles.
+
+ |
+
+
+
## Mobile
-## Desktop
+## Preferences
- Kanban
 |
- Task Session
 |
+
+ Layouts
+ Configure reusable desktop workbench profiles and panel arrangements.
+
+ |
- Pipeline
 |
- Plan Mode
 |
+
+ Language servers
+ Configure language-server startup, installation, status location, and server settings.
+
+ |
+
+ Task Behavior
+ Configure task titles, archive confirmation, unread messages, and host sleep prevention.
+
+ |
- Workflows
 |
- Plan Comments
 |
+
+ Keyboard Shortcuts
+ Customize chat input and command-panel keybindings.
+
+ |
+
+ Appearance
+ Configure status-bar visibility and resource metrics for the host and execution environments.
+
+ |
- CLI Agent
 |
- Quick Chats
 |
-
-
- File Editor
 |
- Git Operations
 |
-
-
- Embedded VS Code
 |
- Review PRs
 |
-
-
- Review Dialog
 |
- Stats
 |
-
-
- Add Task
 |
- Workflow Details
 |
+
+ Shell and terminal
+ Choose the default shell, terminal font, font size, and link behavior.
+
+ |
+
+
+
+## System settings
+
+
+
+
+ Status
+ Check system health, the running version, and the Kandev data directory.
+
+ |
+
+ Storage
+ Review disk capacity, Kandev-managed usage, and reclaimable space.
+
+ |
+
+
+
+ Maintenance policy
+ Choose the schedule, idle window, workspace cleanup, and folder allowlist.
+
+ |
+
+ Docker cleanup
+ Configure dedicated-daemon protection, build-cache retention, and unused image cleanup.
+
+ |
+
+
+
+ Quarantine
+ Restore or permanently remove recoverable resources after cleanup.
+
+ |
diff --git a/docs/screenshots/agent-updates.png b/docs/screenshots/agent-updates.png
new file mode 100644
index 0000000000000000000000000000000000000000..55977311ba47752f90feb811bead8f88d60adf5e
GIT binary patch
literal 21186
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
E0FU1f`v3p{
literal 0
HcmV?d00001
diff --git a/docs/screenshots/automation-editor.png b/docs/screenshots/automation-editor.png
new file mode 100644
index 0000000000000000000000000000000000000000..e0066a4be6c2b9d49b557d61fc57bb74f98babc9
GIT binary patch
literal 470516
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∓+l2YE@|^BhheYm1#*
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 |