vite-plugin-opencode-assistant 1.0.41 → 1.0.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/es/client/App.vue.js +21 -5
- package/es/client/composables/useHotkey.js +1 -1
- package/es/core/proxy-server.js +16 -0
- package/lib/client/App.vue.js +21 -5
- package/lib/client/composables/useHotkey.js +1 -1
- package/lib/client.js +978 -968
- package/lib/core/proxy-server.js +16 -0
- package/lib/style.css +1 -1
- package/package.json +4 -4
package/es/client/App.vue.js
CHANGED
|
@@ -193,14 +193,17 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
193
193
|
e.preventDefault();
|
|
194
194
|
handleToggle(!open.value);
|
|
195
195
|
});
|
|
196
|
-
|
|
197
|
-
e.preventDefault();
|
|
196
|
+
const toggleSelectMode = () => {
|
|
198
197
|
const win = window;
|
|
199
198
|
if (win.__VUE_INSPECTOR__) {
|
|
200
|
-
|
|
199
|
+
handleSelectModeChange(!selectMode.value);
|
|
201
200
|
} else {
|
|
202
201
|
showNotification("Vue Inspector \u672A\u52A0\u8F7D\uFF0C\u65E0\u6CD5\u4F7F\u7528\u5143\u7D20\u9009\u62E9\u529F\u80FD");
|
|
203
202
|
}
|
|
203
|
+
};
|
|
204
|
+
useHotkey("ctrl+p", (e) => {
|
|
205
|
+
e.preventDefault();
|
|
206
|
+
toggleSelectMode();
|
|
204
207
|
});
|
|
205
208
|
watch(serviceStatus, (status, oldStatus) => {
|
|
206
209
|
if (status !== "idle" && oldStatus === "idle") {
|
|
@@ -224,10 +227,18 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
224
227
|
}, 1e3);
|
|
225
228
|
}
|
|
226
229
|
const handleIframeMessage = (event) => {
|
|
227
|
-
var _a2;
|
|
230
|
+
var _a2, _b;
|
|
228
231
|
if (((_a2 = event.data) == null ? void 0 : _a2.type) === "OPENCODE_READY") {
|
|
229
232
|
sendThemeToIframe();
|
|
230
233
|
}
|
|
234
|
+
if (((_b = event.data) == null ? void 0 : _b.type) === "OPENCODE_KEYDOWN") {
|
|
235
|
+
if (event.data.key === "Escape" && selectMode.value) {
|
|
236
|
+
handleSelectModeChange(false);
|
|
237
|
+
}
|
|
238
|
+
if (event.data.ctrlKey && event.data.key.toLowerCase() === "p") {
|
|
239
|
+
toggleSelectMode();
|
|
240
|
+
}
|
|
241
|
+
}
|
|
231
242
|
};
|
|
232
243
|
window.addEventListener("message", handleIframeMessage);
|
|
233
244
|
});
|
|
@@ -264,7 +275,12 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
264
275
|
showNotification("\u5DF2\u6E05\u9664\u6240\u6709\u9009\u4E2D\u5143\u7D20");
|
|
265
276
|
};
|
|
266
277
|
const handleSelectModeChange = (val) => {
|
|
278
|
+
var _a2;
|
|
267
279
|
selectMode.value = val;
|
|
280
|
+
const isSplit = (_a2 = widgetRef.value) == null ? void 0 : _a2.isSplitMode;
|
|
281
|
+
if (val && !isSplit && open.value) {
|
|
282
|
+
open.value = false;
|
|
283
|
+
}
|
|
268
284
|
if (!val && !open.value) {
|
|
269
285
|
open.value = true;
|
|
270
286
|
}
|
|
@@ -285,7 +301,7 @@ const __vue_sfc__ = /* @__PURE__ */ _defineComponent({
|
|
|
285
301
|
const handleFrameLoaded = () => {
|
|
286
302
|
iframeLoading.value = false;
|
|
287
303
|
};
|
|
288
|
-
const __returned__ = { props, open, selectMode, sessionListCollapsed, loading, widgetRef, retryingWarmup, initialTheme, autoOpen, hotkey, proxyPort, proxyHost, displayMode, splitMode, widgetTheme, splitPanelWidth, proxyBaseUrl, showNotification, serviceStatus, chromeMcpFailed, chromeMcpErrorType, chromeMcpErrorMessage, loadingText, updateStatusFromTask, setStarting, selectedElements, removeElement, clearElements, theme, sendThemeToIframe, sessions, loadingSessionList, currentSessionId, iframeSrc, iframeLoading, loadSessions, createSession, deleteSession, selectSession, updateSessionInfo, updateContext, serverSSE, opencodeSSE, thinking, sessionStates, showSessionListSkeleton, computedLoading, displayLoadingText, retryWarmup, ensureServicesStarted, handleToggle, handleSelectNode, handleClearSelected, handleSelectModeChange, handleSessionListCollapsedChange, handleThemeChange, handleSplitPanelWidthChange, handleRemoveSelectedNode, handleFrameLoaded, get OpenCodeWidget() {
|
|
304
|
+
const __returned__ = { props, open, selectMode, sessionListCollapsed, loading, widgetRef, retryingWarmup, initialTheme, autoOpen, hotkey, proxyPort, proxyHost, displayMode, splitMode, widgetTheme, splitPanelWidth, proxyBaseUrl, showNotification, serviceStatus, chromeMcpFailed, chromeMcpErrorType, chromeMcpErrorMessage, loadingText, updateStatusFromTask, setStarting, selectedElements, removeElement, clearElements, theme, sendThemeToIframe, sessions, loadingSessionList, currentSessionId, iframeSrc, iframeLoading, loadSessions, createSession, deleteSession, selectSession, updateSessionInfo, updateContext, serverSSE, opencodeSSE, thinking, sessionStates, showSessionListSkeleton, computedLoading, displayLoadingText, retryWarmup, ensureServicesStarted, toggleSelectMode, handleToggle, handleSelectNode, handleClearSelected, handleSelectModeChange, handleSessionListCollapsedChange, handleThemeChange, handleSplitPanelWidthChange, handleRemoveSelectedNode, handleFrameLoaded, get OpenCodeWidget() {
|
|
289
305
|
return OpenCodeWidget;
|
|
290
306
|
}, LoadingContent, ChromeWarmupError };
|
|
291
307
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
@@ -4,7 +4,7 @@ function parseHotkey(hotkeyStr) {
|
|
|
4
4
|
const parts = hotkeyStr.toLowerCase().split("+");
|
|
5
5
|
const key = parts.pop();
|
|
6
6
|
return {
|
|
7
|
-
ctrl: parts.includes("ctrl") || parts.includes("
|
|
7
|
+
ctrl: parts.includes("ctrl") || parts.includes("meta"),
|
|
8
8
|
shift: parts.includes("shift"),
|
|
9
9
|
alt: parts.includes("alt"),
|
|
10
10
|
key: key || "k"
|
package/es/core/proxy-server.js
CHANGED
|
@@ -116,6 +116,22 @@ function generateBridgeScript(options) {
|
|
|
116
116
|
}
|
|
117
117
|
});
|
|
118
118
|
|
|
119
|
+
// === \u952E\u76D8\u4E8B\u4EF6\u8F6C\u53D1\uFF08\u7528\u4E8E\u9000\u51FA\u9009\u62E9\u6A21\u5F0F\uFF09 ===
|
|
120
|
+
window.addEventListener("keydown", function(event) {
|
|
121
|
+
if (event.key === "Escape" || (event.ctrlKey && event.key.toLowerCase() === "p")) {
|
|
122
|
+
if (window.parent !== window) {
|
|
123
|
+
window.parent.postMessage({
|
|
124
|
+
type: "OPENCODE_KEYDOWN",
|
|
125
|
+
key: event.key,
|
|
126
|
+
ctrlKey: event.ctrlKey,
|
|
127
|
+
metaKey: event.metaKey,
|
|
128
|
+
shiftKey: event.shiftKey,
|
|
129
|
+
altKey: event.altKey
|
|
130
|
+
}, "*");
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}, true);
|
|
134
|
+
|
|
119
135
|
// === \u6700\u5C0F\u5316\u72B6\u6001\u6837\u5F0F ===
|
|
120
136
|
const minimizeStyles = \`
|
|
121
137
|
.opencode-minimized [data-dock-surface="tray"]:not([data-slot="permission-footer"]) {
|
package/lib/client/App.vue.js
CHANGED
|
@@ -224,14 +224,17 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
224
224
|
e.preventDefault();
|
|
225
225
|
handleToggle(!open.value);
|
|
226
226
|
});
|
|
227
|
-
|
|
228
|
-
e.preventDefault();
|
|
227
|
+
const toggleSelectMode = () => {
|
|
229
228
|
const win = window;
|
|
230
229
|
if (win.__VUE_INSPECTOR__) {
|
|
231
|
-
|
|
230
|
+
handleSelectModeChange(!selectMode.value);
|
|
232
231
|
} else {
|
|
233
232
|
showNotification("Vue Inspector \u672A\u52A0\u8F7D\uFF0C\u65E0\u6CD5\u4F7F\u7528\u5143\u7D20\u9009\u62E9\u529F\u80FD");
|
|
234
233
|
}
|
|
234
|
+
};
|
|
235
|
+
(0, import_useHotkey.useHotkey)("ctrl+p", (e) => {
|
|
236
|
+
e.preventDefault();
|
|
237
|
+
toggleSelectMode();
|
|
235
238
|
});
|
|
236
239
|
(0, import_vue2.watch)(serviceStatus, (status, oldStatus) => {
|
|
237
240
|
if (status !== "idle" && oldStatus === "idle") {
|
|
@@ -255,10 +258,18 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
255
258
|
}, 1e3);
|
|
256
259
|
}
|
|
257
260
|
const handleIframeMessage = (event) => {
|
|
258
|
-
var _a2;
|
|
261
|
+
var _a2, _b;
|
|
259
262
|
if (((_a2 = event.data) == null ? void 0 : _a2.type) === "OPENCODE_READY") {
|
|
260
263
|
sendThemeToIframe();
|
|
261
264
|
}
|
|
265
|
+
if (((_b = event.data) == null ? void 0 : _b.type) === "OPENCODE_KEYDOWN") {
|
|
266
|
+
if (event.data.key === "Escape" && selectMode.value) {
|
|
267
|
+
handleSelectModeChange(false);
|
|
268
|
+
}
|
|
269
|
+
if (event.data.ctrlKey && event.data.key.toLowerCase() === "p") {
|
|
270
|
+
toggleSelectMode();
|
|
271
|
+
}
|
|
272
|
+
}
|
|
262
273
|
};
|
|
263
274
|
window.addEventListener("message", handleIframeMessage);
|
|
264
275
|
});
|
|
@@ -295,7 +306,12 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
295
306
|
showNotification("\u5DF2\u6E05\u9664\u6240\u6709\u9009\u4E2D\u5143\u7D20");
|
|
296
307
|
};
|
|
297
308
|
const handleSelectModeChange = (val) => {
|
|
309
|
+
var _a2;
|
|
298
310
|
selectMode.value = val;
|
|
311
|
+
const isSplit = (_a2 = widgetRef.value) == null ? void 0 : _a2.isSplitMode;
|
|
312
|
+
if (val && !isSplit && open.value) {
|
|
313
|
+
open.value = false;
|
|
314
|
+
}
|
|
299
315
|
if (!val && !open.value) {
|
|
300
316
|
open.value = true;
|
|
301
317
|
}
|
|
@@ -316,7 +332,7 @@ const __vue_sfc__ = /* @__PURE__ */ (0, import_vue.defineComponent)({
|
|
|
316
332
|
const handleFrameLoaded = () => {
|
|
317
333
|
iframeLoading.value = false;
|
|
318
334
|
};
|
|
319
|
-
const __returned__ = { props, open, selectMode, sessionListCollapsed, loading, widgetRef, retryingWarmup, initialTheme, autoOpen, hotkey, proxyPort, proxyHost, displayMode, splitMode, widgetTheme, splitPanelWidth, proxyBaseUrl, showNotification, serviceStatus, chromeMcpFailed, chromeMcpErrorType, chromeMcpErrorMessage, loadingText, updateStatusFromTask, setStarting, selectedElements, removeElement, clearElements, theme, sendThemeToIframe, sessions, loadingSessionList, currentSessionId, iframeSrc, iframeLoading, loadSessions, createSession, deleteSession, selectSession, updateSessionInfo, updateContext, serverSSE, opencodeSSE, thinking, sessionStates, showSessionListSkeleton, computedLoading, displayLoadingText, retryWarmup, ensureServicesStarted, handleToggle, handleSelectNode, handleClearSelected, handleSelectModeChange, handleSessionListCollapsedChange, handleThemeChange, handleSplitPanelWidthChange, handleRemoveSelectedNode, handleFrameLoaded, get OpenCodeWidget() {
|
|
335
|
+
const __returned__ = { props, open, selectMode, sessionListCollapsed, loading, widgetRef, retryingWarmup, initialTheme, autoOpen, hotkey, proxyPort, proxyHost, displayMode, splitMode, widgetTheme, splitPanelWidth, proxyBaseUrl, showNotification, serviceStatus, chromeMcpFailed, chromeMcpErrorType, chromeMcpErrorMessage, loadingText, updateStatusFromTask, setStarting, selectedElements, removeElement, clearElements, theme, sendThemeToIframe, sessions, loadingSessionList, currentSessionId, iframeSrc, iframeLoading, loadSessions, createSession, deleteSession, selectSession, updateSessionInfo, updateContext, serverSSE, opencodeSSE, thinking, sessionStates, showSessionListSkeleton, computedLoading, displayLoadingText, retryWarmup, ensureServicesStarted, toggleSelectMode, handleToggle, handleSelectNode, handleClearSelected, handleSelectModeChange, handleSessionListCollapsedChange, handleThemeChange, handleSplitPanelWidthChange, handleRemoveSelectedNode, handleFrameLoaded, get OpenCodeWidget() {
|
|
320
336
|
return import_components.OpenCodeWidget;
|
|
321
337
|
}, LoadingContent: import_LoadingContent_vue.default, ChromeWarmupError: import_ChromeWarmupError_vue.default };
|
|
322
338
|
Object.defineProperty(__returned__, "__isScriptSetup", { enumerable: false, value: true });
|
|
@@ -28,7 +28,7 @@ function parseHotkey(hotkeyStr) {
|
|
|
28
28
|
const parts = hotkeyStr.toLowerCase().split("+");
|
|
29
29
|
const key = parts.pop();
|
|
30
30
|
return {
|
|
31
|
-
ctrl: parts.includes("ctrl") || parts.includes("
|
|
31
|
+
ctrl: parts.includes("ctrl") || parts.includes("meta"),
|
|
32
32
|
shift: parts.includes("shift"),
|
|
33
33
|
alt: parts.includes("alt"),
|
|
34
34
|
key: key || "k"
|