unsnooze 1.16.0 → 1.16.1
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 +12 -0
- package/README.md +32 -0
- package/package.json +1 -1
- package/src/multiplexers/session-name.js +5 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,17 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 1.16.1 — 2026-08-16
|
|
4
|
+
|
|
5
|
+
- **`unsnooze status` no longer offers an attach command for headless sessions.**
|
|
6
|
+
A headless "pane" is a detached pid, but the attach hint fell through to the
|
|
7
|
+
default `tmux attach -t <session>` — a command that at best does nothing and
|
|
8
|
+
at worst attaches to an unrelated tmux session that happens to share the name.
|
|
9
|
+
Headless output lives in `~/.unsnooze/headless/<session>.log`, and status now
|
|
10
|
+
says nothing rather than something wrong. Found while building the capability
|
|
11
|
+
table for the new **[Supported terminals](https://unsnooze.dev/docs/#terminals)**
|
|
12
|
+
docs section, which sets out exactly what each of tmux, Zellij, herdr, cmux
|
|
13
|
+
and headless does and does not do.
|
|
14
|
+
|
|
3
15
|
## 1.16.0 — 2026-08-16
|
|
4
16
|
|
|
5
17
|
- **Claude Design, and native Windows along the way.** ([#13](https://github.com/saaranshM/unsnooze/issues/13))
|
package/README.md
CHANGED
|
@@ -665,6 +665,38 @@ watcher stops (no pane context) always use native.
|
|
|
665
665
|
- zsh or bash (wrappers go into `~/.zshrc` / `~/.bashrc`), or PowerShell
|
|
666
666
|
(wrappers go into `$PROFILE.CurrentUserAllHosts`)
|
|
667
667
|
|
|
668
|
+
### Supported terminals
|
|
669
|
+
|
|
670
|
+
unsnooze drives four terminal multiplexers, and works without one.
|
|
671
|
+
|
|
672
|
+
| | [tmux](https://github.com/tmux/tmux) ≥ 3.2 | [Zellij](https://zellij.dev) | [herdr](https://herdr.dev) ≥ 0.8.0 | [cmux](https://cmux.dev) | `headless` |
|
|
673
|
+
|---|:---:|:---:|:---:|:---:|:---:|
|
|
674
|
+
| Detect a limit stop | pane + hook + transcript | pane + hook + transcript | pane + hook + transcript | pane + hook + transcript | hook + transcript |
|
|
675
|
+
| Resume a live session in place | ✅ | ✅ | ✅ | ✅ | — |
|
|
676
|
+
| Answer Claude's limit menu | ✅ | ✅ | ✅ | ✅ | — |
|
|
677
|
+
| Revive a session whose pane died | ✅ | ✅ | ✅¹ | ✅² | ✅³ |
|
|
678
|
+
| Wrap a bare `claude` into a managed session | ✅ | ✅ | ✅ | — | n/a⁴ |
|
|
679
|
+
| `unsnooze reap` idle sessions | ✅ | ✅ | ✅ | — | — |
|
|
680
|
+
| `attach:` hint in `unsnooze status` | ✅ | ✅ | ✅ | — | — |
|
|
681
|
+
| OSC notifications to your terminal | ✅ | — | — | — | — |
|
|
682
|
+
|
|
683
|
+
¹ Into a fresh session name (`unsnooze-2`), never by restarting the stopped one —
|
|
684
|
+
herdr restores saved agent panes itself, so a revival on top would resume the
|
|
685
|
+
same conversation twice.
|
|
686
|
+
² Into a fresh workspace; cmux has no joinable named-session model.
|
|
687
|
+
³ As a detached process. Its output goes to `~/.unsnooze/headless/<session>.log`,
|
|
688
|
+
since there is no scrollback to read it out of later.
|
|
689
|
+
⁴ Nothing to wrap into — your own terminal is the session.
|
|
690
|
+
|
|
691
|
+
Pick one explicitly with `unsnooze config set multiplexer tmux|zellij|herdr|cmux|headless`.
|
|
692
|
+
On `auto`, unsnooze uses the multiplexer you are currently inside; failing that,
|
|
693
|
+
the only one installed (tmux breaks ties); failing that, `headless`.
|
|
694
|
+
|
|
695
|
+
**Install:** `brew install tmux` or `brew install zellij` on macOS,
|
|
696
|
+
`sudo apt install tmux` on Linux/WSL. herdr comes from
|
|
697
|
+
[herdr.dev](https://herdr.dev) — Homebrew still ships 0.7.3, which `available()`
|
|
698
|
+
refuses, so take the release binary.
|
|
699
|
+
|
|
668
700
|
### Watching without a multiplexer
|
|
669
701
|
|
|
670
702
|
A terminal pane is only one of unsnooze's three detection channels. The Claude
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "unsnooze",
|
|
3
|
-
"version": "1.16.
|
|
3
|
+
"version": "1.16.1",
|
|
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—on macOS, Linux and Windows, with or without a terminal multiplexer.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"claude",
|
|
@@ -52,6 +52,11 @@ export function attachHint(muxName, sessionName) {
|
|
|
52
52
|
// is no command that attaches to a surface from outside cmux, so omit the
|
|
53
53
|
// hint rather than print a `tmux attach` that would silently do nothing.
|
|
54
54
|
if (muxName === 'cmux') return null;
|
|
55
|
+
// headless has no session at all — its "pane" is a detached pid. The default
|
|
56
|
+
// below would print `tmux attach -t <name>`, which at best does nothing and
|
|
57
|
+
// at worst attaches to an unrelated tmux session that happens to share the
|
|
58
|
+
// name. Its output lives in ~/.unsnooze/headless/<session>.log instead.
|
|
59
|
+
if (muxName === 'headless') return null;
|
|
55
60
|
if (muxName === 'herdr') return `herdr session attach ${sessionName}`;
|
|
56
61
|
if (muxName === 'zellij') return `zellij attach ${sessionName}`;
|
|
57
62
|
return `tmux attach -t ${sessionName}`;
|