heyterm 0.1.2 → 0.1.3

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/README.md CHANGED
@@ -25,17 +25,21 @@ python3 scripts/measure-waits.py
25
25
  | "catch me up" / "what's synqed doing?" | says what changed since you last looked |
26
26
  | "trust it" | trusts a new folder for the session asking |
27
27
  | "go to whisker" / "stop synqed" / "close peeker" / "bring back peeker" | focus, interrupt, close and resume |
28
+ | "rename synqed to synqed auth" | renames a session, open or closed, so two in one folder are easy to tell apart |
29
+ | "what did api change?" | names the files api changed in its last task, with line counts |
28
30
  | "be quiet" / "mute" / "talk to me" | announcements for questions and permissions only, sounds only, or everything |
29
31
 
30
- Those happen at once on your computer. Everything else goes to the assistant in the middle: Claude (Opus 5.5 at low effort) on the Agent SDK, through your own Claude Code login, so there is no API key to set up. Ask it anything ("what is everyone doing?", "what changed in heyterm today?", "start a session in portfolio and fix the header") and it answers out loud, reads sessions, sends them work and runs commands on your Mac. It does whatever your Claude Code permission mode allows, and asks you out loud whenever Claude Code would ask. When a session needs you, the assistant tells you what it wants and what to say, in plain words, without reading the command out.
32
+ Those happen at once on your computer. Everything else goes to the assistant in the middle: Claude (Opus 5.5 at low effort) on the Agent SDK, through your own Claude Code login, so there is no API key to set up. Ask it anything ("what is everyone doing?", "what changed in heyterm today?", "start a session in portfolio and fix the header", "what time is it in Germany?") and it answers out loud, reads sessions, sends them work, and does anything Claude Code can on your Mac: runs commands, installs tools, writes files, searches the web and looks at your screen when you ask. Coding in a project still goes to that project's session, so you can follow it. It does whatever your Claude Code permission mode allows, asks you out loud whenever Claude Code would ask, and remembers your conversation across restarts. When a session needs you, the assistant tells you what it wants and what to say, in plain words, without reading the command out.
31
33
 
32
34
  HeyTerm speaks with your Mac's own voice (whatever is set in System Settings, Accessibility, Spoken Content; Siri voices work there), or the browser's voice if you pick it in Setup.
33
35
 
34
36
  ## What you see
35
37
 
36
- - **Sessions on the left**, each with its own face and its state, waits counted while it needs you. The sidebar folds to a rail of faces that are named when you hover.
38
+ - **Sessions on the left**, each with its own face and its state, waits counted while it needs you. Hover a row for its agent, folder, branch, times and session id; rename any session from its row, and take closed ones off the list. The sidebar folds to a rail of faces that are named when you hover.
37
39
  - **Terminals in the middle**, in a grid or one at a time.
38
40
  - **The conversation on the right.** When a session needs you, its request arrives as a message there, with buttons and the words to say. Answer by voice or click; your answer shows up as your own message under it. Fold the column away and the most urgent request sits in one slim row above the bar you talk into.
41
+ - **What each task changed.** A finished session says how many files it changed; "what did api change?" names them. A session that goes quiet for five minutes (or runs one command for ten) is named too.
42
+ - **Any text can be copied.** Select it and press Cmd+C (Ctrl+C on Windows and Linux), in a terminal too.
39
43
  - **Gruvbox, light or dark.** HeyTerm starts in Gruvbox Material light; Setup, Appearance switches to dark or follows your system. Terminals stay dark in both, because coding agents colour their text for a dark terminal.
40
44
 
41
45
  ## Getting started
@@ -82,6 +86,9 @@ Closing the page stops HeyTerm after 15 seconds, so a reload never does. Setup h
82
86
  - **Sessions run in HeyTerm's own terminals** (pseudo-terminals it owns, the same on macOS, Linux and Windows), with a copy of each screen so the assistant can read it and a page opened later sees it.
83
87
  - **Agent hooks report every state**, so nothing is guessed from the screen. Claude Code gets them through a settings file for its session; Codex through config overrides for that run (Codex asks once to trust them; say "trust it"). Your own `~/.codex` and Claude settings are not changed.
