diff --git a/docs/docs/config.mdx b/docs/docs/config.mdx index aad9e7d8c6..152655a0b0 100644 --- a/docs/docs/config.mdx +++ b/docs/docs/config.mdx @@ -40,6 +40,9 @@ 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) | +| 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 | @@ -67,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) | @@ -99,12 +102,13 @@ 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. | | 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 { @@ -114,6 +118,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, @@ -128,6 +135,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, @@ -135,7 +143,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" } 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/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 (