hyperhive#4008, mara: 'add a setting to not display verbose output... like the grey colored debug stuff.' Same shape as the existing expand-tool-output preference (ExpandDetailsSetting.tsx): a new shared/src/prefs.ts key pair (getHideDebugPref/setHideDebugPref), a new settings-menu-row component owning its own state (HideDebugSetting.tsx, not a prop threaded through the shared SettingsMenu component — per mara's earlier review on the first one, more per-page options as props there is how that component accumulates cruft), mounted next to ExpandDetailsSetting in Root.tsx. Row.tsx skips (returns null for, not CSS display:none) any TermMsg whose level is 'debug' when the pref is set — matches the muted 'debug' row this issue is about (see docs/web-ui/terminal-rendering.md's Levels table). Read live per-row, same as expand-details, so toggling applies to newly streamed rows in an already-open tab without a reload; already -rendered rows are unaffected either way, same non-retroactive precedent the existing preference already sets.
25 lines
877 B
TypeScript
25 lines
877 B
TypeScript
// Agent-terminal-only settings-menu row: "hide debug output". Same shape
|
|
// as `ExpandDetailsSetting` (its own file's header comment explains why
|
|
// this lives here rather than as a `SettingsMenu` prop) — mara: "add a
|
|
// setting to not display verbose output... like the grey colored debug
|
|
// stuff."
|
|
import { useState } from "preact/hooks";
|
|
import { getHideDebugPref, setHideDebugPref } from "@hive/shared/prefs.js";
|
|
|
|
export function HideDebugSetting() {
|
|
const [hideDebug, setHideDebugState] = useState(() => getHideDebugPref());
|
|
return (
|
|
<label class="settings-menu-row">
|
|
<span>hide debug output</span>
|
|
<input
|
|
type="checkbox"
|
|
checked={hideDebug}
|
|
onChange={(e) => {
|
|
const v = (e.target as HTMLInputElement).checked;
|
|
setHideDebugPref(v);
|
|
setHideDebugState(v);
|
|
}}
|
|
/>
|
|
</label>
|
|
);
|
|
}
|