unsnooze 1.14.3 → 1.14.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 1.14.4 — 2026-08-08
4
+
5
+ - **Windows: the daemon PATH check split on the wrong separator.** The check
6
+ added in 1.14.3 split `PATH` on `:`, which is right on macOS and Linux and
7
+ wrong on Windows — there the separator is `;` and every absolute path
8
+ contains a colon (`C:\...`), so entries were shredded into fragments. The
9
+ predicate now uses the host's own delimiter. No behavior changed on macOS or
10
+ Linux, and Windows has no autostart unit for the check to reach, so this is a
11
+ correctness and test-portability fix rather than a user-visible one.
12
+
3
13
  ## 1.14.3 — 2026-08-08
4
14
 
5
15
  - **Upgrades now reach running watchers.** A per-pane monitor lives as long as
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "unsnooze",
3
- "version": "1.14.3",
3
+ "version": "1.14.4",
4
4
  "description": "Automatically resume Claude Code, Codex CLI, Grok, Qwen Code, Kimi CLI, OpenCode, and Antigravity sessions when 5-hour or weekly usage limits reset—across tmux, Zellij, VS Code, and desktop apps.",
5
5
  "keywords": [
6
6
  "claude",
package/src/install.js CHANGED
@@ -11,7 +11,7 @@
11
11
  import { readFileSync, writeFileSync, renameSync, existsSync, copyFileSync, rmSync, mkdirSync, unlinkSync } from 'node:fs';
12
12
  import { execFileSync } from 'node:child_process';
13
13
  import { homedir, userInfo } from 'node:os';
14
- import { join, dirname } from 'node:path';
14
+ import { join, dirname, delimiter } from 'node:path';
15
15
  import { CLAUDE_SETTINGS, STATE_DIR } from './config.js';
16
16
  import { getConfig, configFileExists } from './settings.js';
17
17
  import { xmlEscape } from './notify.js';
@@ -187,9 +187,13 @@ export function autostartUnitPath({ platform = process.platform, dir = null } =
187
187
  // cannot revive anything — every call dies with ENOENT. Pure and synchronous
188
188
  // on purpose: this decides whether to rewrite-and-reload a unit, and that
189
189
  // decision must be deterministic.
190
- export function pathResolves(pathStr, bin) {
190
+ // `sep` defaults to the host's PATH delimiter, not a hardcoded ':'. On Windows
191
+ // that is ';' AND every absolute path contains a colon (C:\...), so splitting
192
+ // on ':' shreds the entries into nonsense. The units we inspect are always
193
+ // POSIX, but this predicate has to give an honest answer wherever it runs.
194
+ export function pathResolves(pathStr, bin, { sep = delimiter } = {}) {
191
195
  if (typeof pathStr !== 'string' || pathStr === '') return false;
192
- return pathStr.split(':').some(d => d && existsSync(join(d, bin)));
196
+ return pathStr.split(sep).some(d => d && existsSync(join(d, bin)));
193
197
  }
194
198
 
195
199
  function xmlUnescape(s) {