diff options
| author | Adam <[email protected]> | 2025-12-30 10:21:32 -0600 |
|---|---|---|
| committer | Adam <[email protected]> | 2025-12-30 10:21:37 -0600 |
| commit | e53192889cb9f7c2554d0229df9f5b2c87786e43 (patch) | |
| tree | 68d114ff80ff1a38447a851702ec20a065063b14 | |
| parent | 23bbfb3d1584d9dd98ccb5431d193894af91f138 (diff) | |
| download | opencode-e53192889cb9f7c2554d0229df9f5b2c87786e43.tar.gz opencode-e53192889cb9f7c2554d0229df9f5b2c87786e43.zip | |
fix(app): better text selection
| -rw-r--r-- | packages/app/src/components/prompt-input.tsx | 1 | ||||
| -rw-r--r-- | packages/app/src/components/terminal.tsx | 1 | ||||
| -rw-r--r-- | packages/app/src/pages/layout.tsx | 2 | ||||
| -rw-r--r-- | packages/app/src/pages/session.tsx | 6 | ||||
| -rw-r--r-- | packages/ui/src/components/message-part.css | 12 | ||||
| -rw-r--r-- | packages/ui/src/components/session-review.css | 4 | ||||
| -rw-r--r-- | packages/ui/src/components/session-turn.css | 5 |
7 files changed, 27 insertions, 4 deletions
diff --git a/packages/app/src/components/prompt-input.tsx b/packages/app/src/components/prompt-input.tsx index 91e463832..5f0b4bdc5 100644 --- a/packages/app/src/components/prompt-input.tsx +++ b/packages/app/src/components/prompt-input.tsx @@ -1321,6 +1321,7 @@ export const PromptInput: Component<PromptInputProps> = (props) => { onInput={handleInput} onKeyDown={handleKeyDown} classList={{ + "select-text": true, "w-full px-5 py-3 pr-12 text-14-regular text-text-strong focus:outline-none whitespace-pre-wrap": true, "[&_[data-type=file]]:text-icon-info-active": true, "font-mono!": store.mode === "shell", diff --git a/packages/app/src/components/terminal.tsx b/packages/app/src/components/terminal.tsx index 03251fe5f..b1bb36470 100644 --- a/packages/app/src/components/terminal.tsx +++ b/packages/app/src/components/terminal.tsx @@ -233,6 +233,7 @@ export const Terminal = (props: TerminalProps) => { style={{ "background-color": terminalColors().background }} classList={{ ...(local.classList ?? {}), + "select-text": true, "size-full px-6 py-3 font-mono": true, [local.class ?? ""]: !!local.class, }} diff --git a/packages/app/src/pages/layout.tsx b/packages/app/src/pages/layout.tsx index aea7be3aa..f9322201a 100644 --- a/packages/app/src/pages/layout.tsx +++ b/packages/app/src/pages/layout.tsx @@ -1015,7 +1015,7 @@ export default function Layout(props: ParentProps) { } return ( - <div class="relative flex-1 min-h-0 flex flex-col"> + <div class="relative flex-1 min-h-0 flex flex-col select-none [&_input]:select-text [&_textarea]:select-text [&_[contenteditable]]:select-text"> <Header navigateToProject={navigateToProject} navigateToSession={navigateToSession} diff --git a/packages/app/src/pages/session.tsx b/packages/app/src/pages/session.tsx index 4d25f86ab..6b9ff9e08 100644 --- a/packages/app/src/pages/session.tsx +++ b/packages/app/src/pages/session.tsx @@ -858,7 +858,7 @@ export default function Page() { </Tabs.List> </div> <Show when={diffs().length}> - <Tabs.Content value="review" class="select-text flex flex-col h-full overflow-hidden contain-strict"> + <Tabs.Content value="review" class="flex flex-col h-full overflow-hidden contain-strict"> <div class="relative pt-2 flex-1 min-h-0 overflow-hidden"> <SessionReview classes={{ @@ -884,7 +884,7 @@ export default function Page() { }, ) return ( - <Tabs.Content value={tab} class="select-text mt-3"> + <Tabs.Content value={tab} class="mt-3"> <Switch> <Match when={file()}> {(f) => ( @@ -896,7 +896,7 @@ export default function Page() { cacheKey: checksum(f().content?.content ?? ""), }} overflow="scroll" - class="pb-40" + class="select-text pb-40" /> )} </Match> diff --git a/packages/ui/src/components/message-part.css b/packages/ui/src/components/message-part.css index 4338940cb..c34a76e6d 100644 --- a/packages/ui/src/components/message-part.css +++ b/packages/ui/src/components/message-part.css @@ -377,6 +377,18 @@ } } +[data-component="user-message"] [data-slot="user-message-text"], +[data-component="text-part"], +[data-component="reasoning-part"], +[data-component="tool-error"], +[data-component="tool-output"], +[data-component="edit-content"], +[data-component="write-content"], +[data-component="todos"], +[data-component="diagnostics"] { + user-select: text; +} + [data-component="tool-part-wrapper"] { width: 100%; diff --git a/packages/ui/src/components/session-review.css b/packages/ui/src/components/session-review.css index 35df4a80f..15a0447b2 100644 --- a/packages/ui/src/components/session-review.css +++ b/packages/ui/src/components/session-review.css @@ -65,6 +65,10 @@ } } + [data-slot="accordion-content"] { + user-select: text; + } + [data-slot="session-review-trigger-content"] { display: flex; align-items: center; diff --git a/packages/ui/src/components/session-turn.css b/packages/ui/src/components/session-turn.css index 599116d28..a35219efa 100644 --- a/packages/ui/src/components/session-turn.css +++ b/packages/ui/src/components/session-turn.css @@ -116,6 +116,11 @@ color: var(--text-weak); } + [data-slot="session-turn-markdown"], + [data-slot="session-turn-accordion"] [data-slot="accordion-content"] { + user-select: text; + } + [data-slot="session-turn-markdown"] { &[data-diffs="true"] { font-size: 15px; |
