mirror of
https://github.com/leonvanzyl/autocoder.git
synced 2026-02-01 23:13:36 +00:00
feat: add headless browser toggle to settings UI
Replace the PLAYWRIGHT_HEADLESS environment variable with a global
setting toggle in the Settings modal. The setting is persisted in the
registry DB and injected as an env var into agent subprocesses, so
client.py reads it unchanged.
Backend:
- Add playwright_headless field to SettingsResponse/SettingsUpdate schemas
- Read/write the setting in settings router via existing _parse_bool helper
- Pass playwright_headless from agent router through to process manager
- Inject PLAYWRIGHT_HEADLESS env var into subprocess environment
Frontend:
- Add playwright_headless to Settings/SettingsUpdate TypeScript types
- Add "Headless Browser" Switch toggle below YOLO mode in SettingsModal
- Add default value to DEFAULT_SETTINGS in useProjects
Also fix CSS build warning: change @import url("tw-animate-css") to bare
@import "tw-animate-css" so Tailwind v4 inlines it during compilation
instead of leaving it for Vite/Lightning CSS post-processing.
Remove stale summary.md from previous refactoring session.
Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -171,6 +171,24 @@ export function SettingsModal({ isOpen, onClose }: SettingsModalProps) {
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Headless Browser Toggle */}
|
||||
<div className="flex items-center justify-between">
|
||||
<div className="space-y-0.5">
|
||||
<Label htmlFor="playwright-headless" className="font-medium">
|
||||
Headless Browser
|
||||
</Label>
|
||||
<p className="text-sm text-muted-foreground">
|
||||
Run browser without visible window (saves CPU)
|
||||
</p>
|
||||
</div>
|
||||
<Switch
|
||||
id="playwright-headless"
|
||||
checked={settings.playwright_headless}
|
||||
onCheckedChange={() => updateSettings.mutate({ playwright_headless: !settings.playwright_headless })}
|
||||
disabled={isSaving}
|
||||
/>
|
||||
</div>
|
||||
|
||||
{/* Model Selection */}
|
||||
<div className="space-y-2">
|
||||
<Label className="font-medium">Model</Label>
|
||||
|
||||
@@ -266,6 +266,7 @@ const DEFAULT_SETTINGS: Settings = {
|
||||
glm_mode: false,
|
||||
ollama_mode: false,
|
||||
testing_agent_ratio: 1,
|
||||
playwright_headless: true,
|
||||
}
|
||||
|
||||
export function useAvailableModels() {
|
||||
|
||||
@@ -529,12 +529,14 @@ export interface Settings {
|
||||
glm_mode: boolean
|
||||
ollama_mode: boolean
|
||||
testing_agent_ratio: number // Regression testing agents (0-3)
|
||||
playwright_headless: boolean
|
||||
}
|
||||
|
||||
export interface SettingsUpdate {
|
||||
yolo_mode?: boolean
|
||||
model?: string
|
||||
testing_agent_ratio?: number
|
||||
playwright_headless?: boolean
|
||||
}
|
||||
|
||||
export interface ProjectSettingsUpdate {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
@import "tailwindcss";
|
||||
@import url("tw-animate-css");
|
||||
@import "tw-animate-css";
|
||||
|
||||
/* Enable class-based dark mode in Tailwind v4 */
|
||||
@custom-variant dark (&:where(.dark, .dark *));
|
||||
|
||||
Reference in New Issue
Block a user