@vibecook/ghosttea-react 0.12.0 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/README.md +59 -4
  2. package/dist/TerminalSurface.d.ts +53 -0
  3. package/dist/TerminalSurface.d.ts.map +1 -1
  4. package/dist/TerminalSurface.js +76 -9
  5. package/dist/TerminalSurface.js.map +1 -1
  6. package/dist/appearance/AppearanceSettings.d.ts +2 -0
  7. package/dist/appearance/AppearanceSettings.d.ts.map +1 -1
  8. package/dist/appearance/AppearanceSettings.js +12 -2
  9. package/dist/appearance/AppearanceSettings.js.map +1 -1
  10. package/dist/appearance/types.d.ts +4 -0
  11. package/dist/appearance/types.d.ts.map +1 -1
  12. package/dist/catalog-budget.d.ts +2 -2
  13. package/dist/catalog-budget.d.ts.map +1 -1
  14. package/dist/catalog-budget.js +2 -2
  15. package/dist/catalog-budget.js.map +1 -1
  16. package/dist/config.d.ts.map +1 -1
  17. package/dist/config.js +2 -0
  18. package/dist/config.js.map +1 -1
  19. package/dist/index.d.ts +2 -2
  20. package/dist/index.d.ts.map +1 -1
  21. package/dist/index.js +1 -1
  22. package/dist/index.js.map +1 -1
  23. package/dist/renderers/glyph-atlas.d.ts +43 -0
  24. package/dist/renderers/glyph-atlas.d.ts.map +1 -0
  25. package/dist/renderers/glyph-atlas.js +175 -0
  26. package/dist/renderers/glyph-atlas.js.map +1 -0
  27. package/dist/renderers/light-adaptation.d.ts +36 -0
  28. package/dist/renderers/light-adaptation.d.ts.map +1 -0
  29. package/dist/renderers/light-adaptation.js +332 -0
  30. package/dist/renderers/light-adaptation.js.map +1 -0
  31. package/dist/renderers/types.d.ts +21 -0
  32. package/dist/renderers/types.d.ts.map +1 -1
  33. package/dist/renderers/types.js.map +1 -1
  34. package/dist/renderers/webgpu-renderer.d.ts +4 -0
  35. package/dist/renderers/webgpu-renderer.d.ts.map +1 -1
  36. package/dist/renderers/webgpu-renderer.js +321 -237
  37. package/dist/renderers/webgpu-renderer.js.map +1 -1
  38. package/dist/routed-control.d.ts +26 -2
  39. package/dist/routed-control.d.ts.map +1 -1
  40. package/dist/routed-control.js +145 -27
  41. package/dist/routed-control.js.map +1 -1
  42. package/dist/routed-frames.d.ts +1 -1
  43. package/dist/routed-frames.d.ts.map +1 -1
  44. package/dist/routed-frames.js +3 -7
  45. package/dist/routed-frames.js.map +1 -1
  46. package/dist/row-damage.d.ts +21 -0
  47. package/dist/row-damage.d.ts.map +1 -0
  48. package/dist/row-damage.js +76 -0
  49. package/dist/row-damage.js.map +1 -0
  50. package/dist/runtime.d.ts +92 -3
  51. package/dist/runtime.d.ts.map +1 -1
  52. package/dist/runtime.js +439 -43
  53. package/dist/runtime.js.map +1 -1
  54. package/dist/styles.css +11 -0
  55. package/dist/terminal-render.worker.js +908 -288
  56. package/dist/terminal-render.worker.js.map +4 -4
  57. package/dist/worker-messages.d.ts +22 -1
  58. package/dist/worker-messages.d.ts.map +1 -1
  59. package/dist/workspace/Workspace.d.ts +15 -2
  60. package/dist/workspace/Workspace.d.ts.map +1 -1
  61. package/dist/workspace/Workspace.js +36 -12
  62. package/dist/workspace/Workspace.js.map +1 -1
  63. package/dist/workspace/pane-layout.d.ts +3 -1
  64. package/dist/workspace/pane-layout.d.ts.map +1 -1
  65. package/dist/workspace/pane-layout.js +16 -4
  66. package/dist/workspace/pane-layout.js.map +1 -1
  67. package/package.json +4 -4
package/README.md CHANGED
@@ -98,10 +98,40 @@ incompatible message. When supplied, the encoded keystroke is sent directly
98
98
  on the main-thread control socket with no worker `postMessage` hop.
99
99
 
100
100
  Focus changes only rendering priority and demand urgency. Geometry changes
101
- require an explicit `controlsResize`/`claimResizeControl` path, so a focused
102
- mirror cannot resize the PTY. Production counters are available through
103
- `readPerformanceCounters()` without opening a measurement window or draining
104
- the GPU. The existing port-pair transport remains the default rollback path.
101
+ require an explicit `controlsResize`/`claimResizeControl` or
102
+ `takeResizeControl` path, so a focused mirror cannot resize the PTY.
103
+ Production counters are available through `readPerformanceCounters()` without
104
+ opening a measurement window or draining the GPU. The existing port-pair
105
+ transport remains the default rollback path.
106
+
107
+ Because focus is only a scheduling fact, the host decides when a view takes
108
+ the geometry seat. `runtime.takeResizeControl(sessionHandle, viewId, cols,
109
+ rows)` takes it for one view. On the routed transport it claims an empty seat,
110
+ or claims the view's own seat again, which the cell commits as a resize and
111
+ which leaves the PTY alone at the same size. When another view holds the seat,
112
+ on this client or another, it sends one `TransferGeometry` from the holder the
113
+ runtime last saw. The cell answers only the caller, so a pane whose seat
114
+ another client took learns it from the refusal of its own take. A refusal that
115
+ names a newer holder or revision is retried once against it, typically as one
116
+ `TransferGeometry` from the holder it names. The runtime owns that one retry:
117
+ call `takeResizeControl` once per focus gain and never retry it. A take asked
118
+ before the control leg attaches is sent when it attaches. On the port-pair
119
+ transport the take is `claimResizeControl`, which never displaces another
120
+ view. To let the pane focused last size the PTY across windows and devices,
121
+ pass `takeGeometryOnFocus` to `TerminalSurface` or `GhostteaWorkspace`. A pane
122
+ then takes the seat each time it gains focus, and each time it is pressed while
123
+ it already has focus, so a seat another device took while this window kept its
124
+ focus is taken back by pressing the pane. A `controlsResize={false}` mirror
125
+ still never does.
126
+
127
+ `runtime.geometryHolder(sessionHandle)` reads the seat as this runtime last
128
+ saw it: `{ holder, revision, local }`, where `holder` is
129
+ `{ clientId, viewId, holderGeneration }` or `null`, and `local` means one of
130
+ this runtime's views holds it. The `geometry-holder-changed` event reports
131
+ each change of holder as `{ sessionId, sessionHandle, previous, current }`.
132
+ The cell names the holder only in replies to this client's own geometry
133
+ verbs, so another client's take shows up on this client's next claim, take or
134
+ release.
105
135
 
