cicy-desktop 2.1.255 → 2.1.256
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/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "cicy-desktop",
|
|
3
|
-
"version": "2.1.
|
|
3
|
+
"version": "2.1.256",
|
|
4
4
|
"description": "CiCy - AI-powered operating system browser",
|
|
5
5
|
"main": "src/main.js",
|
|
6
6
|
"bin": {
|
|
@@ -139,10 +139,10 @@
|
|
|
139
139
|
"//optionalDependencies": "(2026-06 回调): mac/linux 改回 native cicy-code(:8008,colima 在 16G mac 上压垮内存)→ 重新内置 cicy-code-<plat> / cicy-mihomo-<plat>,localbin.fromBundle 零网络 seed(npm 仅作更新通道,带 npmmirror→npmjs 回退)。这些由 scripts/sync-runtime-deps.cjs 在 tag-push 时同步到最新版。npm 的 os/cpu 字段保证每个平台只装自己那份。Windows 仍走 docker(WSL :8009),它那份 cicy-code-windows 用不到但 bundle 着无害。",
|
|
140
140
|
"optionalDependencies": {
|
|
141
141
|
"electron": "41.0.3",
|
|
142
|
-
"cicy-code-darwin-x64": "2.3.
|
|
143
|
-
"cicy-code-darwin-arm64": "2.3.
|
|
144
|
-
"cicy-code-linux-x64": "2.3.
|
|
145
|
-
"cicy-code-linux-arm64": "2.3.
|
|
142
|
+
"cicy-code-darwin-x64": "2.3.315",
|
|
143
|
+
"cicy-code-darwin-arm64": "2.3.315",
|
|
144
|
+
"cicy-code-linux-x64": "2.3.315",
|
|
145
|
+
"cicy-code-linux-arm64": "2.3.315",
|
|
146
146
|
"cicy-code-windows-x64": "2.3.193",
|
|
147
147
|
"cicy-mihomo-darwin-x64": "1.10.4",
|
|
148
148
|
"cicy-mihomo-darwin-arm64": "1.10.4",
|
|
@@ -136,10 +136,16 @@ class PanelCells {
|
|
|
136
136
|
const push = () => {
|
|
137
137
|
let url = "", title = "";
|
|
138
138
|
try { url = wc.getURL(); title = wc.getTitle(); } catch (e) {}
|
|
139
|
-
|
|
139
|
+
// did-navigate / page-title-updated commonly fire while the document is
|
|
140
|
+
// still loading. Hard-coding false here hid the spinner immediately after
|
|
141
|
+
// did-start-loading; report the BrowserView's actual state instead.
|
|
142
|
+
let loading = false;
|
|
143
|
+
try { loading = wc.isLoading(); } catch (e) {}
|
|
144
|
+
this.sendState({ id: cellId, url, title, loading, wcId: wc.id });
|
|
140
145
|
};
|
|
141
146
|
wc.on("did-start-loading", () => this.sendState({ id: cellId, loading: true, wcId: wc.id }));
|
|
142
147
|
wc.on("did-stop-loading", push);
|
|
148
|
+
wc.on("did-fail-load", push);
|
|
143
149
|
wc.on("did-navigate", push);
|
|
144
150
|
wc.on("did-navigate-in-page", push);
|
|
145
151
|
wc.on("page-title-updated", push);
|
|
@@ -26,8 +26,12 @@
|
|
|
26
26
|
.native-cells .cell,.native-cells .divider{transition:none}
|
|
27
27
|
.cell.dragging-layout{transition:none}
|
|
28
28
|
.cell__head{flex:0 0 34px;display:flex;align-items:center;gap:6px;padding:0 6px 0 10px;background:var(--head);border-bottom:1px solid var(--line);-webkit-user-select:none;user-select:none}
|
|
29
|
-
|
|
30
|
-
|
|
29
|
+
/* Reload and loading share one fixed button slot: loading swaps the glyph in
|
|
30
|
+
place, so no toolbar element moves and no extra padding is needed. */
|
|
31
|
+
.reload-btn{position:relative}
|
|
32
|
+
.reload-btn .cell__spin{position:absolute;width:12px;height:12px;border:2px solid rgba(255,255,255,.18);border-top-color:var(--accent);border-radius:50%;animation:sp .7s linear infinite;visibility:hidden}
|
|
33
|
+
.cell.loading .reload-btn>svg{visibility:hidden}
|
|
34
|
+
.cell.loading .reload-btn .cell__spin{visibility:visible}
|
|
31
35
|
@keyframes sp{to{transform:rotate(360deg)}}
|
|
32
36
|
.cell__url{flex:1;min-width:0;height:24px;padding:0 10px;background:#101012;border:1px solid var(--line);border-radius:12px;color:var(--fg);font-size:12px;outline:none;-webkit-user-select:text;user-select:text}
|
|
33
37
|
.cell__url:focus{border-color:var(--accent);background:#0d0d10}
|
|
@@ -639,18 +643,25 @@
|
|
|
639
643
|
url.value = leaf.url || '';
|
|
640
644
|
url.addEventListener('keydown', (e) => {
|
|
641
645
|
if (e.key !== 'Enter') return;
|
|
646
|
+
// Enter during an IME composition commits the composing text; navigating
|
|
647
|
+
// and blurring in that same event makes Chromium commit it a second time
|
|
648
|
+
// (e.g. "chatgpt" → "chatgptchatgpt"). Let the IME finish first; the
|
|
649
|
+
// following Enter performs navigation, matching a normal browser omnibox.
|
|
650
|
+
if (e.isComposing || e.keyCode === 229) return;
|
|
651
|
+
e.preventDefault();
|
|
642
652
|
const u = normalizeUrl(url.value);
|
|
643
653
|
if (u) { setCellUrl(leaf.id, u); url.blur(); }
|
|
644
654
|
});
|
|
645
655
|
url.addEventListener('focus', () => url.select());
|
|
646
|
-
head.appendChild(spin);
|
|
647
656
|
head.appendChild(service);
|
|
648
657
|
head.appendChild(profile);
|
|
649
658
|
head.appendChild(url);
|
|
650
|
-
|
|
659
|
+
const reload = btn(I.reload, '刷新', 'reload-btn', () => {
|
|
651
660
|
if (NATIVE) { try { window.panelAPI.reload(leaf.id); } catch (e) {} return; }
|
|
652
661
|
const c = cells.get(leaf.id); try { c && c.wv && c.wv.reload(); } catch (e) {}
|
|
653
|
-
})
|
|
662
|
+
});
|
|
663
|
+
reload.appendChild(spin);
|
|
664
|
+
head.appendChild(reload);
|
|
654
665
|
head.appendChild(btn(I.splitR, '右分屏', '', () => splitLeaf(leaf.id, 'row')));
|
|
655
666
|
head.appendChild(btn(I.splitD, '下分屏', '', () => splitLeaf(leaf.id, 'col')));
|
|
656
667
|
head.appendChild(btn(I.close, '关闭', 'close', () => closeLeaf(leaf.id)));
|