Skip to content

v2.28.0

Latest

Choose a tag to compare

@github-actions github-actions released this 20 Aug 09:42
Immutable release. Only release title and notes can be modified.
5840591

Published to npm as @bitkyc08/opencodex@2.28.0 with dist-tag latest.

New Features

  • Show and filter intercepted helper requests in Logs (#2179)

Bug Fixes

  • Keep a saved roster slot listed when its model is disabled (#2134)
  • Identify opencode-free with the client User-Agent it claims (#2160)
  • Frame the opening turn so AgentRouter stops blocking non-English (#2162)
  • Identify OpenCode Go by where it routes, not what it is named (#2164)
  • Treat a non-string repeat as padding once that field is known (#2165)
  • Sanitize the shadow helper marker at the logging layer (#2166)
  • Stop requiring a ChatGPT credential for routed providers (#2137)
  • Gate account-native models by entitlement (#2146)
  • Drop the retired prompt_cache_retention for gpt-5.6 (#2138)
  • Resolve model-keyed lookups the way the runtime resolves them (#2140)
  • Retain the K12 short-window quota end to end (#2141)
  • Backfill missing ids on output items for strict decoders (#2142)
  • Gate the shell hook on an installed Claude Code CLI (#2144)
  • Bridge routed tool_search through the Responses passthrough (#2145)
  • Stream OAuth Grok through Responses (#2147)
  • Allow a baseUrl override for Anthropic and Antigravity (#2148)
  • Reject superseded login credential commits (#2149)
  • Preserve and replay thought signatures across stream chunks (#2150)
  • Apply the Fast capability gate to the native passthrough (#2151)
  • Key admission-bearer substitution on transport, not provider name (#2169)
  • Stop the background main refresh from retracting a reauth quarantine (#327) (#2167)
  • Close the core/Lab directory bypass and the release dry-run dead end (#2171)
  • Unbreak privacy:scan on dev (#2175)
  • Record the configured shadow prefix, not the caller's model string (#2170)
  • Give tool_search_call and custom_tool_call their own id prefixes (#2173)
  • Stop the audit record from breaking its own privacy gate (#2177)
  • Give the Windows leg the budgets and the crash retry it never had (#2178)
  • Heartbeat while buffering tool-call deltas (#2180)
  • Stop the Windows leg from truncating and mismeasuring its own shards (#2182)

Documentation

  • Record the main..dev release-safety audit (#2172)
  • Record the release-safety audit of the main..dev range (#2174)
  • Close the release audit with the merged fixes and the verified dev state (#2176)

Chores

  • Hold the eager-relay marker to the win32 rule, not to a constant (#2129)

Other Changes

  • [WRONG BRANCH] release: promote dev to main for 2.28.0 (#2186)
  • [WRONG BRANCH] release: v2.28.0 (#2189)

Changelog

Full Changelog: v2.27.0...v2.28.0

  • #2129 test(ws-upstream): hold the eager-relay marker to the win32 rule, not to a constant @ntdatt812
  • #2134 fix(subagents): keep a saved roster slot listed when its model is disabled @lidge-jun
  • #2137 fix(responses): stop requiring a ChatGPT credential for routed providers @lidge-jun
  • #2138 fix(responses): drop the retired prompt_cache_retention for gpt-5.6 @lidge-jun
  • #2140 fix(routing): resolve model-keyed lookups the way the runtime resolves them @lidge-jun
  • #2141 fix(codex): retain the K12 short-window quota end to end @lidge-jun
  • #2142 fix(responses): backfill missing ids on output items for strict decoders @lidge-jun
  • #2144 fix(claude): gate the shell hook on an installed Claude Code CLI @lidge-jun
  • #2145 fix(responses): bridge routed tool_search through the Responses passthrough @lidge-jun
  • #2146 fix(codex): gate account-native models by entitlement @lidge-jun
  • #2147 fix(xai): stream OAuth Grok through Responses @lidge-jun
  • #2148 fix(providers): allow a baseUrl override for Anthropic and Antigravity @lidge-jun
  • #2149 fix(oauth): reject superseded login credential commits @lidge-jun
  • #2150 fix(google): preserve and replay thought signatures across stream chunks @lidge-jun
  • #2151 fix(chat): apply the Fast capability gate to the native passthrough @lidge-jun
  • #2160 fix(providers): identify opencode-free with the client User-Agent it claims @lidge-jun
  • #2162 fix(anthropic): frame the opening turn so AgentRouter stops blocking non-English @lidge-jun
  • #2164 fix(quota): identify OpenCode Go by where it routes, not what it is named @lidge-jun
  • #2165 fix(openai-chat): treat a non-string repeat as padding once that field is known @lidge-jun
  • #2166 fix(logs): sanitize the shadow helper marker at the logging layer @lidge-jun
  • #2167 fix(codex): stop the background main refresh from retracting a reauth quarantine (#327) @ntdatt812
  • #2169 fix(auth): key admission-bearer substitution on transport, not provider name @lidge-jun
  • #2170 fix(logs): record the configured shadow prefix, not the caller's model string @lidge-jun
  • #2171 fix(guards): close the core/Lab directory bypass and the release dry-run dead end @lidge-jun
  • #2172 docs(devlog): record the main..dev release-safety audit @lidge-jun
  • #2173 fix(responses): give tool_search_call and custom_tool_call their own id prefixes @lidge-jun
  • #2174 docs(devlog): record the release-safety audit of the main..dev range @lidge-jun
  • #2175 fix(devlog): unbreak privacy:scan on dev @lidge-jun
  • #2176 docs(devlog): close the release audit with the merged fixes and the verified dev state @lidge-jun
  • #2177 fix(devlog): stop the audit record from breaking its own privacy gate @lidge-jun
  • #2178 fix(ci): give the Windows leg the budgets and the crash retry it never had @lidge-jun
  • #2179 feat(gui): show and filter intercepted helper requests in Logs @lidge-jun
  • #2180 fix(openai-chat): heartbeat while buffering tool-call deltas @lidge-jun
  • #2182 fix(ci): stop the Windows leg from truncating and mismeasuring its own shards @lidge-jun
  • #2186 [WRONG BRANCH] release: promote dev to main for 2.28.0 @lidge-jun
  • #2189 [WRONG BRANCH] release: v2.28.0 @lidge-jun