84
88
  - **Grok Build and Cursor read hooks only from global files**, so while HeyTerm runs it writes `~/.grok/hooks/heyterm.json` and adds its entries to `~/.cursor/hooks.json` (backed up first), and takes them out again when it stops or is uninstalled. They only report what happens; nothing in them can approve or block a tool, so each agent's own permission rules stay in charge, and sessions HeyTerm did not start are ignored. Grok's permission card shows as waiting in its terminal: say "go to" the session and answer there.
89
+ - **A second session in a folder another one uses gets its own git worktree**, on a branch named `heyterm/<session>`, from the last commit, in `~/.heyterm/worktrees`, so two agents never edit the same files. Its work stays on that branch for you to merge. Outside git the folder is shared, and HeyTerm says so.
90
+ - **Claude Code's own session records** (`~/.claude/sessions`) tell HeyTerm what no hook does: a turn you stopped with Esc, and a terminal that was closed.
91
+ - **What a task changed** comes from the session's own edit hooks and from git, compared when the task starts and when it ends, so edits made through shell commands count.
85
92
  - **A permission or a multiple-choice question is held open until you answer by voice**; answering in the terminal by hand still works, and wins.
86
93
  - **No extra gates**: HeyTerm adds no permission layer of its own. What an agent's permission mode allows, it runs; when the agent asks, you hear what it wants and its risk, and "approve" answers.
87
94
  - **Text is sent as a real prompt**, pasted into the session and confirmed by its prompt hook.
@@ -91,7 +98,8 @@ Closing the page stops HeyTerm after 15 seconds, so a reload never does. Setup h
91
98
 
92
99
  - The server listens on `127.0.0.1` only. It refuses requests from other sites, and every hook and every page connection needs a private token from `~/.heyterm/token` (readable by you alone), so neither a web page nor another user on the same computer can type into your terminals.
93
100
  - Every decision, by voice or click, goes into `~/.heyterm/audit.jsonl` with the time, the session, the command and the words that decided it.
94
- - HeyTerm never deletes a folder or a worktree. Closing a session that is working or has uncommitted changes asks first.
101
+ - HeyTerm never deletes your folders. A worktree it made goes only when you take its closed session off the list and it holds no uncommitted changes and no commits of its own. Closing a session that is working or has uncommitted changes asks first.
102
+ - The assistant's conversation stays on your computer: its id and the last 80 lines in `~/.heyterm/assistant.json`, the conversation itself where Claude Code keeps conversations.
95
103
 
96
104
  ## Settings
97
105
 
@@ -120,7 +128,9 @@ npm run deploy:site # builds both and deploys them to Vercel as one site
120
128
 
121
129
  The landing page lives in `site/`. It shares the app's tokens (`src/web/tokens.css`) and motion (`src/web/motion.css`), so the two never drift apart, and its hero is a small HeyTerm running a scene. The faces it shows are drawn at build time by `scripts/site-faces.mjs`, so the page ships pictures instead of the face generator.
122
130
 
123
- `docs/SPEC.md` is the behaviour HeyTerm promises, and the tests are written from it. `scripts/smoke.mjs` checks an installed package end to end (start, the token wall, stop, uninstall). Pure decisions (routing, risk, session states, the attention queue) live in their own files with tests beside them.
131
+ `docs/SPEC.md` is the behaviour HeyTerm promises, and the tests are written from it. `scripts/smoke.mjs` checks an installed package end to end (start, the token wall, stop, uninstall). Pure decisions (routing, risk, session states, the attention queue, quiet sessions, worktree and change rules) live in their own files with tests beside them.
132
+
133
+ To try a change while your own HeyTerm runs, build it in a separate checkout (`git worktree add --detach ../heyterm-try HEAD`, with `node_modules` linked in) and start it with its own `HEYTERM_DATA_DIRECTORY`, `HEYTERM_PORT`, `HEYTERM_CLAUDE_SETTINGS_PATH`, `HEYTERM_GROK_HOOKS_PATH` and `HEYTERM_CURSOR_HOOKS_PATH`. A build in the folder a running HeyTerm serves changes the page under it, and a second copy on the real hook files edits the hooks the first one relies on.
124
134
 
125
135
  Built for [No Hands: The Wispr Challenge](https://www.wemakedevs.org/wispr) by WeMakeDevs and Wispr Flow.
126
136