Skip to content

v0.13.0

Latest

Choose a tag to compare

@github-actions github-actions released this 08 Sep 10:52
· 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/interactions with 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_ops API 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_visible default flipped from true to false, 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_keys config 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 _offset for direct page navigation

🕐 Admin: API Key Last-Used Tracking

  • New last_used column 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-badge class
  • 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 jsonx module replacing hand-rolled JSONC parser
  • Vendored validate module 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() returns tuple[str, KeyContext] | None (was KeyContext | None)
  • server.api_keys config field no longer used for authentication
  • credential_visible defaults to false

Full changelog: https://llm-rosetta.readthedocs.io/en/latest/changelog/