Repository navigation
·
817 commits
to master
since this release
v0.13.0 — Google Interactions API + Admin Panel Overhaul
A major release with 42 commits: a new converter for Google's Interactions API, security hardening across the auth and config layers, and a greatly enhanced admin panel with cross-linking, batch operations, and key usage tracking.
🌐 Google Interactions API
Full bidirectional converter for Google's Interactions API (/v1beta/interactions), bringing the total to 5 supported API standards.
- New
converters/google_interactions/module with typed steps (user_input, model_output, thought, function_call, function_result),thinking_level↔ IR effort mapping, and MCP server tool definitions - Interactions SSE streaming lifecycle (
interaction.created/completed,step.start/delta/stop) - Gateway route
POST /v1beta/interactionswith auto-detect and shim support - Rename
google_genai→google_generate(old name preserved as deprecated alias) - 20 cross-format round-trip tests (Interactions ↔ OpenAI Chat / Anthropic / google_generate)
tool_opsAPI expanded to cover all 5 providers with full lifecycle methods
🔒 Security
- Deleted/rotated API keys could still authenticate via stale
config_fallback— removed entirely; SQLite keystore is now the sole authority credential_visibledefault flipped fromtruetofalse, forced off when no admin password is set- Backend 403 guards on credential reveal endpoints (PUT and GET)
- Sensitive fields (
admin_password,api_keys) masked in all config API responses - API key management is now SQLite-only —
server.api_keysconfig field no longer parsed for auth
🔀 Admin: Request Log ↔ Error Dump Cross-Linking
- 4xx/5xx request log entries show a jump-to-dump button; error dump rows show a jump-to-log button
- Jumps clear filters, navigate to the correct page, and highlight the target row for 10 seconds
- "Match Logs" button and auto-startup backfill link historical records via timestamp proximity (±0.1s) with model alias resolution from gateway config
GET /admin/api/requests/<entry_id>endpoint with_offsetfor direct page navigation
🕐 Admin: API Key Last-Used Tracking
- New
last_usedcolumn in API keys table (auto-migrated on startup) - Updated in auth hook with 5-minute write throttle
- Backfilled from request log history on startup and via manual refresh button
- Hover timestamps show full date/time in browser timezone with GMT±N format
📦 Admin: Batch Operations & UI Polish
- Multi-select batch download for profiling, content capture, and error dump tables with checkbox selection and bulk action bar
- Error dumps support batch delete with selection persisted across pagination
- Capability badge SVG icons (text, vision, tools, reasoning) using unified
cap-badgeclass - Model table column widths rebalanced (Model 19%, Type 15% centered, Capabilities 23%)
- "Server Time" label (was "System Time") with GMT±N timezone format
- Oversized tool descriptions automatically relocated to late system messages
- Profiler now runs for the full streaming lifecycle
🔧 Internal
- Vendor zerodep
jsonxmodule replacing hand-rolled JSONC parser - Vendored
validatemodule updated 0.7.0 → 0.7.1 - Auto-rebuild metrics counters on startup after ungraceful shutdown
- Configurable Nuitka build flags with optimized defaults (LTO, stripped docstrings)
⚠️ Breaking Changes
KeyStore.validate()returnstuple[str, KeyContext] | None(wasKeyContext | None)server.api_keysconfig field no longer used for authenticationcredential_visibledefaults tofalse
Full changelog: https://llm-rosetta.readthedocs.io/en/latest/changelog/