Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
1616c99
feat: tui.copy_on_select option
ariane-emory Nov 26, 2025
dde8123
Merge upstream/dev into feat/copy-on-select-setting
ariane-emory Nov 26, 2025
ca973fe
chore: format code
actions-user Nov 27, 2025
7b6d1f1
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 27, 2025
5d637d9
chore: format code
actions-user Nov 27, 2025
54ab1da
Merge branch 'dev' into feat/copy-on-select-setting
ariane-emory Nov 27, 2025
3b82012
tidy: minimize useless unnecessary changes.
ariane-emory Nov 27, 2025
fda245c
chore: format code
actions-user Nov 27, 2025
4c60872
tidy: minimize useless unnecessary changes.
ariane-emory Nov 27, 2025
57b4850
chore: format code
actions-user Nov 27, 2025
11ed02c
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 27, 2025
5bc3d84
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 27, 2025
c7bccb2
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 28, 2025
0fcce75
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 28, 2025
c27a33c
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 28, 2025
9fa97a2
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 29, 2025
7c720c4
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 29, 2025
cb55298
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 29, 2025
72b94f3
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 30, 2025
fcbd6b7
style: nit-picky fiddling with whitespace
ariane-emory Nov 30, 2025
4fc5568
style: nit-picky fiddling with whitespace
ariane-emory Nov 30, 2025
76a9464
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 30, 2025
923e6f8
Merge branch 'feat/copy-on-select-setting' of github.com:ariane-emory…
ariane-emory Nov 30, 2025
58fb3f0
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Nov 30, 2025
3f246e4
Merge branch 'feat/copy-on-select-setting' of github.com:ariane-emory…
ariane-emory Nov 30, 2025
223f406
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 1, 2025
b0744fc
chore: format code
actions-user Dec 1, 2025
8d4639f
Update Nix flake.lock and hashes
actions-user Dec 1, 2025
d047282
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 1, 2025
78fcb48
Merge upstream/dev into feat/copy-on-select-setting
ariane-emory Dec 1, 2025
17368aa
fix: remove incorrect DiffStyle additions from copy-on-select branch
ariane-emory Dec 2, 2025
3954365
fix: remove incorrect DiffStyle additions from Go config
ariane-emory Dec 2, 2025
153b20a
Merge branch 'feat/copy-on-select-setting' of github.com:ariane-emory…
ariane-emory Dec 2, 2025
a7bcceb
fix: restore diff_style functionality that was incorrectly removed
ariane-emory Dec 2, 2025
ba91436
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 2, 2025
e9795c6
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 2, 2025
cf47c0e
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 2, 2025
520140f
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 2, 2025
1a3ed13
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 3, 2025
44c190d
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 3, 2025
b7c32e1
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 3, 2025
0a09145
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 3, 2025
b5dbf73
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 4, 2025
dc8022d
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 4, 2025
fb98da1
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 4, 2025
3f99018
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 5, 2025
647cb4d
Merge branch 'dev' into feat/copy-on-select-setting
ariane-emory Dec 5, 2025
fb7a0c2
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 5, 2025
2da0b2f
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 6, 2025
bc1c09f
Merge remote-tracking branch 'upstream/dev' into feat/copy-on-select-…
ariane-emory Dec 6, 2025
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
21 changes: 12 additions & 9 deletions packages/opencode/src/cli/cmd/tui/app.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -476,15 +476,18 @@ function App() {
}
const text = renderer.getSelection()?.getSelectedText()
if (text && text.length > 0) {
const base64 = Buffer.from(text).toString("base64")
const osc52 = `\x1b]52;c;${base64}\x07`
const finalOsc52 = process.env["TMUX"] ? `\x1bPtmux;\x1b${osc52}\x1b\\` : osc52
/* @ts-expect-error */
renderer.writeOut(finalOsc52)
await Clipboard.copy(text)
.then(() => toast.show({ message: "Copied to clipboard", variant: "info" }))
.catch(toast.error)
renderer.clearSelection()
const copyOnSelect = sync.data.config.tui?.copy_on_select ?? true
if (copyOnSelect) {
const base64 = Buffer.from(text).toString("base64")
const osc52 = `\x1b]52;c;${base64}\x07`
const finalOsc52 = process.env["TMUX"] ? `\x1bPtmux;\x1b${osc52}\x1b\\` : osc52
/* @ts-expect-error */
renderer.writeOut(finalOsc52)
await Clipboard.copy(text)
.then(() => toast.show({ message: "Copied to clipboard", variant: "info" }))
.catch(toast.error)
renderer.clearSelection()
}
}
}}
>
Expand Down
5 changes: 5 additions & 0 deletions packages/opencode/src/config/config.ts
Original file line number Diff line number Diff line change
Expand Up @@ -466,6 +466,11 @@ export namespace Config {
})
.optional()
.describe("Scroll acceleration settings"),
copy_on_select: z
.boolean()
.optional()
.default(true)
.describe("Enable copying text to clipboard when selected with mouse"),
diff_style: z
.enum(["auto", "stacked"])
.optional()
Expand Down
13 changes: 8 additions & 5 deletions packages/sdk/go/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -1834,15 +1834,18 @@ func (r ConfigShare) IsKnown() bool {
// TUI specific settings
type ConfigTui struct {
// TUI scroll speed
ScrollSpeed float64 `json:"scroll_speed"`
JSON configTuiJSON `json:"-"`
ScrollSpeed float64 `json:"scroll_speed"`
// Enable copying text to clipboard when selected with mouse
CopyOnSelect bool `json:"copy_on_select"`
JSON configTuiJSON `json:"-"`
}

// configTuiJSON contains the JSON metadata for the struct [ConfigTui]
type configTuiJSON struct {
ScrollSpeed apijson.Field
raw string
ExtraFields map[string]apijson.Field
ScrollSpeed apijson.Field
CopyOnSelect apijson.Field
raw string
ExtraFields map[string]apijson.Field
}

func (r *ConfigTui) UnmarshalJSON(data []byte) (err error) {
Expand Down
4 changes: 4 additions & 0 deletions packages/sdk/js/src/gen/types.gen.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1160,6 +1160,10 @@ export type Config = {
*/
enabled: boolean
}
/**
* Enable copying text to clipboard when selected with mouse
*/
copy_on_select?: boolean
/**
* Control diff rendering style: 'auto' adapts to terminal width, 'stacked' always shows single column
*/
Expand Down
Loading