106
136
  For applications that want the complete Ghostty-style desktop experience, use
107
137
  `GhostteaWorkspace` from `@vibecook/ghosttea-react/workspace` and import
@@ -111,6 +141,12 @@ semantics. An optional sidebar component receives the active session plus
111
141
  `addSession`/`activateSession` actions, so application UI can sit beside the
112
142
  terminal without creating a parallel terminal layout or transport.
113
143
 
144
+ The context's `replaceSession(expectedId, replacement)` atomically replaces every
145
+ current attachment of an expected session, preserving pane IDs, split geometry,
146
+ focus and zoom. It returns `false` if the session is no longer attached, so hosts
147
+ can release a shell born after its target pane closed or changed. Unlike
148
+ `mountSession`, it never selects or replaces the active pane implicitly.
149
+
114
150
  The workspace entry point also exports the versioned, UI-independent pane and
115
151
  tab reducers used for cross-platform restoration and conformance. Their JSON
116
152
  documents contain only stable layout IDs and opaque session IDs; resolve those
@@ -198,3 +234,22 @@ Architecture:
198
234
  **⌘⇧O** (`super+shift+o`) is a Ghosttea product extension (remote sessions) and is kept outside Ghostty defaults.
199
235
 
200
236
  Open / deferred Ghostty UX work (font-size protocol, search, undo, jump_to_prompt, mouse goldens, etc.) is tracked in the monorepo at [`bench/ghostty-ux/OPEN-ITEMS.md`](../../bench/ghostty-ux/OPEN-ITEMS.md).
237
+
238
+ ### Pane geometry and host fullscreen
239
+
240
+ `splitSizing="equal"` equalizes the affected row or column after both insertion
241
+ and removal, preserving perpendicular split groups. Hosts can supply
242
+ `onTogglePaneZoom(paneId)` to own fullscreen presentation while Ghosttea still
243
+ resolves the user's configured shortcut. The normal zoom remains the default.
244
+
245
+ `TerminalSurface` observes its container. The canvas displays its intrinsic
246
+ worker bitmap at device-pixel scale, clipped to that container, so an old bitmap
247
+ cannot stretch during a resize. Mount messages include initial pixel geometry
248
+ before a cached scene can draw; a zero-size view waits for a real size. Direct
249
+ `runtime.mount` users can pass `{ width, height, dpr }` as the fifth argument
250
+ when their canvas's intrinsic size differs from its intended viewport.
251
+
252
+ `runtime.sessionHasInput(id)` records input attempts across view remounts in
253
+ this renderer. It is a conservative local-lifetime signal, not proof that an
254
+ externally created or restored session is unused. Hosts retain authority over
255
+ session termination through `onPaneClose`.
@@ -1,8 +1,51 @@
1
1
  import type { SessionSummary, TerminalScrollbarState } from "@vibecook/ghosttea-protocol";
2
2
  import type { GhosttyBindingEntry } from "./bindings/ghostty-bindings.js";
3
3
  import { type CellPoint, type TerminalEffects, type TerminalTheme } from "./renderers/types.js";
4
+ import type { GhostteaTerminalRuntime } from "./runtime.js";
4
5
  export type TerminalMenuAction = "copy" | "paste" | "select-all" | "clear-screen";
5
6
  export type TerminalInputPolicy = "inherit" | "read-only";
