mirror of
https://github.com/QwenLM/qwen-code.git
synced 2026-07-09 17:19:02 +00:00
* feat(web-shell): daemon web-shell improvements - Align daemon token usage with structured DaemonTokenUsage type - Optimize settings panel with i18n, theme/language pickers, compact mode - Handle missing session recovery (404/410) with configurable behavior - Restore settings event signal bump for workspace changes - Prevent queued prompt loss on useEffect dependency change - Align streaming loading indicator with CLI metrics logic - Add Ctrl+Y retry for turn_error with daemon support - Hide non-essential UI elements on narrow screens (≤700px) - Prevent loading indicator flicker on page refresh - Hydrate displayName from persisted session title on load * fix(web-shell): harden retry affordance * fix(web-shell): gate retry handling --------- Co-authored-by: ytahdn <ytahdn@gmail.com>
40 lines
1.1 KiB
TypeScript
40 lines
1.1 KiB
TypeScript
import { createContext, useContext } from 'react';
|
|
|
|
export const WebShellThemeId = {
|
|
Dark: 'dark',
|
|
Light: 'light',
|
|
} as const;
|
|
|
|
export type WebShellTheme =
|
|
(typeof WebShellThemeId)[keyof typeof WebShellThemeId];
|
|
|
|
export const WEB_SHELL_THEMES: readonly WebShellTheme[] = [
|
|
WebShellThemeId.Dark,
|
|
WebShellThemeId.Light,
|
|
];
|
|
|
|
const ThemeContext = createContext<WebShellTheme>(WebShellThemeId.Dark);
|
|
|
|
export const ThemeProvider = ThemeContext.Provider;
|
|
|
|
export function useTheme(): WebShellTheme {
|
|
return useContext(ThemeContext);
|
|
}
|
|
|
|
export const THEME_SETTING_KEY = 'ui.theme';
|
|
export const LANGUAGE_SETTING_KEY = 'general.language';
|
|
|
|
export function themeSettingToWebShellTheme(
|
|
value: unknown,
|
|
fallback?: WebShellTheme,
|
|
): WebShellTheme | undefined {
|
|
if (value === WebShellThemeId.Light || value === 'Qwen Light')
|
|
return WebShellThemeId.Light;
|
|
if (value === WebShellThemeId.Dark || value === 'Qwen Dark')
|
|
return WebShellThemeId.Dark;
|
|
return fallback;
|
|
}
|
|
|
|
export function webShellThemeToSettingValue(theme: WebShellTheme): string {
|
|
return theme === WebShellThemeId.Light ? 'Qwen Light' : 'Qwen Dark';
|
|
}
|