Read PR pages, comments, commits, and changed files.
UnderstandIdentified and reviewed linked issues.
UnderstandAnalyzed PR diffs and compared with main branch.
UnderstandChecked documentation and changelogs.
UnderstandCompiled detailed review summaries for all PRs.
BuildYou are given one or more GitHub PR URLs: https://github.com/badlogic/pi-mono/pulls
For each PR URL, do the following in order:
packages/*/CHANGELOG.md files. Report whether an entry exists. If missing, state that a changelog entry is required before merge and that you will add it if the user decides to merge. Follow the changelog format rules in AGENTS.md. Verify:
### Breaking Changes, ### Added, ### Fixed, etc.)Fixed foo ([#123](https://github.com/badlogic/pi-mono/pull/123) by [@user](https://github.com/user))### Breaking Changes, not just ### FixedOutput format per PR: PR: Changelog:
If no issues are found, say so under Bad and Ugly.
Now let me get the diffs for all PRs:
Now let me check the linked issues and read relevant source files:
Now let me read more of the PR #903 about bash interception:
Now let me check what issue #316 is (referenced in PR #345):
Now let me read the README to check if documentation updates are needed:
Now let me review all PRs completely. First, let me verify the status of various changelogs:
Now let me compile the full review for all PRs:
Title: feat(coding-agent): add Qwen CLI OAuth provider Author: @4h9fbZ
Changelog:
packages/coding-agent/CHANGELOG.md or packages/ai/CHANGELOG.md. If merged, a changelog entry is required. The entry should go under ### Added for the Qwen CLI extension example and the thinkingFormat: "qwen" addition.Good:
modifyModels hook for dynamic baseUrl based on OAuth credentialsthinkingFormat: "qwen" to core types for enable_thinking: boolean parameter supportBad:
oauth.modifyModels support to ModelRegistry.registerCustomProvider() (line 533-538 in model-registry.ts), but this code path is only called during initial provider registration. If credentials change later (e.g., after re-login), models won't be updated with the new baseUrl.thinkingFormat: "qwen" code path in openai-completions.tsvision-model model has supportsDeveloperRole: false but no explanation why this is neededUgly:
Questions or Assumptions:
vision-model the correct model ID for Qwen3 VL Plus? The naming is inconsistent with other Qwen models (e.g., qwen3-coder-plus vs vision-model)modifyModels hook be documented in docs/custom-provider.md as the PR description mentions?Change summary:
thinkingFormat: "qwen" to OpenAICompletionsCompat for enable_thinking parametermodifyModels in OAuth providers to update model baseUrl from credentialsTests:
Title: feat(tui): add tmux support for kitty graphics protocol Author: @ogulcancelik
Changelog:
packages/tui/CHANGELOG.md under ### Added with proper attribution.Good:
allow-passthrough settingisInsideTmux, isTmuxPassthroughEnabled, resetTmuxPassthroughCache, generatePlaceholderRows, getNextImageIdBad:
isTmuxPassthroughEnabled() uses synchronous execSync which could block the event loop on slow systemsKITTY_DIACRITICS array is 297 entries but the constant MAX_DIACRITIC_VALUE is KITTY_DIACRITICS.length - 1 (296), and images are clamped to this. Large images would be silently truncated to 297x297 cells without any warning.Ugly:
imageId option and deleteKittyImage/deleteAllKittyImages functions from the public API. This is a breaking change that should be noted.Questions or Assumptions:
set -g allow-passthrough all)?Change summary:
Tests:
Title: Add support for intercepting bash Author: @mitsuhiko
Changelog:
packages/coding-agent/CHANGELOG.md. Entry should be in ### Added documenting the before_bash_exec extension event.Good:
before_bash_exec event for intercepting both tool and user bash executionBashExecEvent, BashExecOverrides, BeforeBashExecEvent)uv.ts example extension demonstrating practical use case (redirecting Python to uv)extensions.md documentation with the new eventexecutedCommand in session for transparency when command was rewrittenundefined valuesBad:
tool_result hook returning isError: true on a successful tool to "force" it to be treated as an error is a bit confusing API-wise. The PR description notes this feels "somewhat consistent but ugly."tools.test.ts changes from mocking getShellConfig to resolveShellExecutionOptions, which is fine but shows tight coupling to implementation details.Ugly:
Questions or Assumptions:
before_bash_exec in the extensions overview section?Change summary:
before_bash_exec event fired before bash execution (tool calls and user !/!!)uv.ts example extensionTests:
Title: Add zai-coding-plan provider and make zai point to regular API Author: @kaofelix
Changelog:
packages/ai/CHANGELOG.md under ### Breaking Changes but packages/coding-agent/CHANGELOG.md has a ### Changed entry in the wrong section (inside [0.49.2] which is already released). The coding-agent entry should be under ## [Unreleased] ### Breaking Changes.Good:
zai to zai-coding-plan for clarity about which endpoint is usedBad:
packages/coding-agent/CHANGELOG.md entry is in the wrong section (inside [0.49.2] which is already released)packages/ai/CHANGELOG.md correctly has it under [Unreleased] but packages/coding-agent/CHANGELOG.md doesn't have a breaking changes entry in unreleasedUgly:
Questions or Assumptions:
Change summary:
zai provider to zai-coding-planzai-coding-plan provider nameTests:
Title: feat(coding-agent): add template variables to custom system prompts Author: @ogulcancelik
Changelog:
packages/coding-agent/CHANGELOG.md under ### Added, though it could be more descriptive about the behavioral change (no template vars = full replacement mode).Good:
{{tools}}, {{context}}, {{skills}} template variables for SYSTEM.mdSystemPromptTemplates interfacegetSystemPromptTemplates() methodBad:
ResourceLoader interface now requires implementing getSystemPromptTemplates(), which could break custom implementationsUgly:
Questions or Assumptions:
Change summary:
{{tools}}, {{context}}, {{skills}}) for custom SYSTEM.mdTests:
Title: feat(coding-agent): add named-only filter toggle to /resume picker Author: @w-winter Linked Issue: #862 (closed)
Changelog:
packages/coding-agent/CHANGELOG.md under ### Breaking Changes, but this is NOT a breaking change. It's a new feature (added keybinding). Should be under ### Added.Good:
Ctrl+N toggle to filter sessions by named-only vs all in /resumetoggleSessionNamedFilter in keybindings.jsonBad:
### Breaking Changes but this is a feature addition, not a breaking changeUgly:
Questions or Assumptions:
Change summary:
Ctrl+N toggle in /resume picker to filter named sessions onlytoggleSessionNamedFilter to configurable keybindingsTests:
Title: Rename session from /resume session list Author: @svkozak
Changelog:
### Added in packages/coding-agent/CHANGELOG.md.Good:
Ctrl+R to rename sessions directly from /resume picker--resumeBad:
Ugly:
Ctrl+R to Ctrl+N to make room for rename. This conflicts with PR #868 which uses Ctrl+N for name filter toggle. These PRs need coordination.Questions or Assumptions:
Ctrl+N. Which one gets precedence? They may need to coordinate keybindings.Change summary:
Ctrl+R rename mode in /resume pickerTests:
Title: Add http_request and http_response hooks for LLM provider HTTP interception Author: @kim0
Changelog:
packages/coding-agent/CHANGELOG.md under ### Added with comprehensive description.Good:
http_request and http_response extension eventscreateFetch factory passed to agentBad:
packages/agent/ changes add createFetch to AgentOptions and AgentLoopConfig, but there's no changelog entry for packages/agent/CHANGELOG.mdUgly:
Questions or Assumptions:
Change summary:
http_request event fired before HTTP requests to LLM providershttp_response event fired after responsesTests:
For PRs that modify features, the following documentation files may need updates:
| PR | README.md | docs/*.md | examples/*.md |
|---|---|---|---|
| #940 | May need Qwen provider docs | docs/custom-provider.md should mention modifyModels | Extension example added |
| #908 | Should document tmux requirement | - | - |
| #903 | Should mention before_bash_exec | docs/extensions.md updated ✓ | uv.ts example added ✓ |
| #899 | Updated ✓ | - | - |
| #892 | Should document template variables | - | - |
| #868 | Updated ✓ | - | - |
| #863 | Updated ✓ | - | - |
| #345 | - | Should document http events | - |