Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
42 changes: 33 additions & 9 deletions docs/guides/docusaurus-site-guide.md
Original file line number Diff line number Diff line change
Expand Up @@ -89,7 +89,7 @@ For Sidecar plugins, use this structure:

One-line description of what it does.

![Screenshot](/img/screenshots/plugin-name.png)
![Screenshot](../../docs/screenshots/plugin-name.png)

## Overview
Brief explanation of the UI layout and core purpose.
Expand Down Expand Up @@ -221,16 +221,40 @@ footer: {

## Adding Images

1. Place images in `static/img/`
2. Reference in Markdown:
```markdown
![Alt text](/img/screenshot.png)
```
### Screenshot Organization

**Website documentation screenshots** (for Docusaurus pages in `website/docs/`):
- Store in: `docs/screenshots/` (project root)
- Reference with: `![Alt text](../../docs/screenshots/filename.png)`
- These are the official screenshots for the documentation site

**README and other markdown screenshots** (for GitHub, repo docs, etc.):
- Store in: `docs/screenshots/` (project root)
- Reference with: `![Alt text](docs/screenshots/filename.png)` (from repo root)
- Same location, different relative path based on context

**General website images** (logos, icons, graphics):
- Store in: `website/static/img/`
- Reference with: `![Alt text](/img/filename.png)`

### For AI Agents

When capturing screenshots:
- If the prompt mentions "website docs" or "Docusaurus": save to `docs/screenshots/`
- If the prompt mentions "README" or "repo documentation": save to `docs/screenshots/`
- The same screenshots in `docs/screenshots/` serve both website and repo docs

### Usage Examples

In website docs (`website/docs/*.md`):
```markdown
![Plugin Screenshot](../../docs/screenshots/sidecar-git.png)
```

Or import in JSX:
In JSX components:
```jsx
import screenshot from '@site/static/img/screenshot.png';
<img src={screenshot} alt="Screenshot" />
import screenshot from '@site/static/img/logo.png';
<img src={screenshot} alt="Logo" />
```

## Blog Posts
Expand Down
29 changes: 29 additions & 0 deletions internal/plugins/worktree/mouse.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,21 +97,43 @@ func (p *Plugin) handleMouseHover(action mouse.MouseAction) tea.Cmd {
case ViewModeMerge:
if action.Region == nil {
p.mergeMethodHover = 0
p.mergeConfirmCheckboxHover = 0
p.mergeConfirmButtonHover = 0
return nil
}
switch action.Region.ID {
case regionMergeMethodOption:
if idx, ok := action.Region.Data.(int); ok {
p.mergeMethodHover = idx + 1 // 1=Create PR, 2=Direct Merge
}
p.mergeConfirmCheckboxHover = 0
p.mergeConfirmButtonHover = 0
case regionMergeConfirmCheckbox:
if idx, ok := action.Region.Data.(int); ok {
p.mergeConfirmCheckboxHover = idx + 1 // 1-4 for checkboxes
}
p.mergeMethodHover = 0
p.mergeConfirmButtonHover = 0
case regionMergeConfirmButton:
p.mergeConfirmButtonHover = 1 // Clean Up
p.mergeMethodHover = 0
p.mergeConfirmCheckboxHover = 0
case regionMergeSkipButton:
p.mergeConfirmButtonHover = 2 // Skip All
p.mergeMethodHover = 0
p.mergeConfirmCheckboxHover = 0
default:
p.mergeMethodHover = 0
p.mergeConfirmCheckboxHover = 0
p.mergeConfirmButtonHover = 0
}
default:
p.createButtonHover = 0
p.agentChoiceButtonHover = 0
p.deleteConfirmButtonHover = 0
p.mergeMethodHover = 0
p.mergeConfirmCheckboxHover = 0
p.mergeConfirmButtonHover = 0
}
return nil
}
Expand Down Expand Up @@ -351,6 +373,13 @@ func (p *Plugin) handleMouseDoubleClick(action mouse.MouseAction) tea.Cmd {
}

