Skip to content

Commit 7bfe58a

Browse files
fit2botibulerCopilot
authored
fix: some open err (#1712)
Co-authored-by: ibuler <ibuler@qq.com> Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com>
1 parent bb130a7 commit 7bfe58a

3 files changed

Lines changed: 14 additions & 5 deletions

File tree

‎packages/web-proxy/src/credentials.ts‎

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -356,7 +356,7 @@ export function buildAutofillScript(selectors, credentials) {
356356
successSelector: selectors.success,
357357
interactiveSelector: selectors.interactive
358358
};
359-
return `(() => {
359+
return `(async () => {
360360
${selectorLookupScript}
361361
${submitElementScript}
362362
let payload = ${JSON.stringify(payload)};
@@ -412,9 +412,17 @@ if (successObserver) {
412412
}
413413
// The main process decides whether a visible verification area must precede submission.
414414
if (payload.interactiveSelector) return true;
415-
internalAction = true;
416415
try {
417-
return submitElement(submit);
416+
// Input handlers may schedule a framework render that replaces or enables the
417+
// submit button. Let that update finish, then resolve the current DOM node.
418+
await new Promise(resolve => setTimeout(resolve, 0));
419+
const currentSubmit = findElement(payload.submitSelector);
420+
if (!(currentSubmit instanceof HTMLElement) || !currentSubmit.isConnected || currentSubmit.disabled) {
421+
throw new Error("登录提交按钮不可用,请检查提交元素配置或页面是否需要验证");
422+
}
423+
internalAction = true;
424+
if (!submitElement(currentSubmit)) throw new Error("登录表单校验未通过,请检查必填项或验证码配置");
425+
return true;
418426
} finally {
419427
internalAction = false;
420428
if (!payload.successSelector && !payload.interactiveSelector) cleanup();

‎ui/composables/useAiPanel.test.ts‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,8 +54,9 @@ describe("AI overlay panel", () => {
5454

5555
afterAll(() => vi.unstubAllGlobals());
5656

57-
it("remembers visibility independently for each workspace tab", () => {
57+
it("defaults to closed on desktop and remembers visibility independently for each workspace tab", () => {
5858
const panel = useAiPanel();
59+
expect(useLocalStorage).toHaveBeenCalledWith("jumpserver-client:ai-panel-open", false, { writeDefaults: false });
5960
panel.setOpen(false);
6061
expect(panel.open.value).toBe(false);
6162

‎ui/composables/useAiPanel.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ interface UnifiedAiPanelContext {
1616
}
1717

1818
const usePanelPreferences = createGlobalState(() => {
19-
const preferredOpen = useLocalStorage("jumpserver-client:ai-panel-open", true, { writeDefaults: false });
19+
const preferredOpen = useLocalStorage("jumpserver-client:ai-panel-open", false, { writeDefaults: false });
2020
const storedWidth = useLocalStorage("jumpserver-client:ai-panel-width", AI_PANEL_DEFAULT_WIDTH, {
2121
writeDefaults: false
2222
});

0 commit comments

Comments
 (0)