cicy-desktop 2.1.158 → 2.1.160

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.158",
3
+ "version": "2.1.160",
4
4
  "description": "CiCy - AI-powered operating system browser",
5
5
  "main": "src/main.js",
6
6
  "bin": {
@@ -45,7 +45,7 @@ const PORT = Number(process.env.CICY_CODE_PORT || 8008);
45
45
  // existing daemon/reconcile/ensureDockerTeam/appOpts machinery below just retargets to 8008
46
46
  // — independent cloud team key, named-volume isolation, auto-start all come for free.
47
47
  // win32 keeps the Docker-版 as an optional 2nd instance on :8009 alongside native :8008 (next).
48
- const APP_PORT = Number(process.env.CICY_DOCKER_APP_PORT || (process.platform === "darwin" ? 8008 : 8009));
48
+ const APP_PORT = Number(process.env.CICY_DOCKER_APP_PORT || 8008); // native 退役:原 :8009 Docker-版就是唯一的 :8008 cicy-code
49
49
  // container / volume 名都带上 port —— 一台机可以跑多个 docker(不同端口),各自
50
50
  // 独立容器 + 独立 volume(数据隔离)+ 独立云端 team。docker-teams.json 也按 volume
51
51
  // (含 port)区分。
@@ -83,6 +83,7 @@ const DOCKER_TEAMS_FILE = path.join(os.homedir(), "cicy-ai", "db", "docker-teams
83
83
  function readDockerTeams() { try { return JSON.parse(fs.readFileSync(DOCKER_TEAMS_FILE, "utf8")) || {}; } catch { return {}; } }
84
84
  function writeDockerTeams(obj) { try { fs.mkdirSync(path.dirname(DOCKER_TEAMS_FILE), { recursive: true }); fs.writeFileSync(DOCKER_TEAMS_FILE, JSON.stringify(obj, null, 2)); } catch {} }
85
85
  let dockerTeamReg = null; // { teamId, title, apiKey } — 缓存,appOpts 读它
86
+ const APP_TEAM_TITLE = "本地团队"; // 只有一个 cicy-code(:8008)= 本地团队
86
87
 
87
88
  // 确保这个 docker(按 volume)有独立云端 team;返回 { teamId, title, apiKey } 或 null。
88
89
  async function ensureDockerTeam() {
@@ -91,21 +92,21 @@ async function ensureDockerTeam() {
91
92
  const store = readDockerTeams();
92
93
  let rec = store[APP_VOLUME];
93
94
  if (!rec || !rec.teamId) {
94
- const created = await cc.createTeam({ title: "Docker 团队", kind: "cloud" });
95
+ const created = await cc.createTeam({ title: APP_TEAM_TITLE, kind: "cloud" });
95
96
  if (!created || !created.ok) return null;
96
- // 强制把云端标题设成 "Docker 团队":POST /api/teams 常忽略我们传的 title、
97
- // 回退成 owner/device 名(= 8008 的标题),卡片就显示成 8008 的了。PATCH 一下盖掉。
98
- try { await cc.renameTeam(created.teamId, "Docker 团队"); } catch {}
99
- store[APP_VOLUME] = { teamId: created.teamId, title: "Docker 团队", titleForced: true };
97
+ // 强制把云端标题设成 APP_TEAM_TITLE:POST /api/teams 常忽略我们传的 title、
98
+ // 回退成 owner/device 名,卡片就显示错了。PATCH 一下盖掉。
99
+ try { await cc.renameTeam(created.teamId, APP_TEAM_TITLE); } catch {}
100
+ store[APP_VOLUME] = { teamId: created.teamId, title: APP_TEAM_TITLE, titleForced: true };
100
101
  writeDockerTeams(store);
101
- dockerTeamReg = { teamId: created.teamId, title: "Docker 团队", apiKey: created.apiKey };
102
+ dockerTeamReg = { teamId: created.teamId, title: APP_TEAM_TITLE, apiKey: created.apiKey };
102
103
  return dockerTeamReg;
103
104
  }
104
105
  // 既有 team:若还没强制过标题(老数据/上面那个 bug 建的),补一次 PATCH 成 "Docker
105
106
  // 团队",然后打上 titleForced 标记 —— 只补这一次,之后用户自己改名不会被覆盖。
106
107
  if (!rec.titleForced) {
107
- try { await cc.renameTeam(rec.teamId, "Docker 团队"); } catch {}
108
- rec.title = "Docker 团队"; rec.titleForced = true;
108
+ try { await cc.renameTeam(rec.teamId, APP_TEAM_TITLE); } catch {}
109
+ rec.title = APP_TEAM_TITLE; rec.titleForced = true;
109
110
  store[APP_VOLUME] = rec; writeDockerTeams(store);
110
111
  }
111
112
  const apiKey = await cc.getTeamApiKey(rec.teamId);
package/src/main.js CHANGED
@@ -817,6 +817,9 @@ X-GNOME-Autostart-enabled=true
817
817
  let _sidecarWatchdogTimer = null;
818
818
  function startSidecarWatchdog({ intervalMs = 30_000 } = {}) {
819
819
  if (_sidecarWatchdogTimer) return;
820
+ // 主人: native 退役,全平台只有 docker。:8008 由 docker daemon(sidecar-ipc reconcile)
821
+ // + 容器 --restart 保活,没有 native 要 watchdog 去检查/重启。直接不跑。
822
+ return;
820
823
  let consecutiveFailures = 0;
821
824
  let restartInFlight = false;
822
825
 
@@ -100,13 +100,9 @@ async function startFromRuntime({ logPath, port }) {
100
100
  async function start({ logPath, port = DEFAULT_PORT, force = false, version = null } = {}) {
101
101
  if (child && !force) return child;
102
102
 
103
- // macOS: DOCKER-ONLY (主人指令: native 退役). The native daemon runs cicy-code directly
104
- // on the host with full access to the user's real files — no isolation. On darwin we no
105
- // longer spawn it; the docker cicy-code (Colima container, named-volume isolated) IS the
106
- // primary on :8008, brought up + kept alive by the docker daemon in src/backends/
107
- // sidecar-ipc.js (APP_PORT=8008 on darwin). probeExisting()/watchdog still work — they
108
- // just observe the container's :8008. Returning null here = "no native child".
109
- if (process.platform === "darwin") return null;
103
+ // 主人: native 退役,全平台 docker-only。cicy-code 只在 docker 容器里跑(:8008,命名卷
104
+ // 隔离,sidecar-ipc docker daemon 负责拉起 + 保活)。这里不再起任何 native。
105
+ return null;
110
106
 
111
107
  if (!force && await probeExisting(port)) {
112
108
  console.log(`[cicy-code-sidecar] existing instance on :${port}, reusing`);