From f82959371b806d7264410002956c6b1820eb95fa Mon Sep 17 00:00:00 2001 From: Dev-020 Date: Mon, 11 May 2026 23:16:04 +0800 Subject: [PATCH 1/2] fix(plugin): show synthesis-doc in plugin VimInput command palette pluginOnly: false hid the action from the plugin's Ctrl+K palette. Now that the plugin port is complete, flip to pluginOnly: true so it appears in both the web-app and plugin command palettes. Co-Authored-By: Claude Sonnet 4.6 --- components/vim-input.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/components/vim-input.tsx b/components/vim-input.tsx index cd50ecf..067b68c 100644 --- a/components/vim-input.tsx +++ b/components/vim-input.tsx @@ -15,7 +15,7 @@ const ALL_ACTION_ITEMS = [ { id: "import-nodepad", icon: FolderInput, label: "Import", sub: ".nodepad", pluginOnly: false }, { id: "export-md", icon: Download, label: "Export", sub: "markdown", pluginOnly: true }, { id: "copy-md", icon: Clipboard, label: "Copy", sub: "markdown", pluginOnly: true }, - { id: "synthesis-doc", icon: ScrollText, label: "Synthesis", sub: "document", pluginOnly: false }, + { id: "synthesis-doc", icon: ScrollText, label: "Synthesis", sub: "document", pluginOnly: true }, { id: "clear", icon: Trash2, label: "Clear", sub: "canvas", pluginOnly: true }, ] From 972b25d8bf42ae8e6be957548d328538967f5e05 Mon Sep 17 00:00:00 2001 From: Dev-020 Date: Mon, 11 May 2026 23:21:32 +0800 Subject: [PATCH 2/2] feat: make Undo and Commands hint buttons tappable on touch devices MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The bottom-right keyboard shortcut hints were purely decorative divs. On tablets and touch screens there are no keyboard shortcuts, so they were the only discoverable entry point but had no action. - Undo button: calls onUndo() prop (wired to the existing undo() callback in page.tsx) — same behaviour as Cmd/Ctrl+Z - Commands button: calls setIsCommandKOpen(true) — opens the command palette exactly as Cmd/Ctrl+K would - Both get a subtle hover/active style to signal they are interactive - onUndo? is optional so the plugin and any other consumer of VimInput that doesn't pass it just renders a no-op tap Co-Authored-By: Claude Sonnet 4.6 --- app/page.tsx | 1 + components/vim-input.tsx | 19 ++++++++++++++----- 2 files changed, 15 insertions(+), 5 deletions(-) diff --git a/app/page.tsx b/app/page.tsx index b987939..c54c090 100644 --- a/app/page.tsx +++ b/app/page.tsx @@ -1188,6 +1188,7 @@ export default function Page() { onCommand={handleCommand} isCommandKOpen={isCommandKOpen} setIsCommandKOpen={setIsCommandKOpen} + onUndo={undo} /> diff --git a/components/vim-input.tsx b/components/vim-input.tsx index 067b68c..89d0c30 100644 --- a/components/vim-input.tsx +++ b/components/vim-input.tsx @@ -27,11 +27,12 @@ interface VimInputProps { isCommandKOpen: boolean setIsCommandKOpen: (open: boolean) => void isPlugin?: boolean + onUndo?: () => void } // ─── Component ─────────────────────────────────────────────────────────────── -export function VimInput({ onSubmit, onCommand, isCommandKOpen, setIsCommandKOpen, isPlugin }: VimInputProps) { +export function VimInput({ onSubmit, onCommand, isCommandKOpen, setIsCommandKOpen, isPlugin, onUndo }: VimInputProps) { const [value, setValue] = React.useState("") const [search, setSearch] = React.useState("") const [focusedIdx, setFocusedIdx] = React.useState(0) @@ -365,23 +366,31 @@ export function VimInput({ onSubmit, onCommand, isCommandKOpen, setIsCommandKOpe
-
+
+
-
+
+