Sebastian Herrlinger 1 месяц назад
Родитель
Сommit
eeee6cf3ae
1 измененных файлов с 9 добавлено и 1 удалено
  1. 9 1
      .opencode/plugins/tui-smoke.tsx

+ 9 - 1
.opencode/plugins/tui-smoke.tsx

@@ -1,7 +1,7 @@
 /** @jsxImportSource @opentui/solid */
 import mytheme from "../themes/mytheme.json" with { type: "json" }
 import { useKeyboard, useTerminalDimensions } from "@opentui/solid"
-import type { RGBA } from "@opentui/core"
+import { VignetteEffect, type RGBA } from "@opentui/core"
 import type { TuiApi, TuiPluginInput } from "@opencode-ai/plugin/tui"
 
 const tabs = ["overview", "counter", "help"]
@@ -12,12 +12,18 @@ const pick = (value: unknown, fallback: string) => {
   return value
 }
 
+const num = (value: unknown, fallback: number) => {
+  if (typeof value !== "number") return fallback
+  return value
+}
+
 const cfg = (options: Record<string, unknown> | undefined) => {
   return {
     label: pick(options?.label, "smoke"),
     modal: pick(options?.modal, "ctrl+shift+m"),
     screen: pick(options?.screen, "ctrl+shift+o"),
     route: pick(options?.route, "workspace-smoke"),
+    vignette: Math.max(0, num(options?.vignette, 0.35)),
   }
 }
 
@@ -641,6 +647,8 @@ const tui = async (input: TuiPluginInput, options?: Record<string, unknown>) =>
 
   const value = cfg(options)
   const route = names(value)
+  const fx = new VignetteEffect(value.vignette)
+  input.renderer.addPostProcessFn(fx.apply.bind(fx))
 
   input.api.route.register([
     {