Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
5 changes: 0 additions & 5 deletions .changeset/clean-staged-media.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/daemon-file-ref-drop-path.md

This file was deleted.

6 changes: 0 additions & 6 deletions .changeset/fix-gemini-thought-signature.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/fix-utf8-text-binary-detection.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/fork-print-resume-command.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/goal-objective-length-warning.md

This file was deleted.

6 changes: 0 additions & 6 deletions .changeset/goal-objective-too-long-message.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/inline-multi-skill-sdk.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/inline-multi-skill-tui.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/inline-slash-trigger-pi-tui.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/lazy-global-search-startup.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/media-registrar-stale-alias.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/persist-token-counting-ledger.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/queue-skill-commands-while-busy.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/sdk-upload-file.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/tower-slash-command.md

This file was deleted.

8 changes: 0 additions & 8 deletions .changeset/v1-mcp-management-plane.md

This file was deleted.

5 changes: 0 additions & 5 deletions .changeset/web-title-flag.md

This file was deleted.

34 changes: 34 additions & 0 deletions apps/pythinker-code/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,5 +1,39 @@
# @pymodel/pythinker-code

## 0.37.0

### Minor Changes

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Activate multiple skills in a single prompt. Type `/` after whitespace to insert a skill token; all referenced skills run with the prompt as one turn (and undo as one unit).

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Add the /tower slash command to orchestrate multiple agents iterating on one repo in parallel — you act as the control tower while worker agents execute missions in their own git worktrees. Run /tower to start.

### Patch Changes

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Keep pasted image and video attachments available in session history, and clean up temporary uploads automatically.

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Fix Gemini tool-calling sessions failing on follow-up requests: preserve the tool-call thought signature and keep trailing user text before function results.

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Fix UTF-8 text files containing Chinese or emoji being misdetected as binary, so log files preview correctly in the web UI.

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Print the full `pythinker --resume` command after `/fork` and copy it to the clipboard, so the fork can be entered directly from a new CLI process.

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Warn in the footer while a typed `/goal` objective exceeds the 4000-character limit, and restore the input instead of losing it when an over-limit objective is rejected. The error message now suggests putting long content in a file and referencing the file path.

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Fix several seconds of startup lag: the global search index (used only by the web UI's search) was being opened and synced in every terminal session, including ones that never search. It now loads on demand, so interactive startup stays fast.

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Fix an `[unexpected] Error2: Model "<alias>" is not configured in config.toml` error printed on startup when a restored session references a model that is no longer configured (e.g. after logging out of the managed Pythinker Code account). Media tool registration now degrades gracefully instead of throwing from the `agent.status.updated` listener.

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Persist the token counting ledger (`token_counting.measured` / `truncated` / `rebased`) to the wire journal, so the displayed context size keeps its measured value after archiving and unarchiving a session (or any close → resume) instead of dropping to a smaller estimate until the next LLM call.

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Queue slash skill commands entered while the agent is busy instead of rejecting them with "Cannot /<cmd> while streaming" — they now behave exactly like normal input: queued visibly by default, and Ctrl-S steers them into the running turn as real skill activations.

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - On the legacy engine, plugin MCP server changes (install / enable / disable / remove / reload) now apply to open sessions immediately, and an MCP server OAuth sign-in or credential reset automatically refreshes the affected sessions instead of leaving them stuck until a manual reconnect; a connection that fails mid-session for auth reasons is now reported as needing sign-in rather than as a generic failure.

`@pymodel/pythinker-code-sdk`: the MCP management surface is now backed by a unified, source-tagged registry — `listMcpServers` also covers plugin-declared servers (read-only, with their effective config) and returns `source` / `origin` / `mutable` markers; new `getMcpServer` for a single effective config; `testMcpServerConfig` probes an unsaved inline config; sessions can connect a server at runtime via `addMcpServer` with an optional persist flag; `reconnectMcpServer` accepts an optional replacement config and otherwise re-resolves the current config instead of reusing a stale snapshot; `listMcpServerAuthStatuses` accepts `cwd` / `verify` (online probe) and distinguishes dead grants via the new `oauth-expired` state; stored OAuth grants now record their absolute expiry and are refreshed proactively and single-flight per credential. Session status entries and read-only management entries redact secret-bearing stdio `env` / remote `headers` values to key lists, and concurrent logins for the same credential join a single browser flow. A new app-level inspection, `inspectAppMcpServers`, reports every server's effective config and real (probe-verified) authorization state — including plugin servers and runtime-name collisions — and the OAuth flow RPCs have locator-addressed variants (`authenticateAppMcpServer` / `resetAppMcpServerAuth`) so plugin servers can be signed in and reset directly.

- [#129](https://github.com/PyModel/pythinker-code/pull/129) [`55ffae4`](https://github.com/PyModel/pythinker-code/commit/55ffae4cdf37542711b166f883536f7b3ba2a948) Thanks [@elkaix](https://github.com/elkaix)! - Add `pythinker web --web-title <title>` to set a custom browser tab title for the web UI instance, so multiple instances on different machines are easy to tell apart; without the flag the tab title shows the active workspace's directory name.

## 0.36.1

### Patch Changes
Expand Down
10 changes: 10 additions & 0 deletions apps/pythinker-code/dist-web/_headers
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/install.sh
Content-Type: text/x-shellscript; charset=utf-8
Cache-Control: public, max-age=300, s-maxage=900, stale-if-error=86400

/install.ps1
Content-Type: text/plain; charset=utf-8
Cache-Control: public, max-age=300, s-maxage=900, stale-if-error=86400

/releases/*
Cache-Control: public, max-age=31536000, immutable
Binary file added apps/pythinker-code/dist-web/apple-touch-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added apps/pythinker-code/dist-web/arctecture.webp
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Loading