Skip to content

bob themes

List, hide, unhide, color, and rename Pomodoro themes

bob themes --help
List, hide, unhide, color, and rename Pomodoro themes

Bare `bob themes` runs the read-only list. hide, unhide, color, and rename append to the vault journal.

Usage: bob themes [COMMAND]

Commands:
  color   Pin or unpin a theme's hue
  hide    Hide themes from Recent suggestion rows
  list    List remembered Pomodoro themes (default)
  rename  Rename a Pomodoro theme everywhere in one commit
  unhide  Show hidden themes in Recent suggestion rows again

Options:
  -h, --help  Print help

Bare `bob themes` runs the read-only list.

Examples:
  bob themes                   Visible themes from the last 90 days
  bob themes -q fix -f json    Rank FIX before FIXES as JSON
  bob themes hide BOOKS        Hide BOOKS from Recent rows
  bob themes unhide BOOKS      Put BOOKS back in Recent rows
  bob themes color BLOG red    Pin BLOG to red
  bob themes color BLOG auto   Drop the BLOG pin
  bob themes rename FIXES FIX -d   Preview a global rename

See docs/pomodoro-themes.md for identity, cache, hue, journal, and JSON.
Run 'bob themes <command> --help' for more information on a command.

bob themes color

Pin or unpin a theme's hue

bob themes color --help
Pin a Pomodoro theme to a palette slot, or pass auto to drop the pin so the hue rule (exempt, area, then name hash) applies again.

The write appends one theme.color event to .bob/themes/<host>.jsonl under bob_sync.lock (wait at most 3s). A pin that already matches is a no-op.

Usage: bob themes color [OPTIONS] <NAME> <HUE>

Arguments:
  <NAME>
          Theme name as it appears in a Pomodoro tail

  <HUE>
          Palette slot to pin, or auto to unpin

Options:
  -b, --bob-dir <DIR>
          Bob vault root; defaults to BOB_DIR or ~/bob

  -f, --format <FORMAT>
          Output format: human or json

          [default: human]
          [possible values: human, json]

  -h, --help
          Show help

Examples:
  bob themes color BLOG red
  bob themes color BLOG auto
  bob themes color BLOG red -f json

Slots: blue, orange, aqua, yellow, magenta, green, violet, red.

Environment:
  BOB_CONFIG_FILE         Exact Bob config file; defaults to ~/.config/bob/config.yml
  BOB_DIR                   Bob vault root when --bob-dir is omitted
  BOB_NOW                   Local datetime override that pins the event timestamp
  HOSTNAME                  Host label for the journal file; same slug vault-sync uses
  BOB_VAULT_SYNC_LOCK_FILE  Maintenance lock; defaults to ${XDG_RUNTIME_DIR:-/tmp}/bob_sync.lock

Exit codes:
  0  wrote the color event
  1  unknown theme, invalid hue, unchanged, lock busy, or I/O failure
  2  usage error

See docs/pomodoro-themes.md for the hue rule and the journal contract.

bob themes hide

Hide themes from Recent suggestion rows

bob themes hide --help
Hide one or more Pomodoro themes from Recent suggestion rows only. Today's ledger, typing the name, history, Stats, and colors stay unchanged. Using a hidden name never unhides it.

Each hide appends one theme.hide event to .bob/themes/<host>.jsonl under bob_sync.lock (wait at most 3s). A theme that is already hidden is a no-op.

Usage: bob themes hide [OPTIONS] <NAME>...

Arguments:
  <NAME>...
          Theme name as it appears in a Pomodoro tail

Options:
  -b, --bob-dir <DIR>
          Bob vault root; defaults to BOB_DIR or ~/bob

  -f, --format <FORMAT>
          Output format: human or json

          [default: human]
          [possible values: human, json]

  -h, --help
          Show help

Examples:
  bob themes hide BOOKS
  bob themes hide FIXES BOOKS -f json
  bob themes hide BOOKS --via bob-mac-capture -f json

Environment:
  BOB_CONFIG_FILE         Exact Bob config file; defaults to ~/.config/bob/config.yml
  BOB_DIR                   Bob vault root when --bob-dir is omitted
  BOB_NOW                   Local datetime override that pins the event timestamp
  HOSTNAME                  Host label for the journal file; same slug vault-sync uses
  BOB_VAULT_SYNC_LOCK_FILE  Maintenance lock; defaults to ${XDG_RUNTIME_DIR:-/tmp}/bob_sync.lock

Exit codes:
  0  wrote the hide event
  1  unknown theme, unchanged, lock busy, or I/O failure
  2  usage error

See docs/pomodoro-themes.md for hide semantics and the journal contract.

bob themes list

List remembered Pomodoro themes (default)

bob themes list --help
List Pomodoro themes derived from canonical daily notes.

A theme is one + component of a Pomodoro name. The catalog is read-only: it never writes the vault. Bare `bob themes` runs this command.

By default the list shows visible themes used in the last 90 days or today, newest first. Hidden themes stay out of the default list; they still exist in history, Stats, and colors. Use --all to include every known theme, --hidden to show only hidden themes, --query to rank exact/prefix matches before substring matches, and --fresh to ignore the machine-local cache.

Usage: bob themes list [OPTIONS]

