ccdeck 3.39.3 → 3.39.4

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.
@@ -66,7 +66,7 @@
66
66
  document.documentElement.setAttribute("data-color-scheme", lightThemes.indexOf(theme) >= 0 ? "light" : "dark");
67
67
  })();
68
68
  </script>
69
- <script type="module" crossorigin src="/assets/index-ChuHd6Ho.js"></script>
69
+ <script type="module" crossorigin src="/assets/index-CxIdVCPz.js"></script>
70
70
  <link rel="stylesheet" crossorigin href="/assets/index-TDFtmv7q.css">
71
71
  </head>
72
72
  <body>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ccdeck",
3
- "version": "3.39.3",
3
+ "version": "3.39.4",
4
4
  "description": "Local dashboard for Claude Code and Codex CLI sessions: which Claude Code session needs input, every tool call and Claude Code subagent live, token cost and quota, several Claude accounts. Run npx ccdeck.",
5
5
  "type": "module",
6
6
  "bin": {
@@ -73,7 +73,8 @@
73
73
  "3.38.0",
74
74
  "3.38.1",
75
75
  "3.38.2",
76
- "3.38.6"
76
+ "3.38.6",
77
+ "3.39.4"
77
78
  ],
78
79
  "3.39.3": [
79
80
  {
@@ -243,7 +243,11 @@ export function createBeacon({
243
243
  // broadcast is filtered, and it is what Syncthing sends — and every
244
244
  // interface's own directed broadcast goes out beside it. A duplicate packet
245
245
  // costs one datagram; a missing one costs the whole feature.
246
- const plan = broadcastPlan(ifaces());
246
+ // Adapter enumeration may fail transiently on Windows. The limited
247
+ // broadcast still works without an interface map; retry next announce.
248
+ let faces;
249
+ try { faces = ifaces(); } catch { faces = {}; }
250
+ const plan = broadcastPlan(faces);
247
251
  // Asked behind the send, and read from what was last answered: the first
248
252
  // beacon after a start goes as it always did, and the ones after it know.
249
253
  void routes?.want?.(plan.map(p => p.to));
@@ -119,7 +119,12 @@ export function defaultName() {
119
119
  * `internal` is node's word for loopback, and a link-local 169.254 address is a
120
120
  * machine whose DHCP failed — reachable by nobody worth telling about.
121
121
  */
122
- export function localAddresses(faces = networkInterfaces()) {
122
+ export function localAddresses(faces) {
123
+ if (faces === undefined) {
124
+ // Windows can temporarily fail to enumerate adapters. Keep status and
125
+ // invite reads usable, and ask the OS again on the next read.
126
+ try { faces = networkInterfaces(); } catch { return []; }
127
+ }
123
128
  const out = [];
124
129
  for (const list of Object.values(faces ?? {})) {
125
130
  for (const n of list ?? []) {