diff --git a/page/package-lock.json b/page/package-lock.json index e7a70c8f..b3db878b 100644 --- a/page/package-lock.json +++ b/page/package-lock.json @@ -37,6 +37,7 @@ "react-resizable-panels": "^3.0.4", "react-router-dom": "^7.7.1", "react-window": "^1.8.11", + "shell-quote": "^1.8.3", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.11", "tw-animate-css": "^1.3.6", @@ -49,6 +50,7 @@ "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", "@types/react-helmet": "^6.1.11", + "@types/shell-quote": "^1.7.5", "@vitejs/plugin-react": "^4.7.0", "eslint": "^9.32.0", "eslint-plugin-react-hooks": "^6.0.0", @@ -3169,6 +3171,13 @@ "@types/react": "*" } }, + "node_modules/@types/shell-quote": { + "version": "1.7.5", + "resolved": "https://registry.npmjs.org/@types/shell-quote/-/shell-quote-1.7.5.tgz", + "integrity": "sha512-+UE8GAGRPbJVQDdxi16dgadcBfQ+KG2vgZhV1+3A1XmHbmwcdwhCUwIdy+d3pAGrbvgRoVSjeI9vOWyq376Yzw==", + "dev": true, + "license": "MIT" + }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "8.38.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.38.0.tgz", @@ -5546,6 +5555,18 @@ "node": ">=8" } }, + "node_modules/shell-quote": { + "version": "1.8.3", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.3.tgz", + "integrity": "sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", diff --git a/page/package.json b/page/package.json index 224f6fe5..2b577b06 100644 --- a/page/package.json +++ b/page/package.json @@ -39,6 +39,7 @@ "react-resizable-panels": "^3.0.4", "react-router-dom": "^7.7.1", "react-window": "^1.8.11", + "shell-quote": "^1.8.3", "tailwind-merge": "^3.3.1", "tailwindcss": "^4.1.11", "tw-animate-css": "^1.3.6", @@ -51,6 +52,7 @@ "@types/react": "^19.1.9", "@types/react-dom": "^19.1.7", "@types/react-helmet": "^6.1.11", + "@types/shell-quote": "^1.7.5", "@vitejs/plugin-react": "^4.7.0", "eslint": "^9.32.0", "eslint-plugin-react-hooks": "^6.0.0", diff --git a/page/src/components/settings-menu.tsx b/page/src/components/settings-menu.tsx index f080f33c..0f7eb9d5 100644 --- a/page/src/components/settings-menu.tsx +++ b/page/src/components/settings-menu.tsx @@ -12,6 +12,7 @@ import { PopoverTrigger, } from "@/components/ui/popover"; import { ChevronDown } from "react-bootstrap-icons"; +import { Input } from "./ui/input"; interface SettingsMenuProps { settings: Settings; @@ -54,6 +55,10 @@ export class SettingsMenu extends React.Component { } } + updateArgv(commandLine: string) { + this.setState({ commandLine }); + } + render() { return (
@@ -64,6 +69,15 @@ export class SettingsMenu extends React.Component {

+
+ this.updateArgv(e.target.value)} + /> +
+