Skip to content

Tags: PyModel/pythinker-code

Tags

desktop-v1.3.1

Toggle desktop-v1.3.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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]>

desktop-v1.3.0

Toggle desktop-v1.3.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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>

desktop-v1.2.0

Toggle desktop-v1.2.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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>

desktop-v1.1.0

Toggle desktop-v1.1.0's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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>

desktop-v1.0.1

Toggle desktop-v1.0.1's commit message

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
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>