Releases: bubbuild/republic
Releases · bubbuild/republic
0.5.8
What's Changed
- chore(deps): bump pygments from 2.19.2 to 2.20.0 by @dependabot[bot] in #38
- chore(deps): bump cryptography from 46.0.5 to 46.0.6 by @dependabot[bot] in #39
- chore(deps): bump cryptography from 46.0.6 to 46.0.7 by @dependabot[bot] in #40
- fix(codex): preserve streamed text when completed response has empty output by @sunlei in #37
- chore(deps): bump any-llm-sdk from 1.7.0 to 1.13.0 by @PsiACE in #41
- chore(deps-dev): bump pytest from 9.0.2 to 9.0.3 by @dependabot[bot] in #42
- chore(deps): bump uv from 0.9.29 to 0.11.6 by @dependabot[bot] in #43
- chore(deps): bump authlib from 1.6.9 to 1.6.11 by @dependabot[bot] in #44
- fix: write RFC 3339 timestamps to codex auth.json by @Copilot in #46
- chore: bump version to 0.5.8 by @PsiACE in #47
New Contributors
- @dependabot[bot] made their first contribution in #38
- @sunlei made their first contribution in #37
- @Copilot made their first contribution in #46
Full Changelog: 0.5.7...0.5.8
0.5.7
What's Changed
- feat: async context selection and concurrent tool execution by @frostming in #36
- feat: remove ErrorPayload in favor of RepublicError by @frostming in #35
Full Changelog: 0.5.6...0.5.7
0.5.6
Full Changelog: 0.5.5...0.5.6
0.5.5
What's Changed
- feat(auth): add GitHub Copilot OAuth support by @PsiACE in #27
- refactor: try to make codex/copilot clean by @PsiACE in #28
- Refactor GitHub Copilot and OpenAI Codex clients to use unified provider structure by @frostming in #29
- fix(responses): handle completed metadata-only outputs by @PsiACE in #30
Full Changelog: 0.5.4...0.5.5
0.5.4
What's Changed
- fix: treat max_retries as retry count by @Andy963 in #26
- feat: add query filters for text matching and date range in TapeQuery by @frostming in #24
- OpenAI codex oauth integration by @niyue in #23
- fix(responses): restore parity with chat completions and refactor parsing by @PsiACE in #21
New Contributors
Full Changelog: 0.5.3...0.5.4
0.5.3
0.5.2
Full Changelog: 0.5.1...0.5.2
0.5.1
Full Changelog: 0.5.0...0.5.1
Release v0.5.0: Async tape storage
Key Changes
1. Added opt-in Responses API mode
LLM now supports use_responses: bool = False for explicit Responses mode.
- When enabled (and supported by the provider), non-stream requests use the Responses API.
- Added internal conversion from chat/tool history to Responses input items.
- Tool-call extraction now supports both completion-style and responses-style payloads.
Files involved:
src/republic/llm.pysrc/republic/core/execution.pysrc/republic/clients/chat.pytests/test_responses_handling.py
2. Tape subsystem refactored for async support
Tape management now supports both sync and async paths, including async storage and context lifecycle.
- Added
AsyncTapeStoreprotocol. - Added
AsyncTapeStoreAdapterto wrap sync stores for async usage. - Added
AsyncTapeManagerfor async read/write/handoff/record flows. TapeQueryis now generic and supportsawait query.all()for async stores.Tapesession now provides async tape methods:read_messages_async,append_async,reset_async,handoff_async.
Files involved:
src/republic/tape/store.pysrc/republic/tape/manager.pysrc/republic/tape/query.pysrc/republic/tape/session.pysrc/republic/tape/__init__.py
3. Expanded top-level exports for async tape types
republic top-level exports now include:
AsyncTapeManagerAsyncTapeStore
Files involved:
src/republic/__init__.py
4. Reliability and release pipeline fixes
- Fixed
TapeEntry.copy()to preservetimestampduring copies. - Fixed docs deployment workflow permissions by adding
contents: writetodeploy-docsand updatingactions/checkoutversion.
Files involved:
src/republic/tape/entries.py.github/workflows/on-release-main.yml
Behavior Changes and Upgrade Notes
AsyncTapeStore with sync APIs
When tape_store is an AsyncTapeStore, sync APIs with tape=... raise ErrorPayload.
Use async APIs instead:
chat_asynctool_calls_asyncrun_tools_asyncstream_asyncstream_events_async
LLM direct tape helpers moved behind session objects
LLM no longer directly exposes:
tapes()handoff(...)read_messages(...)query(...)reset_tape(...)
Migration: use operations on the session returned by llm.tape("<name>").
Documentation Updates
docs/guides/tape.mdnow includes Async Tape Store usage and sync/async behavior rules.
Commit List
2d330aafix: add permissions for contents write in deploy-docs jobedd9400chore: bump version to 0.5.0 in pyproject.toml, about.py, and uv.lock4ffea2dfeat: Refactor tape management to support asynchronous operations (#19)04525fbfix: import time and include timestamp in TapeEntry copy methodb9069a5feat: add opt-in Responses API mode (#18)
Upgrade Checklist
- If you use an async tape backend, migrate tape-related calls to async APIs.
- If you relied on removed
LLMtape helpers, migrate tollm.tape(name). - Enable Responses behavior explicitly with
LLM(..., use_responses=True)when needed.
0.4.1
What's Changed
- refactor tape query API and document read_entries deprecation by @frostming in #17
Full Changelog: 0.4.0...0.4.1