Commit Graph

6 Commits

Author SHA1 Message Date
Britannio Jarrett
ddb21f969d update github docs (vibe-kanban) (#1388)
* I have explored the codebase and confirmed that the GitHub integration now relies on the `gh` CLI instead of a Personal Access Token (PAT) configured in the settings. The setup process is "just-in-time", prompting the user to install or authenticate the CLI when they attempt to create a Pull Request.

I have updated the documentation to reflect these changes:

1.  **`docs/integrations/github-integration.mdx`**: Rewrote the guide to explain the CLI-based workflow, including automatic setup on macOS and manual setup instructions for other platforms, as well as troubleshooting steps.
2.  **`docs/getting-started.mdx`**: Updated the installation steps to remove the instruction to "Connect to GitHub in Settings" and instead mention the `gh` CLI requirement.
3.  **`docs/configuration-customisation/global-settings.mdx`**: Removed the "GitHub Integration" section (since it no longer exists in Global Settings) and replaced it with a "Git Configuration" section describing the "Branch Prefix" setting, which is present in the UI.

I also verified that `docs/core-features/completing-a-task.mdx` remains accurate with the new workflow.

No images were needed as the process is now primarily CLI-driven or standard dialog-based, and I removed the outdated screenshots from the documentation files.

I ran `pnpm run check` to ensure no regressions were introduced, and it passed successfully.

### Summary of Changes

| File | Change |
| :--- | :--- |
| `docs/integrations/github-integration.mdx` | Rewritten to document `gh` CLI usage and troubleshooting |
| `docs/getting-started.mdx` | Removed outdated "Connect GitHub" step; added CLI info |
| `docs/configuration-customisation/global-settings.mdx` | Removed GitHub section; added Git Branch Prefix section |

* The "Troubleshooting" section has been removed from `docs/integrations/github-integration.mdx`.

* I have performed a comprehensive search for "github" across the documentation and codebase.

I found and updated a few more references to ensure consistency:

1.  **`docs/core-features/completing-a-task.mdx`**: Updated the link text to "Set up GitHub CLI integration" instead of "Set up GitHub authentication".
2.  **`docs/index.mdx`**: Updated the Settings card description to remove "GitHub integration" and replace it with "git settings".
3.  **`docs/configuration-customisation/global-settings.mdx`**: Updated the alt text of the settings screenshot to remove the mention of "GitHub integration settings".

I verified other references in `docs/core-features/creating-tasks.mdx`, `docs/core-features/monitoring-task-execution.mdx`, and `docs/supported-coding-agents.mdx` and confirmed they are either correct (referring to platform features like polling or agents like Copilot) or generic examples that don't need changing.

The documentation now fully reflects the shift to the CLI-based GitHub integration workflow.
2025-11-27 17:08:40 +00:00
Solomon
83602590e9 Droid agent (#1318)
* droid research (vibe-kanban 054135e9)

<droid-docs>
# Overview

> Non-interactive execution mode for CI/CD pipelines and automation scripts.

# Droid Exec (Headless CLI)

Droid Exec is Factory's headless execution mode designed for automation workflows. Unlike the interactive CLI, `droid exec` runs as a one-shot command that completes a task and exits, making it ideal for CI/CD pipelines, shell scripts, and batch processing.

## Summary and goals

Droid Exec is a one-shot task runner designed to:

* Produce readable logs, and structured artifacts when requested
* Enforce opt-in for mutations/command execution (secure-by-default)
* Fail fast on permission violations with clear errors
* Support simple composition for batch and parallel work

<CardGroup cols={2}>
  <Card title="Non-Interactive" icon="terminal">
    Single run execution that writes to stdout/stderr for CI/CD integration
  </Card>

  <Card title="Secure by Default" icon="lock">
    Read-only by default with explicit opt-in for mutations via autonomy levels
  </Card>

  <Card title="Composable" icon="puzzle">
    Designed for shell scripting, parallel execution, and pipeline integration
  </Card>

  <Card title="Clean Output" icon="file-export">
    Structured output formats and artifacts for automated processing
  </Card>
</CardGroup>

## Execution model

* Non-interactive single run that writes to stdout/stderr.
* Default is spec-mode: the agent is only allowed to execute read-only operations.
* Add `--auto` to enable edits and commands; risk tiers gate what can run.

CLI help (excerpt):

```
Usage: droid exec [options] [prompt]

Execute a single command (non-interactive mode)

Arguments:
  prompt                          The prompt to execute

Options:
  -o, --output-format <format>    Output format (default: "text")
  -f, --file <path>               Read prompt from file
  --auto <level>                  Autonomy level: low|medium|high
  --skip-permissions-unsafe       Skip ALL permission checks (unsafe)
  -s, --session-id <id>           Existing session to continue (requires a prompt)
  -m, --model <id>                Model ID to use
  -r, --reasoning-effort <level>  Reasoning effort: off|low|medium|high
  --cwd <path>                    Working directory path
  -h, --help                      display help for command
```

Supported models (examples):

* gpt-5-codex (default)
* gpt-5-2025-08-07
* claude-sonnet-4-20250514
* claude-opus-4-1-20250805

## Installation

<Steps>
  <Step title="Install Droid CLI">
    <CodeGroup>
      ```bash macOS/Linux theme={null}
      curl -fsSL https://app.factory.ai/cli | sh
      ```

      ```powershell Windows theme={null}
      irm https://app.factory.ai/cli/windows | iex
      ```
    </CodeGroup>
  </Step>

  <Step title="Get Factory API Key">
    Generate your API key from the [Factory Settings Page](https://app.factory.ai/settings/api-keys)
  </Step>

  <Step title="Set Environment Variable">
    Export your API key as an environment variable:

    ```bash  theme={null}
    export FACTORY_API_KEY=fk-...
    ```
  </Step>
</Steps>

## Quickstart

* Direct prompt:
  * `droid exec "analyze code quality"`
  * `droid exec "fix the bug in src/main.js" --auto low`
* From file:
  * `droid exec -f prompt.md`
* Pipe:
  * `echo "summarize repo structure" | droid exec`
* Session continuation:
  * `droid exec --session-id <session-id> "continue with next steps"`

## Autonomy Levels

Droid exec uses a tiered autonomy system to control what operations the agent can perform. By default, it runs in read-only mode, requiring explicit flags to enable modifications.

### DEFAULT (no flags) - Read-only Mode

The safest mode for reviewing planned changes without execution:

*  Reading files or logs: cat, less, head, tail, systemctl status
*  Display commands: echo, pwd
*  Information gathering: whoami, date, uname, ps, top
*  Git read operations: git status, git log, git diff
*  Directory listing: ls, find (without -delete or -exec)
*  No modifications to files or system
* **Use case:** Safe for reviewing what changes would be made

```bash  theme={null}
# Analyze and plan refactoring without making changes
droid exec "Analyze the authentication system and create a detailed plan for migrating from session-based auth to OAuth2. List all files that would need changes and describe the modifications required."

# Review code quality and generate report
droid exec "Review the codebase for security vulnerabilities, performance issues, and code smells. Generate a prioritized list of improvements needed."

# Understand project structure
droid exec "Analyze the project architecture and create a dependency graph showing how modules interact with each other."
```

### `--auto low` - Low-risk Operations

Enables basic file operations while blocking system changes:

*  File creation/editing in project directories
*  No system modifications or package installations
* **Use case:** Documentation updates, code formatting, adding comments

```bash  theme={null}
# Safe file operations
droid exec --auto low "add JSDoc comments to all functions"
droid exec --auto low "fix typos in README.md"
```

### `--auto medium` - Development Operations

Operations that may have significant side effects, but these side effects are typically harmless and straightforward to recover from.
Adds common development tasks to low-risk operations:

* Installing packages from trusted sources: npm install, pip install (without sudo)
* Network requests to trusted endpoints: curl, wget to known APIs
* Git operations that modify local repositories: git commit, git checkout, git pull (but not git push)
* Building code with tools like make, npm run build, mvn compile
*  No git push, sudo commands, or production changes
* **Use case:** Local development, testing, dependency management

```bash  theme={null}
# Development tasks
droid exec --auto medium "install deps, run tests, fix issues"
droid exec --auto medium "update packages and resolve conflicts"
```

### `--auto high` - Production Operations

Commands that may have security implications such as data transfers between untrusted sources or execution of unknown code, or major side effects such as irreversible data loss or modifications of production systems/deployments.

* Running arbitrary/untrusted code: curl | bash, eval, executing downloaded scripts
* Exposing ports or modifying firewall rules that could allow external access
* Git push operations that modify remote repositories: git push, git push --force
* Irreversible actions to production deployments, database migrations, or other sensitive operations
* Commands that access or modify sensitive information like passwords or keys
*  Still blocks: sudo rm -rf /, system-wide changes
* **Use case:** CI/CD pipelines, automated deployments

```bash  theme={null}
# Full workflow automation
droid exec --auto high "fix bug, test, commit, and push to main"
droid exec --auto high "deploy to staging after running tests"
```

### `--skip-permissions-unsafe` - Bypass All Checks

<Warning>
  DANGEROUS: This mode allows ALL operations without confirmation. Only use in completely isolated environments like Docker containers or throwaway VMs.
</Warning>

* ⚠️ Allows ALL operations without confirmation
* ⚠️ Can execute irreversible operations
* Cannot be combined with --auto flags
* **Use case:** Isolated environments

```bash  theme={null}
# In a disposable Docker container for CI testing
docker run --rm -v $(pwd):/workspace alpine:latest sh -c "
  apk add curl bash &&
  curl -fsSL https://app.factory.ai/cli | sh &&
  droid exec --skip-permissions-unsafe 'Install all system dependencies, modify system configs, run integration tests that require root access, and clean up test databases'
"

# In ephemeral GitHub Actions runner for rapid iteration
# where the runner is destroyed after each job
droid exec --skip-permissions-unsafe "Modify /etc/hosts for test domains, install custom kernel modules, run privileged container tests, and reset network interfaces"

# In a temporary VM for security testing
droid exec --skip-permissions-unsafe "Run penetration testing tools, modify firewall rules, test privilege escalation scenarios, and generate security audit reports"
```

### Fail-fast Behavior

If a requested action exceeds the current autonomy level, droid exec will:

1. Stop immediately with a clear error message
2. Return a non-zero exit code
3. Not perform any partial changes

This ensures predictable behavior in automation scripts and CI/CD pipelines.

## Output formats and artifacts

Droid exec supports three output formats for different use cases:

### text (default)

Human-readable output for direct consumption or logs:

```bash  theme={null}
$ droid exec --auto low "create a python file that prints 'hello world'"
Perfect! I've created a Python file named `hello_world.py` in your home directory that prints 'hello world' when executed.
```

### json

Structured JSON output for parsing in scripts and automation:

```bash  theme={null}
$ droid exec "summarize this repository" --output-format json
{
  "type": "result",
  "subtype": "success",
  "is_error": false,
  "duration_ms": 5657,
  "num_turns": 1,
  "result": "This is a Factory documentation repository containing guides for CLI tools, web platform features, and onboarding procedures...",
  "session_id": "8af22e0a-d222-42c6-8c7e-7a059e391b0b"
}
```

Use JSON format when you need to:

* Parse the result in a script
* Check success/failure programmatically
* Extract session IDs for continuation
* Process results in a pipeline

### debug

Streaming messages showing the agent's execution in real-time:

```bash  theme={null}
$ droid exec "run ls command" --output-format debug
{"type":"message","role":"user","text":"run ls command"}
{"type":"message","role":"assistant","text":"I'll run the ls command to list the contents..."}
{"type":"tool_call","toolName":"Execute","parameters":{"command":"ls -la"}}
{"type":"tool_result","value":"total 16\ndrwxr-xr-x@ 8 user staff..."}
{"type":"message","role":"assistant","text":"The ls command has been executed successfully..."}
```

Debug format is useful for:

* Monitoring agent behavior
* Troubleshooting execution issues
* Understanding tool usage patterns
* Real-time progress tracking

For automated pipelines, you can also direct the agent to write specific artifacts:

```bash  theme={null}
droid exec --auto low "Analyze dependencies and write to deps.json"
droid exec --auto low "Generate metrics report in CSV format to metrics.csv"
```

## Working directory

* Use `--cwd` to scope execution:

```
droid exec --cwd /home/runner/work/repo "Map internal packages and dump graphviz DOT to deps.dot"
```

## Models and reasoning effort

* Choose a model with `-m` and adjust reasoning with `-r`:

```
droid exec -m claude-sonnet-4-20250514 -r medium -f plan.md
```

## Batch and parallel patterns

Shell loops (bounded concurrency):

```bash  theme={null}
# Process files in parallel (GNU xargs -P)
find src -name "*.ts" -print0 | xargs -0 -P 4 -I {} \
  droid exec --auto low "Refactor file: {} to use modern TS patterns"
```

Background job parallelization:

```bash  theme={null}
# Process multiple directories in parallel with job control
for path in packages/ui packages/models apps/factory-app; do
  (
    cd "$path" &&
    droid exec --auto low "Run targeted analysis and write report.md"
  ) &
done
wait  # Wait for all background jobs to complete
```

Chunked inputs:

```bash  theme={null}
# Split large file lists into manageable chunks
git diff --name-only origin/main...HEAD | split -l 50 - /tmp/files_
for f in /tmp/files_*; do
  list=$(tr '\n' ' ' < "$f")
  droid exec --auto low "Review changed files: $list and write to review.json"
done
rm /tmp/files_*  # Clean up temporary files
```

Workflow Automation (CI/CD):

```yaml  theme={null}
# Dead code detection and cleanup suggestions
name: Code Cleanup Analysis
on:
  schedule:
    - cron: '0 1 * * 0' # Weekly on Sundays
  workflow_dispatch:
jobs:
  cleanup-analysis:
    strategy:
      matrix:
        module: ['src/components', 'src/services', 'src/utils', 'src/hooks']
    steps:
      - uses: actions/checkout@v4
      - run: droid exec --cwd "${{ matrix.module }}" --auto low "Identify unused exports, dead code, and deprecated patterns. Generate cleanup recommendations in cleanup-report.md"
```

## Unique usage examples

License header enforcer:

```bash  theme={null}
git ls-files "*.ts" | xargs -I {} \
  droid exec --auto low "Ensure {} begins with the Apache-2.0 header; add it if missing"
```

API contract drift check (read-only):

```bash  theme={null}
droid exec "Compare openapi.yaml operations to our TypeScript client methods and write drift.md with any mismatches"
```

Security sweep:

```bash  theme={null}
droid exec --auto low "Run a quick audit for sync child_process usage and propose fixes; write findings to sec-audit.csv"
```

## Exit behavior

* 0: success
* Non-zero: failure (permission violation, tool error, unmet objective). Treat non-zero as failed in CI.

## Best practices

* Favor `--auto low`; keep mutations minimal and commit/push in scripted steps.
* Avoid `--skip-permissions-unsafe` unless fully sandboxed.
* Ask the agent to emit artifacts your pipeline can verify.
* Use `--cwd` to constrain scope in monorepos.

</droid-docs>

Use the oracle to research how we support custom executors.
AMP and Claude Code would likely be good references here as I believe that they both operate via JSON.

Save your findings in a single markdown file.

* begin droid

* add plan

* droid implementation (vibe-kanban 90e6c8f6)

Read tasks/droid-agent/plan.md and execute the plan.

* document droid (vibe-kanban 0a7f8590)

we have introduced a new coding agent

Installation instructions are at https://factory.ai/product/cli

We expect that users have the `droid` cli installed and that they have logged in.

docs/supported-coding-agents.mdx
There may also be other docs or references.

* red gh action (vibe-kanban f0c8b6c4)

Run cargo fmt --all -- --check
  cargo fmt --all -- --check
  npm run generate-types:check
  cargo test --workspace
  cargo clippy --all --all-targets -- -D warnings

the checks step is failing, can you see what's up with the rust codebase and resolve it?

* droid | settings bug (vibe-kanban 7deec8df)

We have a new coding agent called Droid and it has a variety of different settings including the autonomy level and we default this to medium and users can update this by going to settings and then using the drop down to change it and then hitting the save button. And this works, however, when users return back to settings the displayed autonomy level is reset to medium rather than the correct level. So can you investigate why this is happening and plan how we can improve it, how we can verify it, do we need to introduce some logging, other things to consider. Write up your plan in a new markdown file.

* glob

* tool call parsing & display (vibe-kanban e3f65a74)

droid.rs has `fn map_tool_to_action`

The problem is that we're doing a poor job at displaying these tool calls e.g. glob. In `claude.rs`, we use `ClaudeToolData`, a struct that matches the real JSON data. Once we do that, we have a type safe way to map tool calls to the `ActionType` struct.

You can run `droid exec --output-format=stream-json --auto medium "YOUR MESSAGE MERE"` in a temporary directory to instruct the agent to generate custom outputs in case you need more sample data.

I just added glob.jsonl under droid-json, there are other json files in there too.

I recommend using sub agents as some of these files (e.g. claude.rs) are large.

cursor.rs might also be a useful reference.

You're done once we properly handle these tools.

* show droid model (vibe-kanban 8fdbc630)

The first JSON object emitted from the droid executor is a system message with a `model` field. We should capture and display this.

I believe that we're already doing something similar with Codex.

Here's a sample system message:
{"type":"system","subtype":"init","cwd":"/Users/britannio/projects/vibe-kanban","session_id":"59a75629-c0c4-451f-a3c7-8e9eab05484a","tools":["Read","LS","Execute","Edit","MultiEdit","ApplyPatch","Grep","Glob","Create","ExitSpecMode","WebSearch","TodoWrite","FetchUrl","slack_post_message"],"model":"gpt-5-codex"}

* reliable apply patch display (vibe-kanban 3710fb65)

The crates/executors/src/executors/droid.rs ApplyPatch tool call contains an `input` string which isn't very helpful, but the tool call result is a JSON object with a `value` object with the fields success, content, diff, and file_path.

Here's a parsed example of `value`:
{
  "success": true,
  "content": "def bubble_sort(arr):\n    \"\"\"\n    Bubble Sort Algorithm\n    Time Complexity: O(n^2)\n    Space Complexity: O(1)\n\n    Repeatedly steps through the list, compares adjacent elements and swaps them\n    if they are in the wrong order.\n    \"\"\"\n    n = len(arr)\n    arr = arr.copy()  # Create a copy to avoid modifying the original\n\n    for i in range(n):\n        # Flag to optimize by stopping if no swaps occur\n        swapped = False\n\n        for j in range(0, n - i - 1):\n            if arr[j] > arr[j + 1]:\n                arr[j], arr[j + 1] = arr[j + 1], arr[j]\n                swapped = True\n\n        # If no swaps occurred, array is already sorted\n        if not swapped:\n            break\n\n    return arr\n\n\ndef insertion_sort(arr):\n    \"\"\"\n    Insertion Sort Algorithm\n    Time Complexity: O(n^2)\n    Space Complexity: O(1)\n\n    Builds the sorted portion of the array one element at a time by inserting\n    each element into its correct position.\n    \"\"\"\n    arr = arr.copy()  # Create a copy to avoid modifying the original\n\n    for i in range(1, len(arr)):\n        key = arr[i]\n        j = i - 1\n\n        while j >= 0 and arr[j] > key:\n            arr[j + 1] = arr[j]\n            j -= 1\n\n        arr[j + 1] = key\n\n    return arr\n\n\nif __name__ == \"__main__\":\n    # Example usage\n    test_array = [64, 34, 25, 12, 22, 11, 90]\n\n    print(\"Original array:\", test_array)\n    print(\"\\nBubble Sort result:\", bubble_sort(test_array))\n    print(\"Insertion Sort result:\", insertion_sort(test_array))\n\n    # Test with different arrays\n    print(\"\\n--- Additional Tests ---\")\n    test_cases = {\n        \"Reverse sorted\": [5, 4, 3, 2, 1],\n        \"Empty array\": [],\n        \"Already sorted\": [1, 2, 3, 4, 5],\n    }\n\n    for description, case in test_cases.items():\n        print(f\"{description} (Bubble):\", bubble_sort(case))\n        print(f\"{description} (Insertion):\", insertion_sort(case))\n",
  "diff": "--- previous\t\n+++ current\t\n@@ -26,14 +26,46 @@\n     return arr\n \n \n+def insertion_sort(arr):\n+    \"\"\"\n+    Insertion Sort Algorithm\n+    Time Complexity: O(n^2)\n+    Space Complexity: O(1)\n+\n+    Builds the sorted portion of the array one element at a time by inserting\n+    each element into its correct position.\n+    \"\"\"\n+    arr = arr.copy()  # Create a copy to avoid modifying the original\n+\n+    for i in range(1, len(arr)):\n+        key = arr[i]\n+        j = i - 1\n+\n+        while j >= 0 and arr[j] > key:\n+            arr[j + 1] = arr[j]\n+            j -= 1\n+\n+        arr[j + 1] = key\n+\n+    return arr\n+\n+\n if __name__ == \"__main__\":\n     # Example usage\n     test_array = [64, 34, 25, 12, 22, 11, 90]\n \n     print(\"Original array:\", test_array)\n     print(\"\\nBubble Sort result:\", bubble_sort(test_array))\n+    print(\"Insertion Sort result:\", insertion_sort(test_array))\n \n     # Test with different arrays\n     print(\"\\n--- Additional Tests ---\")\n-    print(\"Reverse sorted:\", bubble_sort([5, 4, 3, 2, 1]))\n-    print(\"Empty array:\", bubble_sort([]))\n+    test_cases = {\n+        \"Reverse sorted\": [5, 4, 3, 2, 1],\n+        \"Empty array\": [],\n+        \"Already sorted\": [1, 2, 3, 4, 5],\n+    }\n+\n+    for description, case in test_cases.items():\n+        print(f\"{description} (Bubble):\", bubble_sort(case))\n+        print(f\"{description} (Insertion):\", insertion_sort(case))",
  "file_path": "/Users/britannio/projects/droid-simple/sorting_algorithms.py"
}

This formatting should be deterministic and thus we can use it to show more informative tool call data.

The first thing to understand is if this will naturally fit with the current architecture, as we only reliably know how the file has changed (and what the target file was) after receiving the tool call result.

* droid failed tool call handling (vibe-kanban bd7feddb)

crates/executors/src/executors/droid.rs
droid-json/insufficient-perms.jsonl

the insufficient-perms file contains the JSON output log of a run where it runs a command to create a file but the tool call fails due to a permission error.

I'd expect that the failed tool result would be correlated with the tool call and thus i'd see an ARGS block and a RESULTS block within the tool call on the front-end.

Instead, I see the tool call only with the ARGS block, then I see a separate UI element with the JSON tool result as if it failed to be correlated.

Firstly, I want to follow TDD by creating a failing test that confirms this behaviour. It might be hard though because we haven't designed the code in droid.rs with testability in mind.

Lets first analyse the code to consider if it's already testable or if we need to do any refactoring & introduce harnesses etc.

My perspective of the coding agent is that we send it a command, and it streams JSON objects one by one so some form of reducer pattern seems natural (previous list of json objects + previous state + new json object => new state). Either 'new state' or 'new delta'.

When we resume a session, it will emit a system message object, then a message object with role user (repeating what we sent it), then the new actions that it takes.

* droid default (vibe-kanban 2f8a19cc)

the default autonomy level is currently medium. Lets change it to the highest (unsafe)

* droid globbing rendering (vibe-kanban 76d372ea)

See droid-json/glob.jsonl
Notice the `patterns` field. Unfortunately, we seems to not be using this data as glob tool calls are being rendered exclusively via a file name of some sort rather than `Globbing README.md, readme.md,docs/**,*.md`

Use the oracle to investigate this.

* droid todo list text (vibe-kanban b1bdeffc)

Use the text 'TODO list updated' for the droid agent when it makes a change to the todo list.

* droid workspace path (vibe-kanban 0486b74a)

See how claude.rs uses worktree_path (from normalize_logs).
We should be doing the same for the droid executor so that the tool calls we generate have relative paths.

* mcp settings (vibe-kanban 2031d8f4)

Quick fix: Filter that agent from the dropdown in the frontend.

// In McpSettings.tsx, line 282-289
<SelectContent>
  {profiles &&
    Object.entries(profiles)
      .filter(([key]) => key !== 'DROID') // or whatever the agent name is
      .sort((a, b) => a[0].localeCompare(b[0]))
      .map(([profileKey]) => (
        <SelectItem key={profileKey} value={profileKey}>
          {profileKey}
        </SelectItem>
      ))}
</SelectContent>

we need to temporarily hide droid as it doesn't support mcp yet.

* clean up (vibe-kanban 6b1a8e2e)

remove all references to 'britannio' from the droid module.

* delete droid json

* droid agent code review (vibe-kanban 6820ffd1)

We added Droid to crates/services/src/services/config/versions/v1.rs but presumably we should've used the latest reasonable version. See what we used for Copilot.

Delete docs/adr-droid-architecture.md
Delete docs/droid-improvements-summary.md

docs/supported-coding-agents.mdx the default was medium, it's now skip-permissions-unsafe

Delete the tasks/ folder

* remove unnecessary v1 change

* updated droid.json schema

* tweak command

* droid model suggestions (vibe-kanban 120f87d2)

crates/executors/src/executors/droid/types.rs

Valid model IDs are:
  gpt-5-codex                  OpenAI GPT-5-Codex (Auto)
  claude-sonnet-4-5-20250929   Claude Sonnet 4.5
  gpt-5-2025-08-07             OpenAI GPT-5
  claude-opus-4-1-20250805     Claude Opus 4.1
  claude-haiku-4-5-20251001    Claude Haiku 4.5
  glm-4.6                      Droid Core (GLM-4.6)

We currently mention gpt-5-codex, claude-sonnet-4

* remove dead code

* droid automated testing (vibe-kanban f836b4a4)

lets start brainstorming this, starting with tests in crates/executors/src/executors/droid/types.rs to ensure that we correctly generate a command

* create exec_command_with_prompt

* Add logging to error paths in action_mapper.rs (vibe-kanban 76cc5d71)

Add tracing logging (warn/error) to error paths in `crates/executors/src/executors/droid/action_mapper.rs` following existing logging patterns in the codebase.

Key locations:
- Line 32-35: DroidToolData parsing failure (currently silent)
- Any other error paths that swallow errors

Use `tracing::warn!` with structured fields for context (tool_name, error details, etc.)

* droid automated testing (DroidJSON -> NormalizedEntry) (vibe-kanban cf325d24)

We have example agent from /Users/britannio/Downloads/droid-json

Read crates/executors/src/executors/droid/events.rs

Use the oracle to plan tests that we could introduce.

* preserve timestamp

* droid reasoning effort (vibe-kanban 47dae2db)

in settings, we're showing a dropdown for the droid autonomy level. We should be doing the same for the reasoning level. It should default to being empty if possible.

* droid path (vibe-kanban d8370535)

Droid file edits (presumably ApplyPatch?) aren't using relative paths. E.g. i'm seeing `/private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban-dev/worktrees/11dc-setup/next.config.mjs`

* fix warning

* fix warning

* whitespace update

* DomainEvent -> LogEvent

* remove msg store stream -> line converter

* normalise the diff generated when the droid ApplyPatch tool call is
parsed

* refactor process_event to mutate a reference to ProcessorState

* remove EntryIndexProvider abstraction

* remove dead code

* remove JSON indirection when invoking extract_path_from_patch

* converting DroidJson -> LogEvent produces Option instead of Vec
DroidJson mapping tests removed in favour of snapshot testing delete
emit_patches (now redundant) update match syntax in
compute_updated_action_type make process_event a member of
ProcessorState

* simplify droid build_command_builder

* simplify droid types tests

* remove droid type tests

* rename events.rs -> log_event_converter.rs
rename patch_emitter -> patch_converter
remove ParsedLine indirection from processor.rs
handle Edit, MultiEdit, and Create tool calls (only used by some models like claude)
move action mapper logic to log_event_converter
introduce a claude snapshot
update snapshots

* add error log for failed parsing of DroidJson

* update snapshots

* Fix clippy warnings in droid executor

- Change &String to &str in extract_path_from_patch
- Rename to_patch to process_event for correct self convention

Amp-Thread-ID: https://ampcode.com/threads/T-81d4f5ac-6d3a-4da5-9799-de724f3df1e3
Co-authored-by: Amp <amp@ampcode.com>

* update cargo lock

* droid tool call result parsing (vibe-kanban 514d27de)

the droid executor has a regression where the `droid exec` command is no longer producing an `id` field for tool_result messages. Fortunately, in most cases, it's safe to stick to FIFO behaviour whereby if we get a tool result, we can match it with the earliest tool call. This won't always work but it's a reasonable solution for the next few days while the droid team fixes their executor.

Start by using the oracle to trace and understand the codepaths involved, and to make a plan. We likely need to update the DroidJson struct so that the tool call result id becomes optional.

To test this, we can take an existing snapshot test and create a variant of it without ids in the tool call results, and see if we still produce equivalent log events.

* refactor: collapse nested if statements in log_event_converter

Amp-Thread-ID: https://ampcode.com/threads/T-b9ad8aac-0fd5-44c5-b2f8-317d79b623a6
Co-authored-by: Amp <amp@ampcode.com>

* format

* Cleanup droid executor implementation

* Implement session forking

* linter

---------

Co-authored-by: Britannio Jarrett <britanniojarrett@gmail.com>
Co-authored-by: Test User <test@example.com>
Co-authored-by: Amp <amp@ampcode.com>
2025-11-20 10:40:17 +00:00
Britannio Jarrett
074199f2d2 rename cursor to cursor agent (vibe-kanban) (#1072)
* Done! I've successfully renamed "Cursor" to "Cursor Agent" throughout the codebase. The changes include:

- Renamed the Rust struct from `Cursor` to `CursorAgent` in [crates/executors/src/executors/cursor.rs](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/crates/executors/src/executors/cursor.rs)
- Updated the enum variant in [crates/executors/src/executors/mod.rs](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/crates/executors/src/executors/mod.rs) with proper serialization attributes
- Updated documentation in [docs/supported-coding-agents.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/docs/supported-coding-agents.mdx) and [docs/index.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/docs/index.mdx)
- Regenerated TypeScript types
- All type checks pass (frontend and backend)

The serialization still uses "CURSOR" for backwards compatibility, but the struct is now named `CursorAgent` in Rust, making it clear this refers to the Cursor Agent CLI tool.

* Perfect! All checks pass. The renaming is complete. The struct is now `CursorAgent` everywhere, serializing as `CURSOR_AGENT`.

* Perfect! Done. I've reverted all internal code changes and kept only the user-facing documentation updates:

**What remains changed (user-visible):**
- [docs/supported-coding-agents.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/docs/supported-coding-agents.mdx) - Title changed from "Cursor CLI" to "Cursor Agent CLI"
- [docs/index.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/51f5-rename-cursor-to/docs/index.mdx) - "Cursor CLI" changed to "Cursor Agent CLI"

**What was reverted (internal, not user-visible):**
- All Rust struct/enum names back to `Cursor`
- All serialization formats back to `CURSOR`
- TypeScript types back to `CURSOR`
- JSON config files back to `CURSOR`

All checks pass 

* Perfect! Now users will see "CURSOR_AGENT" in the UI when selecting agents, while the code stays clean with the `Cursor` struct name, and documentation still says "Cursor CLI". All checks pass 

**What changed (user-visible in UI):**
- Agent selection dropdowns show "CURSOR_AGENT" instead of "CURSOR"
- JSON configs use "CURSOR_AGENT"
- MCP server documentation shows `cursor_agent` / `CURSOR_AGENT`

**What stayed the same:**
- Rust code uses `Cursor` struct name internally (clean code)
- User-facing documentation still says "Cursor CLI" (no doc changes needed)

* Perfect! Now it's backwards compatible. The `#[serde(alias = "CURSOR")]` attribute means:

 **Backwards Compatible:**
- Old configs with `"CURSOR"` will still deserialize correctly
- New configs with `"CURSOR_AGENT"` also work
- All serialization (saving configs) uses the new `"CURSOR_AGENT"` format

**Summary of changes:**
- Users see "CURSOR_AGENT" in the UI dropdown
- New configs are saved with "CURSOR_AGENT"
- Old configs with "CURSOR" continue to work
- Code internally still uses clean `Cursor` struct name
- All checks pass 

* Perfect!  Now it's fully backwards compatible:

**What works:**
-  Old configs with `"CURSOR"` deserialize correctly (via `alias`)
-  New configs with `"CURSOR_AGENT"` deserialize correctly
-  All new saves use `"CURSOR_AGENT"` (via `rename`)
-  The discriminant enum `BaseCodingAgent` also accepts both formats
-  Users see "CURSOR_AGENT" in the UI
-  All type checks pass

The `#[strum_discriminants(serde(rename = "CURSOR_AGENT", alias = "CURSOR"))]` ensures both the full enum AND the discriminant enum accept both old and new formats.

* Perfect!  Now `cursor_agent.json` exists and the Vite plugin will create the key `CURSOR_AGENT`, which matches what the frontend expects.

* cursor agent | fix (vibe-kanban 6594df22)

http://localhost:3044/api/task-attempts

This fails

Payload:
{"task_id":"18fdd148-5049-4772-9385-6d9196087524","executor_profile_id":{"executor":"CURSOR_AGENT","variant":null},"base_branch":"main"}

Response: Failed to deserialize the JSON body into the target type: executor_profile_id.executor: unknown executor 'CURSOR_AGENT' (normalized to 'CURSOR_AGENT') at line 1 column 98

Check the diff of this branch vs main to understand what we've been trying to do (users should see CURSOR_AGENT instead of CURSOR)

Server log:
[0] 2025-10-23T08:38:00.475636Z DEBUG server::routes::tasks: Creating task 'hey' in project f8c8d410-fd1b-48a4-829a-a6bf4b550a62

* rename CodingAgent::Cursor -> CodingAgent::CursorAgent

* update types
2025-10-27 10:24:53 +00:00
Britannio Jarrett
f88daa4826 update docs after overhauled front-end (#1079) 2025-10-23 09:30:36 -07:00
Britannio Jarrett
8c6f7c6d30 update docs (preview mode, mcp start task tool, GitHub Copilot) (vibe-kanban) (#992)
* update cleanup script docs

* Perfect! I've successfully created comprehensive documentation for the Preview Mode feature and updated the existing documentation. Here's what I've completed:

## New Documentation Created

**[Preview Mode](/core-features/preview-mode)** - A complete guide covering:
- Overview and key benefits
- Prerequisites and setup requirements
- Step-by-step setup instructions for the Web Companion
- Usage instructions with toolbar controls
- Component selection workflow
- Comprehensive troubleshooting section
- Advanced usage examples

## Updated Documentation

**[Task Details Full Screen Mode](/core-features/task-details-full-screen)** - Enhanced with:
- Added Preview tab to the right panel navigation
- New Preview Tab section explaining embedded browser functionality
- Cross-reference link to the detailed Preview Mode documentation
- Updated related documentation links

**[Navigation](/docs.json)** - Added the new preview-mode page to the Core Features section

## Key Features Documented

The documentation covers all the preview mode capabilities you described:
- **Initial setup** requirements and configuration
- **Automatic URL detection** from development server logs
- **Embedded browser** viewing within full screen mode
- **Web Companion installation** for component selection
- **Precise component selection** with Alt+click and context menus
- **Seamless workflows** without leaving Vibe Kanban

The documentation includes placeholder spaces for screenshots as requested, and follows the existing Mintlify documentation patterns with proper formatting, components, and cross-references.

* I've successfully updated the [Vibe Kanban MCP Server documentation](/integrations/vibe-kanban-mcp-server) with comprehensive tool coverage:

## New Documentation Sections Added

**Available MCP Tools** - Complete reference tables organized by category:
- **Project Operations**: `list_projects`
- **Task Management**: `list_tasks`, `create_task`, `get_task`, `update_task`, `delete_task`
- **Task Execution**: `start_task_attempt` (new feature)

**Supported Executors** - Full list of coding agents that can be used with `start_task_attempt`

**Status Values** - Valid kebab-case status values for filtering and updates

## Enhanced Example Usage

**Planning and Task Creation** - Shows how coding agents use the `create_task` tool

**Starting Task Execution** - Demonstrates the new `start_task_attempt` feature with example JSON parameters

**Complete Workflow Example** - End-to-end workflow from listing projects to starting task execution

The documentation now provides a complete reference for all MCP tools, with the new `start_task_attempt` feature prominently highlighted and explained with practical examples.

* Done! I've updated [supported-coding-agents.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/supported-coding-agents.mdx):

1. **Reordered**: Claude Code first, OpenAI Codex second, then Amp
2. **Renamed**: "Codex" → "OpenAI Codex"
3. **Renamed**: "SST OpenCode" → "OpenCode"

* Done! Updated [vibe-kanban-mcp-server.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/integrations/vibe-kanban-mcp-server.mdx):

1. Added syntax note to Option 2: Manual Configuration
2. Removed type hints from all parameters in MCP tools table
3. Removed the Info callout about `start_task_attempt` being newly added

* Done! Removed the Status Values section from [vibe-kanban-mcp-server.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/integrations/vibe-kanban-mcp-server.mdx).

* Done! I've updated the terminology in [vibe-kanban-mcp-server.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/integrations/vibe-kanban-mcp-server.mdx):

- Changed section heading from "Using MCP with Coding Agents" to "Using the MCP Server"
- Replaced "your coding agent" with "your MCP client" in the workflow steps and examples
- Kept references to "coding agents" only where appropriate (e.g., when referring to agents within Vibe Kanban, or the executor parameter for `start_task_attempt`)

* fix docs (vibe-kanban a870f5a1)

The server is live and the docs are accessible via the URL http://localhost:3000/core-features/preview-mode

I'm seeing `🚧 A parsing error occured. Please contact the owner of this website.` on this preview mode page and it seemingly has something to do with the Steps component.

Using the Chrome DevTools that you have access to, you should be able to launch the website and iteratively make changes until this error is no longer present and the preview mode documentation is displaying itself as intended. You can look at recent commits to understand what has been changed with this documentation. You also have access to the Mintlify tools in order to search the official Mintlify documentation in case you need to troubleshoot.

* Done! I've updated the [preview-mode.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/core-features/preview-mode.mdx) with:

1. **Emphasized automatic installation** as the recommended approach with an Info callout
2. **Accurate setup steps** from the official README for Create React App, Next.js, and Vite
3. **Removed conditional rendering** (`process.env.NODE_ENV` checks) since tree-shaking handles this automatically
4. **Added note about tree-shaking** to clarify that the companion is automatically removed from production builds

* Done! I've completed both tasks:

1.  Copied the dev server screenshot to [docs/images/preview-mode-start-dev-server.png](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/images/preview-mode-start-dev-server.png)
2.  Removed the "Advanced Usage" section from [preview-mode.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/core-features/preview-mode.mdx)

* Done! I've completed all the image updates:

1.  Replaced the dev server start image with the new screenshot
2.  Added all preview mode screenshots:
   - `preview-mode-interface.png` - Preview tab with dev server on
   - `preview-mode-component-selection.png` - Hovering over component with companion
   - `preview-mode-component-depth.png` - Component selected showing hierarchy
3.  Removed all placeholder comments from the Frame elements

* Done! I've completed all 6 review fixes:

1.  Copied dev script config screenshot
2.  Added install companion button screenshot within the Info callout
3.  Removed the false "Automatically switch to Preview tab when ready" line
4.  Added preview toolbar screenshot
5.  Removed "Stop Dev" from toolbar controls (it's not part of the toolbar)
6.  Fixed component selection instructions - now correctly states to click the floating VK companion button in bottom-right corner, removed incorrect Alt+Click and Context Menu instructions

* Done! I've simplified the troubleshooting section to only include the relevant tip about ensuring the development server prints the URL to stdout/stderr for automatic detection, along with the supported URL formats. Removed all the less relevant troubleshooting content.

* Done! I've completed all 3 review fixes:

1.  Removed emojis from toolbar controls (🔄, 📋, 🌐)
2.  Replaced component depth image with new screenshot and moved the old one to the top as an overview image
3.  Removed "IDE" from the overview text - now only mentions switching between browser and Vibe Kanban

* Done! Replaced the overview image with the new screenshot.

* Done! I've fixed both issues in [task-details-full-screen.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/core-features/task-details-full-screen.mdx):

1.  Updated toolbar description from "Start, stop, and manage your development server" to "Refresh the preview, copy the URL, or open in a new browser tab"
2.  Changed image from `vk-preview.png` to `preview-mode-overview.png` (same as the preview mode docs page)

* Done! I've added GitHub Copilot to the [supported coding agents documentation](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/supported-coding-agents.mdx). The new section includes:

- Installation instructions via npm (`npm install -g @github/copilot`)
- Prerequisites (Copilot subscription, Node.js 22+, npm 10+)
- Authentication instructions using the `/login` command
- Link to official GitHub Copilot CLI documentation

It's positioned between Amp and Cursor CLI in the list.

* Done! Removed the placeholder comment from [preview-mode.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/core-features/preview-mode.mdx).

* remove old preview

* Done! I've updated [vibe-kanban-mcp-server.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/integrations/vibe-kanban-mcp-server.mdx) with both corrections:

1.  Changed "Create a task in 'plan mode'" to mention creating a custom agent profile with a planning prompt, with a link to the Agent Configurations documentation
2.  Changed "Generate Sub-Tasks" to "Generate Tasks" since the MCP server only generates tasks, not sub-tasks

* Done! Removed the "Real-time preview" line from the key benefits section in [preview-mode.mdx](file:///private/var/folders/5q/5vgq75y92dz0k7n62z93299r0000gn/T/vibe-kanban/worktrees/4d6d-update-docs/docs/core-features/preview-mode.mdx).

* update docs on Codex w/ ChatGPT

* update MCP server install command docs
2025-10-10 16:35:20 +01:00
Britannio Jarrett
09d2710a34 Update all documentation (#718)
* add AGENTS/CLAUDE.md file to docs/

* collapse supported coding agents (vibe-kanban 52fd2ae6)

docs/AGENTS.md
docs/docs.json

We have a section in the docs denoted 'Supported Coding Agents' but we don't need a separate sub page for each one, we can combine it into a single page.

* docs multiple dev servers (vibe-kanban 3e3a6195)

"At the moment only one dev server can be running for each project, so if you start one it will kill any that are already running."

This sentence in the docs is no longer true and should be removed

* docs update: reviewing code changes (vibe-kanban e3b5db87)

docs/AGENTS.md
docs/docs.json

Introduce a new page in the user guide that covers code review. After a task has completed, it will enter the 'in review' column. From there, the user can open the task in full screen and press on the 'Diff' tab to see each changed file in split or unified view. We also support attaching a review comment to a line by clicking on the plus icon at the start of the line. You can create several comments across files and even extend the review with general comments in the task chat field before submitting the review. It is turned into a single message for the coding agent to address.

* Document VS Code Extension Features (vibe-kanban e88b4bb9)

Create a comprehensive user guide page documenting the VS Code extension integration. It works with VSCode and forks of VSCode such as Cursor, Windsurf.

The IDE extension embeds the Logs, Diffs. and Processes view for a current task. It also has a text box to create new task attempts. After installing the extension, the easiest way to use it is by starting a task, opening it, in full screen mode, then pressing the 'Open in (VSCode/Cursor/Windsurf)' button. For troubleshooting, if you open your IDE but not in one of the worktrees created by a vibe kanban task, the extension UI will be empty because it won't find the associated task.

VSCode install link: https://marketplace.visualstudio.com/items?itemName=bloop.vibe-kanban
Cursor/Windsurf: https://open-vsx.org/extension/bloop/vibe-kanban

Id: bloop.vibe-kanban, users can search @id:bloop.vibe-kanban in any of the IDEs to find the extension. It's easiest to search the id if using Cursor/Windsurf as deeplinking from open vsx doesn't work.

* remove /docs prefix from internal links

* hackathon docs banner (vibe-kanban ce53b989)

<guide>
# Banner

> Add a banner to display important site-wide announcements and notifications

Use banners to display important announcements, updates, or notifications across your entire documentation site. Banners appear at the top of every page, support Markdown formatting, and can be made dismissible.

To add a banner, use the `banner` property in your `docs.json`:

<CodeGroup>
  ```json Product announcements wrap
  "banner": {
    "content": "🚀 Version 2.0 is now live! See our [changelog](/changelog) for details.",
    "dismissible": true
  }
  ```

  ```json Maintenance notices wrap
  "banner": {
    "content": "⚠️ Scheduled maintenance: API will be unavailable December 15, 2-4 AM UTC",
    "dismissible": false
  }
  ```

  ```json Required actions wrap
  "banner": {
    "content": "**Action required:** Migrate to our new version by January 1. [Migration guide](/migration)",
    "dismissible": true
  }
  ```
</CodeGroup>

## Properties

<ResponseField name="content" type="string" required>
  The banner message. Supports plain text and Markdown formatting.
</ResponseField>

<ResponseField name="dismissible" type="boolean">
  Whether users can dismiss the banner. When `true`, users can close the banner and it won't reappear for their session. Defaults to `false`.
</ResponseField>

</guide>

We are hosting a hackathon in London on the 20th of September, so create a site-wide banner advertising this.

* update mcp server docs (vibe-kanban 94754ae1)

Update the documentation on the MCP server.

We have an existing page describing how it works, but it needs a bit of clarification because MCP support comes in two forms for us. Firstly, you can configure the MCP servers accessible to the coding agents you use within our product. And secondly, our product itself exposes an MCP server for other MCP clients to connect to, such as Claude Desktop, Raycast, or a coding agent that you're using either within Vive Kanban or outside Vive Kanban.

Our MCP server is a local MCP server as opposed to a remote MCP server and this means you can connect to it through apps that you've installed on your computer but you can't connect to clients that expect a publicly accessible URL.

The vibe-kanban-mcp-server docs page is exclusively focused on the MCP server that we expose but we should clarify this for users. This means we'll need a new page that focuses on the MCP Server configuration page that we have inside the app. And this is the page that lets users choose the MCP servers connected to each of the coding agents supported within Vibe Kanban. We also have a one-click installation feature for popular servers. such as, these are Context7 and Playwright.

# Update Media
Replace the main screenshot with /Users/britannio/Downloads/vk-mcp-server-config.jpeg by copying it into the project. This screenshot is taken from the MCP server's settings page and it's useful to show how we can add the Vibe Kanban MCP server to a coding agent that we're using within Vibe Kanban. We will also use this screenshot on the new page we're creating to show MCP server configuration, just to convey that you can bring your own MCP server or use one of our one-click installation popular servers for your coding agents.

/Users/britannio/Downloads/vk-raycast-mcp-part-2.png /Users/britannio/Downloads/vk-raycast-mcp-part-1.png

These screenshots are screenshots of the macOS Raycast app and they show you how you can configure the MCP server with it. Raycast is a popular MCP client just like Claude Desktop but many others are supported too.

* docs: creating task attempts - mintlify rules (vibe-kanban 2b54caea)

docs/user-guide/creating-task-attempts.mdx

Apply the Mintlify technical writing rules to this page.

* use british english in mintlify technical writing rule

* docs: agent configurations - mintlify rules (vibe-kanban 8e7d82ec)

docs/user-guide/agent-configurations.mdx
Apply the Mintlify technical writing rules to this page

* docs: creating projects (vibe-kanban 95cd181a)

docs/user-guide/creating-projects.mdx

Copy /Users/britannio/Downloads/vk-create-project.jpeg and use it as the screenshot

When the Create Project button is pressed, you have two options, either to create from an existing git repository or to create from a blank project. If you choose the former, then we will search your file system and show you a sorted list of git repositories that we find where the top project is the one that was most recently active.

In project settings, we not only let you control setup scripts, dev server scripts, and cleanup scripts, but we also let you specify a comma separated list of 'copy files'. And these are files like environment variables or other data that isn't tracked by git that you want to be present in the work tree created by every new task. Put this 'Copy Files' section above cleanup scripts.

How the codebase describes copy files: "Comma-separated list of files to copy from the original project directory to the worktree. These files will be copied after the worktree is created but before the setup script runs. Useful for environment-specific files like .env, configuration files, and local settings. Make sure these are gitignored or they could get committed!"

Since this page was created, we've changed the setup flow. So instead of configuring project settings during project creation, it's done afterwards. So once a user has created a project, they need to explicitly press the settings button in the top right to configure these scripts. As a result of this, it would be sensible to move all of the sections on project settings (git, setup scripts, etc) into a heading titled project settings.

From these project settings, you can also configure project task templates and we have more details about this in a subsection of a different page here: /user-guide/creating-task-templates#project-task-templates

* docs: getting started - minitlify (vibe-kanban 37318053)

      {
        "group": "Getting started",
        "pages": ["index", "getting-started", "onboarding", "global-settings"]
      },

Apply the Mintlify technical writing rules to these pages.

Additionally:

```
---
title: ""
description: ""
sidebarTitle: ""
---
```

These docs pages should have a title and description by including this block at the very top of the mdx file.

If the `title` attribute is equivalent to the first header, the header is redundant and can be removed.

sidebarTitle is optional and can be used if the main title os too verbose. The sidebar title should typically be two to three words.

* update creating projects text

* docs: creating tasks - mintlify (vibe-kanban a274f135)

docs/user-guide/creating-tasks.mdx
Apply the Mintlify technical writing rules to this page

* docs: creating task templates - mintlify (vibe-kanban 90f075a7)

docs/user-guide/creating-task-templates.mdx
Apply the Mintlify technical writing rules to this page

* update page title

* docs: keyboard shortcuts (vibe-kanban 8f39c2d0)

use the oracle to explore the codebase and learn how this feature works

add a new docs page covering each shortcut of significance (e.g. esc isn't significant)

* docs: task full screen mode (vibe-kanban a7e097dc)

Task details full screen mode: dev server, rebase, merge, subtask, new attempt, logs, diffs, processes.

Create a new docs page for this full scree mode explaining everything that can be done. Link to other docs for depth on each feature where appropriate.

use the oracle to explore the codebase and learn how this feature works

* docs: github features (vibe-kanban 29aa8f79)

add a docs page describing the features enabled by connecting to Github. Determine which screenshots will be needed and use placeholders for them until I give them to you.

use the oracle to explore the codebase and learn how this feature works

* docs: subtasks (vibe-kanban e038c1ad)

create a docs page for the subtask feature. Leave placeholders for screenshots: we need one for the full screen task view where you can see the button, one for viewing a task with subtasks, and one for viewing a subtask in full screen where it shows its parent task.

use the oracle to explore the codebase and learn how this feature works

* update subtask title

* docs: task templates (vibe-kanban 690b1933)

/Users/britannio/Downloads/vk-task-templates.png
/Users/britannio/Downloads/vk-proj-task-templates.png

Use these updated images in docs/user-guide/creating-task-templates.mdx

* docs: creating tasks screenshots (vibe-kanban 20f70e4f)

docs/user-guide/creating-tasks.mdx

/Users/britannio/Downloads/vk-create-task.png /Users/britannio/Downloads/vk-starting-task-attempt.png /Users/britannio/Downloads/vk-task-template.png

use these as the new screenshots

* docs: onboarding (vibe-kanban 631427c5)

docs/getting-started.mdx
docs/onboarding.mdx

In the documentation, we have an installation page and an onboarding page. But the onboarding page is a bit misleading because what actually happens when you set up the project and run the npx command for the first time is it will open the app and you'll see the projects page. There won't be any projects, so you'll have the chance to create your first project and create your first task. And then if you want to connect to GitHub, you have to manually go to settings and connect that. There isn't actually any encouragement for the user to do any of this. So, review those two pages and review the code base to double check that my understanding of the current onboarding flow is correct. And then update the documentation accordingly. We may not need the onboarding page at all if it's not relevant.

* docs: creating tasks (vibe-kanban 0eb62591)

docs/user-guide/creating-tasks.mdx

We should mention that tasks can be created by a coding agent or by an MCP client such as Claude Desktop or Raycast and then linked to the Vibe Kanban MCP server documentation. This isn't the expected use case for creating tasks but it can be useful for creating tasks in bulk based on existing data that you have or migrating tasks from a different system such as Linear, Github Issues

Conform to the mintlify technical writing rules.

* docs: settings (vibe-kanban 579e1663)

docs/global-settings.mdx

Use this screenshot instaed of screenshot-global-settings.png: /Users/britannio/Downloads/vk-settings.png

Don't change anything else.

* update creating tasks docs (vibe-kanban 140820a6)

docs/user-guide/creating-tasks.mdx

"After creating a project, add tasks by clicking the Add Task button in the navigation section of your project kanban page. Creating a task adds it to your kanban board without automatically starting a coding agent."

The button isn't an 'add task' button, it's a plus icon in the top right. You can also use the shortcut `c`.

* docs: creating task attempts (vibe-kanban fb8c5ad4)

docs/user-guide/creating-task-attempts.mdx
Review what is described in this documentation versus how it actually works in the frontend. For example, the previous documentation about the task attempt toolbar actions doesn't appear to hold anymore because the UI has changed. And the buttons in the image that it refers to are now only visible when viewing a task in full screen. And we have documentation on full screen mode. So that's an opportunity to backlink.

* update docs agents.md file

* Review and Harmonise All Documentation (vibe-kanban 7194a113)

Comprehensive review of all documentation pages to ensure:
- Consistent flow and navigation between pages
- Elimination of unnecessary information duplication
- Proper cross-referencing between related topics
- Consistent terminology and style
- Logical information architecture
- Updated navigation and table of contents
- Ensure docs conform to the mintlify technical rules, lean towards making smaller tweaks rather than larger rewrites as the content is already in a good state.

Deliverables:
- Updated navigation structure in docs.json
- Revised cross-references between pages
- Consolidated duplicate information
- Style and terminology consistency report
- Updated index and getting started pages to reflect new content

Location: Review all files in `/docs/` directory

* update image (vibe-kanban d0dcf34d)

docs/user-guide/creating-projects.mdx
/Users/britannio/Downloads/vk-create-proj.png
This is the new screenshot to use for the creating projects documentation. Just copy it and delete the old one.

* docs: delete unused images (vibe-kanban b8fdd325)

Find all unused images in the docs folder and remove them.

* remove review report

* move docs around (vibe-kanban 5ca2e108)

In the docs folder, we have a single subfolder called User Guide. But if you read docs.json, you'll see we now have four different sections of the documentation. I think the first section, being Getting Started, doesn't need its own folder, so the docs inside it can remain top level. But for all of the other sections, they should have their own folder named appropriately.

* update mintlify docs

* rename settings

* bring back ccr images (vibe-kanban 82c0f5d7)

Commit 1db2e0113e introduced claude code router images and setup instructions. Bring it back inside docs/supported-coding-agents.mdx including the images.

* docs deadlink (vibe-kanban b033ffaa)

core-features/task-details-full-screen#subtasks the subtasks link in this section is incorrect. Fix it and fix all other broken docs links.
2025-09-16 21:46:57 +01:00