|
7 | 7 | ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚══════╝ ╚═════╝ ╚═╝ |
8 | 8 | ``` |
9 | 9 |
|
10 | | -# TDPilot — DeepSeek v4 · v2.1.4 |
| 10 | +# TDPilot — DeepSeek v4 · v2.1.5 |
11 | 11 |
|
12 | 12 | [](https://github.com/dreamrec/TDPilot_deepseekv4/actions/workflows/ci.yml) |
13 | 13 | [](https://www.npmjs.com/package/tdpilot-dpsk4) |
|
20 | 20 |
|
21 | 21 | An AI assistant that lives inside TouchDesigner. It can inspect your network, build new operators, wire them up, debug errors, take screenshots, remember things between sessions, replay successful patterns, surface relevant memories before each turn, batch tool calls, recover from failures with actionable hints, and survive long conversations via context compaction. |
22 | 22 |
|
23 | | -> **v2.1.4 just shipped (May 10, 2026)** — patch on top of v2.1.3 closing two reliability holes that Codex's automated review caught on PR #28. The new inbox queue now drains on `EV_ERROR` (not just `EV_DONE`) so a queued message after a failed turn doesn't sit in storage forever. The chat HTML's send-button gate now has a 90s safety timer + a `ws.onopen` reset so a dropped WS connection mid-turn no longer locks the user out of the chat. See [CHANGELOG](CHANGELOG.md#214---2026-05-10) for the v2.1.4 details, or [v2.1.3 below](#whats-new-since-v15x) for the underlying security/queue/path-harmonization release. |
| 23 | +> **v2.1.5 just shipped (May 10, 2026)** — micro-patch on v2.1.4 catching one cosmetic regression Codex flagged on PR #29: `isWorkingAgentState` now treats `'idle <suffix>'` (e.g. `'idle (timeout)'` from the v2.1.4 safety timer) as non-working, so the pulse animation + Stop button don't keep showing after the timer fires. See [CHANGELOG](CHANGELOG.md#215---2026-05-10) for v2.1.5 details, [v2.1.4](CHANGELOG.md#214---2026-05-10) for the prior Codex follow-ups, or [v2.1.3 below](#whats-new-since-v15x) for the underlying security/queue/path-harmonization release. |
24 | 24 |
|
25 | 25 | There are two ways to run it. Pick whichever fits — they coexist in the same TD project if you want both. |
26 | 26 |
|
@@ -210,10 +210,11 @@ The standalone has 91 tools that cover the everyday inspect → build → wire |
210 | 210 |
|
211 | 211 | ## What's new since v1.5.x |
212 | 212 |
|
213 | | -The line from v1.5.0 (Apr 25, 2026) to v2.1.4 (May 10, 2026) shipped in tight bursts. Most important updates, newest first: |
| 213 | +The line from v1.5.0 (Apr 25, 2026) to v2.1.5 (May 10, 2026) shipped in tight bursts. Most important updates, newest first: |
214 | 214 |
|
215 | 215 | | Version | Date | Headline | |
216 | 216 | |---|---|---| |
| 217 | +| **v2.1.5** | May 10 | **Codex P2 follow-up on v2.1.4.** `isWorkingAgentState` now classifies `'idle <suffix>'` (e.g. `'idle (timeout)'` from the v2.1.4 safety timer) as non-working. Pre-2.1.5 the predicate only matched exact `'idle'` / `'ready'` / `'reset'` / `'connected'`, so the v2.1.4 timer's diagnostic suffix kept the pulse animation + Stop button visible after the timer fired. Functional path was unaffected (button re-enable worked); UI lied about state. | |
217 | 218 | | **v2.1.4** | May 10 | **Codex follow-ups on v2.1.3.** Two reliability holes the automated Codex review caught on PR #28: (P1) the new inbox queue now drains on `EV_ERROR` too — pre-2.1.4 a queued message after an errored turn sat in storage forever until a later successful turn happened to fire `EV_DONE`; (P2) the chat HTML's send-button gate now has a 90s safety timer + a `ws.onopen` reset, so a dropped WS connection between `/send` and the terminal status event no longer locks the user out of the chat permanently. | |
218 | 219 | | **v2.1.3** | May 9 | **Security hardening + chat-pipe queue + path harmonization.** Audit found a CSRF / drive-by RCE chain in `tdpilot_API.tox` (insecure-mode bypassed origin checks AND `EXEC_MODE=full` was hardcoded). Closed by always-on origin enforcement (insecure-mode bypasses only the token check), `EXEC_MODE` clamp to `restricted` whenever insecure-mode is active (opt back into full with `TDPILOT_API_ALLOW_INSECURE_FULL_EXEC=1`), `application/json` requirement on `/send` (forces CORS preflight for cross-origin POSTs), and a loud textport banner when insecure-mode is on. Rapid-`/send` message-drop bug fixed via FIFO inbox queue on `comp.storage` + chat HTML send-button gate on the runtime's turn-end signal (not on the fetch resolution). Chat-pipe storage namespaced under `~/.tdpilot-dpsk4/api/` with `~/.tdpilot-api/` legacy fallback in `resolve_user_dir`. | |
219 | 220 | | **v2.1.2** | May 9 | **Opt-in MCP auth.** `autostart.onStart()` no longer wipes persistent secrets; `TDPILOT_DISABLE_AUTH_BYPASS=1` opts into the env-file-driven shared-secret flow. | |
|
0 commit comments