From 9220b821218ffae7488e14a4d290578df135bb49 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Thu, 5 Nov 2026 10:01:36 +0000 Subject: [PATCH] feat(pikvm): let the owner skip the confirmation of power actions and keys power-action and send-key are now approvalOverridable. The add-on page has an "Ask before acting" section with Ask each time (default) or Don't ask for each of them, with a plain warning that a chat can then switch the machine off at once. type-text has no such choice and always asks. The connection row lists which tools run without asking. The page strings are translated to Italian and the shared connector pages show the same list in the access view and the access preview. Assisted-by: Claude:claude-sonnet-5-5 --- .../internal/connector-ui/src/AccessView.jsx | 4 +- .../connector-ui/src/ApprovalsView.jsx | 29 +++ .../connector-ui/src/CapabilitiesPanel.jsx | 2 + addons/internal/connector-ui/src/approvals.js | 23 +++ .../internal/connector-ui/src/connector.css | 8 + .../connector-ui/src/i18n/connector.de.json | 13 +- .../connector-ui/src/i18n/connector.en.json | 13 +- .../connector-ui/src/i18n/connector.es.json | 13 +- .../connector-ui/src/i18n/connector.fr.json | 13 +- .../connector-ui/src/i18n/connector.id.json | 13 +- .../connector-ui/src/i18n/connector.it.json | 13 +- .../connector-ui/src/i18n/connector.ko.json | 13 +- .../src/i18n/connector.pt-BR.json | 13 +- .../src/i18n/connector.zh-CN.json | 13 +- addons/pikvm/internal/tools/tools.go | 5 +- addons/pikvm/internal/tools/write.go | 5 +- addons/pikvm/manifest.json | 28 +-- addons/pikvm/skills/pikvm/SKILL.md | 2 +- addons/pikvm/ui/src/ApprovalSettings.jsx | 71 +++++++ addons/pikvm/ui/src/addon.jsx | 21 +++ addons/pikvm/ui/src/approval.js | 39 ++++ addons/pikvm/ui/src/i18n/pikvm.de.json | 43 ++++- addons/pikvm/ui/src/i18n/pikvm.en.json | 43 ++++- addons/pikvm/ui/src/i18n/pikvm.es.json | 43 ++++- addons/pikvm/ui/src/i18n/pikvm.fr.json | 43 ++++- addons/pikvm/ui/src/i18n/pikvm.id.json | 43 ++++- addons/pikvm/ui/src/i18n/pikvm.it.json | 43 ++++- addons/pikvm/ui/src/i18n/pikvm.ko.json | 43 ++++- addons/pikvm/ui/src/i18n/pikvm.pt-BR.json | 43 ++++- addons/pikvm/ui/src/i18n/pikvm.zh-CN.json | 43 ++++- addons/pikvm/ui/test/approval.test.mjs | 74 ++++++++ core/http/endpoints/addons/apps_test.go | 2 +- .../e2e/connector-permissions.spec.js | 40 ++++ core/http/react-ui/e2e/pikvm-addon.spec.js | 176 ++++++++++++++++++ core/http/react-ui/e2e/studio-addon.js | 4 +- docs/content/features/pikvm.md | 19 +- 36 files changed, 943 insertions(+), 113 deletions(-) create mode 100644 addons/internal/connector-ui/src/ApprovalsView.jsx create mode 100644 addons/internal/connector-ui/src/approvals.js create mode 100644 addons/pikvm/ui/src/ApprovalSettings.jsx create mode 100644 addons/pikvm/ui/src/approval.js create mode 100644 addons/pikvm/ui/test/approval.test.mjs create mode 100644 core/http/react-ui/e2e/pikvm-addon.spec.js diff --git a/addons/internal/connector-ui/src/AccessView.jsx b/addons/internal/connector-ui/src/AccessView.jsx index 7122d56e1d..631f141464 100644 --- a/addons/internal/connector-ui/src/AccessView.jsx +++ b/addons/internal/connector-ui/src/AccessView.jsx @@ -5,6 +5,7 @@ import { useCallback, useEffect, useState } from 'react' import { Notice } from './controls' import { connectorsApi } from './api' import { pageLocale } from './connector' +import ApprovalsView from './ApprovalsView' export default function AccessView({ binding, capabilities, s, version }) { const [view, setView] = useState(null) @@ -27,6 +28,7 @@ export default function AccessView({ binding, capabilities, s, version }) { {view && (<> +

{s('access.recentHelp')}

{(view.recent || []).length === 0 ?

{s('access.recentNone')}

: (