Conversation
ContentView references TerminalColorSchemeMode, terminalLightTheme, terminalDarkTheme, applyTheme, and applyColorScheme — all introduced in the PR #11 merge but never committed. This adds the missing pieces: AppSettings terminal properties, TerminalManager theme/color-scheme methods, TerminalSettingsView, and sidebar/settings wiring. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
There was a problem hiding this comment.
💡 Codex Review
Here are some automated review suggestions for this pull request.
Reviewed commit: c8ed6acee0
ℹ️ About Codex in GitHub
Your team has set up Codex to review pull requests in this repo. Reviews are triggered when you
- Open a pull request for review
- Mark a draft as ready
- Comment "@codex review".
If Codex has suggestions, it will comment; otherwise it will react with 👍.
Codex can also answer questions or update the PR. Try commenting "@codex address that feedback".
| guard let app = ghosttyApp else { | ||
| pendingColorScheme = scheme | ||
| return |
There was a problem hiding this comment.
Clear stale pending theme when queuing plain color scheme
When the terminal runtime has not been initialized yet, applyColorScheme only updates pendingColorScheme and leaves any previously queued pendingTheme intact. Because ensureInitialized prioritizes pendingTheme over pendingColorScheme, a user can pick a custom theme, switch back to default themes before opening Terminal, and still get the old custom theme applied on first launch. Clearing pendingTheme in this branch (or changing initialization precedence) would prevent applying outdated settings.
Useful? React with 👍 / 👎.
Adds `bugbook settings list|get|set` subcommands that read/write app-settings.json directly via JSONSerialization. Secrets are redacted on read and blocked on write. Type coercion matches existing value types (bool, number, string). Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
The icon was saved to disk (<!-- icon:VALUE -->) but never restored on startup. Workspace restore loaded pane layout without re-parsing file metadata. Added restoreWorkspaceDocumentsIfNeeded() to reload page content from disk after workspace restore, and replaceMarkdown() on BlockDocument so reloads preserve icon/cover metadata. Extracted shared helpers for loadPageContent and injectChildPageLinks. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
beginMarqueeBlockSelection() didn't clear focusedBlockId, so stale async attemptFocus retries could steal focus after marquee completed, triggering handleBecomeFirstResponder which cleared selectedBlockIds before delete could process them. Fixed by: clearing focusedBlockId on marquee start, adding staleness guard to attemptFocus retries, and removing redundant focusedBlockId check from editor delete handler. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Frees Cmd+B for bold text formatting in the editor. Updated the keyboard shortcut in BugbookApp and the shortcuts settings label. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
DatabaseFullPageView was the only full-page content view without an explicit background. Added .background(Color.fallbackEditorBg) so empty space below short content blends seamlessly with the editor canvas instead of showing a jarring boundary. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds PaneFindBar view between chrome bar and content. Per-pane find state with real-time block text search, match count, Enter/Shift+Enter cycling, Escape dismiss. Scrolls to matched block via existing scrollToBlockId. V1: block-level navigation without per-character highlighting. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Merge duplicate .onKeyPress(.delete) and .onKeyPress(backspace) into a single .onKeyPress(keys:) call with a static key set. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- TerminalManager write_clipboard_cb: dispatch to main thread before accessing NSPasteboard (matches read_clipboard_cb pattern) - SettingsCommand coerceValue: add Int check before Double to prevent integer settings from being stored as strings Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Filter bar now shows clickable "and"/"or" label between filter pills. Click toggles the filter group conjunction. DatabaseViewState syncs filterGroup from flat filters on every mutation. CLI adds --filter-json flag to bugbook query for FilterGroup JSON blobs. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds mentionPageNameKey custom attribute to mention spans during parsing, and mouseDown hit detection in BlockTextView to navigate on click. Prior attempts styled mentions visually but missed click interaction. Uses characterIndexForInsertion + attribute lookup — no SwiftUI overlays needed. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
- Extract evaluateFormula to DatabaseViewHelpers (was duplicated in TableView and RowPageView) - Fix double evaluateFormula call per property in RowPageView - Cache findMatches in @State, recompute only on query change instead of on every SwiftUI render Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds .lookup PropertyType that follows a relation and mirrors a target property from linked rows. Config UI with two pickers (relation + target property). Values computed at render time, displayed as comma-separated text. Full coverage across table, row detail, CLI, and mobile views. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Adds .rollup PropertyType that follows a relation, extracts a target property from linked rows, and applies an aggregation function (sum, count, average, min, max). Config UI with three pickers. Values computed at render time via AggregationEngine. Full coverage across table, row detail, property manager, CLI, and mobile views. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Summary
TerminalColorSchemeModeenum and terminal theme properties toAppSettingsapplyColorSchemeandapplyThememethods toTerminalManagerTerminalSettingsViewand wires it into sidebar/settings navigationThese files were referenced by ContentView changes merged in PR #11 but never committed, causing CI build failures on main.
Test plan
🤖 Generated with Claude Code