ci: release packages - #130
Open
pythinker-release-bot[bot] wants to merge 1 commit into
Open
Conversation
Contributor
Author
|
@coderabbitai review |
commit: |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR was opened by the Changesets release 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/pythinker-code@0.37.0
Minor Changes
#129
55ffae4Thanks @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
55ffae4Thanks @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
55ffae4Thanks @elkaix! - Keep pasted image and video attachments available in session history, and clean up temporary uploads automatically.#129
55ffae4Thanks @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
55ffae4Thanks @elkaix! - Fix UTF-8 text files containing Chinese or emoji being misdetected as binary, so log files preview correctly in the web UI.#129
55ffae4Thanks @elkaix! - Print the fullpythinker --resumecommand after/forkand copy it to the clipboard, so the fork can be entered directly from a new CLI process.#129
55ffae4Thanks @elkaix! - Warn in the footer while a typed/goalobjective 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
55ffae4Thanks @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
55ffae4Thanks @elkaix! - Fix an[unexpected] Error2: Model "<alias>" is not configured in config.tomlerror 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 theagent.status.updatedlistener.#129
55ffae4Thanks @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
55ffae4Thanks @elkaix! - Queue slash skill commands entered while the agent is busy instead of rejecting them with "Cannot / 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
55ffae4Thanks @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 —listMcpServersalso covers plugin-declared servers (read-only, with their effective config) and returnssource/origin/mutablemarkers; newgetMcpServerfor a single effective config;testMcpServerConfigprobes an unsaved inline config; sessions can connect a server at runtime viaaddMcpServerwith an optional persist flag;reconnectMcpServeraccepts an optional replacement config and otherwise re-resolves the current config instead of reusing a stale snapshot;listMcpServerAuthStatusesacceptscwd/verify(online probe) and distinguishes dead grants via the newoauth-expiredstate; 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 stdioenv/ remoteheadersvalues 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
55ffae4Thanks @elkaix! - Addpythinker 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.@pymodel/pythinker-code-sdk@0.19.0
Minor Changes
#129
55ffae4Thanks @elkaix! - Daemon file references no longer persist a materialization path: the daemon-file URL builder takes only a file id, and the parsed reference no longer carries apathfield. The display path is derived from the session media store at read time, so a session fork or home relocation can no longer stale a persisted reference. Urls with a legacy?path=query still parse.#129
55ffae4Thanks @elkaix! - Addsession.promptWithSkills(input, skills)to submit one prompt with one or more skill activations bundled into the same user message — one turn, one undo unit (v2 engine only; rejects on the v1 engine).#129
55ffae4Thanks @elkaix! - AdduploadFilefor uploading media to the engine's file store and referencing it from prompts, plus an optionalpromptIdon prompt submissions for correlating them with turn-started events. Both require the v2 harness.#129
55ffae4Thanks @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 —listMcpServersalso covers plugin-declared servers (read-only, with their effective config) and returnssource/origin/mutablemarkers; newgetMcpServerfor a single effective config;testMcpServerConfigprobes an unsaved inline config; sessions can connect a server at runtime viaaddMcpServerwith an optional persist flag;reconnectMcpServeraccepts an optional replacement config and otherwise re-resolves the current config instead of reusing a stale snapshot;listMcpServerAuthStatusesacceptscwd/verify(online probe) and distinguishes dead grants via the newoauth-expiredstate; 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 stdioenv/ remoteheadersvalues 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.Patch Changes
55ffae4Thanks @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.pythinker@0.9.3
Patch Changes
55ffae4,55ffae4,55ffae4,55ffae4,55ffae4]:@pymodel/acp-adapter@0.3.10
Patch Changes
55ffae4,55ffae4,55ffae4,55ffae4,55ffae4,55ffae4]:@pymodel/agent-core@0.15.9
Patch Changes
55ffae4Thanks @elkaix! - Include the file-reference workaround in theGOAL_OBJECTIVE_TOO_LONGerror message so clients surface how to submit long objectives.@pymodel/agent-core-v2@0.4.1
Patch Changes
55ffae4Thanks @elkaix! - Include the file-reference workaround in theGOAL_OBJECTIVE_TOO_LONGerror message so clients surface how to submit long objectives.@pymodel/pi-tui@0.84.4
Patch Changes
55ffae4Thanks @elkaix! - Add an opt-in inline slash autocomplete trigger that fires after whitespace mid-input and at the start of subsequent editor lines.