Skip to content

Commit 80a0325

Browse files
committed
feat(cli): upgrade opentui, add transparent background
1 parent 5f83f19 commit 80a0325

File tree

5 files changed

+20
-261
lines changed

5 files changed

+20
-261
lines changed

bun.lock

Lines changed: 13 additions & 11 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

cli/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@
3333
},
3434
"dependencies": {
3535
"@codebuff/sdk": "workspace:*",
36-
"@opentui/core": "^0.1.28",
37-
"@opentui/react": "^0.1.28",
36+
"@opentui/core": "^0.1.31",
37+
"@opentui/react": "^0.1.31",
3838
"@tanstack/react-query": "^5.62.8",
3939
"commander": "^14.0.1",
4040
"immer": "^10.1.3",
Lines changed: 3 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,11 @@
1-
import { useEffect, useRef, useState } from 'react'
2-
3-
import { logger } from '../utils/logger'
4-
import {
5-
spawnMacOSThemeListener,
6-
type ThemeListenerProcess,
7-
} from '../utils/theme-listener-macos'
81
import { type ThemeName, detectSystemTheme } from '../utils/theme-system'
92

10-
const DEFAULT_POLL_INTERVAL_MS = 60000 // 60 seconds
11-
123
/**
13-
* Automatically detects system theme changes.
14-
* On macOS, uses a lightweight background watcher that checks every 0.5s.
15-
* Falls back to slower polling on other platforms or if watcher fails.
4+
* Detects the system theme once on mount.
5+
* No dynamic updates or transitions.
166
*
177
* @returns The current system theme name
188
*/
199
export const useSystemThemeDetector = (): ThemeName => {
20-
const [themeName, setThemeName] = useState<ThemeName>(() =>
21-
detectSystemTheme(),
22-
)
23-
const lastThemeRef = useRef<ThemeName>(themeName)
24-
const listenerRef = useRef<ThemeListenerProcess | null>(null)
25-
26-
useEffect(() => {
27-
logger.info({ themeName }, `[theme] initial theme ${themeName}`)
28-
29-
const handleThemeChange = () => {
30-
const currentTheme = detectSystemTheme()
31-
32-
if (currentTheme !== lastThemeRef.current) {
33-
} else {
34-
}
35-
36-
// Only update state if theme actually changed
37-
if (currentTheme !== lastThemeRef.current) {
38-
lastThemeRef.current = currentTheme
39-
setThemeName(currentTheme)
40-
}
41-
}
42-
43-
// Try to use macOS listener first (instant, event-driven)
44-
if (process.platform === 'darwin') {
45-
const listener = spawnMacOSThemeListener(handleThemeChange)
46-
if (listener) {
47-
listenerRef.current = listener
48-
// Successfully spawned listener, no need for polling
49-
return () => {
50-
listenerRef.current?.kill()
51-
listenerRef.current = null
52-
}
53-
}
54-
}
55-
56-
// Fall back to polling for non-macOS or if listener failed
57-
const intervalId = setInterval(handleThemeChange, DEFAULT_POLL_INTERVAL_MS)
58-
59-
return () => {
60-
clearInterval(intervalId)
61-
}
62-
}, [])
63-
64-
return themeName
10+
return detectSystemTheme()
6511
}

cli/src/utils/theme-listener-macos.ts

Lines changed: 0 additions & 189 deletions
This file was deleted.

cli/src/utils/theme-system.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -728,7 +728,7 @@ export const detectSystemTheme = (): ThemeName => {
728728

729729
const DEFAULT_CHAT_THEMES: Record<ThemeName, ChatTheme> = {
730730
dark: {
731-
background: '#000000',
731+
background: 'transparent',
732732
chromeBg: '#000000',
733733
chromeText: '#9ca3af',
734734
accentBg: '#facc15',
@@ -781,7 +781,7 @@ const DEFAULT_CHAT_THEMES: Record<ThemeName, ChatTheme> = {
781781
},
782782
},
783783
light: {
784-
background: '#ffffff',
784+
background: 'transparent',
785785
chromeBg: '#f3f4f6',
786786
chromeText: '#374151',
787787
accentBg: '#f59e0b',

0 commit comments

Comments
 (0)