Tags: PyModel/pythinker-code
Tags
ci: release packages (#330) This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @pymodel/[email protected] ### Patch Changes - [#331](#331) [`ea4bdd6`](ea4bdd6) Thanks [@elkaix](https://github.com/elkaix)! - Fix deleting a session from the sidebar. - [#329](#329) [`98235bb`](98235bb) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode: mission titles must be printable ASCII, tower messages, findings, and reviews record the sender's token usage, and task cards show the mission id. ## @pymodel/[email protected] ### Patch Changes - [#331](#331) [`ea4bdd6`](ea4bdd6) Thanks [@elkaix](https://github.com/elkaix)! - Fix deleting a session from the sidebar. - [#329](#329) [`98235bb`](98235bb) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode: mission titles must be printable ASCII, tower messages, findings, and reviews record the sender's token usage, and task cards show the mission id. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com> Co-authored-by: Mohamed Elkholy <[email protected]>
ci: release packages (#327) This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @pymodel/[email protected] ### Minor Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions from the session picker: press Ctrl+X on a session, then y to confirm. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Drop the experimental flat entity message protocol and history API; session inspect returns to the transcript surface. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Add per-server deferred MCP tool disclosure so large tool lists stay hidden until selected. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions with serialized cleanup so journal and live listeners finish before the session is removed, and broadcast a workspace-scoped deletion event. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Rebuild telemetry as a scope-bound layered context registry so session, agent, and turn fields flow into every event without a separate agent telemetry context service. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Add `-y, --yes` to `pythinker upgrade` (alias `pythinker update`) to skip the confirmation prompt and install the update directly. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Serve workspace @ file suggestions through the engine fs suggest API so the editor extension matches gateway search scoring. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Turn filesystem watch off by default. Set `[watch] enabled = true` or `PYTHINKER_CODE_WATCH=1` to attach watchers. ### Patch Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Make the compaction attempt limit configurable with loop_control.compaction_max_attempts (default 5). - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Stop telling the model that the current working directory is always the project root. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Honor dynamically_loaded_tools from official model catalogs when building tool lists. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Preserve original MCP attachments that are omitted from model output, and let Read open those session attachment references. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Exclude time spent with the session closed from goal time budgets. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Rebaseline the terminal UI library native platform modules and mouse/search behavior. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Include the server token in the Remote Control Local UI link so it opens already signed in. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Remove the 24-hour limit on goal time budgets. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Skip the confirmation prompt for rm -rf commands that target only /tmp or /temp paths. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Track session-index freshness with a dirty journal so restarts reconcile only changed sessions instead of rescanning every mtime. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Deliver session approval and question events past agent filters, and stamp the requesting agent on the wire shape. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Session title generation no longer requires the experimental auto_session_title flag. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Allow steering messages to interrupt waits for background tasks. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Do not record a steer event when an unconsumed steer seeds the next turn after cancel. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Suppress background-task terminal notifications as soon as an agent starts closing, so teardown no longer wakes the model with late task settlements. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode (experimental, `PYTHINKER_CODE_EXPERIMENTAL_TOWER=1`): fix tower mode never starting when enabled through `[experimental] tower = true` in `config.toml` instead of the environment variable. When tower mode cannot be enabled, the error now names the actual blocker — the disabled experiment, a required restart, or the owning session. When another live session owns the workspace tower, the message also names the owning session's title alongside its id. /tower now also works in a directory that is not a git repository — it runs git init and commits what is there (an empty initial commit for empty directories). - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode reliability fixes across messaging, worktrees, and the review-to-merge gate. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Compress Remote Control tunnel responses with gzip. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Keep live turn ids above the wire-wide maximum and fold cold transcript rebuilds over the active branch chain. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Warn at startup when a [models] entry in config.toml is missing the model field and cannot be used. ## @pymodel/[email protected] ### Minor Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions from the session picker: press Ctrl+X on a session, then y to confirm. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Drop the experimental flat entity message protocol and history API; session inspect returns to the transcript surface. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Add per-server deferred MCP tool disclosure so large tool lists stay hidden until selected. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions with serialized cleanup so journal and live listeners finish before the session is removed, and broadcast a workspace-scoped deletion event. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Rebuild telemetry as a scope-bound layered context registry so session, agent, and turn fields flow into every event without a separate agent telemetry context service. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Add `-y, --yes` to `pythinker upgrade` (alias `pythinker update`) to skip the confirmation prompt and install the update directly. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Serve workspace @ file suggestions through the engine fs suggest API so the editor extension matches gateway search scoring. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Turn filesystem watch off by default. Set `[watch] enabled = true` or `PYTHINKER_CODE_WATCH=1` to attach watchers. ### Patch Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Make the compaction attempt limit configurable with loop_control.compaction_max_attempts (default 5). - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Stop telling the model that the current working directory is always the project root. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Honor dynamically_loaded_tools from official model catalogs when building tool lists. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Preserve original MCP attachments that are omitted from model output, and let Read open those session attachment references. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Exclude time spent with the session closed from goal time budgets. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Rebaseline the terminal UI library native platform modules and mouse/search behavior. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Include the server token in the Remote Control Local UI link so it opens already signed in. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Remove the 24-hour limit on goal time budgets. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Skip the confirmation prompt for rm -rf commands that target only /tmp or /temp paths. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Track session-index freshness with a dirty journal so restarts reconcile only changed sessions instead of rescanning every mtime. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Deliver session approval and question events past agent filters, and stamp the requesting agent on the wire shape. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Session title generation no longer requires the experimental auto_session_title flag. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Allow steering messages to interrupt waits for background tasks. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Do not record a steer event when an unconsumed steer seeds the next turn after cancel. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Suppress background-task terminal notifications as soon as an agent starts closing, so teardown no longer wakes the model with late task settlements. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode (experimental, `PYTHINKER_CODE_EXPERIMENTAL_TOWER=1`): fix tower mode never starting when enabled through `[experimental] tower = true` in `config.toml` instead of the environment variable. When tower mode cannot be enabled, the error now names the actual blocker — the disabled experiment, a required restart, or the owning session. When another live session owns the workspace tower, the message also names the owning session's title alongside its id. /tower now also works in a directory that is not a git repository — it runs git init and commits what is there (an empty initial commit for empty directories). - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode reliability fixes across messaging, worktrees, and the review-to-merge gate. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Compress Remote Control tunnel responses with gzip. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Keep live turn ids above the wire-wide maximum and fold cold transcript rebuilds over the active branch chain. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Warn at startup when a [models] entry in config.toml is missing the model field and cannot be used. ## @pymodel/[email protected] ### Minor Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Persist the human runtime mirror in the agent wire journal and spawn agent DI scopes from the session layer. ### Patch Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Discard streamed attempt state when the LLM requester retries below the turn so interrupted tool-call ids cannot leak into the next attempt. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Compose LLM recovery strategies outside the turn machine with self-describing proposals and opaque prepare effects. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Add `PYTHINKER_CODE_PERMISSION_MODE_REMINDER`: set it to `0` to stop injecting auto permission-mode reminders into the model context. ## @pymodel/[email protected] ### Minor Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Serve workspace @ file suggestions through the engine fs suggest API so the editor extension matches gateway search scoring. ### Patch Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Rebuild telemetry as a scope-bound layered context registry so session, agent, and turn fields flow into every event without a separate agent telemetry context service. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Persist the human runtime mirror in the agent wire journal and spawn agent DI scopes from the session layer. ## @pymodel/[email protected] ### Minor Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Rebaseline the terminal UI library native platform modules and mouse/search behavior. ## [email protected] ### Patch Changes - Updated dependencies [[`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f)]: - @pymodel/[email protected] - @pymodel/[email protected] ## @pymodel/[email protected] ### Patch Changes - Updated dependencies [[`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f)]: - @pymodel/[email protected] - @pymodel/[email protected] ## @pymodel/[email protected] ### Patch Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Persist the human runtime mirror in the agent wire journal and spawn agent DI scopes from the session layer. - Updated dependencies [[`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f)]: - @pymodel/[email protected] - @pymodel/[email protected] ## @pymodel/[email protected] ### Patch Changes - Updated dependencies [[`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f)]: - @pymodel/[email protected] ## @pymodel/[email protected] ### Patch Changes - Updated dependencies [[`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f)]: - @pymodel/[email protected] ## @pymodel/[email protected] ### Patch Changes - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Validate Remote Control tunnel request base64 with a linear scan so large payloads no longer crash the tunnel as a generic connection failure. - [#326](#326) [`68f861f`](68f861f) Thanks [@elkaix](https://github.com/elkaix)! - Reuse unchanged Remote Control assets across page loads with ETag validation instead of retransferring them. - Updated dependencies [[`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f), [`68f861f`](68f861f)]: - @pymodel/[email protected] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
ci: release packages (#324) This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @pymodel/[email protected] ### Minor Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions from the session picker: press Ctrl+X on a session, then y to confirm. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Drop the experimental flat entity message protocol and history API; session inspect returns to the transcript surface. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Add per-server deferred MCP tool disclosure so large tool lists stay hidden until selected. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions with serialized cleanup so journal and live listeners finish before the session is removed, and broadcast a workspace-scoped deletion event. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebuild telemetry as a scope-bound layered context registry so session, agent, and turn fields flow into every event without a separate agent telemetry context service. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Serve workspace @ file suggestions through the engine fs suggest API so the editor extension matches gateway search scoring. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Turn filesystem watch off by default. Set `[watch] enabled = true` or `PYTHINKER_CODE_WATCH=1` to attach watchers. ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Make the compaction attempt limit configurable with loop_control.compaction_max_attempts (default 5). - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Stop telling the model that the current working directory is always the project root. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Honor dynamically_loaded_tools from official model catalogs when building tool lists. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Preserve original MCP attachments that are omitted from model output, and let Read open those session attachment references. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Exclude time spent with the session closed from goal time budgets. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebaseline the terminal UI library native platform modules and mouse/search behavior. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Include the server token in the Remote Control Local UI link so it opens already signed in. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Remove the 24-hour limit on goal time budgets. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Skip the confirmation prompt for rm -rf commands that target only /tmp or /temp paths. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Track session-index freshness with a dirty journal so restarts reconcile only changed sessions instead of rescanning every mtime. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Deliver session approval and question events past agent filters, and stamp the requesting agent on the wire shape. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Session title generation no longer requires the experimental auto_session_title flag. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Allow steering messages to interrupt waits for background tasks. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Do not record a steer event when an unconsumed steer seeds the next turn after cancel. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Suppress background-task terminal notifications as soon as an agent starts closing, so teardown no longer wakes the model with late task settlements. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode (experimental, `PYTHINKER_CODE_EXPERIMENTAL_TOWER=1`): fix tower mode never starting when enabled through `[experimental] tower = true` in `config.toml` instead of the environment variable. When tower mode cannot be enabled, the error now names the actual blocker — the disabled experiment, a required restart, or the owning session. When another live session owns the workspace tower, the message also names the owning session's title alongside its id. /tower now also works in a directory that is not a git repository — it runs git init and commits what is there (an empty initial commit for empty directories). - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode reliability fixes across messaging, worktrees, and the review-to-merge gate. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Compress Remote Control tunnel responses with gzip. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Keep live turn ids above the wire-wide maximum and fold cold transcript rebuilds over the active branch chain. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Add `-y, --yes` to `pythinker upgrade` (alias `pythinker update`) to skip the confirmation prompt and install the update directly. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Warn at startup when a [models] entry in config.toml is missing the model field and cannot be used. ## @pymodel/[email protected] ### Minor Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions from the session picker: press Ctrl+X on a session, then y to confirm. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Drop the experimental flat entity message protocol and history API; session inspect returns to the transcript surface. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Add per-server deferred MCP tool disclosure so large tool lists stay hidden until selected. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Delete sessions with serialized cleanup so journal and live listeners finish before the session is removed, and broadcast a workspace-scoped deletion event. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebuild telemetry as a scope-bound layered context registry so session, agent, and turn fields flow into every event without a separate agent telemetry context service. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Serve workspace @ file suggestions through the engine fs suggest API so the editor extension matches gateway search scoring. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Turn filesystem watch off by default. Set `[watch] enabled = true` or `PYTHINKER_CODE_WATCH=1` to attach watchers. ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Make the compaction attempt limit configurable with loop_control.compaction_max_attempts (default 5). - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Stop telling the model that the current working directory is always the project root. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Honor dynamically_loaded_tools from official model catalogs when building tool lists. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Preserve original MCP attachments that are omitted from model output, and let Read open those session attachment references. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Exclude time spent with the session closed from goal time budgets. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebaseline the terminal UI library native platform modules and mouse/search behavior. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Include the server token in the Remote Control Local UI link so it opens already signed in. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Remove the 24-hour limit on goal time budgets. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Skip the confirmation prompt for rm -rf commands that target only /tmp or /temp paths. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Track session-index freshness with a dirty journal so restarts reconcile only changed sessions instead of rescanning every mtime. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Deliver session approval and question events past agent filters, and stamp the requesting agent on the wire shape. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Session title generation no longer requires the experimental auto_session_title flag. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Allow steering messages to interrupt waits for background tasks. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Do not record a steer event when an unconsumed steer seeds the next turn after cancel. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Suppress background-task terminal notifications as soon as an agent starts closing, so teardown no longer wakes the model with late task settlements. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode (experimental, `PYTHINKER_CODE_EXPERIMENTAL_TOWER=1`): fix tower mode never starting when enabled through `[experimental] tower = true` in `config.toml` instead of the environment variable. When tower mode cannot be enabled, the error now names the actual blocker — the disabled experiment, a required restart, or the owning session. When another live session owns the workspace tower, the message also names the owning session's title alongside its id. /tower now also works in a directory that is not a git repository — it runs git init and commits what is there (an empty initial commit for empty directories). - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Tower mode reliability fixes across messaging, worktrees, and the review-to-merge gate. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Compress Remote Control tunnel responses with gzip. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Keep live turn ids above the wire-wide maximum and fold cold transcript rebuilds over the active branch chain. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Add `-y, --yes` to `pythinker upgrade` (alias `pythinker update`) to skip the confirmation prompt and install the update directly. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Warn at startup when a [models] entry in config.toml is missing the model field and cannot be used. ## @pymodel/[email protected] ### Minor Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Persist the human runtime mirror in the agent wire journal and spawn agent DI scopes from the session layer. ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Discard streamed attempt state when the LLM requester retries below the turn so interrupted tool-call ids cannot leak into the next attempt. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Compose LLM recovery strategies outside the turn machine with self-describing proposals and opaque prepare effects. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Add `PYTHINKER_CODE_PERMISSION_MODE_REMINDER`: set it to `0` to stop injecting auto permission-mode reminders into the model context. ## @pymodel/[email protected] ### Minor Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Serve workspace @ file suggestions through the engine fs suggest API so the editor extension matches gateway search scoring. ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebuild telemetry as a scope-bound layered context registry so session, agent, and turn fields flow into every event without a separate agent telemetry context service. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Persist the human runtime mirror in the agent wire journal and spawn agent DI scopes from the session layer. ## @pymodel/[email protected] ### Minor Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Rebaseline the terminal UI library native platform modules and mouse/search behavior. ## [email protected] ### Patch Changes - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/[email protected] - @pymodel/[email protected] ## @pymodel/[email protected] ### Patch Changes - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/[email protected] - @pymodel/[email protected] ## @pymodel/[email protected] ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Persist the human runtime mirror in the agent wire journal and spawn agent DI scopes from the session layer. - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/[email protected] - @pymodel/[email protected] ## @pymodel/[email protected] ### Patch Changes - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/[email protected] ## @pymodel/[email protected] ### Patch Changes - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/[email protected] ## @pymodel/[email protected] ### Patch Changes - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Validate Remote Control tunnel request base64 with a linear scan so large payloads no longer crash the tunnel as a generic connection failure. - [#323](#323) [`96d1a0c`](96d1a0c) Thanks [@elkaix](https://github.com/elkaix)! - Reuse unchanged Remote Control assets across page loads with ETag validation instead of retransferring them. - Updated dependencies [[`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c), [`96d1a0c`](96d1a0c)]: - @pymodel/[email protected] Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
ci: release packages (#321) This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @pymodel/[email protected] ### Minor Changes - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Add turn-level file history for Edit and Write. Clients can list a turn's file changes and read captured content through the session file-history API. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Add an experimental NotifyUser tool that posts mid-turn updates in a TUI Updates panel. Enable it with PYTHINKER_CODE_EXPERIMENTAL_NOTIFY_USER=1, `[experimental] notify_user = true`, or `/experiments`. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Read large files in pages with a character budget instead of a 1000-line or 100 KB cap. Set `[read] default_max_chars` and `[read] max_chars` in config.toml, or pass `max_chars` and `column_offset` on Read. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Add an occasional session rating prompt above the editor. Turn it off with `disable_feedback_survey = true` in `tui.toml` or Settings → Feedback survey. ### Patch Changes - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Point compacted conversation notes at the on-disk event log so later turns can recover exact outputs. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - After context compaction, keep a short continue-work instruction as the latest user message. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Keep print-mode shutdown from skipping journal flush, and keep truncated forks from dropping later work in the retained turn. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Keep print-mode session journals complete when the process exits or receives a termination signal. ## @pymodel/[email protected] ### Minor Changes - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Add turn-level file history for Edit and Write. Clients can list a turn's file changes and read captured content through the session file-history API. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Add an experimental NotifyUser tool that posts mid-turn updates in a TUI Updates panel. Enable it with PYTHINKER_CODE_EXPERIMENTAL_NOTIFY_USER=1, `[experimental] notify_user = true`, or `/experiments`. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Read large files in pages with a character budget instead of a 1000-line or 100 KB cap. Set `[read] default_max_chars` and `[read] max_chars` in config.toml, or pass `max_chars` and `column_offset` on Read. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Add an occasional session rating prompt above the editor. Turn it off with `disable_feedback_survey = true` in `tui.toml` or Settings → Feedback survey. ### Patch Changes - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Point compacted conversation notes at the on-disk event log so later turns can recover exact outputs. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - After context compaction, keep a short continue-work instruction as the latest user message. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Keep print-mode shutdown from skipping journal flush, and keep truncated forks from dropping later work in the retained turn. - [#320](#320) [`9b6e561`](9b6e561) Thanks [@elkaix](https://github.com/elkaix)! - Keep print-mode session journals complete when the process exits or receives a termination signal. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
ci: release packages (#319) This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and the packages will be published to npm automatically. If you're not ready to do a release yet, that's fine, whenever you add more changesets to main, this PR will be updated. # Releases ## @pymodel/[email protected] ### Patch Changes - [#318](#318) [`e09e9c1`](e09e9c1) Thanks [@elkaix](https://github.com/elkaix)! - Wait for the npm tarball to become downloadable before updating the Homebrew formula. ## @pymodel/[email protected] ### Patch Changes - [#318](#318) [`e09e9c1`](e09e9c1) Thanks [@elkaix](https://github.com/elkaix)! - Wait for the npm tarball to become downloadable before updating the Homebrew formula. Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
PreviousNext