switch action.Region.ID {
case regionPreviewPane:
// Double-click in preview pane attaches to tmux session if agent running
wt := p.selectedWorktree()
if wt != nil && wt.Agent != nil && wt.Agent.TmuxSession != "" {
p.attachedSession = wt.Name
return p.AttachToSession(wt)
}
case regionWorktreeItem:
// Double-click on worktree - attach to tmux session if agent running
if idx, ok := action.Region.Data.(int); ok && idx >= 0 && idx < len(p.worktrees) {
Expand Down
6 changes: 4 additions & 2 deletions internal/plugins/worktree/plugin.go
Original file line number Diff line number Diff line change
Expand Up @@ -169,8 +169,10 @@ type Plugin struct {
taskMarkdownWidth int // Width used for cached render

// Merge workflow state
mergeState *MergeWorkflowState
mergeMethodHover int // 0=none, 1=Create PR option, 2=Direct Merge option (for mouse hover)
mergeState *MergeWorkflowState
mergeMethodHover int // 0=none, 1=Create PR option, 2=Direct Merge option (for mouse hover)
mergeConfirmCheckboxHover int // 0=none, 1-4 for cleanup checkboxes (mouse hover)
mergeConfirmButtonHover int // 0=none, 1=Clean Up, 2=Skip All (mouse hover)

// Commit-before-merge state
mergeCommitState *MergeCommitState
Expand Down
2 changes: 1 addition & 1 deletion internal/plugins/worktree/types.go
Original file line number Diff line number Diff line change
Expand Up @@ -84,7 +84,7 @@ func (s WorktreeStatus) Icon() string {
case StatusActive:
return "●"
case StatusWaiting:
return "💬"
return ""
case StatusDone:
return "✓"
case StatusError:
Expand Down
2 changes: 1 addition & 1 deletion internal/plugins/worktree/types_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -122,7 +122,7 @@ func TestWorktreeStatusIcon(t *testing.T) {
}{
{StatusPaused, "⏸"},
{StatusActive, "●"},
{StatusWaiting, "💬"},
{StatusWaiting, ""},
{StatusDone, "✓"},
{StatusError, "✗"},
}
Expand Down
2 changes: 1 addition & 1 deletion internal/plugins/worktree/view_kanban.go
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ func (p *Plugin) renderKanbanView(width, height int) string {
// Column headers and colors
columnTitles := map[WorktreeStatus]string{
StatusActive: "● Active",
StatusWaiting: "💬 Waiting",
StatusWaiting: " Waiting",
StatusDone: "✓ Ready",
StatusPaused: "⏸ Paused",
}
Expand Down
12 changes: 12 additions & 0 deletions internal/plugins/worktree/view_modals.go
Original file line number Diff line number Diff line change
Expand Up @@ -1241,6 +1241,9 @@ func (p *Plugin) renderMergeModal(width, height int) string {

if p.mergeState.ConfirmationFocus == i {
sb.WriteString(lipgloss.NewStyle().Foreground(lipgloss.Color("62")).Bold(true).Render("> " + line[2:]))
} else if p.mergeConfirmCheckboxHover == i+1 {
// Hover state (subtle highlight)
sb.WriteString(lipgloss.NewStyle().Foreground(lipgloss.Color("75")).Render(line))
} else {
sb.WriteString(line)
}
Expand All @@ -1266,6 +1269,9 @@ func (p *Plugin) renderMergeModal(width, height int) string {
pullLine := fmt.Sprintf(" %s %s", pullCheckbox, pullLabel)
if p.mergeState.ConfirmationFocus == 3 {
sb.WriteString(lipgloss.NewStyle().Foreground(lipgloss.Color("62")).Bold(true).Render("> " + pullLine[2:]))
} else if p.mergeConfirmCheckboxHover == 4 {
// Hover state (subtle highlight)
sb.WriteString(lipgloss.NewStyle().Foreground(lipgloss.Color("75")).Render(pullLine))
} else {
sb.WriteString(pullLine)
}
Expand All @@ -1286,9 +1292,15 @@ func (p *Plugin) renderMergeModal(width, height int) string {

if p.mergeState.ConfirmationFocus == 4 {
confirmStyle = confirmStyle.Bold(true).Background(lipgloss.Color("42"))
} else if p.mergeConfirmButtonHover == 1 {
// Hover state for Clean Up button
confirmStyle = confirmStyle.Background(lipgloss.Color("75"))
}
if p.mergeState.ConfirmationFocus == 5 {
skipStyle = skipStyle.Bold(true).Background(lipgloss.Color("214"))
} else if p.mergeConfirmButtonHover == 2 {
// Hover state for Skip All button
skipStyle = skipStyle.Background(lipgloss.Color("245"))
}

sb.WriteString(" ")
Expand Down
2 changes: 1 addition & 1 deletion website/docs/conversations-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ title: Conversations Plugin

Browse and search your Claude Code sessions with turn-based organization, message expansion, and session analytics—see what your agent has been doing.

![Conversations Plugin](/img/screenshots/sidecar-conversations.png)
![Conversations Plugin](../../docs/screenshots/sidecar-conversations.png)

## Overview

Expand Down
2 changes: 1 addition & 1 deletion website/docs/files-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ title: Files Plugin

Browse, preview, and manage your project files with syntax highlighting, markdown rendering, and fuzzy search—all in a two-pane terminal interface.

![Files Plugin](/img/screenshots/sidecar-file-browser.png)
![Files Plugin](../../docs/screenshots/sidecar-files.png)

## Overview

Expand Down
2 changes: 1 addition & 1 deletion website/docs/git-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ title: Git Plugin

A full-featured git interface for staging, diffing, committing, and managing branches—all without leaving your terminal. Watch your agent's changes in real-time with side-by-side diffs and inline previews.

![Git Status](/img/screenshots/sidecar-git.png)
![Git Status](../../docs/screenshots/sidecar-git.png)

## Overview

Expand Down
12 changes: 6 additions & 6 deletions website/docs/intro.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ title: Getting Started

A terminal dashboard for AI coding agents. Monitor git changes, browse conversations, track tasks, and manage worktrees—all without leaving your terminal.

![Sidecar Git Status](/img/screenshots/sidecar-git.png)
![Sidecar Git Status](../../docs/screenshots/sidecar-git.png)

## Quick Install

Expand Down Expand Up @@ -52,7 +52,7 @@ Sidecar uses a plugin architecture. Each plugin provides a focused view into you

Stage files, view diffs, browse commit history. A lightweight alternative to `git status` and `git diff`.

![Git Status with Diff](/img/screenshots/sidecar-git.png)
![Git Status with Diff](../../docs/screenshots/sidecar-git.png)

| Key | Action |
|-----|--------|
Expand All @@ -63,13 +63,13 @@ Stage files, view diffs, browse commit history. A lightweight alternative to `gi
| `c` | Commit staged changes |
| `h/l` | Switch sidebar/diff focus |

![Side-by-side Diff](/img/screenshots/sidecar-git-diff-side-by-side.png)
![Side-by-side Diff](../../docs/screenshots/sidecar-git-diff-side-by-side.png)

### Conversations

Browse AI agent session history with message content, token usage, and search.

![Conversations](/img/screenshots/sidecar-conversations.png)
![Conversations](../../docs/screenshots/sidecar-conversations.png)

Supported agents:
- Claude Code
Expand All @@ -89,7 +89,7 @@ Supported agents:

Integration with [TD](https://github.com/marcus/td), a task management system for AI agents working across context windows.

![TD Monitor](/img/screenshots/sidecar-td.png)
![TD Monitor](../../docs/screenshots/sidecar-td.png)

| Key | Action |
|-----|--------|
Expand All @@ -100,7 +100,7 @@ Integration with [TD](https://github.com/marcus/td), a task management system fo

Navigate project files with a collapsible tree and syntax-highlighted preview.

![File Browser](/img/screenshots/sidecar-file-browser.png)
![File Browser](../../docs/screenshots/sidecar-files.png)

| Key | Action |
|-----|--------|
Expand Down
2 changes: 1 addition & 1 deletion website/docs/td.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ title: TD - Task Management for AI Agents

A task management CLI designed specifically for AI-assisted development. When an agent's context window ends, its memory ends. TD captures the work state—what's done, what's remaining, key decisions, and uncertainties—so the next session picks up exactly where the previous one left off.

![TD Monitor in Sidecar](/img/screenshots/sidecar-td.png)
![TD Monitor in Sidecar](../../docs/screenshots/sidecar-td.png)

## The Problem

Expand Down
2 changes: 1 addition & 1 deletion website/docs/worktrees-plugin.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ title: Worktrees Plugin

Manage multiple git worktrees with agent integration, real-time output streaming, and a Kanban board view—run parallel agents across branches.

![Worktrees Plugin](/img/screenshots/sidecar-riders.png)
![Worktrees Plugin](../../docs/screenshots/sidecar-worktrees.png)

## Overview

Expand Down
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file removed website/static/img/screenshots/sidecar-git.png
Binary file not shown.
Binary file removed website/static/img/screenshots/sidecar-riders.png
Binary file not shown.
Binary file removed website/static/img/screenshots/sidecar-td.png
Binary file not shown.
Binary file removed website/static/img/screenshots/sidecar-td2.png
Binary file not shown.