Options:
  -a, --all
          List every known theme, flagging hidden ones

  -b, --bob-dir <DIR>
          Bob vault root; defaults to BOB_DIR or ~/bob

  -f, --format <FORMAT>
          Output format: human or json

          [default: human]
          [possible values: human, json]

  -F, --fresh
          Rebuild the catalog from daily notes, ignoring the cache

  -h, --help
          Show help

  -H, --hidden
          List only hidden themes

  -n, --limit <N>
          Show at most N themes after filtering and ranking

  -q, --query <Q>
          Rank exact and prefix matches first, then substring matches

Examples:
  bob themes
  bob themes list
  bob themes -q fix -f json
  bob themes -a -F
  bob themes -H
  bob themes -n 10 -q bo

Environment:
  BOB_CONFIG_FILE         Exact Bob config file; defaults to ~/.config/bob/config.yml
  BOB_DIR                   Bob vault root when --bob-dir is omitted
  BOB_NOW                   Local datetime override that pins today
  NO_COLOR                  Disable colored output
  XDG_CACHE_HOME            Cache root; catalog lives in <cache>/bob-cli/themes/

Exit codes:
  0  list
  1  vault I/O failure
  2  usage or config error

See docs/pomodoro-themes.md for identity, cache, hue, JSON, and journal writers.

bob themes rename

Rename a Pomodoro theme everywhere in one commit

bob themes rename --help
Rename one Pomodoro theme across every canonical daily note (past, today, and future, open and closed) plus _templates/daily.md, in a single verified Git commit.

Only the theme component in ` — NAME` tails changes: separators keep their `+` spelling, a resulting duplicate collapses (`FIX + FIXES` → `FIX`), and every other byte is preserved. Prose, task text, and fenced examples are never touched.

The preview always rescans from source. The write takes bob_sync.lock, pre-syncs unless --offline, snapshots each target and compares again right before writing, writes atomically, appends one theme.rename journal event, verifies by rescanning, makes one commit, then post-syncs. Undo is `git revert`.

Usage: bob themes rename [OPTIONS] <OLD> <NEW>

Arguments:
  <OLD>
          Current theme name as it appears in a Pomodoro tail

  <NEW>
          New single theme name (must not contain +)

Options:
  -b, --bob-dir <DIR>
          Bob vault root; defaults to BOB_DIR or ~/bob

  -d, --dry-run
          Preview the rename without writing, committing, or syncing

  -f, --format <FORMAT>
          Output format: human or json

          [default: human]
          [possible values: human, json]

  -h, --help
          Show help

  -m, --merge
          Merge OLD into NEW when NEW is already used

  -o, --offline
          Commit locally; skip vault sync before and after

Examples:
  bob themes rename FIXES FIX -d
  bob themes rename FIXES FIX -d -f json
  bob themes rename OLD NEW --merge
  bob themes rename FIXES FIX -o

Environment:
  BOB_CONFIG_FILE         Exact Bob config file; defaults to ~/.config/bob/config.yml
  BOB_DIR                   Bob vault root when --bob-dir is omitted
  BOB_NOW                   Local datetime override that pins the event timestamp
  HOSTNAME                  Host label for the journal file; same slug vault-sync uses
  BOB_VAULT_SYNC_LOCK_FILE  Maintenance lock; defaults to ${XDG_RUNTIME_DIR:-/tmp}/bob_sync.lock

Exit codes:
  0  renamed (or dry-run planned)
  1  unknown theme, invalid name, unchanged, theme exists, config reference, lock busy, dirty paths, not a worktree, sync failed, verify failed, stale note, or I/O failure
  2  usage error

See docs/pomodoro-themes.md for the rename contract, refusal table, and revert runbook.

bob themes unhide

Show hidden themes in Recent suggestion rows again

bob themes unhide --help
Put hidden Pomodoro themes back in Recent suggestion rows.

Each unhide appends one theme.unhide event to .bob/themes/<host>.jsonl under bob_sync.lock (wait at most 3s). A theme that is not hidden is a no-op.

Usage: bob themes unhide [OPTIONS] <NAME>...

Arguments:
  <NAME>...
          Theme name as it appears in a Pomodoro tail

Options:
  -b, --bob-dir <DIR>
          Bob vault root; defaults to BOB_DIR or ~/bob

  -f, --format <FORMAT>
          Output format: human or json

          [default: human]
          [possible values: human, json]

  -h, --help
          Show help

Examples:
  bob themes unhide BOOKS
  bob themes unhide FIXES -f json

Environment:
  BOB_CONFIG_FILE         Exact Bob config file; defaults to ~/.config/bob/config.yml
  BOB_DIR                   Bob vault root when --bob-dir is omitted
  BOB_NOW                   Local datetime override that pins the event timestamp
  HOSTNAME                  Host label for the journal file; same slug vault-sync uses
  BOB_VAULT_SYNC_LOCK_FILE  Maintenance lock; defaults to ${XDG_RUNTIME_DIR:-/tmp}/bob_sync.lock

Exit codes:
  0  wrote the unhide event
  1  unknown theme, unchanged, lock busy, or I/O failure
  2  usage error

See docs/pomodoro-themes.md for hide semantics and the journal contract.
Tested rolling snapshot bob-cli 41afa14 bob-mac-capture 556bb67 bob-plugins af1e691 Built 2026-10-24T22:34:13Z (zensical) build.json