From dc890f399504b6158a8d6b70edc449b7cb646a8a Mon Sep 17 00:00:00 2001 From: Carlos Alexandro Becker Date: Fri, 6 Feb 2026 17:00:42 -0300 Subject: [PATCH] fix: build linux/386 (#2153) Signed-off-by: Carlos Alexandro Becker --- internal/ui/model/clipboard.go | 15 +++++++++++++++ internal/ui/model/clipboard_linux_386.go | 7 +++++++ internal/ui/model/clipboard_other.go | 15 +++++++++++++++ internal/ui/model/ui.go | 5 ++--- 4 files changed, 39 insertions(+), 3 deletions(-) create mode 100644 internal/ui/model/clipboard.go create mode 100644 internal/ui/model/clipboard_linux_386.go create mode 100644 internal/ui/model/clipboard_other.go diff --git a/internal/ui/model/clipboard.go b/internal/ui/model/clipboard.go new file mode 100644 index 0000000000000000000000000000000000000000..dfe42be5d76ee55330e5aa67e883cd75af892511 --- /dev/null +++ b/internal/ui/model/clipboard.go @@ -0,0 +1,15 @@ +package model + +import "errors" + +type clipboardFormat int + +const ( + clipboardFormatText clipboardFormat = iota + clipboardFormatImage +) + +var ( + errClipboardPlatformUnsupported = errors.New("clipboard operations are not supported on this platform") + errClipboardUnknownFormat = errors.New("unknown clipboard format") +) diff --git a/internal/ui/model/clipboard_linux_386.go b/internal/ui/model/clipboard_linux_386.go new file mode 100644 index 0000000000000000000000000000000000000000..a162d9cc2a3e0e412942a845308a5022d234608d --- /dev/null +++ b/internal/ui/model/clipboard_linux_386.go @@ -0,0 +1,7 @@ +//go:build linux && 386 + +package model + +func readClipboard(clipboardFormat) ([]byte, error) { + return nil, errClipboardPlatformUnsupported +} diff --git a/internal/ui/model/clipboard_other.go b/internal/ui/model/clipboard_other.go new file mode 100644 index 0000000000000000000000000000000000000000..e997530b269c7ff9b89cd268f8aeba0311e922cc --- /dev/null +++ b/internal/ui/model/clipboard_other.go @@ -0,0 +1,15 @@ +//go:build !linux || !386 + +package model + +import "github.com/aymanbagabas/go-nativeclipboard" + +func readClipboard(f clipboardFormat) ([]byte, error) { + switch f { + case clipboardFormatText: + return nativeclipboard.Text.Read() + case clipboardFormatImage: + return nativeclipboard.Image.Read() + } + return nil, errClipboardUnknownFormat +} diff --git a/internal/ui/model/ui.go b/internal/ui/model/ui.go index 71f5d977ba8715a553d6c5f162f458dcf9c1855c..60511aca1ab60c2d4fb2aaf084842078162fa6a3 100644 --- a/internal/ui/model/ui.go +++ b/internal/ui/model/ui.go @@ -24,7 +24,6 @@ import ( tea "charm.land/bubbletea/v2" "charm.land/catwalk/pkg/catwalk" "charm.land/lipgloss/v2" - nativeclipboard "github.com/aymanbagabas/go-nativeclipboard" "github.com/charmbracelet/crush/internal/agent/tools/mcp" "github.com/charmbracelet/crush/internal/app" "github.com/charmbracelet/crush/internal/commands" @@ -3086,7 +3085,7 @@ func (m *UI) handleFilePathPaste(path string) tea.Cmd { // creates an attachment. If no image data is found, it falls back to // interpreting clipboard text as a file path. func (m *UI) pasteImageFromClipboard() tea.Msg { - imageData, err := nativeclipboard.Image.Read() + imageData, err := readClipboard(clipboardFormatImage) if int64(len(imageData)) > common.MaxAttachmentSize { return util.InfoMsg{ Type: util.InfoTypeError, @@ -3103,7 +3102,7 @@ func (m *UI) pasteImageFromClipboard() tea.Msg { } } - textData, textErr := nativeclipboard.Text.Read() + textData, textErr := readClipboard(clipboardFormatText) if textErr != nil || len(textData) == 0 { return util.NewInfoMsg("Clipboard is empty or does not contain an image") }