pum-agent 0.2.21-beta.1 → 0.2.23-beta.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/README.md CHANGED
@@ -50,7 +50,7 @@ drives the actual TUI and converts the captured cells to SVG.
50
50
 
51
51
  ## What it does
52
52
 
53
- - **A full coding loop** — `read`, `write`, `edit`, `bash`, and atomic `apply_patch`, with streaming Markdown, syntax highlighting, usage, cost, and Git status.
53
+ - **A full coding loop** — `read`, `write`, `edit`, and `bash`, with streaming Markdown, syntax highlighting, usage, cost, and Git status.
54
54
  - **Parallel subagents** — persistent agents in isolated Git worktrees that message each other durably and report to their spawner. See [Subagents](docs/subagents.md).
55
55
  - **Goals that outlive a turn** — `/goal` keeps working, reviewed after each turn by a judge that reads but never writes. See [Goals](docs/goals.md).
56
56
  - **Supervised processes** — background shells and external triggers such as `gh run watch`, which wake the exact agent that was waiting. See [Tools](docs/tools.md).
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pum-agent",
3
- "version": "0.2.21-beta.1",
3
+ "version": "0.2.23-beta.1",
4
4
  "description": "A compact terminal coding agent powered by pi and OpenTUI.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -31,8 +31,7 @@
31
31
  "files": [
32
32
  "src/**/*.ts",
33
33
  "src/**/*.tsx",
34
- "!src/**/*.test.ts",
35
- "!src/**/*.test.tsx",
34
+ "!tests/**",
36
35
  "assets/tree-sitter/**",
37
36
  "LICENSE"
38
37
  ],
package/src/animation.tsx CHANGED
@@ -285,13 +285,16 @@ export function AnimationProvider({
285
285
  );
286
286
  const workingRuleCycleWidth = useCallback(() => workingCycleWidth.current, []);
287
287
 
288
- return (
289
- <ClockContext.Provider
290
- value={{ subscribe, workingElapsed, workingRuleCycleWidth, enabled }}
291
- >
292
- {children}
293
- </ClockContext.Provider>
288
+ // A fresh object here would be a changed context value on every render of the
289
+ // app, and React answers that by walking the whole tree below the provider to
290
+ // find consumers. With a long transcript that walk is the largest part of the
291
+ // cost of one keystroke, so the value keeps its identity while its parts do.
292
+ const clock = useMemo(
293
+ () => ({ subscribe, workingElapsed, workingRuleCycleWidth, enabled }),
294
+ [subscribe, workingElapsed, workingRuleCycleWidth, enabled],
294
295
  );
296
+
297
+ return <ClockContext.Provider value={clock}>{children}</ClockContext.Provider>;
295
298
  }
296
299
 
297
300
  /** Exported for the test that guards the run-coalescing loop below. */