diff --git a/packages/ai/CHANGELOG.md b/packages/ai/CHANGELOG.md index 681c81263..be1a6539f 100644 --- a/packages/ai/CHANGELOG.md +++ b/packages/ai/CHANGELOG.md @@ -4,8 +4,8 @@ ### Fixed -- Fixed `AWS_BEDROCK_SKIP_AUTH` failing to expose Amazon Bedrock models when AWS credential files are unavailable; the registry now recognizes the transport's explicit auth bypass without enabling the separate Bedrock Mantle provider ([#8267](https://github.com/can1357/oh-my-pi/issues/8267)). -- Fixed `forceReasoningOff` being ignored by Anthropic and Google transports, which allowed native thinking alongside a caller-supplied external scratchpad. +- Fixed an issue where AWS_BEDROCK_SKIP_AUTH failed to expose Amazon Bedrock models when AWS credential files were unavailable. +- Fixed an issue where forceReasoningOff was ignored by Anthropic and Google transports, which allowed native thinking alongside a caller-supplied external scratchpad. ## [17.2.14] - 2026-08-11 diff --git a/packages/catalog/CHANGELOG.md b/packages/catalog/CHANGELOG.md index c0a0383f7..4d3a270cb 100644 --- a/packages/catalog/CHANGELOG.md +++ b/packages/catalog/CHANGELOG.md @@ -4,7 +4,7 @@ ### Fixed -- `parseSemVer` falls back to dynamic parsing when a version misses the precompute table, so model ids with large minor versions (`claude-opus-5-11`) or three-part versions no longer classify as unknown and inherit stale defaults. +- Fixed classification of model IDs with large minor versions (e.g., `claude-opus-5-11`) or three-part versions, ensuring they no longer fall back to stale default configurations. ## [17.2.13] - 2026-08-11 diff --git a/packages/coding-agent/CHANGELOG.md b/packages/coding-agent/CHANGELOG.md index 58716cad2..75dadad93 100644 --- a/packages/coding-agent/CHANGELOG.md +++ b/packages/coding-agent/CHANGELOG.md @@ -4,29 +4,25 @@ ### Added -- Added `--external-thinking` CLI flag to force external thinking tool activation -- Added `omp compress`, a command that rewrites a text file into the dense prompt register through a two-tool agent loop: the agent submits a draft with `rewrite` plus every loss it accepted, the command replies with the measured size and that loss list and asks for a verdict, and only an `approve` on a reviewed draft is written. Reports go to stderr and the approved text to stdout, so `omp compress f.md > out.md` yields just the compressed text; `-o` writes a file, `-i` rewrites in place. The session is deliberately sealed — the default system prompt is replaced rather than appended, and skills, rules, `AGENTS.md` context files, prompt templates, slash commands, extensions, MCP, IRC, and LSP are all disabled — and the source document is quoted as nonce-delimited inert data so the directives it contains are compressed instead of obeyed. -- `omp compress` accepts multiple files and glob patterns, compresses up to `-n` of them concurrently (default 4, one isolated session each), and renders the same TTY completion bar as `omp cleanse`; multi-file runs require `-i` since one `--out` cannot hold many files, and a file that fails is reported without cancelling its peers. The bar itself moved to `src/cli/progress-reporter.ts` and is now shared with `omp cleanse` instead of duplicated. -- `omp cleanse` discovers far more tooling: staticcheck and golangci-lint for Go; mypy, pylint, flake8, ty, and basedpyright for Python; oxlint, `deno lint`, stylelint, and vue-tsc (preferred over tsc for roots containing `.vue` files) for the JS/TS ecosystem; plus actionlint for GitHub workflows. Alternative tools without a config marker (staticcheck, actionlint) are skipped silently when the binary is missing instead of cluttering the skip report. -- `omp cleanse ""` (e.g. `omp cleanse "ts errors"`) launches a discovery subagent that inspects the project, works out the exact command(s) and working directory for the request, verifies them by running them once, and maps their output onto a known parser (or gcc-style `generic`) before the normal detect→repair→verify loop runs. -- `omp cleanse` without arguments on a TTY now shows a picker: run all discovered checkers, run one specific checker, or describe what to fix (which routes through the discovery agent). `--all`/`-a` skips the picker; non-TTY runs keep the old run-everything behavior. +- Added `--external-thinking` CLI flag to force external thinking tool activation. +- Added `omp compress` command, which uses an isolated, two-tool agent loop to rewrite single or multiple text files (supporting glob patterns and concurrent processing) into dense prompt registers. +- Expanded tool discovery in `omp cleanse` to support `staticcheck` and `golangci-lint` (Go); `mypy`, `pylint`, `flake8`, `ty`, and `basedpyright` (Python); `oxlint`, `deno lint`, `stylelint`, and `vue-tsc` (JS/TS); and `actionlint` (GitHub Workflows). +- Added support for natural language requests in `omp cleanse ""`, which launches a discovery subagent to automatically inspect the project, determine the correct commands, and map outputs. +- Added an interactive picker to `omp cleanse` when run without arguments on a TTY, allowing users to run all checkers, select a specific checker, or describe what to fix. ### Changed -- Restricted the `think` tool to GPT Responses, Claude, and Gemini transports that can replace native reasoning, and kept its streamed scratchpad input named `thoughts`. -- `omp cleanse` default subagent cap raised from 8 to 32 (`--agents`/`-n` still overrides). +- Restricted the `think` tool to GPT, Claude, and Gemini transports that support native reasoning replacement. +- Increased the default subagent cap for `omp cleanse` from 8 to 32. ### Fixed -- Fixed `plan.defaultOnStartup: true` making headless `omp -p` runs hang until `--max-time` with no output. Print mode armed an interactive plan-review flow whose only headless exit was the model emitting a valid `xd://propose` execute-dispatch, so any turn that did not stranded to the deadline. Print mode no longer honors the startup default (it has no surface to review, approve, or exit a plan); `--plan-yolo` remains the supported headless plan flow ([#8272](https://github.com/can1357/oh-my-pi/issues/8272)). -- Fixed `display.hideToolActivity` leaving TTSR rules, todo reminders, late diagnostics, launch completions, async completions, and the duplicate todo-failure warning visible; all activity blocks now hide and reappear without discarding their mounted state. -- Fixed the MCP Streamable HTTP transport never sending the `MCP-Protocol-Version` header and negotiating the stale `2025-03-26` revision, which made spec-current servers (e.g. AWS Bedrock AgentCore Gateway with an outbound per-user OAuth target) reject every `tools/call` with a generic internal error. The client now negotiates `2025-11-25`, echoes the negotiated version on every request after `initialize`, and resumes server-closed POST response streams with `Last-Event-ID` after the requested SSE retry interval ([#8264](https://github.com/can1357/oh-my-pi/issues/8264)). -- Fixed `/handoff` losing the previous session's `local://` artifacts (plans, scratch files, research notes): the handoff document referenced files that became unreadable because the new session's `local/` root was empty. Local artifacts are now copied across the handoff session boundary, mirroring the plan approve-and-execute path ([#8261](https://github.com/can1357/oh-my-pi/issues/8261)). -- Fixed valid `.tar` and `.tar.gz` archive reads terminating omp through libarchive by parsing tar members in-process ([#4774](https://github.com/can1357/oh-my-pi/issues/4774)). -- Hardened the in-process tar reader: directory symlinks targeting their own subtree (`a -> a/b`) no longer loop forever (alias rewrites are depth-bounded, ELOOP-style at 40); file symlinks routed through directory aliases resolve instead of dangling; link resolution uses a work queue with precomputed directory prefixes instead of quadratic archive rescans; unused PAX attributes are discarded while parsing; member paths and link targets are capped at 4096 bytes; old-GNU sparse extension blocks between header and data no longer corrupt the index; and duplicate members follow tar append semantics (later member wins). -- Hardened tar archive reads and rewrites: enforce archive and member memory caps at every materialization boundary; honor global PAX attributes and old-GNU `N` name records; distinguish old-GNU sparse metadata from USTAR prefixes; parse signed GNU base-256 values; reject overlong raw PAX/LongLink path data; and collapse superseded links before resolution. -- Fixed MCP Streamable HTTP SSE resumption gaps: a 401/403 on a resume GET refreshed auth by replaying the original POST, which could double-execute a state-changing tool — the GET now refreshes and retries in place; abrupt stream drops resume with `Last-Event-ID` like clean closes; and the long-lived GET listener resumes polling-style server closes instead of tearing the session down through the reconnect breaker. -- Fixed Ctrl+O tool-output expansion not reaching launch-completion messages wrapped by the hidden-tool-activity container. +- Fixed a hang in headless `omp -p` runs when `plan.defaultOnStartup: true` is enabled by disabling the startup default in print mode. +- Fixed `display.hideToolActivity` failing to hide certain activity blocks, such as reminders, diagnostics, and completions. +- Fixed several issues in the MCP Streamable HTTP transport, including updating the negotiated protocol version to `2025-11-25`, resolving connection drops and SSE resumption gaps, and preventing double-execution of tools during auth refreshes. +- Fixed `/handoff` losing local artifacts (plans, scratch files, research notes) by copying them across the handoff session boundary. +- Replaced libarchive-based tar parsing with a hardened, in-process tar reader to prevent crashes and safely handle complex archive structures, symlinks, and sparse metadata. +- Fixed `Ctrl+O` tool-output expansion failing to reach launch-completion messages wrapped in the hidden tool activity container. ## [17.2.14] - 2026-08-11 diff --git a/packages/hashline/CHANGELOG.md b/packages/hashline/CHANGELOG.md index fb8d50ce7..173da1be7 100644 --- a/packages/hashline/CHANGELOG.md +++ b/packages/hashline/CHANGELOG.md @@ -2,15 +2,14 @@ ## [Unreleased] - ### Added -- Post-apply parse advisory: when the applied result stops parsing while the pre-edit content parsed, the response now carries a warning naming the first changed line. This catches balance-neutral misplacements — a statement swapped onto the wrong line number leaves no delimiter anomaly for the repair heuristics — which previously applied with zero feedback and surfaced only at the next compile. +- Added a post-apply parse advisory warning that alerts users when an applied edit fails to parse (despite the pre-edit content parsing successfully), helping catch balance-neutral misplacements that previously failed silently. ### Fixed -- Fixed Rust lifetimes blinding the delimiter-balance scanner. `'` entered string state to end-of-line, so `&'static str {` hid its opening brace; a replacement range swallowing such a signature line looked balance-neutral and the mid-block advisory never fired, silently deleting the signature. Single-quote lexing is now language-aware: on `.rs` targets, `'` opens a literal only when it lexes as a real char literal (`'a'`, `'\n'`, `'\u{7FFF}'`), and lifetimes stay ordinary characters — apostrophes are never paired across lifetimes, which would swallow the delimiters between them (`<'a>(x: &'a str)`). -- Fixed hashline reads exposing a terminal newline as an editable blank row. `splitAddressableFileLines` now removes that sentinel before consumers build line anchors while retaining genuine blank lines. +- Fixed a bug where Rust lifetimes (e.g., `'static`) were incorrectly parsed as starting a string literal, which blinded the delimiter-balance scanner and could lead to silent signature deletions. Single-quote lexing on `.rs` files is now language-aware and correctly distinguishes lifetimes from character literals. +- Fixed an issue where terminal newlines in files were incorrectly exposed as editable blank rows. ## [17.2.12] - 2026-08-08 diff --git a/packages/snapcompact/CHANGELOG.md b/packages/snapcompact/CHANGELOG.md index 3fc40fafd..e88ad95c6 100644 --- a/packages/snapcompact/CHANGELOG.md +++ b/packages/snapcompact/CHANGELOG.md @@ -4,8 +4,7 @@ ### Fixed -- Fixed case-sensitivity in Anthropic model ID parsing for high-res frame selection -- Extended the Anthropic high-res 1932px frame tier to Opus 5 and later via the shared catalog identity parser, so an Opus 5 session no longer renders archive frames at 1568px with ~33% less history per compaction ([#8256](https://github.com/can1357/oh-my-pi/issues/8256)). Version parsing no longer goes stale past the catalog's semver precompute table (`claude-opus-5-11`), and mixed-case gateway ids keep the tier. +- Fixed Anthropic model ID parsing to be case-insensitive and extended the high-resolution 1932px frame tier to Claude Opus 5 and later, preventing sessions from falling back to lower-resolution 1568px frames and preserving full history per compaction. ## [17.1.5] - 2026-07-27 diff --git a/packages/utils/CHANGELOG.md b/packages/utils/CHANGELOG.md index a60e0e239..d8f4dde11 100644 --- a/packages/utils/CHANGELOG.md +++ b/packages/utils/CHANGELOG.md @@ -4,7 +4,7 @@ ### Changed -- Extended parsed Server-Sent Events with optional `id` and `retry` fields, including control-only events, so reconnecting transports can retain stream cursors and server-requested retry intervals. +- Extended parsed Server-Sent Events (SSE) to include optional id and retry fields, enabling reconnecting transports to retain stream cursors and respect server-requested retry intervals. ## [17.2.13] - 2026-08-11