From acb30eb09db8214a51280c6d35bc2886341b1c94 Mon Sep 17 00:00:00 2001
From: Brennan Benson <79079362+brennanb2025@users.noreply.github.com>
Date: Thu, 27 Aug 2026 16:45:00 -0700
Subject: [PATCH] feat(settings): hidden staff toggle to arm terminal render
diagnostics
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Replaces the reserved hidden-experimental placeholder slot with a real
switch (Shift-click the Experimental sidebar entry to reveal). It arms
and disarms the render-desync capture sentinel live — no localStorage
incantation, no reload — for the bold-glitch investigation. The passive
probes stay always-on; only the capture gestures are gated.
---
.../settings/HiddenExperimentalGroup.test.tsx | 46 ++++++
.../settings/HiddenExperimentalGroup.tsx | 30 ++--
.../terminal-render-desync-sentinel.test.ts | 29 ++++
.../terminal-render-desync-trigger.ts | 35 +++++
src/renderer/src/i18n/locales/en.json | 6 +-
src/renderer/src/i18n/locales/es.json | 14 +-
src/renderer/src/i18n/locales/ja.json | 29 +++-
src/renderer/src/i18n/locales/ko.json | 134 +++++++++++++----
src/renderer/src/i18n/locales/zh.json | 142 ++++++++++++++----
9 files changed, 378 insertions(+), 87 deletions(-)
create mode 100644 src/renderer/src/components/settings/HiddenExperimentalGroup.test.tsx
diff --git a/src/renderer/src/components/settings/HiddenExperimentalGroup.test.tsx b/src/renderer/src/components/settings/HiddenExperimentalGroup.test.tsx
new file mode 100644
index 00000000000..18109fbdb52
--- /dev/null
+++ b/src/renderer/src/components/settings/HiddenExperimentalGroup.test.tsx
@@ -0,0 +1,46 @@
+// @vitest-environment happy-dom
+
+import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest'
+import { cleanup, fireEvent, render, screen } from '@testing-library/react'
+import { HiddenExperimentalGroup } from './HiddenExperimentalGroup'
+
+const isArmed = vi.fn()
+const setArmed = vi.fn()
+vi.mock('../terminal-pane/terminal-render-desync-trigger', () => ({
+ isTerminalRenderDesyncSentinelArmed: (...args: unknown[]) => isArmed(...args),
+ setTerminalRenderDesyncSentinelArmed: (...args: unknown[]) => setArmed(...args)
+}))
+
+describe('HiddenExperimentalGroup', () => {
+ beforeEach(() => {
+ vi.clearAllMocks()
+ isArmed.mockReturnValue(false)
+ })
+ afterEach(() => {
+ cleanup()
+ })
+
+ function renderDiagnosticsSwitch(): HTMLElement {
+ return screen.getByRole('switch', { name: 'Terminal render diagnostics' })
+ }
+
+ it('initializes the render-diagnostics switch from the armed state', () => {
+ isArmed.mockReturnValue(true)
+ render()
+
+ expect(renderDiagnosticsSwitch().getAttribute('data-state')).toBe('checked')
+ })
+
+ it('arms and disarms the capture sentinel through the switch', () => {
+ render()
+ expect(renderDiagnosticsSwitch().getAttribute('data-state')).toBe('unchecked')
+
+ fireEvent.click(renderDiagnosticsSwitch())
+ expect(setArmed).toHaveBeenCalledWith(true)
+ expect(renderDiagnosticsSwitch().getAttribute('data-state')).toBe('checked')
+
+ fireEvent.click(renderDiagnosticsSwitch())
+ expect(setArmed).toHaveBeenCalledWith(false)
+ expect(renderDiagnosticsSwitch().getAttribute('data-state')).toBe('unchecked')
+ })
+})
diff --git a/src/renderer/src/components/settings/HiddenExperimentalGroup.tsx b/src/renderer/src/components/settings/HiddenExperimentalGroup.tsx
index 25541870376..8ab946d186b 100644
--- a/src/renderer/src/components/settings/HiddenExperimentalGroup.tsx
+++ b/src/renderer/src/components/settings/HiddenExperimentalGroup.tsx
@@ -1,5 +1,10 @@
+import { useState } from 'react'
import { Label } from '../ui/label'
import { Switch } from '../ui/switch'
+import {
+ isTerminalRenderDesyncSentinelArmed,
+ setTerminalRenderDesyncSentinelArmed
+} from '../terminal-pane/terminal-render-desync-trigger'
import { translate } from '@/i18n/i18n'
// Why: anything in this group is deliberately unfinished or staff-only. The
@@ -7,6 +12,13 @@ import { translate } from '@/i18n/i18n'
// for hidden-experimental items so future entries inherit the same
// affordance without another round of styling decisions.
export function HiddenExperimentalGroup(): React.JSX.Element {
+ const [renderDiagnosticsArmed, setRenderDiagnosticsArmed] = useState(
+ isTerminalRenderDesyncSentinelArmed
+ )
+ const onRenderDiagnosticsChange = (armed: boolean): void => {
+ setTerminalRenderDesyncSentinelArmed(armed)
+ setRenderDiagnosticsArmed(armed)
+ }
return (
@@ -28,25 +40,25 @@ export function HiddenExperimentalGroup(): React.JSX.Element {
{translate(
- 'auto.components.settings.HiddenExperimentalGroup.1014ddbfaf',
- 'Does nothing today. Reserved as the first slot for hidden experimental options.'
+ 'auto.components.settings.HiddenExperimentalGroup.7c4e18d2f6',
+ 'Arms the bold-glitch capture gestures on this machine: Cmd/Ctrl-click a terminal starts a sampling burst; add Shift to capture pane evidence to disk.'
)}