Detailed changes
@@ -34,10 +34,10 @@ OpenCode is a Go-based CLI application that brings AI assistance to your termina
```bash
# Install the latest version
-curl -fsSL https://raw.githubusercontent.com/opencode-ai/opencode/refs/heads/main/install | bash
+curl -fsSL https://raw.githubusercontent.com/charmbracelet/crush/refs/heads/main/install | bash
# Install a specific version
-curl -fsSL https://raw.githubusercontent.com/opencode-ai/opencode/refs/heads/main/install | VERSION=0.1.0 bash
+curl -fsSL https://raw.githubusercontent.com/charmbracelet/crush/refs/heads/main/install | VERSION=0.1.0 bash
```
### Using Homebrew (macOS and Linux)
@@ -59,7 +59,7 @@ paru -S opencode-ai-bin
### Using Go
```bash
-go install github.com/opencode-ai/opencode@latest
+go install github.com/charmbracelet/crush@latest
```
## Configuration
@@ -613,7 +613,7 @@ You can also configure a self-hosted model in the configuration file under the `
```bash
# Clone the repository
-git clone https://github.com/opencode-ai/opencode.git
+git clone https://github.com/charmbracelet/crush.git
cd opencode
# Build
@@ -8,6 +8,11 @@ tasks:
cmds:
- golangci-lint run
+ lint-fix:
+ desc: Run base linters and fix issues
+ cmds:
+ - golangci-lint run --fix
+
test:
desc: Run tests
cmds:
@@ -8,15 +8,15 @@ import (
"time"
tea "github.com/charmbracelet/bubbletea/v2"
- "github.com/opencode-ai/opencode/internal/app"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/db"
- "github.com/opencode-ai/opencode/internal/format"
- "github.com/opencode-ai/opencode/internal/llm/agent"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/pubsub"
- "github.com/opencode-ai/opencode/internal/tui"
- "github.com/opencode-ai/opencode/internal/version"
+ "github.com/charmbracelet/crush/internal/app"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/db"
+ "github.com/charmbracelet/crush/internal/format"
+ "github.com/charmbracelet/crush/internal/llm/agent"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/pubsub"
+ "github.com/charmbracelet/crush/internal/tui"
+ "github.com/charmbracelet/crush/internal/version"
"github.com/spf13/cobra"
)
@@ -5,8 +5,8 @@ import (
"fmt"
"os"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/models"
)
// JSONSchemaType represents a JSON Schema type
@@ -1,4 +1,4 @@
-module github.com/opencode-ai/opencode
+module github.com/charmbracelet/crush
go 1.24.0
@@ -76,7 +76,6 @@ require (
github.com/charmbracelet/x/term v0.2.1 // indirect
github.com/charmbracelet/x/windows v0.2.1 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
- github.com/disintegration/imaging v1.6.2
github.com/dlclark/regexp2 v1.11.4 // indirect
github.com/felixge/httpsnoop v1.0.4 // indirect
github.com/go-logr/logr v1.4.2 // indirect
@@ -102,8 +102,6 @@ github.com/disintegration/gift v1.1.2 h1:9ZyHJr+kPamiH10FX3Pynt1AxFUob812bU9Wt4G
github.com/disintegration/gift v1.1.2/go.mod h1:Jh2i7f7Q2BM7Ezno3PhfezbR1xpUg9dUg3/RlKGr4HI=
github.com/disintegration/imageorient v0.0.0-20180920195336-8147d86e83ec h1:YrB6aVr9touOt75I9O1SiancmR2GMg45U9UYf0gtgWg=
github.com/disintegration/imageorient v0.0.0-20180920195336-8147d86e83ec/go.mod h1:K0KBFIr1gWu/C1Gp10nFAcAE4hsB7JxE6OgLijrJ8Sk=
-github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c=
-github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4=
github.com/dlclark/regexp2 v1.11.4 h1:rPYF9/LECdNymJufQKmri9gV604RvvABwgOA8un7yAo=
github.com/dlclark/regexp2 v1.11.4/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8=
github.com/dustin/go-humanize v1.0.1 h1:GzkhY7T5VNhEkwH0PVJgjz+fX1rhBrR7pRT3mDkpeCY=
@@ -282,7 +280,6 @@ golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394 h1:nDVHiLt8aIbd/VzvPWN6kSOPE7+F/fNFDSXLVYkE/Iw=
golang.org/x/exp v0.0.0-20250305212735-054e65f0b394/go.mod h1:sIifuuw/Yco/y6yb6+bDNfyeQ/MdPUy/hKEMYQV17cM=
-golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0=
golang.org/x/image v0.26.0 h1:4XjIFEZWQmCZi6Wv8BoxsDhRU3RVnLX04dToTDAEPlY=
golang.org/x/image v0.26.0/go.mod h1:lcxbMFAovzpnJxzXS3nyL83K27tmqtKzIJpctK8YO5c=
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
@@ -40,15 +40,15 @@ INSTALL_DIR=$HOME/.opencode/bin
mkdir -p "$INSTALL_DIR"
if [ -z "$requested_version" ]; then
- url="https://github.com/opencode-ai/opencode/releases/latest/download/$filename"
- specific_version=$(curl -s https://api.github.com/repos/opencode-ai/opencode/releases/latest | awk -F'"' '/"tag_name": "/ {gsub(/^v/, "", $4); print $4}')
+ url="https://github.com/charmbracelet/crush/releases/latest/download/$filename"
+ specific_version=$(curl -s https://api.github.com/repos/charmbracelet/crush/releases/latest | awk -F'"' '/"tag_name": "/ {gsub(/^v/, "", $4); print $4}')
if [[ $? -ne 0 ]]; then
echo "${RED}Failed to fetch version information${NC}"
exit 1
fi
else
- url="https://github.com/opencode-ai/opencode/releases/download/v${requested_version}/$filename"
+ url="https://github.com/charmbracelet/crush/releases/download/v${requested_version}/$filename"
specific_version=$requested_version
fi
@@ -9,16 +9,16 @@ import (
"sync"
"time"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/db"
- "github.com/opencode-ai/opencode/internal/format"
- "github.com/opencode-ai/opencode/internal/history"
- "github.com/opencode-ai/opencode/internal/llm/agent"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/lsp"
- "github.com/opencode-ai/opencode/internal/message"
- "github.com/opencode-ai/opencode/internal/permission"
- "github.com/opencode-ai/opencode/internal/session"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/db"
+ "github.com/charmbracelet/crush/internal/format"
+ "github.com/charmbracelet/crush/internal/history"
+ "github.com/charmbracelet/crush/internal/llm/agent"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/lsp"
+ "github.com/charmbracelet/crush/internal/message"
+ "github.com/charmbracelet/crush/internal/permission"
+ "github.com/charmbracelet/crush/internal/session"
)
type App struct {
@@ -4,10 +4,10 @@ import (
"context"
"time"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/lsp"
- "github.com/opencode-ai/opencode/internal/lsp/watcher"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/lsp"
+ "github.com/charmbracelet/crush/internal/lsp/watcher"
)
func (app *App) initLSPClients(ctx context.Context) {
@@ -9,8 +9,8 @@ import (
"path/filepath"
"strings"
- "github.com/opencode-ai/opencode/internal/llm/models"
- "github.com/opencode-ai/opencode/internal/logging"
+ "github.com/charmbracelet/crush/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/logging"
"github.com/spf13/viper"
)
@@ -9,8 +9,8 @@ import (
_ "github.com/ncruces/go-sqlite3/driver"
_ "github.com/ncruces/go-sqlite3/embed"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/logging"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/logging"
"github.com/pressly/goose/v3"
)
@@ -8,11 +8,11 @@ import (
"strings"
"github.com/aymanbagabas/go-udiff"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/highlight"
+ "github.com/charmbracelet/crush/internal/tui/styles"
"github.com/charmbracelet/lipgloss/v2"
"github.com/charmbracelet/x/ansi"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/highlight"
- "github.com/opencode-ai/opencode/internal/tui/styles"
"github.com/sergi/go-diff/diffmatchpatch"
)
@@ -11,7 +11,7 @@ import (
"github.com/bmatcuk/doublestar/v4"
"github.com/charlievieth/fastwalk"
- "github.com/opencode-ai/opencode/internal/logging"
+ "github.com/charmbracelet/crush/internal/logging"
ignore "github.com/sabhiram/go-gitignore"
)
@@ -9,7 +9,7 @@ import (
"github.com/alecthomas/chroma/v2/formatters"
"github.com/alecthomas/chroma/v2/lexers"
chromaStyles "github.com/alecthomas/chroma/v2/styles"
- "github.com/opencode-ai/opencode/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/styles"
)
func SyntaxHighlight(source, fileName string, bg color.Color) (string, error) {
@@ -8,9 +8,9 @@ import (
"strings"
"time"
+ "github.com/charmbracelet/crush/internal/db"
+ "github.com/charmbracelet/crush/internal/pubsub"
"github.com/google/uuid"
- "github.com/opencode-ai/opencode/internal/db"
- "github.com/opencode-ai/opencode/internal/pubsub"
)
const (
@@ -5,11 +5,11 @@ import (
"encoding/json"
"fmt"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/lsp"
- "github.com/opencode-ai/opencode/internal/message"
- "github.com/opencode-ai/opencode/internal/session"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/lsp"
+ "github.com/charmbracelet/crush/internal/message"
+ "github.com/charmbracelet/crush/internal/session"
)
type agentTool struct {
@@ -8,16 +8,16 @@ import (
"sync"
"time"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/models"
- "github.com/opencode-ai/opencode/internal/llm/prompt"
- "github.com/opencode-ai/opencode/internal/llm/provider"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/message"
- "github.com/opencode-ai/opencode/internal/permission"
- "github.com/opencode-ai/opencode/internal/pubsub"
- "github.com/opencode-ai/opencode/internal/session"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/llm/prompt"
+ "github.com/charmbracelet/crush/internal/llm/provider"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/message"
+ "github.com/charmbracelet/crush/internal/permission"
+ "github.com/charmbracelet/crush/internal/pubsub"
+ "github.com/charmbracelet/crush/internal/session"
)
// Common errors
@@ -5,11 +5,11 @@ import (
"encoding/json"
"fmt"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/permission"
- "github.com/opencode-ai/opencode/internal/version"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/permission"
+ "github.com/charmbracelet/crush/internal/version"
"github.com/mark3labs/mcp-go/client"
"github.com/mark3labs/mcp-go/mcp"
@@ -3,12 +3,12 @@ package agent
import (
"context"
- "github.com/opencode-ai/opencode/internal/history"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/lsp"
- "github.com/opencode-ai/opencode/internal/message"
- "github.com/opencode-ai/opencode/internal/permission"
- "github.com/opencode-ai/opencode/internal/session"
+ "github.com/charmbracelet/crush/internal/history"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/lsp"
+ "github.com/charmbracelet/crush/internal/message"
+ "github.com/charmbracelet/crush/internal/permission"
+ "github.com/charmbracelet/crush/internal/session"
)
func CoderAgentTools(
@@ -11,7 +11,7 @@ import (
"strings"
"unicode"
- "github.com/opencode-ai/opencode/internal/logging"
+ "github.com/charmbracelet/crush/internal/logging"
"github.com/spf13/viper"
)
@@ -8,9 +8,9 @@ import (
"runtime"
"time"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/models"
- "github.com/opencode-ai/opencode/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/llm/tools"
)
func CoderPrompt(provider models.ModelProvider) string {
@@ -7,9 +7,9 @@ import (
"strings"
"sync"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/models"
- "github.com/opencode-ai/opencode/internal/logging"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/logging"
)
func GetAgentPrompt(agentName config.AgentName, provider models.ModelProvider) string {
@@ -6,7 +6,7 @@ import (
"path/filepath"
"testing"
- "github.com/opencode-ai/opencode/internal/config"
+ "github.com/charmbracelet/crush/internal/config"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
@@ -1,6 +1,6 @@
package prompt
-import "github.com/opencode-ai/opencode/internal/llm/models"
+import "github.com/charmbracelet/crush/internal/llm/models"
func SummarizerPrompt(_ models.ModelProvider) string {
return `You are a helpful AI assistant tasked with summarizing conversations.
@@ -3,7 +3,7 @@ package prompt
import (
"fmt"
- "github.com/opencode-ai/opencode/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/llm/models"
)
func TaskPrompt(_ models.ModelProvider) string {
@@ -1,6 +1,6 @@
package prompt
-import "github.com/opencode-ai/opencode/internal/llm/models"
+import "github.com/charmbracelet/crush/internal/llm/models"
func TitlePrompt(_ models.ModelProvider) string {
return `you will generate a short title based on the first message a user begins a conversation with
@@ -12,11 +12,11 @@ import (
"github.com/anthropics/anthropic-sdk-go"
"github.com/anthropics/anthropic-sdk-go/bedrock"
"github.com/anthropics/anthropic-sdk-go/option"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/models"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/message"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/message"
)
type anthropicOptions struct {
@@ -7,8 +7,8 @@ import (
"os"
"strings"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/message"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/message"
)
type bedrockOptions struct {
@@ -9,11 +9,11 @@ import (
"strings"
"time"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/message"
"github.com/google/uuid"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/message"
"google.golang.org/genai"
)
@@ -8,14 +8,14 @@ import (
"io"
"time"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/message"
"github.com/openai/openai-go"
"github.com/openai/openai-go/option"
"github.com/openai/openai-go/shared"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/models"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/message"
)
type openaiOptions struct {
@@ -5,9 +5,9 @@ import (
"fmt"
"os"
- "github.com/opencode-ai/opencode/internal/llm/models"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/message"
+ "github.com/charmbracelet/crush/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/message"
)
type EventType string
@@ -4,7 +4,7 @@ import (
"context"
"os"
- "github.com/opencode-ai/opencode/internal/logging"
+ "github.com/charmbracelet/crush/internal/logging"
"google.golang.org/genai"
)
@@ -7,9 +7,9 @@ import (
"strings"
"time"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/tools/shell"
- "github.com/opencode-ai/opencode/internal/permission"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/tools/shell"
+ "github.com/charmbracelet/crush/internal/permission"
)
type BashParams struct {
@@ -9,8 +9,8 @@ import (
"strings"
"time"
- "github.com/opencode-ai/opencode/internal/lsp"
- "github.com/opencode-ai/opencode/internal/lsp/protocol"
+ "github.com/charmbracelet/crush/internal/lsp"
+ "github.com/charmbracelet/crush/internal/lsp/protocol"
)
type DiagnosticsParams struct {
@@ -9,12 +9,12 @@ import (
"strings"
"time"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/diff"
- "github.com/opencode-ai/opencode/internal/history"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/lsp"
- "github.com/opencode-ai/opencode/internal/permission"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/diff"
+ "github.com/charmbracelet/crush/internal/history"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/lsp"
+ "github.com/charmbracelet/crush/internal/permission"
)
type EditParams struct {
@@ -11,8 +11,8 @@ import (
md "github.com/JohannesKaufmann/html-to-markdown"
"github.com/PuerkitoBio/goquery"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/permission"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/permission"
)
type FetchParams struct {
@@ -10,9 +10,9 @@ import (
"sort"
"strings"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/fileutil"
- "github.com/opencode-ai/opencode/internal/logging"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/fileutil"
+ "github.com/charmbracelet/crush/internal/logging"
)
const (
@@ -14,8 +14,8 @@ import (
"strings"
"time"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/fileutil"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/fileutil"
)
type GrepParams struct {
@@ -8,8 +8,8 @@ import (
"path/filepath"
"strings"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/fileutil"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/fileutil"
)
type LSParams struct {
@@ -8,12 +8,12 @@ import (
"path/filepath"
"time"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/diff"
- "github.com/opencode-ai/opencode/internal/history"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/lsp"
- "github.com/opencode-ai/opencode/internal/permission"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/diff"
+ "github.com/charmbracelet/crush/internal/history"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/lsp"
+ "github.com/charmbracelet/crush/internal/permission"
)
type PatchParams struct {
@@ -12,7 +12,7 @@ import (
"syscall"
"time"
- "github.com/opencode-ai/opencode/internal/config"
+ "github.com/charmbracelet/crush/internal/config"
)
type PersistentShell struct {
@@ -10,8 +10,8 @@ import (
"path/filepath"
"strings"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/lsp"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/lsp"
)
type ViewParams struct {
@@ -9,12 +9,12 @@ import (
"strings"
"time"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/diff"
- "github.com/opencode-ai/opencode/internal/history"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/lsp"
- "github.com/opencode-ai/opencode/internal/permission"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/diff"
+ "github.com/charmbracelet/crush/internal/history"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/lsp"
+ "github.com/charmbracelet/crush/internal/permission"
)
type WriteParams struct {
@@ -8,8 +8,8 @@ import (
"sync"
"time"
+ "github.com/charmbracelet/crush/internal/pubsub"
"github.com/go-logfmt/logfmt"
- "github.com/opencode-ai/opencode/internal/pubsub"
)
const (
@@ -14,9 +14,9 @@ import (
"sync/atomic"
"time"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/lsp/protocol"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/lsp/protocol"
)
type Client struct {
@@ -3,10 +3,10 @@ package lsp
import (
"encoding/json"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/lsp/protocol"
- "github.com/opencode-ai/opencode/internal/lsp/util"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/lsp/protocol"
+ "github.com/charmbracelet/crush/internal/lsp/util"
)
// Requests
@@ -4,7 +4,7 @@ import (
"path/filepath"
"strings"
- "github.com/opencode-ai/opencode/internal/lsp/protocol"
+ "github.com/charmbracelet/crush/internal/lsp/protocol"
)
func DetectLanguageID(uri string) protocol.LanguageKind {
@@ -4,7 +4,7 @@ package lsp
import (
"context"
- "github.com/opencode-ai/opencode/internal/lsp/protocol"
+ "github.com/charmbracelet/crush/internal/lsp/protocol"
)
// Implementation sends a textDocument/implementation request to the LSP server.
@@ -8,8 +8,8 @@ import (
"io"
"strings"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/logging"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/logging"
)
// Write writes an LSP message to the given writer
@@ -7,7 +7,7 @@ import (
"sort"
"strings"
- "github.com/opencode-ai/opencode/internal/lsp/protocol"
+ "github.com/charmbracelet/crush/internal/lsp/protocol"
)
func applyTextEdits(uri protocol.DocumentUri, edits []protocol.TextEdit) error {
@@ -10,11 +10,11 @@ import (
"time"
"github.com/bmatcuk/doublestar/v4"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/lsp"
+ "github.com/charmbracelet/crush/internal/lsp/protocol"
"github.com/fsnotify/fsnotify"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/lsp"
- "github.com/opencode-ai/opencode/internal/lsp/protocol"
)
// WorkspaceWatcher manages LSP file watching
@@ -5,7 +5,7 @@ import (
"slices"
"time"
- "github.com/opencode-ai/opencode/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/llm/models"
)
type MessageRole string
@@ -7,10 +7,10 @@ import (
"fmt"
"time"
+ "github.com/charmbracelet/crush/internal/db"
+ "github.com/charmbracelet/crush/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/pubsub"
"github.com/google/uuid"
- "github.com/opencode-ai/opencode/internal/db"
- "github.com/opencode-ai/opencode/internal/llm/models"
- "github.com/opencode-ai/opencode/internal/pubsub"
)
type CreateMessageParams struct {
@@ -6,9 +6,9 @@ import (
"slices"
"sync"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/pubsub"
"github.com/google/uuid"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/pubsub"
)
var ErrorPermissionDenied = errors.New("permission denied")
@@ -4,9 +4,9 @@ import (
"context"
"database/sql"
+ "github.com/charmbracelet/crush/internal/db"
+ "github.com/charmbracelet/crush/internal/pubsub"
"github.com/google/uuid"
- "github.com/opencode-ai/opencode/internal/db"
- "github.com/opencode-ai/opencode/internal/pubsub"
)
type Session struct {
@@ -9,11 +9,11 @@ import (
"github.com/charmbracelet/bubbles/v2/spinner"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
"github.com/google/uuid"
"github.com/lucasb-eyer/go-colorful"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
const (
@@ -5,16 +5,16 @@ import (
"time"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/app"
+ "github.com/charmbracelet/crush/internal/llm/agent"
+ "github.com/charmbracelet/crush/internal/message"
+ "github.com/charmbracelet/crush/internal/pubsub"
+ "github.com/charmbracelet/crush/internal/session"
+ "github.com/charmbracelet/crush/internal/tui/components/chat/messages"
+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/app"
- "github.com/opencode-ai/opencode/internal/llm/agent"
- "github.com/opencode-ai/opencode/internal/message"
- "github.com/opencode-ai/opencode/internal/pubsub"
- "github.com/opencode-ai/opencode/internal/session"
- "github.com/opencode-ai/opencode/internal/tui/components/chat/messages"
- "github.com/opencode-ai/opencode/internal/tui/components/core/list"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
type SendMsg struct {
@@ -11,17 +11,17 @@ import (
"github.com/charmbracelet/bubbles/v2/key"
"github.com/charmbracelet/bubbles/v2/textarea"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/app"
+ "github.com/charmbracelet/crush/internal/fileutil"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/message"
+ "github.com/charmbracelet/crush/internal/session"
+ "github.com/charmbracelet/crush/internal/tui/components/chat"
+ "github.com/charmbracelet/crush/internal/tui/components/completions"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/app"
- "github.com/opencode-ai/opencode/internal/fileutil"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/message"
- "github.com/opencode-ai/opencode/internal/session"
- "github.com/opencode-ai/opencode/internal/tui/components/chat"
- "github.com/opencode-ai/opencode/internal/tui/components/completions"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
type FileCompletionItem struct {
@@ -2,7 +2,7 @@ package editor
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
type EditorKeyMap struct {
@@ -8,15 +8,15 @@ import (
"github.com/charmbracelet/bubbles/v2/spinner"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/llm/models"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/llm/models"
-
- "github.com/opencode-ai/opencode/internal/message"
- "github.com/opencode-ai/opencode/internal/tui/components/anim"
- "github.com/opencode-ai/opencode/internal/tui/components/core"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
+
+ "github.com/charmbracelet/crush/internal/message"
+ "github.com/charmbracelet/crush/internal/tui/components/anim"
+ "github.com/charmbracelet/crush/internal/tui/components/core"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
)
// MessageCmp defines the interface for message components in the chat interface.
@@ -7,15 +7,15 @@ import (
"strings"
"time"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/diff"
+ "github.com/charmbracelet/crush/internal/highlight"
+ "github.com/charmbracelet/crush/internal/llm/agent"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/tui/styles"
"github.com/charmbracelet/lipgloss/v2"
"github.com/charmbracelet/lipgloss/v2/tree"
"github.com/charmbracelet/x/ansi"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/diff"
- "github.com/opencode-ai/opencode/internal/highlight"
- "github.com/opencode-ai/opencode/internal/llm/agent"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/tui/styles"
)
// responseContextHeight limits the number of lines displayed in tool output
@@ -5,13 +5,13 @@ import (
"github.com/charmbracelet/bubbles/v2/spinner"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/message"
+ "github.com/charmbracelet/crush/internal/tui/components/anim"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
"github.com/charmbracelet/x/ansi"
- "github.com/opencode-ai/opencode/internal/message"
- "github.com/opencode-ai/opencode/internal/tui/components/anim"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
// ToolCallCmp defines the interface for tool call components in the chat interface.
@@ -5,17 +5,17 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/pubsub"
+ "github.com/charmbracelet/crush/internal/session"
+ "github.com/charmbracelet/crush/internal/tui/components/chat"
+ "github.com/charmbracelet/crush/internal/tui/components/core"
+ "github.com/charmbracelet/crush/internal/tui/components/logo"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
+ "github.com/charmbracelet/crush/internal/version"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/pubsub"
- "github.com/opencode-ai/opencode/internal/session"
- "github.com/opencode-ai/opencode/internal/tui/components/chat"
- "github.com/opencode-ai/opencode/internal/tui/components/core"
- "github.com/opencode-ai/opencode/internal/tui/components/logo"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
- "github.com/opencode-ai/opencode/internal/version"
)
const (
@@ -3,10 +3,10 @@ package completions
import (
"github.com/charmbracelet/bubbles/v2/key"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/components/core/list"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
type Completion struct {
@@ -4,12 +4,12 @@ import (
"image/color"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
"github.com/charmbracelet/x/ansi"
- "github.com/opencode-ai/opencode/internal/tui/components/core/list"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
"github.com/rivo/uniseg"
)
@@ -2,7 +2,7 @@ package completions
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
type KeyMap struct {
@@ -4,9 +4,9 @@ import (
"image/color"
"strings"
+ "github.com/charmbracelet/crush/internal/tui/styles"
"github.com/charmbracelet/lipgloss/v2"
"github.com/charmbracelet/x/ansi"
- "github.com/opencode-ai/opencode/internal/tui/styles"
)
func Section(text string, width int) string {
@@ -2,7 +2,7 @@ package list
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
type KeyMap struct {
@@ -10,11 +10,11 @@ import (
"github.com/charmbracelet/bubbles/v2/spinner"
"github.com/charmbracelet/bubbles/v2/textinput"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/components/anim"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/components/anim"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
"github.com/sahilm/fuzzy"
)
@@ -2,7 +2,7 @@ package status
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
type KeyMap struct {
@@ -5,11 +5,11 @@ import (
"github.com/charmbracelet/bubbles/v2/help"
tea "github.com/charmbracelet/bubbletea/v2"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/pubsub"
- "github.com/opencode-ai/opencode/internal/session"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/pubsub"
+ "github.com/charmbracelet/crush/internal/session"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
)
type StatusCmp interface {
@@ -5,8 +5,8 @@ import (
tea "github.com/charmbracelet/bubbletea/v2"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
)
// InitDialogCmp is a component that asks the user if they want to initialize the project.
@@ -7,13 +7,13 @@ import (
"github.com/charmbracelet/bubbles/v2/key"
"github.com/charmbracelet/bubbles/v2/viewport"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/diff"
+ "github.com/charmbracelet/crush/internal/llm/tools"
+ "github.com/charmbracelet/crush/internal/permission"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/diff"
- "github.com/opencode-ai/opencode/internal/llm/tools"
- "github.com/opencode-ai/opencode/internal/permission"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
type PermissionAction string
@@ -8,10 +8,10 @@ import (
"github.com/charmbracelet/bubbles/v2/key"
"github.com/charmbracelet/bubbles/v2/textinput"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
const (
@@ -6,13 +6,13 @@ import (
tea "github.com/charmbracelet/bubbletea/v2"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/components/chat"
- "github.com/opencode-ai/opencode/internal/tui/components/completions"
- "github.com/opencode-ai/opencode/internal/tui/components/core"
- "github.com/opencode-ai/opencode/internal/tui/components/core/list"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
+ "github.com/charmbracelet/crush/internal/tui/components/chat"
+ "github.com/charmbracelet/crush/internal/tui/components/completions"
+ "github.com/charmbracelet/crush/internal/tui/components/core"
+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
)
const (
@@ -2,12 +2,12 @@ package commands
import (
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/components/core"
+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/x/ansi"
- "github.com/opencode-ai/opencode/internal/tui/components/core"
- "github.com/opencode-ai/opencode/internal/tui/components/core/list"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
type ItemSection interface {
@@ -2,7 +2,7 @@ package commands
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
type CommandsDialogKeyMap struct {
@@ -9,8 +9,8 @@ import (
"strings"
tea "github.com/charmbracelet/bubbletea/v2"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/tui/util"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/tui/util"
)
const (
@@ -4,8 +4,8 @@ import (
"slices"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
type DialogID string
@@ -8,12 +8,12 @@ import (
"github.com/charmbracelet/bubbles/v2/help"
"github.com/charmbracelet/bubbles/v2/key"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/components/core"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
+ "github.com/charmbracelet/crush/internal/tui/components/image"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/components/core"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
- "github.com/opencode-ai/opencode/internal/tui/components/image"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
const (
@@ -2,7 +2,7 @@ package filepicker
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
// KeyMap defines keyboard bindings for dialog management.
@@ -2,7 +2,7 @@ package dialogs
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
// KeyMap defines keyboard bindings for dialog management.
@@ -2,7 +2,7 @@ package models
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
type KeyMap struct {
@@ -6,16 +6,16 @@ import (
"github.com/charmbracelet/bubbles/v2/help"
"github.com/charmbracelet/bubbles/v2/key"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/config"
+ "github.com/charmbracelet/crush/internal/llm/models"
+ "github.com/charmbracelet/crush/internal/tui/components/completions"
+ "github.com/charmbracelet/crush/internal/tui/components/core"
+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/commands"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/config"
- "github.com/opencode-ai/opencode/internal/llm/models"
- "github.com/opencode-ai/opencode/internal/tui/components/completions"
- "github.com/opencode-ai/opencode/internal/tui/components/core"
- "github.com/opencode-ai/opencode/internal/tui/components/core/list"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs/commands"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
const (
@@ -2,7 +2,7 @@ package quit
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
// KeyMap defines the keyboard bindings for the quit dialog.
@@ -3,11 +3,11 @@ package quit
import (
"github.com/charmbracelet/bubbles/v2/key"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
const (
@@ -2,7 +2,7 @@ package sessions
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
type KeyMap struct {
@@ -4,15 +4,15 @@ import (
"github.com/charmbracelet/bubbles/v2/help"
"github.com/charmbracelet/bubbles/v2/key"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/session"
+ "github.com/charmbracelet/crush/internal/tui/components/chat"
+ "github.com/charmbracelet/crush/internal/tui/components/completions"
+ "github.com/charmbracelet/crush/internal/tui/components/core"
+ "github.com/charmbracelet/crush/internal/tui/components/core/list"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/session"
- "github.com/opencode-ai/opencode/internal/tui/components/chat"
- "github.com/opencode-ai/opencode/internal/tui/components/completions"
- "github.com/opencode-ai/opencode/internal/tui/components/core"
- "github.com/opencode-ai/opencode/internal/tui/components/core/list"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
const SessionsDialogID dialogs.DialogID = "sessions"
@@ -3,6 +3,7 @@
package image
import (
+ "context"
"image"
"image/png"
"io"
@@ -28,8 +29,8 @@ func loadURL(url string) tea.Cmd {
var err error
if strings.HasPrefix(url, "http") {
- var resp *http.Response
- resp, err = http.Get(url)
+ var resp *http.Request
+ resp, err = http.NewRequestWithContext(context.Background(), http.MethodGet, url, nil)
r = resp.Body
} else {
r, err = os.Open(url)
@@ -7,10 +7,10 @@ import (
"strings"
"github.com/MakeNowJust/heredoc"
+ "github.com/charmbracelet/crush/internal/tui/styles"
"github.com/charmbracelet/lipgloss/v2"
"github.com/charmbracelet/x/ansi"
"github.com/charmbracelet/x/exp/slice"
- "github.com/opencode-ai/opencode/internal/tui/styles"
)
// letterform represents a letterform. It can be stretched horizontally by
@@ -8,11 +8,11 @@ import (
"github.com/charmbracelet/bubbles/v2/key"
"github.com/charmbracelet/bubbles/v2/viewport"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
type DetailComponent interface {
@@ -7,11 +7,11 @@ import (
"github.com/charmbracelet/bubbles/v2/key"
"github.com/charmbracelet/bubbles/v2/table"
tea "github.com/charmbracelet/bubbletea/v2"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/pubsub"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/pubsub"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
)
type TableComponent interface {
@@ -2,7 +2,7 @@ package tui
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
type KeyMap struct {
@@ -3,9 +3,9 @@ package layout
import (
"github.com/charmbracelet/bubbles/v2/key"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
type Container interface {
@@ -3,9 +3,9 @@ package layout
import (
"github.com/charmbracelet/bubbles/v2/key"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
type LayoutPanel string
@@ -5,17 +5,17 @@ import (
"github.com/charmbracelet/bubbles/v2/key"
tea "github.com/charmbracelet/bubbletea/v2"
- "github.com/opencode-ai/opencode/internal/app"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/message"
- "github.com/opencode-ai/opencode/internal/session"
- "github.com/opencode-ai/opencode/internal/tui/components/chat"
- "github.com/opencode-ai/opencode/internal/tui/components/chat/editor"
- "github.com/opencode-ai/opencode/internal/tui/components/chat/sidebar"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs/commands"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/page"
- "github.com/opencode-ai/opencode/internal/tui/util"
+ "github.com/charmbracelet/crush/internal/app"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/message"
+ "github.com/charmbracelet/crush/internal/session"
+ "github.com/charmbracelet/crush/internal/tui/components/chat"
+ "github.com/charmbracelet/crush/internal/tui/components/chat/editor"
+ "github.com/charmbracelet/crush/internal/tui/components/chat/sidebar"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/commands"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/page"
+ "github.com/charmbracelet/crush/internal/tui/util"
)
var ChatPage page.PageID = "chat"
@@ -2,7 +2,7 @@ package chat
import (
"github.com/charmbracelet/bubbles/v2/key"
- "github.com/opencode-ai/opencode/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/layout"
)
type KeyMap struct {
@@ -3,11 +3,11 @@ package page
import (
"github.com/charmbracelet/bubbles/v2/key"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/tui/components/logs"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/tui/components/logs"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
var LogsPage PageID = "logs"
@@ -5,24 +5,24 @@ import (
"github.com/charmbracelet/bubbles/v2/key"
tea "github.com/charmbracelet/bubbletea/v2"
+ "github.com/charmbracelet/crush/internal/app"
+ "github.com/charmbracelet/crush/internal/logging"
+ "github.com/charmbracelet/crush/internal/pubsub"
+ cmpChat "github.com/charmbracelet/crush/internal/tui/components/chat"
+ "github.com/charmbracelet/crush/internal/tui/components/completions"
+ "github.com/charmbracelet/crush/internal/tui/components/core/status"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/commands"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/filepicker"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/models"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/quit"
+ "github.com/charmbracelet/crush/internal/tui/components/dialogs/sessions"
+ "github.com/charmbracelet/crush/internal/tui/layout"
+ "github.com/charmbracelet/crush/internal/tui/page"
+ "github.com/charmbracelet/crush/internal/tui/page/chat"
+ "github.com/charmbracelet/crush/internal/tui/styles"
+ "github.com/charmbracelet/crush/internal/tui/util"
"github.com/charmbracelet/lipgloss/v2"
- "github.com/opencode-ai/opencode/internal/app"
- "github.com/opencode-ai/opencode/internal/logging"
- "github.com/opencode-ai/opencode/internal/pubsub"
- cmpChat "github.com/opencode-ai/opencode/internal/tui/components/chat"
- "github.com/opencode-ai/opencode/internal/tui/components/completions"
- "github.com/opencode-ai/opencode/internal/tui/components/core/status"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs/commands"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs/filepicker"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs/models"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs/quit"
- "github.com/opencode-ai/opencode/internal/tui/components/dialogs/sessions"
- "github.com/opencode-ai/opencode/internal/tui/layout"
- "github.com/opencode-ai/opencode/internal/tui/page"
- "github.com/opencode-ai/opencode/internal/tui/page/chat"
- "github.com/opencode-ai/opencode/internal/tui/styles"
- "github.com/opencode-ai/opencode/internal/tui/util"
)
// appModel represents the main application model that manages pages, dialogs, and UI state.
@@ -5,7 +5,7 @@ import "runtime/debug"
// Build-time parameters set via -ldflags
var Version = "unknown"
-// A user may install pug using `go install github.com/opencode-ai/opencode@latest`.
+// A user may install pug using `go install github.com/charmbracelet/crush@latest`.
// without -ldflags, in which case the version above is unset. As a workaround
// we use the embedded build version that *is* set when using `go install` (and
// is only set for `go install` and not for `go build`).
@@ -6,8 +6,8 @@ import (
_ "net/http/pprof" // profiling
- "github.com/opencode-ai/opencode/cmd"
- "github.com/opencode-ai/opencode/internal/logging"
+ "github.com/charmbracelet/crush/cmd"
+ "github.com/charmbracelet/crush/internal/logging"
)
func main() {