Settings

Open settings with , or the gear in the header. Changes apply immediately and are saved to ~/.bobby/settings.json, so they carry across PRs.

SettingOptionsDefault
StyleGitHub · Warm · SilverpointGitHub
ThemeSystem · Dark · LightSystem
Reading fontSans (Inter) · Hyperlegible (Atkinson) · Serif (Literata) · Mono (JetBrains Mono)Sans
Text size14 · 15 · 16 · 1815
Word spacingNormal · Wide · WiderNormal
MotionSystem · On · OffSystem
Key hintsFade when learned · Always · HiddenFade when learned
Diff layoutSplit · InlineSplit
Diff edgesAll, faint · Focused onlyAll, faint
Break reminderOff · 15m · 25m · 45mOff
Rabbit-hole nudgeOff · 8m · 12m · 20m12m
Drift promptOn · OffOn
CommentsOpen · Collapsed (also the speech bubble in the top bar)Open
Resolved threadsCollapsed · Hidden: GitHub threads resolved there, as a slim line or not shown at all (the Conversation view always shows them)Collapsed
Unchanged codeHidden · Shown (also the top bar's dashed-circle switch, Unchanged)Hidden
File treeShown · Hidden (also t, or the panel icon in the top bar)Shown
File tree sideRight · Left (also ⇄ in the tree's header)Right
Tests & generated filesHidden · Shown (also the top bar's flask and wand switches, Tests and Generated)Hidden

Style picks the colours. GitHub is the default. Warm is the alternative: warm neutrals with one amber signal colour. GitHub uses GitHub's colours and fonts: its accent blue as the signal, its diff greens and reds, blue hunk rows, its syntax colours, and the system UI and monospace fonts. Silverpoint, after the drawing technique, is fine grey lines on a toned ground: graphite and silver neutrals, one muted steel accent, and desaturated greens and reds for the diff. Each comes in dark and light.

Tests & generated files are skipped by default: test files (*.test.*, *.spec.*, __tests__/, tests/, fixtures, test_*.py, *_test.go, …) and generated files (__generated__/, *.generated.*, *_pb2.py, OpenAPI specs, or code carrying a generated-file marker such as @generated or "DO NOT EDIT"). Hidden, they leave every view, j/k and progress; the Tests (flask) and Generated (wand) switches in the top bar bring them back; a switch that's off is struck through, and pointing at one says what it does. Unchanged code works the same way and is also hidden by default; the Unchanged switch (a dashed circle) brings back the unchanged code the changes rely on and the untouched code they affect. Lockfiles, dist/ and the like are already set aside on the low-signal page.

Keyboard shortcuts (Keyboard shortcuts… in settings, or Customize keys on the ? sheet) are saved as keys in the same file: { "<action>": ["<key>", …] } for each action you changed, replacing its defaults. Actions and their defaults are in public/app/keys.js; keys are KeyboardEvent.key values ("j", "J", "Enter", " ", "ArrowLeft", "!" for shift 1). An empty list leaves an action with no key.

"System" follows your OS: light/dark preference for the theme, and the reduced-motion preference for motion. With motion off, every transition and animation is disabled.

Design choices

These aren't settings, but they're deliberate and worth knowing:

  • One signal colour. Amber means "you are here" or "needs you". Everything else is warm neutral, so nothing else competes for attention.
  • Shape, not hue, for changed vs untouched. Changed code is ● and solid; untouched code is ○ and dashed. The core is ◆.
  • Calm diffs. Muted line tints, word-level highlights, and no code ligatures.
  • Only the focus shows code at the Core level. Everything else stays a title and a why.

Edit this page on GitHub ↗