7
+ /** What decides whether a surface's focus gain takes the geometry seat. */
8
+ export interface SurfaceFocusPolicy {
9
+ /** The host opted in (`takeGeometryOnFocus`). */
10
+ takeGeometryOnFocus: boolean;
11
+ /** The surface controls resize; a mirror does not. */
12
+ controlsResize: boolean;
13
+ /** The surface takes input; a read-only view is never a controller. */
14
+ interactive: boolean;
15
+ }
16
+ /**
17
+ * Whether a focus change takes the geometry seat: only a focus gain, only when
18
+ * the host opted in, and only for a surface that controls resize and takes
19
+ * input. A `controlsResize: false` mirror never does.
20
+ */
21
+ export declare function focusTakesGeometry(focused: boolean, wasFocused: boolean, policy: SurfaceFocusPolicy): boolean;
22
+ /**
23
+ * Whether a press takes the geometry seat: a press of a surface that already
24
+ * has focus, under a focus gain's own policy. A press of an unfocused surface
25
+ * focuses it, and that gain takes. A press of a focused one changes no focus, so
26
+ * without this a pane whose seat another client took while this window kept its
27
+ * focus (a phone's take) could not be taken back by pressing it.
28
+ */
29
+ export declare function pressTakesGeometry(wasFocused: boolean, policy: SurfaceFocusPolicy): boolean;
30
+ /** A press of the surface, reported before it moves focus: the seat is taken at
31
+ * the surface's current grid when `pressTakesGeometry` says so. */
32
+ export declare function syncSurfacePress(runtime: Pick<GhostteaTerminalRuntime, "takeResizeControl">, surface: {
33
+ sessionHandle: string;
34
+ viewId: string;
35
+ cols: number;
36
+ rows: number;
37
+ }, wasFocused: boolean, policy: SurfaceFocusPolicy): void;
38
+ /**
39
+ * The surface's focus report. Focus always reaches the runtime as a
40
+ * scheduling fact; the seat is taken only when `focusTakesGeometry` says so,
41
+ * at the surface's current grid.
42
+ */
43
+ export declare function syncSurfaceFocus(runtime: Pick<GhostteaTerminalRuntime, "setFocused" | "takeResizeControl">, surface: {
44
+ sessionHandle: string;
45
+ viewId: string;
46
+ cols: number;
47
+ rows: number;
48
+ }, focused: boolean, wasFocused: boolean, policy: SurfaceFocusPolicy): void;
6
49
  export interface TerminalSurfaceProps {
7
50
  session: SessionSummary;
8
51
  theme: TerminalTheme;
@@ -14,6 +57,16 @@ export interface TerminalSurfaceProps {
14
57
  /** Whether the surface is currently visible enough to spend GPU work painting it. */
15
58
  visible?: boolean;
16
59
  controlsResize?: boolean;
60
+ /**
61
+ * Take the session's geometry seat each time this surface gains focus, so
62
+ * the pane focused last sizes the PTY, whichever window or device it is on
63
+ * (last write wins). Off by default: focus alone is a scheduling fact and
64
+ * never changes geometry. It applies only while `controlsResize` is true
65
+ * and the surface takes input; a mirror never claims, takes or resizes on
66
+ * focus. The host owns this policy; the runtime verb is
67
+ * `takeResizeControl`.
68
+ */
69
+ takeGeometryOnFocus?: boolean;
17
70
  /** Viewer-local input fence. It can make a writable session read-only but never grants server rights. */
18
71
  inputPolicy?: TerminalInputPolicy;
19
72
  /** Convenience alias for `inputPolicy="read-only"` when false. */
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalSurface.d.ts","sourceRoot":"","sources":["../src/TerminalSurface.tsx"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAoB,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAK5G,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,EAML,KAAK,SAAS,EACd,KAAK,eAAe,EACpB,KAAK,aAAa,EACnB,MAAM,sBAAsB,CAAC;AAI9B,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,cAAc,CAAC;AAClF,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG,WAAW,CAAC;AAE1D,MAAM,WAAW,oBAAoB;IACnC,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,aAAa,CAAC;IACrB,OAAO,CAAC,EAAE,eAAe,CAAC;IAC1B,QAAQ,CAAC,EAAE,SAAS,mBAAmB,EAAE,CAAC;IAC1C,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,yEAAyE;IACzE,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qFAAqF;IACrF,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,yGAAyG;IACzG,WAAW,CAAC,EAAE,mBAAmB,CAAC;IAClC,kEAAkE;IAClE,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,UAAU,CAAC,EAAE,MAAM,IAAI,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;IAC/C,wBAAwB,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IACtD,aAAa,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;IAC3C,kBAAkB,CAAC,EAAE,MAAM,IAAI,CAAC;IAChC,YAAY,CAAC,EAAE,CAAC,QAAQ,EAAE,CAAC,MAAM,EAAE,kBAAkB,KAAK,IAAI,KAAK,MAAM,IAAI,CAAC;CAC/E;AAED,wBAAgB,iBAAiB,CAC/B,SAAS,EAAE;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG,IAAI,EACzD,SAAS,EAAE,sBAAsB,EACjC,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,GACX;IAAE,MAAM,EAAE,SAAS,CAAC;IAAC,KAAK,EAAE,SAAS,CAAA;CAAE,GAAG,IAAI,CAoBhD;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,+BAG1D"}
1
+ {"version":3,"file":"TerminalSurface.d.ts","sourceRoot":"","sources":["../src/TerminalSurface.tsx"],"names":[],"mappings":"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"}
@@ -8,6 +8,42 @@ import { resolveTerminalBinding } from "./terminal-bindings.js";
8
8
  import { CELL_WIDTH, DEFAULT_EFFECTS, LINE_HEIGHT, ORIGIN_X, ORIGIN_Y, } from "./renderers/types.js";
9
9
  import { accumulateWheelRows, wheelDeltaPixels } from "./scroll-input.js";
10
10
  import { adjustSelectionFocus, usesLocalSelection } from "./selection-input.js";
11
+ /**
12
+ * Whether a focus change takes the geometry seat: only a focus gain, only when
13
+ * the host opted in, and only for a surface that controls resize and takes
14
+ * input. A `controlsResize: false` mirror never does.
15
+ */
16
+ export function focusTakesGeometry(focused, wasFocused, policy) {
17
+ return focused && !wasFocused && policy.takeGeometryOnFocus && policy.controlsResize && policy.interactive;
18
+ }
19
+ /**
20
+ * Whether a press takes the geometry seat: a press of a surface that already
21
+ * has focus, under a focus gain's own policy. A press of an unfocused surface
22
+ * focuses it, and that gain takes. A press of a focused one changes no focus, so
23
+ * without this a pane whose seat another client took while this window kept its
24
+ * focus (a phone's take) could not be taken back by pressing it.
25
+ */
26
+ export function pressTakesGeometry(wasFocused, policy) {
27
+ return wasFocused && policy.takeGeometryOnFocus && policy.controlsResize && policy.interactive;
28
+ }
29
+ /** A press of the surface, reported before it moves focus: the seat is taken at
30
+ * the surface's current grid when `pressTakesGeometry` says so. */
31
+ export function syncSurfacePress(runtime, surface, wasFocused, policy) {
32
+ if (pressTakesGeometry(wasFocused, policy)) {
33
+ runtime.takeResizeControl(surface.sessionHandle, surface.viewId, surface.cols, surface.rows);
34
+ }
35
+ }
36
+ /**
37
+ * The surface's focus report. Focus always reaches the runtime as a
38
+ * scheduling fact; the seat is taken only when `focusTakesGeometry` says so,
39
+ * at the surface's current grid.
40
+ */
41
+ export function syncSurfaceFocus(runtime, surface, focused, wasFocused, policy) {
42
+ runtime.setFocused(surface.sessionHandle, surface.viewId, focused, surface.cols, surface.rows);
43
+ if (focusTakesGeometry(focused, wasFocused, policy)) {
44
+ runtime.takeResizeControl(surface.sessionHandle, surface.viewId, surface.cols, surface.rows);
45
+ }
46
+ }
11
47
  export function viewportSelection(selection, scrollbar, cols, rows) {
12
48
  if (!selection)
13
49
  return null;
@@ -34,7 +70,7 @@ export function TerminalSurface(props) {
34
70
  const { session } = props;
35
71
  return _jsx(TerminalSurfaceSession, { ...props }, `${session.id}:${session.handle}`);
36
72
  }
37
- function TerminalSurfaceSession({ session, theme, effects = DEFAULT_EFFECTS, bindings, active = true, platform, visible = true, controlsResize = active, inputPolicy = "inherit", readWrite = true, onActivate, readClipboard, onCopyAvailabilityChange, onContextMenu, onToggleFullscreen: _onToggleFullscreen, onMenuAction, }) {
73
+ function TerminalSurfaceSession({ session, theme, effects = DEFAULT_EFFECTS, bindings, active = true, platform, visible = true, controlsResize = active, takeGeometryOnFocus = false, inputPolicy = "inherit", readWrite = true, onActivate, readClipboard, onCopyAvailabilityChange, onContextMenu, onToggleFullscreen: _onToggleFullscreen, onMenuAction, }) {
38
74
  // Fullscreen is owned by Workspace platform routing (toggle_fullscreen).
39
75
  void _onToggleFullscreen;
40
76
  const terminalRuntime = useGhostteaRuntime();
@@ -46,6 +82,12 @@ function TerminalSurfaceSession({ session, theme, effects = DEFAULT_EFFECTS, bin
46
82
  const links = useTerminalLinks(terminalRuntime, session.handle, inputRef, gridRef, platform, visible);
47
83
  const controlsResizeRef = useRef(controlsResize);
48
84
  const clientReadWriteRef = useRef(clientReadWrite);
85
+ // Read by the focus sync, so that a policy change does not re-run it and
86
+ // flap focus at the runtime.
87
+ const interactiveRef = useRef(interactive);
88
+ const takeGeometryOnFocusRef = useRef(takeGeometryOnFocus);
89
+ // The focus last reported, so that only a gain can take the seat.
90
+ const focusedRef = useRef(false);
49
91
  const [viewId] = useState(() => crypto.randomUUID());
50
92
  const [inputFocused, setInputFocused] = useState(false);
51
93
  const selectionAnchorRef = useRef(null);
@@ -73,7 +115,9 @@ function TerminalSurfaceSession({ session, theme, effects = DEFAULT_EFFECTS, bin
73
115
  useEffect(() => {
74
116
  controlsResizeRef.current = controlsResize;
75
117
  clientReadWriteRef.current = clientReadWrite;
76
- }, [clientReadWrite, controlsResize]);
118
+ interactiveRef.current = interactive;
119
+ takeGeometryOnFocusRef.current = takeGeometryOnFocus;
120
+ }, [clientReadWrite, controlsResize, interactive, takeGeometryOnFocus]);
77
121
  const setLocalSelection = useCallback((selection, selectAll = false) => {
78
122
  selectionRef.current = selection;
79
123
  selectionAllRef.current = selection !== null && selectAll;
@@ -240,15 +284,24 @@ function TerminalSurfaceSession({ session, theme, effects = DEFAULT_EFFECTS, bin
240
284
  }, [active]);
241
285
  useEffect(() => {
242
286
  const canvas = canvasRef.current;
243
- if (!canvas)
287
+ const surface = canvas?.parentElement;
288
+ if (!canvas || !surface)
244
289
  return;
245
- const handle = terminalRuntime.mount(session.id, session.handle, viewId, canvas);
290
+ const dpr = window.devicePixelRatio || 1;
291
+ canvas.style.setProperty("--ghosttea-canvas-scale", `${1 / dpr}`);
292
+ const handle = terminalRuntime.mount(session.id, session.handle, viewId, canvas, {
293
+ width: surface.clientWidth,
294
+ height: surface.clientHeight,
295
+ dpr,
296
+ });
246
297
  terminalRuntime.setViewInputPolicy(viewId, clientReadWriteRef.current);
247
298
  let { cols, rows } = gridRef.current;
248
299
  const observer = new ResizeObserver(([entry]) => {
249
- if (!entry)
300
+ if (!entry || entry.contentRect.width <= 0 || entry.contentRect.height <= 0)
250
301
  return;
251
- handle.resize(entry.contentRect.width, entry.contentRect.height, window.devicePixelRatio);
302
+ const dpr = window.devicePixelRatio || 1;
303
+ canvas.style.setProperty("--ghosttea-canvas-scale", `${1 / dpr}`);
304
+ handle.resize(entry.contentRect.width, entry.contentRect.height, dpr);
252
305
  const nextCols = Math.max(2, Math.floor((entry.contentRect.width - ORIGIN_X * 2) / CELL_WIDTH));
253
306
  const nextRows = Math.max(1, Math.floor((entry.contentRect.height - ORIGIN_Y * 2) / LINE_HEIGHT));
254
307
  if (nextCols !== cols || nextRows !== rows) {
@@ -259,7 +312,7 @@ function TerminalSurfaceSession({ session, theme, effects = DEFAULT_EFFECTS, bin
259
312
  terminalRuntime.resize(session.id, viewId, cols, rows);
260
313
  }
261
314
  });
262
- observer.observe(canvas);
315
+ observer.observe(surface);
263
316
  return () => {
264
317
  observer.disconnect();
265
318
  handle.dispose();
@@ -317,13 +370,20 @@ function TerminalSurfaceSession({ session, theme, effects = DEFAULT_EFFECTS, bin
317
370
  useEffect(() => {
318
371
  const syncFocus = () => {
319
372
  const { cols, rows } = gridRef.current;
320
- terminalRuntime.setFocused(session.handle, viewId, active && inputFocused && document.hasFocus() && document.activeElement === inputRef.current, cols, rows);
373
+ const focused = active && inputFocused && document.hasFocus() && document.activeElement === inputRef.current;
374
+ syncSurfaceFocus(terminalRuntime, { sessionHandle: session.handle, viewId, cols, rows }, focused, focusedRef.current, {
375
+ takeGeometryOnFocus: takeGeometryOnFocusRef.current,
376
+ controlsResize: controlsResizeRef.current,
377
+ interactive: interactiveRef.current,
378
+ });
379
+ focusedRef.current = focused;
321
380
  };
322
381
  const onWindowBlur = () => {
323
382
  restoreInputFocusRef.current = restoreInputFocusRef.current || document.activeElement === inputRef.current;
324
383
  releaseForwardedKeys();
325
384
  const { cols, rows } = gridRef.current;
326
385
  terminalRuntime.setFocused(session.handle, viewId, false, cols, rows);
386
+ focusedRef.current = false;
327
387
  };
328
388
  const onWindowFocus = () => {
329
389
  if (active && restoreInputFocusRef.current)
@@ -479,6 +539,11 @@ function TerminalSurfaceSession({ session, theme, effects = DEFAULT_EFFECTS, bin
479
539
  }, 40);
480
540
  };
481
541
  const onPointerDown = (event) => {
542
+ syncSurfacePress(terminalRuntime, { sessionHandle: session.handle, viewId, ...gridRef.current }, focusedRef.current, {
543
+ takeGeometryOnFocus: takeGeometryOnFocusRef.current,
544
+ controlsResize: controlsResizeRef.current,
545
+ interactive: interactiveRef.current,
546
+ });
482
547
  onActivate?.();
483
548
  event.currentTarget.focus({ preventScroll: true });
484
549
  if (links.begin(event)) {
@@ -621,7 +686,9 @@ function TerminalSurfaceSession({ session, theme, effects = DEFAULT_EFFECTS, bin
621
686
  event.currentTarget.releasePointerCapture(event.pointerId);
622
687
  revealScrollbar();
623
688
  };
624
- return (_jsxs("div", { className: "terminal-surface", children: [_jsx("canvas", { ref: canvasRef, "aria-label": `Terminal session ${session.id}` }), _jsx("textarea", { ref: inputRef, className: "terminal-input", style: links.hoveredLink ? { cursor: "pointer" } : undefined, title: links.hoveredLink?.uri, "data-terminal-link": links.hoveredLink?.uri, autoCapitalize: "off", autoComplete: "off", spellCheck: false, readOnly: !interactive, "aria-label": "Terminal input", onFocus: () => {
689
+ return (_jsxs("div", { className: "terminal-surface", children: [_jsx("canvas", { ref: canvasRef, "aria-label": `Terminal session ${session.id}`, style: {
690
+ "--ghosttea-canvas-scale": 1 / (typeof window === "undefined" ? 1 : window.devicePixelRatio || 1),
691
+ } }), _jsx("textarea", { ref: inputRef, className: "terminal-input", style: links.hoveredLink ? { cursor: "pointer" } : undefined, title: links.hoveredLink?.uri, "data-terminal-link": links.hoveredLink?.uri, autoCapitalize: "off", autoComplete: "off", spellCheck: false, readOnly: !interactive, "aria-label": "Terminal input", onFocus: () => {
625
692
  onActivate?.();
626
693
  restoreInputFocusRef.current = true;
627
694
  setInputFocused(true);
@@ -1 +1 @@
1
- {"version":3,"file":"TerminalSurface.js","sourceRoot":"","sources":["../src/TerminalSurface.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TerminalSurface.js","sourceRoot":"","sources":["../src/TerminalSurface.tsx"],"names":[],"mappings":"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"}
@@ -7,6 +7,8 @@ export interface AppearanceDraftState {
7
7
  opacityCells: boolean;
8
8
  effects: TerminalShaderEffect[];
9
9
  animation: boolean;
10
+ lightAdaptation: "auto" | "off";
11
+ minimumContrast: number;
10
12
  }
11
13
  export declare function appearanceDraftFromConfig(config: ConfigSnapshot): AppearanceDraftState;
12
14
  export declare function sameAppearanceDraft(left: AppearanceDraftState, right: AppearanceDraftState): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"AppearanceSettings.d.ts","sourceRoot":"","sources":["../../src/appearance/AppearanceSettings.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAKlE,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACnH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,oBAAoB,CAUtF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CASpG;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,KAAK,IAAI,CAAC;CACzD;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE,uBAAuB,+BAyazB"}
1
+ {"version":3,"file":"AppearanceSettings.d.ts","sourceRoot":"","sources":["../../src/appearance/AppearanceSettings.tsx"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAKlE,OAAO,KAAK,EAAE,wBAAwB,EAAE,0BAA0B,EAAE,0BAA0B,EAAE,MAAM,YAAY,CAAC;AACnH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,uBAAuB,CAAC;AAElE,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,OAAO,CAAC;IACtB,OAAO,EAAE,oBAAoB,EAAE,CAAC;IAChC,SAAS,EAAE,OAAO,CAAC;IACnB,eAAe,EAAE,MAAM,GAAG,KAAK,CAAC;IAChC,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,wBAAgB,yBAAyB,CAAC,MAAM,EAAE,cAAc,GAAG,oBAAoB,CAYtF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,oBAAoB,GAAG,OAAO,CAWpG;AAED,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,cAAc,CAAC;IACvB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,wBAAwB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC7D,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,YAAY,CAAC,EAAE,0BAA0B,CAAC;IAC1C,SAAS,EAAE,CAAC,MAAM,EAAE,cAAc,GAAG,SAAS,KAAK,IAAI,CAAC;CACzD;AAED,wBAAgB,kBAAkB,CAAC,EACjC,MAAM,EACN,OAAO,EACP,MAAM,EACN,YAAY,EACZ,YAAY,EACZ,SAAS,GACV,EAAE,uBAAuB,+BA0czB"}
@@ -12,6 +12,8 @@ export function appearanceDraftFromConfig(config) {
12
12
  effects: config.renderer.shaderEffects?.filter(isGhostteaShaderEffect) ??
13
13
  (config.renderer.postProcess === "better-crt" ? ["ghosttea:better-crt"] : []),
14
14
  animation: config.renderer.customShaderAnimation ?? false,
15
+ lightAdaptation: config.renderer.lightAdaptation ?? "auto",
16
+ minimumContrast: config.renderer.minimumContrast ?? 1,
15
17
  };
16
18
  }
17
19
  export function sameAppearanceDraft(left, right) {
@@ -19,6 +21,8 @@ export function sameAppearanceDraft(left, right) {
19
21
  left.opacity === right.opacity &&
20
22
  left.opacityCells === right.opacityCells &&
21
23
  left.animation === right.animation &&
24
+ left.lightAdaptation === right.lightAdaptation &&
25
+ left.minimumContrast === right.minimumContrast &&
22
26
  left.effects.length === right.effects.length &&
23
27
  left.effects.every((effect, index) => effect === right.effects[index]));
24
28
  }
@@ -40,9 +44,11 @@ export function AppearanceSettings({ config, onClose, onSave, configEditor, back
40
44
  const [opacityCells, setOpacityCells] = useState(initialAppearance.opacityCells);
41
45
  const [effects, setEffects] = useState(initialAppearance.effects);
42
46
  const [animation, setAnimation] = useState(initialAppearance.animation);
47
+ const [lightAdaptation, setLightAdaptation] = useState(initialAppearance.lightAdaptation);
48
+ const [minimumContrast, setMinimumContrast] = useState(initialAppearance.minimumContrast);
43
49
  const [saving, setSaving] = useState(false);
44
50
  const [error, setError] = useState();
45
- const appearanceDraft = useMemo(() => ({ themeName, opacity, opacityCells, effects, animation }), [animation, effects, opacity, opacityCells, themeName]);
51
+ const appearanceDraft = useMemo(() => ({ themeName, opacity, opacityCells, effects, animation, lightAdaptation, minimumContrast }), [animation, effects, lightAdaptation, minimumContrast, opacity, opacityCells, themeName]);
46
52
  const appearanceDirty = !sameAppearanceDraft(appearanceDraft, appearanceBaseline);
47
53
  const appearanceStale = appearanceDirty && observedConfig.revision !== appearanceBaselineRevision;
48
54
  const selectedTheme = themeName ? GHOSTTY_COLOR_THEMES.find((theme) => theme.name === themeName) : undefined;
@@ -60,6 +66,8 @@ export function AppearanceSettings({ config, onClose, onSave, configEditor, back
60
66
  setOpacityCells(next.opacityCells);
61
67
  setEffects(next.effects);
62
68
  setAnimation(next.animation);
69
+ setLightAdaptation(next.lightAdaptation);
70
+ setMinimumContrast(next.minimumContrast);
63
71
  setAppearanceBaseline(next);
64
72
  setAppearanceBaselineRevision(nextConfig.revision);
65
73
  }, []);
@@ -139,6 +147,8 @@ export function AppearanceSettings({ config, onClose, onSave, configEditor, back
139
147
  backgroundOpacityCells: opacityCells,
140
148
  shaderEffects: effects,
141
149
  shaderAnimation: animation,
150
+ lightAdaptation,
151
+ minimumContrast,
142
152
  });
143
153
  requestClose();
144
154
  }
@@ -149,7 +159,7 @@ export function AppearanceSettings({ config, onClose, onSave, configEditor, back
149
159
  setSaving(false);
150
160
  }
151
161
  };
152
- return (_jsx("div", { className: "appearance-settings-backdrop", role: "presentation", onMouseDown: (event) => event.target === event.currentTarget && requestClose(), children: _jsxs("section", { className: "appearance-settings", role: "dialog", "aria-modal": "true", "aria-labelledby": "settings-title", children: [_jsxs("header", { children: [_jsxs("div", { children: [_jsx("h1", { id: "settings-title", children: "Settings" }), _jsx("p", { children: "Profile-wide terminal appearance and Ghostty-compatible configuration." })] }), _jsx("button", { type: "button", className: "appearance-close", onClick: requestClose, "aria-label": "Close settings", children: "\u00D7" })] }), _jsxs("div", { className: "settings-layout", children: [_jsxs("nav", { className: "settings-sidebar", "aria-label": "Settings sections", children: [onSave ? (_jsxs("button", { type: "button", className: section === "appearance" ? "is-selected" : "", "aria-current": section === "appearance" ? "page" : undefined, disabled: advancedDirty, title: advancedDirty ? "Save or revert the Advanced draft before switching sections" : undefined, onClick: () => selectSection("appearance"), children: [_jsx("span", { children: "Appearance" }), _jsx("small", { children: "Themes & shaders" })] })) : null, configEditor ? (_jsxs("button", { type: "button", className: section === "advanced" ? "is-selected" : "", "aria-current": section === "advanced" ? "page" : undefined, disabled: appearanceDirty, title: appearanceDirty ? "Apply or cancel Appearance changes before switching sections" : undefined, onClick: () => selectSection("advanced"), children: [_jsx("span", { children: "Advanced" }), _jsx("small", { children: "Ghostty config" })] })) : null, appearanceDirty ? (_jsx("p", { className: "settings-sidebar-note", children: "Apply or cancel Appearance edits to switch." })) : null, advancedDirty ? (_jsx("p", { className: "settings-sidebar-note", children: "Save or revert the Advanced draft to switch." })) : null] }), _jsxs("div", { className: "settings-content", children: [_jsxs("div", { className: `settings-page appearance-settings-page${section === "appearance" ? " is-active" : ""}`, children: [appearanceStale ? (_jsxs("div", { className: "config-conflict appearance-config-stale", role: "alert", children: [_jsxs("div", { children: [_jsx("strong", { children: "The configuration changed while Appearance had pending edits." }), _jsx("p", { children: "Choose whether to reload the current values or explicitly rebase your pending appearance." })] }), _jsxs("span", { children: [_jsx("button", { type: "button", onClick: () => resetAppearanceToConfig(observedConfig), children: "Reload current values" }), _jsx("button", { type: "button", onClick: acknowledgeLatestAppearanceBase, children: "Keep my pending edits" })] })] })) : null, _jsxs("div", { className: "appearance-settings-grid", children: [_jsxs("section", { className: "appearance-panel", children: [_jsxs("h2", { children: ["Color theme ", _jsx("span", { children: GHOSTTY_COLOR_THEMES.length })] }), _jsx("input", { className: "appearance-search", value: query, onChange: (event) => setQuery(event.currentTarget.value), placeholder: "Search Ghostty themes", "aria-label": "Search Ghostty themes", autoFocus: section === "appearance" }), _jsxs("div", { className: "appearance-theme-list", role: "listbox", "aria-label": "Color themes", children: [!matchedTheme ? (_jsx(ThemeChoice, { theme: currentTheme, selected: themeName === null, onSelect: () => setThemeName(null) })) : null, selectedTheme && !filteredThemes.some((theme) => theme.name === selectedTheme.name) ? (_jsx(ThemeChoice, { theme: selectedTheme, selected: true, onSelect: () => setThemeName(selectedTheme.name) })) : null, filteredThemes.map((theme) => (_jsx(ThemeChoice, { theme: theme, selected: theme.name === selectedTheme?.name, onSelect: () => setThemeName(theme.name) }, theme.name)))] })] }), _jsxs("section", { className: "appearance-panel appearance-details", children: [_jsx("h2", { children: "Preview" }), _jsxs("div", { className: "appearance-preview", style: { color: previewTheme.foreground, background: previewTheme.background }, children: [_jsx("div", { className: "appearance-preview-dots", children: previewTheme.palette.slice(1, 7).map((color, index) => (_jsx("i", { style: { background: color } }, `${color}-${index}`))) }), _jsxs("code", { children: [_jsx("span", { style: { color: previewTheme.palette[2] }, children: "ghosttea" }), " ", _jsx("span", { style: { color: previewTheme.palette[4] }, children: "~/projects" }), " $ cargo test", _jsx("br", {}), "All systems steeping."] }), _jsx("i", { className: "appearance-preview-cursor", style: { color: previewTheme.cursorText, background: previewTheme.cursor }, children: "_" })] }), _jsxs("label", { className: "appearance-range", children: [_jsxs("span", { children: ["Background opacity ", _jsxs("output", { children: [Math.round(opacity * 100), "%"] })] }), _jsx("input", { type: "range", min: "0", max: "1", step: "0.01", value: opacity, onChange: (event) => setOpacity(event.currentTarget.valueAsNumber) })] }), _jsxs("label", { className: "appearance-check", children: [_jsx("input", { type: "checkbox", checked: opacityCells, onChange: (event) => setOpacityCells(event.currentTarget.checked) }), _jsx("span", { children: "Apply opacity to explicit cell backgrounds" })] }), backdropBlur ? (_jsx(BackdropBlurControl, { bridge: backdropBlur })) : (_jsx("p", { className: "appearance-help", children: "Desktop transparency and background blur depend on your operating system and app host." })), _jsx("h2", { children: "Shader stack" }), _jsx("p", { className: "appearance-help", children: "Effects run top-to-bottom. Animated effects repaint while this window is focused." }), _jsx("div", { className: "appearance-shader-list", children: [...GHOSTTEA_SHADER_OPTIONS]
162
+ return (_jsx("div", { className: "appearance-settings-backdrop", role: "presentation", onMouseDown: (event) => event.target === event.currentTarget && requestClose(), children: _jsxs("section", { className: "appearance-settings", role: "dialog", "aria-modal": "true", "aria-labelledby": "settings-title", children: [_jsxs("header", { children: [_jsxs("div", { children: [_jsx("h1", { id: "settings-title", children: "Settings" }), _jsx("p", { children: "Profile-wide terminal appearance and Ghostty-compatible configuration." })] }), _jsx("button", { type: "button", className: "appearance-close", onClick: requestClose, "aria-label": "Close settings", children: "\u00D7" })] }), _jsxs("div", { className: "settings-layout", children: [_jsxs("nav", { className: "settings-sidebar", "aria-label": "Settings sections", children: [onSave ? (_jsxs("button", { type: "button", className: section === "appearance" ? "is-selected" : "", "aria-current": section === "appearance" ? "page" : undefined, disabled: advancedDirty, title: advancedDirty ? "Save or revert the Advanced draft before switching sections" : undefined, onClick: () => selectSection("appearance"), children: [_jsx("span", { children: "Appearance" }), _jsx("small", { children: "Themes & shaders" })] })) : null, configEditor ? (_jsxs("button", { type: "button", className: section === "advanced" ? "is-selected" : "", "aria-current": section === "advanced" ? "page" : undefined, disabled: appearanceDirty, title: appearanceDirty ? "Apply or cancel Appearance changes before switching sections" : undefined, onClick: () => selectSection("advanced"), children: [_jsx("span", { children: "Advanced" }), _jsx("small", { children: "Ghostty config" })] })) : null, appearanceDirty ? (_jsx("p", { className: "settings-sidebar-note", children: "Apply or cancel Appearance edits to switch." })) : null, advancedDirty ? (_jsx("p", { className: "settings-sidebar-note", children: "Save or revert the Advanced draft to switch." })) : null] }), _jsxs("div", { className: "settings-content", children: [_jsxs("div", { className: `settings-page appearance-settings-page${section === "appearance" ? " is-active" : ""}`, children: [appearanceStale ? (_jsxs("div", { className: "config-conflict appearance-config-stale", role: "alert", children: [_jsxs("div", { children: [_jsx("strong", { children: "The configuration changed while Appearance had pending edits." }), _jsx("p", { children: "Choose whether to reload the current values or explicitly rebase your pending appearance." })] }), _jsxs("span", { children: [_jsx("button", { type: "button", onClick: () => resetAppearanceToConfig(observedConfig), children: "Reload current values" }), _jsx("button", { type: "button", onClick: acknowledgeLatestAppearanceBase, children: "Keep my pending edits" })] })] })) : null, _jsxs("div", { className: "appearance-settings-grid", children: [_jsxs("section", { className: "appearance-panel", children: [_jsxs("h2", { children: ["Color theme ", _jsx("span", { children: GHOSTTY_COLOR_THEMES.length })] }), _jsx("input", { className: "appearance-search", value: query, onChange: (event) => setQuery(event.currentTarget.value), placeholder: "Search Ghostty themes", "aria-label": "Search Ghostty themes", autoFocus: section === "appearance" }), _jsxs("div", { className: "appearance-theme-list", role: "listbox", "aria-label": "Color themes", children: [!matchedTheme ? (_jsx(ThemeChoice, { theme: currentTheme, selected: themeName === null, onSelect: () => setThemeName(null) })) : null, selectedTheme && !filteredThemes.some((theme) => theme.name === selectedTheme.name) ? (_jsx(ThemeChoice, { theme: selectedTheme, selected: true, onSelect: () => setThemeName(selectedTheme.name) })) : null, filteredThemes.map((theme) => (_jsx(ThemeChoice, { theme: theme, selected: theme.name === selectedTheme?.name, onSelect: () => setThemeName(theme.name) }, theme.name)))] })] }), _jsxs("section", { className: "appearance-panel appearance-details", children: [_jsx("h2", { children: "Preview" }), _jsxs("div", { className: "appearance-preview", style: { color: previewTheme.foreground, background: previewTheme.background }, children: [_jsx("div", { className: "appearance-preview-dots", children: previewTheme.palette.slice(1, 7).map((color, index) => (_jsx("i", { style: { background: color } }, `${color}-${index}`))) }), _jsxs("code", { children: [_jsx("span", { style: { color: previewTheme.palette[2] }, children: "ghosttea" }), " ", _jsx("span", { style: { color: previewTheme.palette[4] }, children: "~/projects" }), " $ cargo test", _jsx("br", {}), "All systems steeping."] }), _jsx("i", { className: "appearance-preview-cursor", style: { color: previewTheme.cursorText, background: previewTheme.cursor }, children: "_" })] }), _jsxs("label", { className: "appearance-range", children: [_jsxs("span", { children: ["Background opacity ", _jsxs("output", { children: [Math.round(opacity * 100), "%"] })] }), _jsx("input", { type: "range", min: "0", max: "1", step: "0.01", value: opacity, onChange: (event) => setOpacity(event.currentTarget.valueAsNumber) })] }), _jsxs("label", { className: "appearance-check", children: [_jsx("input", { type: "checkbox", checked: opacityCells, onChange: (event) => setOpacityCells(event.currentTarget.checked) }), _jsx("span", { children: "Apply opacity to explicit cell backgrounds" })] }), backdropBlur ? (_jsx(BackdropBlurControl, { bridge: backdropBlur })) : (_jsx("p", { className: "appearance-help", children: "Desktop transparency and background blur depend on your operating system and app host." })), _jsx("h2", { children: "Readability" }), _jsxs("label", { className: "appearance-check", children: [_jsx("input", { type: "checkbox", checked: lightAdaptation === "auto", onChange: (event) => setLightAdaptation(event.currentTarget.checked ? "auto" : "off") }), _jsx("span", { children: "Restyle apps that paint their own dark background when a light theme is active" })] }), _jsxs("label", { className: "appearance-range", children: [_jsxs("span", { children: ["Minimum text contrast ", _jsx("output", { children: minimumContrast > 1 ? `${minimumContrast}:1` : "Off" })] }), _jsx("input", { type: "range", min: "1", max: Math.max(7, minimumContrast), step: "0.5", value: minimumContrast, onChange: (event) => setMinimumContrast(event.currentTarget.valueAsNumber) })] }), _jsx("p", { className: "appearance-help", children: "Text below this ratio against its background is lightened or darkened, keeping its hue. 4.5:1 is the WCAG AA level for body text." }), _jsx("h2", { children: "Shader stack" }), _jsx("p", { className: "appearance-help", children: "Effects run top-to-bottom. Animated effects repaint while this window is focused." }), _jsx("div", { className: "appearance-shader-list", children: [...GHOSTTEA_SHADER_OPTIONS]
153
163
  .sort((left, right) => {
154
164
  const leftIndex = effects.indexOf(left.id);
155
165
  const rightIndex = effects.indexOf(right.id);