local-tool/: visionA-local desktop app
- M1: Wails shell + Go server + Next.js UI + Mock mode (macOS dmg ready)
- M2: i18n (zh-TW/en) + Settings 4-tab refactor
- M3: Embedded Python 3.12 runtime (python-build-standalone) + KneronPLUS wheels
- M4: Windows Inno Setup script (build on Windows runner)
- M5: Linux AppImage script + udev rule (build on Linux runner)
- M6: ffmpeg (GPL, pending legal review) + yt-dlp bundled
- Lifecycle: watchServer health check, fatal native dialog,
Wails IPC raise endpoint, stale process cleanup
.autoflow/: full PRD / Design Spec / Architecture / Testing docs
(4 rounds tri-party discussion + cross review)
.github/workflows/: macOS / Windows / Linux build CI
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
29 lines
680 B
TypeScript
29 lines
680 B
TypeScript
import { create } from 'zustand';
|
|
import { persist } from 'zustand/middleware';
|
|
|
|
interface SettingsState {
|
|
theme: 'light' | 'dark';
|
|
language: 'zh-TW' | 'en';
|
|
setTheme: (theme: 'light' | 'dark') => void;
|
|
setLanguage: (language: 'zh-TW' | 'en') => void;
|
|
resetToDefaults: () => void;
|
|
}
|
|
|
|
const defaults = {
|
|
theme: 'light' as const,
|
|
language: 'zh-TW' as const,
|
|
};
|
|
|
|
export const useSettingsStore = create<SettingsState>()(
|
|
persist(
|
|
(set) => ({
|
|
...defaults,
|
|
|
|
setTheme: (theme) => set({ theme }),
|
|
setLanguage: (language) => set({ language }),
|
|
resetToDefaults: () => set(defaults),
|
|
}),
|
|
{ name: 'settings', skipHydration: true },
|
|
),
|
|
);
|