CI runs stable (now 1.95) which surfaces two new lints my 1.94 local
check missed:
- collapsible_match in reverse_message_map.rs: collapse the empty
guard branch into a match arm with a guard.
- manual_checked_ops in admin/db.rs: replace the explicit zero check
with checked_div(...).unwrap_or(0).
- collapsible_match in admin/ws.rs: clippy's suggested guard form
fails to compile because Bytes can't be moved in a pattern guard.
Apply a targeted #[allow] with a comment explaining why.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Drop job-level continue-on-error: true (was masking real failures since
each step already handles exit 101 inline). Remove the duplicate
anyllm_batch_engine step that lacked the exit-101 swallow. Canonical
publish order is now: translate -> providers -> client -> batch_engine
-> proxy with 30s sleeps for index propagation.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
- tools_map: use std::slice::from_ref over &[clone()] in 4 tests
- gemini_streaming_map: rewrite match as matches!
- backend/mod.rs: move impl BackendClient before #[cfg(test)] mod tests
- middleware: replace .filter().last() with .rfind() (xff parsing)
- middleware: drop dead `|| true` in is_ip_allowed smoke test
- sse: drop blank line between doc comment and assert_sse_ok
- streaming example: collapse nested if-let into outer match arms
- tool_execution tests: array literal over vec! for one-off slices
- live_bedrock: use is_some_and instead of map_or(false, _)
- live_api / live_responses: contains() over iter().any() on &[&str]
All test-only / example changes; no production behavior change.
1130 tests pass, fmt clean, clippy -D warnings clean.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Each new README places the crate inside the anyllm-proxy workspace and
includes verified library-use examples for downstream consumers.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Documents the anyllm_providers crate as a pure compile-time metadata
catalog within the anyllm-proxy workspace, with a TUI integration walk-
through defaulting to Ollama and LM Studio and a categorized list of
all 90 registered providers.
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
Fixes RUSTSEC-2026-0098 (URI name constraint bypass) and
RUSTSEC-2026-0099 (wildcard name constraint bypass).
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Populate model definitions and refine capability flags across provider
stubs, adding context windows, output limits, and per-model capabilities
for chat, tool use, vision, and streaming where applicable.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Field is populated from the DB but scoping enforcement is not yet wired,
so clippy flags it. Keep the field to avoid reshuffling VirtualKeyContext
when enforcement lands.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
- Replace top nav with sidebar layout; add shared Modal, Toast, ConfirmDialog, AsyncBoundary components
- Add Routes tab with full CRUD UI backed by new routes_api admin endpoints
- Split admin rate limiter into separate read/write buckets with method-aware middleware
- Add allowed_routes scoping to virtual keys
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
New providers: assemblyai, baidu, blackboxai, brave, cartesia, deepgram,
elevenlabs, exa, iflytek, lmsys, playht, pollinations, serper, siliconflow,
stability, tavily. Registered in mod.rs and registry.rs.
Adds a Providers tab to the admin UI with a ProviderIcon component and
catalog route. Updates backend, streaming, config, and test infrastructure
to align with the expanded provider set. Bumps all crate versions to 0.9.0.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Aligns crate versions with the GitHub release tag so the deb package
filename, crates.io versions, and release tag all agree.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>