From 5ccf06c3576866fdc1c21c20ddd9ae45f693d5f8 Mon Sep 17 00:00:00 2001 From: sawka Date: Mon, 9 Feb 2026 21:18:32 -0800 Subject: [PATCH 1/5] hide AI button config --- docs/docs/config.mdx | 1 + frontend/app/tab/tabbar.tsx | 7 ++++++- frontend/types/gotypes.d.ts | 1 + pkg/wconfig/defaultconfig/settings.json | 1 + pkg/wconfig/metaconsts.go | 1 + pkg/wconfig/settingsconfig.go | 1 + schema/settings.json | 3 +++ 7 files changed, 14 insertions(+), 1 deletion(-) diff --git a/docs/docs/config.mdx b/docs/docs/config.mdx index aad9e7d8c6..5551aa95aa 100644 --- a/docs/docs/config.mdx +++ b/docs/docs/config.mdx @@ -40,6 +40,7 @@ wsh editconfig | app:showoverlayblocknums | bool | Set to false to disable the Ctrl+Shift block number overlay that appears when holding Ctrl+Shift (defaults to true) | | app:ctrlvpaste | bool | On Windows/Linux, when null (default) uses Control+V on Windows only. Set to true to force Control+V on all non-macOS platforms, false to disable the accelerator. macOS always uses Command+V regardless of this setting | | app:confirmquit | bool | Set to false to disable the quit confirmation dialog when closing Wave Terminal (defaults to true, requires app restart) | +| app:hideaibutton | bool | Set to true to hide the AI button in the tab bar (defaults to false) | | ai:preset | string | the default AI preset to use | | ai:baseurl | string | Set the AI Base Url (must be OpenAI compatible) | | ai:apitoken | string | your AI api token | diff --git a/frontend/app/tab/tabbar.tsx b/frontend/app/tab/tabbar.tsx index acd23ad3a9..3f3e662a88 100644 --- a/frontend/app/tab/tabbar.tsx +++ b/frontend/app/tab/tabbar.tsx @@ -5,7 +5,7 @@ import { Button } from "@/app/element/button"; import { modalsModel } from "@/app/store/modalmodel"; import { WorkspaceLayoutModel } from "@/app/workspace/workspace-layout-model"; import { deleteLayoutModelForTab } from "@/layout/index"; -import { atoms, createTab, getApi, globalStore, setActiveTab } from "@/store/global"; +import { atoms, createTab, getApi, getSettingsKeyAtom, globalStore, setActiveTab } from "@/store/global"; import { isMacOS, isWindows } from "@/util/platformutil"; import { fireAndForget } from "@/util/util"; import { useAtomValue } from "jotai"; @@ -44,12 +44,17 @@ interface TabBarProps { const WaveAIButton = memo(() => { const aiPanelOpen = useAtomValue(WorkspaceLayoutModel.getInstance().panelVisibleAtom); + const hideAiButton = useAtomValue(getSettingsKeyAtom("app:hideaibutton")); const onClick = () => { const currentVisible = WorkspaceLayoutModel.getInstance().getAIPanelVisible(); WorkspaceLayoutModel.getInstance().setAIPanelVisible(!currentVisible); }; + if (hideAiButton) { + return null; + } + return (
Date: Mon, 9 Feb 2026 21:43:04 -0800 Subject: [PATCH 2/5] app:disablectrlshiftarrows and app:disablectrlshiftdisplay --- docs/docs/config.mdx | 2 ++ frontend/app/store/keymodel.ts | 31 ++++++++++++++++++++----- frontend/types/gotypes.d.ts | 2 ++ pkg/wconfig/defaultconfig/settings.json | 2 ++ pkg/wconfig/metaconsts.go | 2 ++ pkg/wconfig/settingsconfig.go | 2 ++ schema/settings.json | 6 +++++ 7 files changed, 41 insertions(+), 6 deletions(-) diff --git a/docs/docs/config.mdx b/docs/docs/config.mdx index 5551aa95aa..8fa7578958 100644 --- a/docs/docs/config.mdx +++ b/docs/docs/config.mdx @@ -41,6 +41,8 @@ wsh editconfig | app:ctrlvpaste | bool | On Windows/Linux, when null (default) uses Control+V on Windows only. Set to true to force Control+V on all non-macOS platforms, false to disable the accelerator. macOS always uses Command+V regardless of this setting | | app:confirmquit | bool | Set to false to disable the quit confirmation dialog when closing Wave Terminal (defaults to true, requires app restart) | | app:hideaibutton | bool | Set to true to hide the AI button in the tab bar (defaults to false) | +| app:disablectrlshiftarrows | bool | Set to true to disable Ctrl+Shift+Arrow keybindings for block navigation (defaults to false) | +| app:disablectrlshiftdisplay | bool | Set to true to disable the Ctrl+Shift visual indicator display (defaults to false) | | ai:preset | string | the default AI preset to use | | ai:baseurl | string | Set the AI Base Url (must be OpenAI compatible) | | ai:apitoken | string | your AI api token | diff --git a/frontend/app/store/keymodel.ts b/frontend/app/store/keymodel.ts index 318d1d775a..c83edbb779 100644 --- a/frontend/app/store/keymodel.ts +++ b/frontend/app/store/keymodel.ts @@ -76,12 +76,15 @@ function getSimpleControlShiftAtom() { function setControlShift() { globalStore.set(simpleControlShiftAtom, true); - setTimeout(() => { - const simpleState = globalStore.get(simpleControlShiftAtom); - if (simpleState) { - globalStore.set(atoms.controlShiftDelayAtom, true); - } - }, 400); + const disableDisplay = globalStore.get(getSettingsKeyAtom("app:disablectrlshiftdisplay")); + if (!disableDisplay) { + setTimeout(() => { + const simpleState = globalStore.get(simpleControlShiftAtom); + if (simpleState) { + globalStore.set(atoms.controlShiftDelayAtom, true); + } + }, 400); + } } function unsetControlShift() { @@ -528,18 +531,34 @@ function registerGlobalKeys() { return true; }); globalKeyMap.set("Ctrl:Shift:ArrowUp", () => { + const disableCtrlShiftArrows = globalStore.get(getSettingsKeyAtom("app:disablectrlshiftarrows")); + if (disableCtrlShiftArrows) { + return false; + } switchBlockInDirection(NavigateDirection.Up); return true; }); globalKeyMap.set("Ctrl:Shift:ArrowDown", () => { + const disableCtrlShiftArrows = globalStore.get(getSettingsKeyAtom("app:disablectrlshiftarrows")); + if (disableCtrlShiftArrows) { + return false; + } switchBlockInDirection(NavigateDirection.Down); return true; }); globalKeyMap.set("Ctrl:Shift:ArrowLeft", () => { + const disableCtrlShiftArrows = globalStore.get(getSettingsKeyAtom("app:disablectrlshiftarrows")); + if (disableCtrlShiftArrows) { + return false; + } switchBlockInDirection(NavigateDirection.Left); return true; }); globalKeyMap.set("Ctrl:Shift:ArrowRight", () => { + const disableCtrlShiftArrows = globalStore.get(getSettingsKeyAtom("app:disablectrlshiftarrows")); + if (disableCtrlShiftArrows) { + return false; + } switchBlockInDirection(NavigateDirection.Right); return true; }); diff --git a/frontend/types/gotypes.d.ts b/frontend/types/gotypes.d.ts index f45ddfee50..78ae204830 100644 --- a/frontend/types/gotypes.d.ts +++ b/frontend/types/gotypes.d.ts @@ -1238,6 +1238,8 @@ declare global { "app:ctrlvpaste"?: boolean; "app:confirmquit"?: boolean; "app:hideaibutton"?: boolean; + "app:disablectrlshiftarrows"?: boolean; + "app:disablectrlshiftdisplay"?: boolean; "feature:waveappbuilder"?: boolean; "ai:*"?: boolean; "ai:preset"?: string; diff --git a/pkg/wconfig/defaultconfig/settings.json b/pkg/wconfig/defaultconfig/settings.json index 016897d1c2..f381020129 100644 --- a/pkg/wconfig/defaultconfig/settings.json +++ b/pkg/wconfig/defaultconfig/settings.json @@ -6,6 +6,8 @@ "app:defaultnewblock": "term", "app:confirmquit": true, "app:hideaibutton": false, + "app:disablectrlshiftarrows": false, + "app:disablectrlshiftdisplay": false, "autoupdate:enabled": true, "autoupdate:installonquit": true, "autoupdate:intervalms": 3600000, diff --git a/pkg/wconfig/metaconsts.go b/pkg/wconfig/metaconsts.go index 408f4411c2..179c7927fd 100644 --- a/pkg/wconfig/metaconsts.go +++ b/pkg/wconfig/metaconsts.go @@ -14,6 +14,8 @@ const ( ConfigKey_AppCtrlVPaste = "app:ctrlvpaste" ConfigKey_AppConfirmQuit = "app:confirmquit" ConfigKey_AppHideAiButton = "app:hideaibutton" + ConfigKey_AppDisableCtrlShiftArrows = "app:disablectrlshiftarrows" + ConfigKey_AppDisableCtrlShiftDisplay = "app:disablectrlshiftdisplay" ConfigKey_FeatureWaveAppBuilder = "feature:waveappbuilder" diff --git a/pkg/wconfig/settingsconfig.go b/pkg/wconfig/settingsconfig.go index 051c9e66e4..c744f77aa3 100644 --- a/pkg/wconfig/settingsconfig.go +++ b/pkg/wconfig/settingsconfig.go @@ -61,6 +61,8 @@ type SettingsType struct { AppCtrlVPaste *bool `json:"app:ctrlvpaste,omitempty"` AppConfirmQuit *bool `json:"app:confirmquit,omitempty"` AppHideAiButton bool `json:"app:hideaibutton,omitempty"` + AppDisableCtrlShiftArrows bool `json:"app:disablectrlshiftarrows,omitempty"` + AppDisableCtrlShiftDisplay bool `json:"app:disablectrlshiftdisplay,omitempty"` FeatureWaveAppBuilder bool `json:"feature:waveappbuilder,omitempty"` diff --git a/schema/settings.json b/schema/settings.json index 7a87aca8bb..0f6365d711 100644 --- a/schema/settings.json +++ b/schema/settings.json @@ -29,6 +29,12 @@ "app:hideaibutton": { "type": "boolean" }, + "app:disablectrlshiftarrows": { + "type": "boolean" + }, + "app:disablectrlshiftdisplay": { + "type": "boolean" + }, "feature:waveappbuilder": { "type": "boolean" }, From c0e328c15dcd9d862e2a933707e47bb399cea2d1 Mon Sep 17 00:00:00 2001 From: sawka Date: Mon, 9 Feb 2026 21:53:15 -0800 Subject: [PATCH 3/5] make config.mdx match v0.14 config --- docs/docs/config.mdx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/docs/docs/config.mdx b/docs/docs/config.mdx index 8fa7578958..096de5876e 100644 --- a/docs/docs/config.mdx +++ b/docs/docs/config.mdx @@ -107,7 +107,7 @@ wsh editconfig | window:dimensions | string | set the default dimensions for new windows using the format "WIDTHxHEIGHT" (e.g. "1920x1080"). when a new window is created, these dimensions will be automatically applied. The width and height values should be specified in pixels. | | telemetry:enabled | bool | set to enable/disable telemetry | -For reference, this is the current default configuration (v0.11.5): +For reference, this is the current default configuration (v0.14.0): ```json { @@ -117,6 +117,9 @@ For reference, this is the current default configuration (v0.11.5): "ai:timeoutms": 60000, "app:defaultnewblock": "term", "app:confirmquit": true, + "app:hideaibutton": false, + "app:disablectrlshiftarrows": false, + "app:disablectrlshiftdisplay": false, "autoupdate:enabled": true, "autoupdate:installonquit": true, "autoupdate:intervalms": 3600000, @@ -131,6 +134,7 @@ For reference, this is the current default configuration (v0.11.5): "window:magnifiedblockopacity": 0.6, "window:magnifiedblocksize": 0.9, "window:magnifiedblockblurprimarypx": 10, + "window:fullscreenonlaunch": false, "window:magnifiedblockblursecondarypx": 2, "window:confirmclose": true, "window:savelastwindow": true, @@ -138,7 +142,7 @@ For reference, this is the current default configuration (v0.11.5): "term:bellsound": false, "term:bellindicator": false, "term:copyonselect": true, - "term:durable": true, + "term:durable": false, "waveai:showcloudmodes": true, "waveai:defaultmode": "waveai@balanced" } From 4336ca373f2d47d5e1e0a5eb61228abfe0dd54b1 Mon Sep 17 00:00:00 2001 From: sawka Date: Tue, 10 Feb 2026 09:39:36 -0800 Subject: [PATCH 4/5] fix term:durable default --- docs/docs/config.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/docs/config.mdx b/docs/docs/config.mdx index 096de5876e..465524e9d8 100644 --- a/docs/docs/config.mdx +++ b/docs/docs/config.mdx @@ -70,7 +70,7 @@ wsh editconfig | term:macoptionismeta | bool | on macOS, treat the Option key as Meta key for terminal keybindings (default false) | | term:bellsound | bool | when enabled, plays the system beep sound when the terminal bell (BEL character) is received (default false) | | term:bellindicator | bool | when enabled, shows a visual indicator in the tab when the terminal bell is received (default false) | -| term:durable | bool | makes remote terminal sessions durable across network disconnects (defaults to true) | +| term:durable | bool | makes remote terminal sessions durable across network disconnects (defaults to false) | | editor:minimapenabled | bool | set to false to disable editor minimap | | editor:stickyscrollenabled | bool | enables monaco editor's stickyScroll feature (pinning headers of current context, e.g. class names, method names, etc.), defaults to false | | editor:wordwrap | bool | set to true to enable word wrapping in the editor (defaults to false) | From 38baa726aa050061f4f0d7449f9c5cf7559ec52c Mon Sep 17 00:00:00 2001 From: sawka Date: Tue, 10 Feb 2026 09:41:27 -0800 Subject: [PATCH 5/5] add doc for fullscreenonlaunch --- docs/docs/config.mdx | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/docs/config.mdx b/docs/docs/config.mdx index 465524e9d8..152655a0b0 100644 --- a/docs/docs/config.mdx +++ b/docs/docs/config.mdx @@ -102,6 +102,7 @@ wsh editconfig | window:showmenubar | bool | set to use the OS-native menu bar (Windows and Linux only, requires app restart) | | window:nativetitlebar | bool | set to use the OS-native title bar, rather than the overlay (Windows and Linux only, requires app restart) | | window:disablehardwareacceleration | bool | set to disable Chromium hardware acceleration to resolve graphical bugs (requires app restart) | +| window:fullscreenonlaunch | bool | set to true to launch the foreground window in fullscreen mode (defaults to false) | | window:savelastwindow | bool | when `true`, the last window that is closed is preserved and is reopened the next time the app is launched (defaults to `true`) | | window:confirmonclose | bool | when `true`, a prompt will ask a user to confirm that they want to close a window if it has an unsaved workspace with more than one tab (defaults to `true`) | | window:dimensions | string | set the default dimensions for new windows using the format "WIDTHxHEIGHT" (e.g. "1920x1080"). when a new window is created, these dimensions will be automatically applied. The width and height values should be specified in pixels. |