Skip to content

soften goose2 text selection polish#9017

Open
morgmart wants to merge 1 commit intomainfrom
morganm/improve-text-selection-behavior
Open

soften goose2 text selection polish#9017
morgmart wants to merge 1 commit intomainfrom
morganm/improve-text-selection-behavior

Conversation

@morgmart
Copy link
Copy Markdown
Collaborator

@morgmart morgmart commented May 5, 2026

Category: improvement
User Impact: Text selection in goose2 now feels calmer and less visually jarring while preserving copyable chat and input text.
Problem: The global selection treatment used a strong brand fill with inverse text, which made selected text feel loud and heavy. App chrome could also be selected in places where selection is not useful, making accidental drag or right-click interactions feel messy.
Solution: Switch global selection to a low-opacity neutral tint that keeps the original text color, remove the input override that forced inverse selection colors, and make button/drag-region chrome non-selectable. Inputs, textareas, contenteditable content, and Streamdown-rendered chat content remain selectable.

File changes

ui/goose2/src/shared/styles/globals.css
Softens ::selection globally and scopes user-select so chrome is not selectable while text-entry and chat markdown surfaces remain selectable.

ui/goose2/src/shared/ui/input.tsx
Removes the input-specific primary/inverse selection classes so fields use the calmer global selection treatment.

  1. Select text in a chat response and confirm the highlight is subtle and the text color does not invert to white.
  2. Select text in an input and confirm it uses the same calmer treatment.
  3. Drag or right-click around app chrome/buttons and confirm accidental chrome text selection is reduced.
  4. Confirm intentional selection in chat content still works for copy workflows.

Focused verification

  • pnpm --dir ui/goose2 exec biome check src/shared/styles/globals.css src/shared/ui/input.tsx
  • git diff --check
  • rg -n "selection:bg-primary|selection:text-primary-foreground|::selection" ui/goose2/src ui/goose2 -g '*.css' -g '*.tsx' -g '*.ts'

Full goose2 pre-push/typecheck remains blocked by existing unrelated SDK definition mismatches on main such as missing GoosePreferencesRead, GooseDefaultsRead, and ProviderConfigChangeResponse exports.

Screenshots/Demos

Not captured in this pass.

Signed-off-by: morgmart <98432065+morgmart@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant