Skip to content

Releases: Stravia-AI/StraviaPlatform

Stravia v0.5.2

Choose a tag to compare

@github-actions github-actions released this 18 Oct 17:47
bfffd54

Added

  • Public generate and StraviaRead calls now return a durable stravia://tool-executions/<id> reference after their bounded synchronous wait (60 seconds by default), while fast calls retain their original results and errors. Query through StraviaRead with optional URI wait seconds; completed results survive restart, unfinished work is interrupted without replay, and query cancellation never cancels the original execution. MCP, explicit calls, and transparent injection share Core behavior; internal Agent reads remain synchronous. Source-request cleanup cancels and invalidates non-MCP executions without deleting independent Artifacts; MCP retains existing history policy. SQLite/PostgreSQL migration 0023 adds the durable associations and publication fences. Stop and back up the complete data directory and external database before upgrading; rollback requires restoring that backup. See Media Generation.
  • Added a deterministic credential-detection HTTP benchmark with cold/warm phases, 50k/100k/150k-token inputs, concurrency 1/4, process CPU/RSS measurements and full match-position consistency checks. Experimental cache budgets require explicit confirmation from an instrumented binary; ordinary product binaries cannot silently produce mislabeled budget results.
  • Added a reproducible devenv development environment with Rust/Bun, Clang/mold and perf on Linux, managed PostgreSQL, persistent per-workspace server ports initialized on shell entry, optional direnv activation, and serialized copy-on-write worktree initialization.
  • Added Antigravity native image generation and reference-image editing through image Routes and the existing generate tool. Model discovery registers the account's advertised imageGenerationModelIds as real image-output models without inferring generation support from image input; image-only models do not gain chat capability. Generation reuses the selected Provider's OAuth/project and exact Target model, with bounded single-image SSE results and existing Artifact delivery. Rebuild and re-import the standalone antigravity plugin, synchronize models, then bind an image Route; account eligibility and quota remain upstream-controlled.
  • Debug performance exports now include timestamped host CPU/RSS and managed-resource histories for active inference, observation queues, local and last-observed Redis cache usage, Wire buffers, and SQL pools, with explicit buffer capacities, drops, epochs, freshness, and measurement limits. Full bounded memory batches move to a bounded background writer, append to anonymous temporary files, and release their allocations instead of retaining a rolling history. Exports merge disk and pending memory data; storage failures and real losses remain visible. Turning Debug off clears the performance session and temporary files, so export first; restarts never restore old sessions. Process-lifetime metrics and raw Wire trace retention are unchanged.
  • SQL diagnostics are collected centrally through shared pool, connection, and transaction handles without wrapping individual queries. Timelines include template fingerprints, driver outcomes, safe error codes, row counts, and successful, failed, or cancelled acquisition timings; SQL text, bind values, and formatted database errors remain excluded.
  • Split key admission, write-gate, upstream-header, and observation-queue waits from processing, and link background commands to their originating Debug epoch without retaining request spans. Documented explicit Windows CPU/heap profiling workflows; performance timelines are still not CPU or heap profiles.

Changed

  • Media generation removes the redundant saved-route reference row and its separate unlink button. To unlink, choose No route selected and save; this still clears the binding and disables media generation.
  • Media generation moves saved-configuration validation from a persistent warning card to the enable switch's tooltip, including when the switch is unavailable. Hover, keyboard focus, touch, and Escape are supported; load and save failures remain inline.
  • Console Chat only offers text-output Routes, including automatic selection, restored conversations, retries, and setup guidance; image input remains supported by eligible text models. Removed the edit form's persistent resend explanation without changing how edits replace later turns.
  • task dev:server now starts Vite with wildcard listening (equivalent to --host) and admits its exact printed Local/Network origins without bypassing management-entry or CSRF checks. Both Server and Desktop development tasks build and install all current workspace Vendor plugins at startup, including same-version rebuilds, while leaving identical components untouched. Updates requiring data discard still need manual import and confirmation; production plugin distribution is unchanged. Development HTTP exposes source and management access to the network, so use trusted networks only.
  • Credential detection removes three reviewed, policy-equivalent bundled identities before compilation: Bittrex secret key uses bittrex-access-key, JFrog uses kingfisher.artifactory.2, and the duplicate Plaid rule uses kingfisher.plaid.2. Component references migrate without collapsing distinct prerequisites; confidence, visibility, filtering and checksum differences remain distinct. Upstream snapshots and historical rule IDs are preserved, with no database migration. Cache-budget measurements retain the existing regex default rather than trading substantial CPU for a small RSS reduction.
  • Credential protection and streamed restoration now borrow unchanged text and JSON tokens, preserving shared canonical text until a real replacement is needed. Ordinary observation redaction also reuses unchanged text across stages and avoids per-word lowercase and output allocations. Detection, expiry, reference-atom boundaries, escaping and fail-closed behavior are unchanged.
  • HTTP Wire capture shares transport bytes until synchronous queue encoding; visible-content observation borrows shared terminal text. Public-protocol SSE, Devin Connect, Kilo and client WebSocket framing reuse buffers or borrow complete frames, and media/Responses encoding moves owned payloads instead of copying them. Capture limits, Authorization masking, byte fidelity and delivery ordering are unchanged. Rebuild Vendor components to receive guest-side improvements.
  • History envelopes and RAW storage payloads reuse owned or borrowed representations, SQL parameters take ownership, and last-use restoration moves JSON subtrees. Debug Trace storage borrows already encoded payloads rather than materializing and serializing whole bodies again, with bounded deduplication and output capacity based on known encoded lengths. Canonical/persisted fingerprints, storage formats, zstd level 1 and retention remain unchanged; no database migration is required.
  • The real HTTP protocol benchmark now uses seeded, tokenizer-counted 50k–150k text-token inputs, 0–10 PNG images, 1–10s first-token delays and 30–100 token/s generation lasting 10–60s. Every request includes two new synthetic credential probes, repeated values and streamed reference restoration; protected model tokens and restored client tokens are counted separately. Real multi-turn routing, all four Wire-body digests, ordinary redaction, credential discoveries and published mappings, usage, delivery and decoded SQLite/PostgreSQL history ancestry are verified per request; missing evidence fails the run. Schema 4 requires Debug capture and reversible credential protection and is intentionally incomparable with earlier workloads. Wire retains its existing Authorization-header-only redaction contract. Debug inference roots now export their internal request identity for exact concurrent Run attribution, without adding metric labels or changing protocol, fingerprint or database contracts.
  • Shared history and Observation storage now uses zstd level 1 instead of level 3, retaining checksums, raw fallback and the existing binary format. Existing level-3 payloads remain readable without rewriting stored data; canonical fingerprints and persisted content keys are unchanged.
  • Generation Chain discovery, replay and prefix rebuilding now hash borrowed canonical history units instead of copying their text into owned JSON values. Final client-history commits reuse the fingerprint's semantic-unit count after output rewrites and compaction replacement. Canonical ordering, length prefixes, hash domains and persisted fingerprint versions are unchanged.
  • The real HTTP protocol benchmark now records encoded history/observation payload bytes and SQLite database/WAL/shared-memory file lengths outside measured traffic. Counts and encoded payload sums share one read snapshot; file lengths are separate file-level observations, not allocated disk space or cumulative write volume.
  • SQLite route scheduling now uses filtered aggregates in a single 24-hour scan, avoiding hourly accumulator updates for older attempts without adding a statistics cache. Inclusive window boundaries, unknown usage, confirmed successful-attempt metrics and stale-on-error behavior are preserved; SQL operation counts and PostgreSQL behavior are unchanged.
  • Single-instance SQLite Gateways now preload Provider, Provider Model, eligibility and outbound-proxy configuration into one internal deep module, reducing repeated execution-path SQL reads without adding a database or changing persistent data. Configuration writes and plugin resets invalidate the projection centrally; version checks, authorization and OAuth refresh CAS remain intact. Interrupted writes with an uncertain commit outcome warn and use authoritative SQL reads until restart. PostgreSQL behavior and cross-instance support are unchanged.
  • Migrated the WebUI to SvelteKit 3.1 and adapter-static 4, including native #lib subpath imports, Vite-based f...
Read more

Stravia v0.5.1

Choose a tag to compare

@github-actions github-actions released this 16 Oct 04:50

Added

  • Added standalone Muse Code and Kilo Vendor components. Muse Code supports Meta subscription device authorization, account model discovery, and streaming Responses inference. Kilo supports device authorization, organization selection, model discovery, USD credit-balance allowance, and catalog-selected Chat/Responses inference. Build and locally import their Wasm packages; they are not embedded by default. See Vendor setup and capability limits.
  • Saved model services now maintain their inventories at startup and hourly while Stravia is running, including when Desktop is hidden in the tray. Each service has a durable, enabled-by-default automatic-sync preference; manual checks join an in-progress check instead of duplicating discovery. A shared read-only Model changes sidebar shows complete sync batches, specification differences, failures, manual additions and availability-policy changes, with filters, keyset pagination and 90-day retention across restarts, renames and service deletion. See inventory maintenance and management APIs.
  • Console Chat now supports original PNG/JPEG/WebP attachments through file selection, paste, and drop, with local persistence and full Responses replay. Messages still require text and an image-capable allowed model. Chat and request observations share safe, bundled math and Mermaid rendering; invalid or unfinished fragments retain readable source. See Console Chat for upstream, Artifact, Debug, and unencrypted local-image retention.
  • Added built-in Console Chat to the management UI, with API-Key-scoped streaming, reasoning previews, upstream-reported usage, and locally stored conversation history. See Console Chat for local-storage and transparent-injection limits.
  • Added a real HTTP 4×4 ingress/upstream protocol benchmark with streaming and non-streaming delivery, open-loop and fixed-worker loads, large request bodies, per-process CPU and memory sampling, protocol completion checks, and baseline/optimized comparison reports. It exercises the actual Server and SQL storage paths with a local synthetic upstream; measurements are not a guarantee of a final memory target.

Changed

  • Updated the pinned Rust toolchain and minimum workspace Rust version to 1.99.0, with CI, release builds, and the Docker builder using the same stable release. Local RUSTUP_TOOLCHAIN overrides remain authoritative.
  • Protected reasoning now gets one replay attempt across protocol and signing scopes unless an in-memory rejection is already known. Recovery removes only foreign or unknown payloads, never the current upstream's own payloads, and remembers foreign origins by upstream pair, even when the replay is cut off by a timeout. The replay gets its own full first-token timeout instead of sharing the rejected request's. Devin accepts opaque replay signatures and classifies ambiguous Connect invalid_argument errors as reasoning rejection only before model output (leading model-identity and usage frames do not count) and only with the host's explicit untrusted-payload declaration. Rebuild and re-import Devin; Route retry and failover policy is unchanged.
  • Breaking — request parameter injection: Outbound request bodies, session headers, and structured control objects now use explicit native allowlists. OAuth/subscription plugins follow their official tools rather than public API supersets. Unknown controls are silently omitted; arbitrary parameter bags, custom reasoning-field names, OpenCode User-Agent overrides, and generic client-header forwarding are removed. Known controls use typed canonical fields, including one shared structured-output representation for Bedrock. Business tool schemas and permitted arbitrary metadata maps remain intact; authentication, network policy, and account gates remain enforced.
  • Breaking — unified request controls: Every request control now has one protocol-neutral field, and vendor-specific controls are gone. Synonyms merge on ingress (n/candidateCount, logprobs/top_logprobs, safety_identifier/user/Anthropic metadata.user_id, thinking display/summary/includeThoughts, thread/window/affinity session IDs), and each target re-derives its official fields, including the Responses include list. Hosted tools are limited to web search, code execution, image generation, tool search, custom, and namespace tools; others such as file search, MCP, computer use, and web fetch are dropped. Search tools from every protocol, including Gemini googleSearch, now go through platform Web Search and return 403 web_search_unavailable when it is not available, instead of passing through to the upstream. Safety controls (Gemini safetySettings, Bedrock guardrails, Cohere safety_mode) and other unmappable vendor options are silently omitted, and function tools keep only strict and defer_loading. Explicit nulls clear inherited values but are never sent upstream. Codex now generates its own installation ID per credential and no longer forwards client beta-feature, subagent, or turn-metadata headers. The generation history namespace moves to v5, so automatic history discovery does not match requests saved before the upgrade; clients that send full history rebuild their chains. Installed format-1 plugins keep reading the old field spellings; rebuild and re-import Codex, Claude Code, Devin, and the other standalone plugins to get the new projections. See ADR-0081.
  • Breaking — Rust request interfaces: Request controls and session/header aliases now normalize into one canonical parameter model before target-specific projection. Removed runtime AiRequest.ext, negative parallel-tool aliases, and duplicate reasoning effort/enabled state; hooks, persisted request restoration, hashing, secret protection, and bundled plugins consume canonical semantics. Explicit false, zero, and empty values stay distinct from omission, and explicit nulls become typed parameter resets. The format-1 plugin payload keeps its private legacy projection so installed compatible plugins can ignore future optional fields; WIT and existing persisted payload versions are unchanged. Derived history indexes are rebuilt under the new fingerprint namespace without rewriting immutable history or promoting legacy controls to current exclusion proofs. Unknown source fields do not authorize arbitrary upstream forwarding. See canonical request architecture.
  • Refreshed the official client identity pins for standalone Vendors and base's GitHub Copilot allowance requests. Claude Code and OpenCode SDK identity markers follow their corresponding releases, and Command Code allowance, initialization, and inference share one client version. Rebuild and re-import installed standalone plugins to receive these changes; the supported Claude Code client-version override remains available, while removed arbitrary identity overrides are ignored. See client identity versions and verification limits.
  • Breaking — Rust protocol interfaces: Removed the shared Devin Connect and Command Code Protocol variants, endpoint constants, and host aliases. Private identities remain exact opaque strings; private codecs own their wire behavior. Opaque/empty endpoint hints now receive canonical inline Artifact bytes, and unknown private thinking sources retain cross-protocol History Marker protection. No database or canonical schema migration is required.
  • Vendor channels now declare extra inbound header access through client_header_names. The host retains its public standard-header policy and only grants safe exact names requested by the selected channel; credential and hop-by-hop declarations are rejected, as are invalid header values. No bundled channel currently declares extra headers: Codex session headers are normalized by the host into canonical session fields and projected through native allowlists, not forwarded verbatim. Undeclared installed plugins receive no extra headers. WIT remains stravia:vendor@0.5.0.
  • Usage analytics and Request history now share the duration/older/calendar/newer time controls while retaining their separate time rules. Token activity queries earlier durable statistics to fill the visible chart, matches the latency chart's compact height, keeps its date axis and cell details without a separate start/end timestamp row, and uses a right-aligned legend and one color scale across that range. Usage analytics no longer repeats the selected range and historical-recovery notice below its page header. Long selections merge adjacent buckets to fit without truncation or horizontal scrolling; summaries and other charts remain scoped to the selected window. Missing activity buckets display zero, while reported unknown token usage and query failures remain distinct.
  • Model checks now return durable server-confirmed summaries and exact history identities. Manual feedback distinguishes nonzero changes, unchanged inventories and saved changes with post-commit errors; background checks remain silent. Imported specifications continue following their source until manually edited, while whole edited specifications and manually registered models remain protected. Existing Targets retain their configuration but subsequent sends respect Effective Availability. SQLite/PostgreSQL migration 0019 adds sync state and retained change history without reconstructing old operations; back up existing databases before upgrading.
  • Generation parent routing and Target Continuation preparation now share a small validated parent certificate instead of reloading the chain. Repeated discovery reuses validated common ancestors and external content before SQL restoratio...
Read more

Stravia v0.4.0

Choose a tag to compare

@github-actions github-actions released this 08 Oct 16:13

Added

  • Added standalone antigravity and claude-code Vendor Plugins for account OAuth, model discovery, inference, and allowance monitoring. Antigravity uses Google's hosted callback with authorization-code entry; Claude Code supports Claude Pro/Max subscriptions. Third-party OAuth/subscription use may violate Google's or Anthropic's terms and lead to account restrictions, suspension, or termination. Existing removed anthropic/claude-code connections are not migrated: create a new claude-code connection and rebind its Routes.
  • Added the standalone opencode-free Vendor Plugin for OpenCode Zen free-model discovery and inference (-free models and big-pickle). API keys are optional; anonymous access is subject to upstream IP limits. Free-tier models and compatibility requirements may change, and third-party access may violate upstream terms or result in access restrictions. The existing paid opencode profile remains separate.
  • Added per-model-service allowance guards. Exhausted guarded account items persistently pause the service's Targets across Routes without changing administrator enable switches; fresh successful reads or removing guards can restore routing. Fully paused candidates return a native quota error (HTTP 429, without Retry-After).
  • Custom Chat Completions profiles can select reasoning_content, reasoning, or a custom reasoning field for response decoding and history replay. The independent opt-in ensure_reasoning_field setting fills missing/null history fields without replacing real reasoning; these settings do not enable thinking or rewrite saved history.
  • Credential Protection supports custom exact-text and regular-expression rules, filtering, and match testing. Deleting a rule leaves its existing mappings restorable until expiry.
  • Desktop and Server startup screens show real migration stages and progress. Server displays preparation before business APIs and health/readiness probes become available.
  • Vendor Plugins can embed SVG brand marks; the seven standalone plugins include them, while base profiles use their own brand identities.
  • Added task test:all for the complete local Windows test matrix, including browser/desktop smoke tests, isolated PostgreSQL, incremental-build checks, and cleanup. Failures or exceeding five minutes fail the command; initial cold builds are outside that time target.

Changed

  • Breaking — RPM: API-key concurrency_limit is replaced by nullable rpm_limit, enforcing a sliding 60-second root-request limit across proxy, compaction, and MCP execution. Migration 0009 clears old limits: all existing keys are unlimited until new RPM limits are configured. Upstream limits belong only to Provider/upstream-model destinations and apply across Routes, retries, and hidden turns. Shared pools are removed; migration 0014 deletes pools/bindings without copying their limits, so former members become unlimited. The settings API rejects pools and rpm_pool_id. Runtime windows reset on restart and do not coordinate across instances.
  • Breaking — Targets: Every Route Target, including external Web Search, requires a nonblank upstream model and its Provider Model capability. Migration 0012 deletes legacy model-less Targets and admission destinations while retaining Routes; rebind affected Routes. Vendor SDK Rust channel descriptors no longer expose the search-model requirement flag; the WIT ABI is unchanged.
  • Breaking — Model specifications/pricing: Specifications retain only limit.context and a reasoning_efforts list, removing feature flags, separate input/output limits, and toggle/budget specification fields. Native request capabilities and explicit Target reasoning controls remain supported. Prices retain only input, output, cache-read, and cache-write rates; migration 0013 permanently removes stored reasoning/audio rates while preserving remaining decimal prices and usage records. Client configurations no longer export model output-token limits.
  • Breaking — Observation API: Removed /interactions/{id}/summary and redundant lifecycle/debug/content-delta events. Usage settles in target_attempt_finished and delivery in run_finished. Global event notifications carry change metadata; durable timeline details must be fetched on demand, and selected live content uses a separate subscription. Root changes use /api/v1/observations/interactions/changes with removals and snapshot resets. See the observation contract.
  • Breaking — Usage semantics: Management input_tokens consistently means upstream-reported total input; cache is a separate breakdown, not added again. Historical reads use the new semantics without rewriting stored values. Token speed now includes first-token waiting; Run duration/TPS use client receipt through delivery, including retries and platform tools, while Provider throughput is weighted over full attempts.
  • Generation history and ordinary observations use shared binary compression and deduplicated Canonical Items. Startup converts supported legacy data; existing SQLite files are not automatically vacuumed. Debug manifests move to the owning instance's diagnostics/observation-debug/ directory and are unavailable to database-only replicas.
  • Request History has bounded live updates, earlier-event loading with scroll preservation, automatic following at the bottom, and collapsed diagnostic Run summaries. Model screens show compact tables/lists, modality icons, request-destination summaries, and in-place specification/RPM editing with revision protection. Allowances use compact expandable rows, a remembered Remaining/Used switch, and visible pause guards.
  • OAuth model services offer Reauthorize without changing saved connection settings; invalid credentials pause upstream allowance reads and mark retained values stale. Codex balances use credits rather than USD, and placeholder reset dates no longer appear or distort balance trends.
  • Confirmed native thinking-summary paths request summaries by default without changing reasoning intensity. Targets without configured thinking levels remain eligible and omit effort parameters. Antigravity discovery groups registered effort variants into families; Claude Code discovery reads native capabilities/context from /v1/models.
  • Devin drops unsupported optional request controls rather than rejecting them; callers must not rely on tool-choice, sampling, or structured-output constraints being honored there. Base/OpenCode requests use stable conversation affinity identifiers for upstream caching.
  • Vendor SDK uses WASI 0.2.12; the host accepts stable 0.2.x patch versions of the existing restricted interfaces. The stravia:vendor@0.4.0 contract is unchanged, and filesystem/raw-socket/WASI HTTP imports remain forbidden. Plugin loading reuses immutable compilations without sharing guest state.
  • Default Gateway, Provider Catalog, and S3 HTTP clients connect directly instead of inheriting ambient proxies; explicitly configured Provider proxies remain supported. Rust workspace dependency/features and isolated test artifacts improve incremental build reuse.

Fixed

  • Fixed Docker source builds missing required inputs: declared Bun patches are copied before locked WebUI installation, and original brand SVGs are available when compiling embedded Vendor Plugin marks.
  • Fixed thinking and tool-history replay across Chat Completions, Responses, Anthropic, Gemini, Command Code, and Devin, including failover, protected payload boundaries, late signatures, empty/null reasoning fields, and previous_response_id continuation. Genuine native signatures remain preserved; official Gemini migration handling does not apply to unverified/custom endpoints.
  • Fixed immediate client-tool continuation attribution and duplicate historical user/tool observations. Confirmed delivery settles before later admission and is no longer mislabeled as interrupted by late finalization; old observations are not rewritten.
  • Failed Responses streams deliver one response.failed snapshot with partial output and confirmed usage. Chat responses claiming tool_calls without actual calls now fail instead of returning empty success. Failure statistics count final client-request failures once, excluding recovered retries, cancellations, and active requests; Debug Bundles retain confirmed late usage.
  • Fixed Gemini/Antigravity streaming metadata, generated-media identities, boolean tool schemas, and tool-result shapes. Cross-protocol image detail hints no longer reject otherwise valid requests; text-only Chat requests use the standard string carrier, and native Anthropic tool flags/error results are preserved.
  • Fixed Claude Code OAuth state compatibility, CLI-format requests, cache breakpoints, model-specific thinking/sampling controls, summary formats, and explicit allowance-exhaustion failover. The plugin owns cache-breakpoint placement; client-selected breakpoint positions and TTLs are not honored. Codex discovery uses an updated client version, and streamed inference tolerates missing SSE Content-Type.
  • Requests whose upstream Retry-After exceeds the remaining request window try an eligible backup or return the original error instead of waiting for a 504; upstream waits are not shortened. Request-specific errors no longer poison shared Target health. Vendor transport diagnostics preserve redacted underlying causes and real WebSocket Close frames.
  • Fixed large-database startup migration and SQLite retention scans, writer contention, and long-history discovery costs. Line-ending-only migration checksum differences are accepted without rewriting migration history; actual SQL differences remain errors. Incremental builds now re-embed newly added migrations.
  • Fixed stale allowance reads overwriting saved guards, unsaved model drafts being lost during navigation/asynchronous operations, absent-modality text defaults, whitespace-onl...
Read more

Stravia v0.3.1

Choose a tag to compare

@github-actions github-actions released this 29 Sep 01:01

Removed

  • Breaking: Removed the Anthropic claude-code OAuth channel, including subscription sign-in, token refresh, curated model discovery, and allowance monitoring. Anthropic API-key access and Claude Code client configuration remain supported. Existing subscription connections, credentials, and history are retained, but the removed channel is unavailable; configure an Anthropic API-key connection and rebind its Routes to resume inference.

Added

  • Debug now collects process CPU/RSS, SQLx query and connection-acquisition histograms, named execution timings, and observation queue/cache gauges. A single tracing span pipeline supplies both Prometheus aggregates and a bounded Chrome Trace JSON timeline, downloadable by administrators from Settings without another listener. The timeline preserves async parent relationships, reports dropped and incomplete spans, and does not pretend to be a CPU profile. SQL text and request contents are excluded from performance exports.

  • Cline Pass is now served by the embedded base Vendor's cline-pass catalog Profile — standard OpenAI-compatible access with API-key authentication plus subscription allowance monitoring — and no dedicated plugin package is built or required. A clinepass plugin previously imported from a local package is not migrated or uninstalled automatically; recreate the connection as a base cline-pass Provider, rebind its Routes, then uninstall the old plugin in Vendor Plugins.

Changed

  • Updated compatible Rust and WebUI dependencies, including Tauri 2.11.2, Wasmtime 49, RMCP 3.5, Svelte 5.57, and Vite 8.3.

  • The single Debug switch and Debug Trace cleanup action now live in Settings → Diagnostics instead of Request History. The switch controls performance sampling and wire capture together, requires confirmation when enabled, and resets after restart. Disabling freezes performance data, marks active spans incomplete, and preserves the capture decisions of in-flight requests.

  • Supported Thinking Levels now use the union of non-hidden mappings across enabled Route targets instead of their intersection. The model editor, model discovery, client configuration exports, and Media Understanding level selection expose a level when at least one enabled target supports it. Disabled targets remain excluded; runtime matching still uses the selected target's own mapping.

  • Protected reasoning now survives account, deployment, and proxy changes within the same protocol unless the destination has already rejected that payload. Cross-protocol replay and Gemini model changes still strip incompatible protected reasoning. Rejections trigger at most two pre-output recovery requests without consuming the Target retry budget or putting the Target into cooldown; successful recovery remembers rejected payloads until restart. These additional upstream requests may consume provider quota.

Fixed

  • Desktop performance exports now report the saved file path after the native download completes, or show a cancellation/failure message instead of silently saving files without feedback.

  • History restoration avoids repeated ancestor reads and unrelated SQLite reference scans, reducing cold-cache work for long conversations without changing stored history or replay semantics. Performance exports now attribute SQL timings to named operations and include cache hit/miss counts and timeline work measurements.

  • The bundled base plugin now updates on startup when its version is unchanged but its component digest differs, including when the previous bundled artifact is unavailable. Identical components are not reinstalled; downgrades and locally installed replacements remain excluded from automatic updates.

  • Startup recovery now uses run/status indexes for Model Turn and Target Attempt observations on SQLite and PostgreSQL, avoiding repeated full-table scans as request history grows. Existing databases receive the indexes through an incremental migration without deleting history.

  • Overview and Usage analytics latency charts now use actual timestamps for horizontal positions, preventing lines from doubling back when a 24-hour window includes the same clock time on consecutive days. Localized axis and tooltip labels and gaps for periods without requests are preserved.

  • The request-history model filter now lists each Route by its effective display name and shows the same name for the applied selection, so Routes without a display name appear by Model ID instead of exposing the internal Route ID or reading as "All". Filter requests still send the Route ID unchanged.

  • Interrupted interaction chains retain their last request activity time instead of reappearing in recent activity when a delayed disconnect, idle timeout, restart recovery, or terminal cleanup is detected. Diagnostic events still record the actual detection time; previously stored timestamps are not backfilled.

  • Client-owned tool arguments now remain verbatim across Chat Completions and Responses delivery, streaming completion, stored history, and client replay, including empty or malformed JSON. Response hooks no longer fail a completed upstream call solely because client arguments are invalid; platform tool argument errors instead return an error tool result without executing the tool. Credential protection retains decoded-string handling for incomplete JSON and fails closed when outbound escapes cannot be safely interpreted. Object-only protocol conversions reject unrepresentable arguments rather than fabricating empty objects.

  • Command Code and other known plugin-owned protocols now apply target-specific thinking-history replay independently of host codec registration. Client-replayed Responses reasoning no longer causes a local HTTP 400 after history compaction or edits; readable reasoning and tool-result associations are preserved without relaxing protocol validation or history matching.

  • Replayed reasoning is no longer turned into ordinary assistant text on targets whose native reasoning field accepts unsigned reasoning, such as Chat Completions reasoning_content and Command Code. Previously the model could treat that reasoning as text it had already said and stop producing reasoning. Anthropic, Bedrock, and Responses history without a replayable reasoning id still falls back to text.

  • Protected-reasoning recovery first removes only unverified reasoning, then all protected reasoning if necessary. Anthropic, Bedrock, and Gemini signature rejections now trigger this recovery.

  • Chat Completions upstream requests no longer include internal gateway request fields (__stravia_*, such as the generation session ID) in the request body.


Full Changelog: v0.3.0...v0.3.1

Stravia v0.3.0

Choose a tag to compare

@github-actions github-actions released this 26 Sep 14:00

Added

  • Windows NSIS installers now include English and Simplified Chinese. The first interactive install offers a language choice defaulting to the Windows UI language when it matches; later installs and uninstalls reuse the saved choice. Passive updater installs still skip wizard pages and reuse a saved installer language.
  • StraviaRead now extracts Office documents — docx, xlsx, pptx, doc, xls, and ppt — to paginated Markdown snapshots, with ZIP central-directory preflight, container magic validation, and encrypted-CFB identification; all CPU work runs on the blocking pool under cancellation and deadlines. Embedded images deduplicate by content bytes into Artifacts (decodable ones normalized to JPEG, originals retained with a recorded limitation), and image markers in the Markdown resolve to sa: links. ?question= routes documents through Media Understanding, ?download=1 downloads without parsing, and ?raw is explicitly rejected.
  • Devin Provider support uses the devin-connect Connect-RPC protocol with binary Protobuf streaming, an OAuth PKCE authentication driver, model discovery, allowance monitoring, and usage parsing that reports cached and reasoning tokens. Devin model families aggregate related selectors into one logical model record; request content redaction neutralizes competing-vendor identity fingerprints, and selector matching covers speed lanes and the 1M-context tier.
  • Command Code Provider support (command-code) ships as a built-in catalog Provider with NDJSON streaming, CLI envelope encoding, and allowance monitoring that chains whoami, credits, subscriptions, and summary calls to report window quotas, point balances, and billing periods.
  • Vendor Options let Providers declare non-secret behavior toggles such as zero data retention; the WebUI provider editor renders them dynamically and persists them per Provider.
  • Routes accept a default thinking level applied when the client does not specify a reasoning instruction, clamped at runtime to the Route's Supported Thinking Levels. The model editor exposes the default with validation, and unrepresentable thinking controls degrade to Hidden on read instead of guessing wire shapes — explicit submissions of unrepresentable controls still fail with THINKING_CONTROL_UNREPRESENTABLE.
  • Usage analytics gains a /stats/series endpoint with caller-selected bucket size and timezone offset aligned to local wall-clock time, a token-activity heatmap that adapts columns to container width, per-Provider average output speed, and pie charts for model distribution and input/output/cache-read/cache-write token composition.
  • Provider allowances load tiered and asynchronously: the list returns targets immediately while background fetches resolve each snapshot, concurrent requests for one Provider coalesce, and the WebUI renders the shell first with per-Provider loading and error states before the aggregate view resolves.
  • DeepSeek balance reporting now surfaces CNY and USD accounts as separate currency-keyed rows, filters exhausted balances, and retains one USD record when the account is fully depleted.
  • The desktop client's settings are consolidated under Client Settings: a LAN-binding toggle switches the gateway listener between 127.0.0.1 and 0.0.0.0 with a retry loop that shrinks the rebind window, silent start and launch-at-login preferences control whether the main window appears on startup, and the external address display offers one-click URL copy. The tray menu follows the WebUI language without a startup flicker, drops the Copy Proxy URL entry, and left-click now only raises the main window.
  • The observation inspector renders the diagnostic execution flow as a flattened, numbered timeline (R1, R2, …) with "continues from" links that jump to the parent Run, inter-Run gap rows distinguishing client-tool execution from idle waits, and process events grouped into collapsible counts. Scrolling to the top of an Interaction conversation auto-loads earlier events with the scroll anchor preserved.
  • Interaction chains now hide Runs that never delivered client-visible output and ended in failure; hidden nodes appear through the Failed Requests list or deep links, and Interactions containing failed Runs show a diamond failure state at their terminal node. A minimum-chain-token slider filters chains below a threshold on the logs page, whose default time window is now ten minutes.
  • Debug Trace data can be cleared through an admin endpoint and UI action; per-Run and global Debug Trace capacity caps are removed in favor of tracked retained bytes, and clearing marks active Traces partial via debug_data_cleared.
  • Provider Model records match model IDs leniently — case-insensitive on the rightmost /-separated segment — with ambiguity rejected, and unmatched models receive conservative bare metadata (256K context, text modality, reasoning and tool calling) that stays upgradeable to registered specifications on later syncs.
  • The WebUI marks Media Understanding, Web Search, and Artifacts features with a Beta badge.
  • Browser-search profiles and HTTP-search cookies persist local search identities; Google search shares the browser profile and gates preflights on valid cookies, while fetch keeps its own isolated cookie store.
  • Vendor form text now comes from per-plugin locale catalogs compiled into each Wasm component. Fields, groups, options, channels, OAuth inputs, and validation messages follow the interface language with an English fallback; changing language preserves the current form and does not rerun plugin validation.
  • Vendor plugins can now be uninstalled from the management page, including unavailable installations and dedicated plugins previously bundled with the program. Confirmation explains interrupted calls and sign-ins; saved connections, credentials, models, bindings, history, and plugin data remain. The embedded base plugin stays protected, and reinstalling retained data may require explicit compatibility-reset confirmation.
  • Vendor Plugins provide self-contained Wasmtime Components with a versioned WIT contract, shared SDK, and build-time-pinned codecs. The program embeds only the base fallback, which retains every existing integration except Codex, Grok, Command Code, and Devin. Those four dedicated packages completely own their supplier identities without per-channel, per-capability, or failure fallback and are published as separate release attachments for local import. Default builds produce a base-only manifest for Core; the explicit all-vendors release build produces a separate five-component build manifest. Releases publish only the four dedicated Components as stravia-vendor-{vendor_id}-v{version}.wasm, covered by the unified SHA256SUMS; the build manifest itself is not published. Server and Desktop share plugin import, update previews, declarative configuration, standard OAuth, and explicit network-origin review; installation does not require a marketplace or online dependencies.
  • Media Generation exposes one generate tool through platform-managed model calls and MCP. Image generation and editing use saved Routes backed by capable Vendor plugins—including locally imported Codex OAuth—plus safe reference ingestion and Principal-scoped Artifacts with actual image metadata. The configuration-only Advanced Features page supports English/Chinese and light/dark themes. Per-key automatic injection is independent and defaults off on SQLite and PostgreSQL upgrades; retries reuse existing Route policy and may consume quota more than once.

Changed

  • Breaking: The desktop bundle identifier changed from com.stravia.ai-gateway to cn.stravia.agent-infra. Identifier-derived storage — the desktop data root, logs, window geometry, saved port preference, and WebView profile — starts fresh under the new identity, and data left under the old identifier is not migrated. Republished artifacts keep the 0.3.0 version, so installs already running 0.3.0 are not offered this build through the updater; reinstall manually to move to the new identity.
  • Breaking: Server and Desktop now keep managed local state beneath one resolved data root: SQLite at db/gateway.db, diagnostics under diagnostics/, rebuildable catalogs under cache/, and browser/host state under state/. SQLite configuration no longer accepts a separate path; --config does not redirect the data root. Pre-0.3.0 database layouts are not auto-upgraded — the server refuses to start on a legacy layout, and operators must stop every host using the source (including any external SQLite root) and run stravia-tools migrate-data --from <old-data-root> --to <new-data-root> (optionally --config <legacy server.toml> and --webview-from <legacy WebView dir>), which plans a verified copy by default and publishes it with --apply --source-stopped without deleting source data. Desktop restart and autostart retain the selected root.
  • Breaking: Artifact creation returns upload-session credentials only; the final Artifact ID is returned on completion. Identical complete bytes and exact MIME under the same Principal now keep one identity across ingestion paths, multipart boundaries, concurrent uploads, and restarts. Re-uploading never shortens retention and can retain expired content again after full validation. Legacy random IDs and stored histories are not rewritten.
  • Breaking: StraviaRead now accepts only path: search:// replaces query://, search filters/continuation move into the search query, and resource options use #stravia?. Stravia-managed domain blacklists are removed; allowed domains constrain final report sources. Owned and public images default to understanding, HTML/text default to readable content, and explicit download=1 avoids model execution. Strict raw decoding, line selections, and immutable 32 KiB/200-line text pages support complete long-line continuation. Long search/media answers paginate only their delivery...
Read more

Stravia v0.2.2

Choose a tag to compare

@github-actions github-actions released this 11 Sep 20:35

Added

  • Credential Protection supplements its Betterleaks snapshot with all 1,013 Kingfisher v1.109.0 offline rules, including bare Zhipu-format and additional sk- credentials. Capture selection, entropy, character requirements, safe-list filters, and checksums run locally; 152 hidden helper rules do not create mappings. The combined catalog and matching tester use the same detector as request protection, with no online validation or runtime rule downloads.
  • WebUI and desktop applications now share the unified Cadence logo, wordmark, and favicons, with brand components and action-state motion replacing the legacy bitmap logos. The Windows taskbar and tray icons follow the system light/dark theme.

Changed

  • Breaking: The admin interface now defaults to accepting HTTP and HTTPS from any reachable origin while retaining the default loopback listener, same-origin/CSRF protection, and revocable sessions. Repeated --admin-origin/STRAVIA_ADMIN_ORIGINS restricts the entire admin surface, and repeated --trusted-proxy/STRAVIA_TRUSTED_PROXIES explicitly trusts actual proxy peers; HTTPS cookies follow each request's trusted external protocol. The former public-origin and Server admin-cors-origin configuration is removed, with Vite, Docker, and Nix deployment guidance migrated accordingly. Deployments accepting HTTP or unrestricted entry points must control their own transport-security and DNS-rebinding risks.

  • Historical thinking now uses Target-local best-effort replay: incompatible ciphertext/signatures are omitted while visible text is retained, without rewriting original history. New reasoning records retain source bindings so returning to the original compatible Target can reuse ciphertext after intervening Targets or restarts.

  • Windows MSVC builds use the Rust toolchain's bundled LLD linker while retaining static CRT linkage, full development debug information, and incremental compilation.

  • Desktop builds emit only the Rust library consumed by the executable, avoiding unused C ABI static and dynamic library outputs during rebuilds.

  • Added task build:desktop:debug for Rust-only desktop rebuilds without WebUI preparation or installer bundling; documented the incremental-build workflow for both applications.

Fixed

  • Inferred observation links now place continuations below their source using the same layout and connection geometry as confirmed links, distinguished only by a dashed stroke. Removed inference labels from canvas edges and card previews while retaining diagnostic details.
  • Request-record diagnostic associations now preserve exact public thinking projections with History Markers across client model-instruction changes, instead of treating those public carriers as private-reasoning boundaries. Streaming and unary output snapshots share ingress history shaping with Generation Chain, matching the block structure clients replay. Execution ancestry, Principal isolation, private-reasoning exclusions, and ambiguity checks remain unchanged.
  • Uncached Provider inventories now refresh global Catalog indexes before downloading, avoiding CATALOG_SCOPE_REFRESH_FAILED when local indexes lag behind the remote revision. Revision changes during downloads still fail without modifying saved Provider Models.
  • Google browser search now exits early with an explicit automated-traffic challenge error when CAPTCHA or unusual-traffic pages are detected during preflight or result navigation, instead of waiting for the rendering timeout.
  • Explicit encrypted-content or thinking-signature rejections before output permit one protected-reasoning-free replay; ordinary errors and native compaction do not. DeepSeek tool history retains existing reasoning and supplies an empty field when none was captured. Anthropic native replay accepts preserved redacted_thinking blocks.
  • Ordinary chat messages carrying unknown provider fields now complete chat delivery and tool calls across protocol conversion, and same-protocol responses retain ordinary item additional fields. Unknown content types and native compaction states are still rejected as lossy conversions.
  • Each OpenAI-compatible Thinking block now persists its own History Marker while preserving summary/content part boundaries and original whitespace, so preview formatting no longer contaminates replayed content. Streaming and unary projections use the same order, and stale preview fields are cleared once content enters canonical blocks.
  • StraviaRead model tool schemas now list nullable optional arguments as required in strict mode, preventing Codex/Responses invalid_function_parameters failures while preserving optional fields for MCP callers.

Full Changelog: v0.2.1...v0.2.2

Stravia v0.2.1

Choose a tag to compare

@github-actions github-actions released this 11 Sep 02:08

Added

  • Unified internal/S3 Artifact storage, stable Principal-scoped references, temporary signed downloads, and default-off upload assistance using upload-only fifteen-minute credentials. Settings and setup persist complete client/file addresses with matching English and Chinese loading, saving, and recovery states.

Changed

  • Breaking: StraviaRead replaces the former platform search/media tool names. URL-shaped inputs support Artifact downloads/questions, webpage Markdown, stored files, image understanding, and complete query:// research; internal Agents use the same name for basic retrieval without recursive research. Existing capability preferences remain separate and enforced.
  • Structured media is stored before model execution and materialized per actual Provider call. New history and diagnostics keep references rather than repeated base64; upload credentials are always protected, including expired replay. Migration 41 adds equivalent SQLite/PostgreSQL storage-location and download-grant metadata without rewriting historical media, preserving the already-applied migration 40 for interaction input previews.
  • External signed downloads are explicitly opt-in for both client and Provider delivery. Native S3 signatures use the configured download endpoint; links need at least five minutes remaining before Provider calls. Active readers and unexpired grants protect physical cleanup without reviving expired files. Existing multipart limits remain 100 MiB per file and sixteen uploads / 400 MiB staging per Principal, with no saved-file aggregate quota.
  • CI runs independent checks concurrently, caches compiled stable Rust test dependencies alongside the pinned toolchain when compiler fingerprints match, and lets the Windows desktop job populate a combined desktop/browser dependency cache. Prepared Admin and desktop tests no longer repeat their build prerequisites; all existing test coverage remains enabled.

Fixed

  • Debug traces retain the per-Model Turn canonical_request checkpoint alongside the Artifact-normalized request, preserving the documented diagnostic stage sequence.
  • CI Rust cache keys no longer depend on unused toolchains preinstalled on runner images. Trusted main-branch manual runs can populate caches, and successful unit-test, browser-test, and Admin E2E compilation remains cacheable when subsequent tests fail. Admin cache warm-up builds debug and release profiles serially and includes development tools.
  • The interaction observation E2E waits for the asynchronously persisted input preview before asserting its content, rather than treating Interaction creation as proof that the preview is ready.
  • The Admin statistics E2E waits for persisted usage and duration before comparing totals, without converting unknown usage to zero or retrying inference requests.
  • Existing databases with migration 40 for interaction input previews can upgrade to Artifact storage without a migration checksum conflict or any rewrite of applied migration history.
  • Agent Definition registration no longer mistakes JSON object-key ordering differences between builds for an unversioned content change. Existing revision snapshots remain untouched, while real schema, instruction, tool, and policy changes still require a new revision.

Full Changelog: v0.2.0...v0.2.1

Stravia v0.2.0

Choose a tag to compare

@github-actions github-actions released this 09 Sep 11:19

Added

  • Credential Protection now provides the live read-only rule catalog, interaction-grouped discoveries of actually new mappings, and a local matching tester with Unicode-aware positions. The tester does not save input, contact providers, query saved secrets, or change protection state. Discovery summaries remain secret-free, retain failed or cancelled activity, and distinguish incomplete observations.
  • Advanced Features now includes default-off, instance-wide reversible credential redaction using bundled native Betterleaks rules, API Key-isolated persistent mappings, and transparent restoration in responses and tool arguments. Disabling protection retains restoration of existing valid references; restored secrets are permanently masked in response and tool-execution diagnostics.
  • Request Records now presents Connect Client Interactions as a live causal forest with a chronological inspector, Rejected Requests, and point-in-time Debug Bundle downloads.
  • Administrators can explicitly enable process-local Debug capture for newly admitted runs, with mandatory credential redaction, 64 MiB per-Run and 2 GiB retained limits, visible partial-capture reasons, and 60-second single-use bundle tickets.
  • Standalone servers now offer a one-time-token setup wizard and an interactive recover-admin command that resets the existing administrator and revokes prior sessions without rebuilding business data.

Changed

  • Breaking: Remote context compaction is client-initiated passthrough, not a platform policy. Routes no longer expose compaction_enabled or compaction_threshold; migration 39 removes those columns while retaining native state records. Unknown Target capability is tried upstream, and compaction success or errors return without retries, Target switching, local summaries, or injected defaults.
  • Web Access admission, Local Fetch, and browser outbound checks now share static URL and IP rules in stravia-web-access. Adapter checks now also reject hosts that become non-public IPs after trailing dots are removed, matching existing core admission. DNS responsibilities, proxy snapshots, redirect checks, and address pinning remain unchanged.
  • Advanced Features save enable/disable switches immediately, without a separate save click. Media and search configuration drafts retain explicit submission and are not submitted or cleared by capability toggles. Failed immediate updates retain the saved state with local feedback.
  • Local workspace tabs and model-service detail links share one segmented visual treatment and wrap on narrow screens. Form controls use consistent radii, input actions retain 40px hit areas, and resource lists omit redundant section introductions.
  • Credential Protection uses roomier rule rows and removes the persistent saved-policy strip. Settings feedback appears only for loading, saving, or failures.
  • Credential rule browsing now shows names and meaningful matching conditions without repeated IDs or targets. The inspector replaces raw condition JSON with keyword chips, exclusions, path restrictions, component requirements, and collapsible rule parameters; rule IDs remain searchable.
  • Credential Protection now opens on a searchable, sortable rule table with pagination and a rule inspector. Hit records and matching tests have separate tabs; wide-screen testing places input beside results. Redundant implementation explanations are removed, while protection details and actionable failure feedback remain available.
  • Shared data tables use compact headers with a subtle opaque background, aligned labels, and subdued inactive sort indicators that highlight on hover or keyboard focus. Active sorting remains prominent. Vertical scrollbars start below sticky headers, including grouped headers and filter rows.
  • Breaking (Rust API): preview_connect_client_apply now accepts only the configuration input; directory environments remain exclusive to Desktop write planning.
  • The former Reversible Redaction page and sidebar entry are named Credential Protection; the existing route, setting key, and restoration behavior remain unchanged. Retained pre-feature observations are marked incomplete rather than backfilled with invented discovery history.
  • Breaking (Rust API): Vendor and VendorExtension replace separate auth_headers and build_url hooks with purpose-aware construct_request, which owns the URL and default authentication for inference and Models requests. Existing OAuth bindings and specialized inference signing remain authoritative.
  • Generation Chain writes require an explicit final Model Leg Target or Hook source instead of recovering provenance from response metadata; history still commits only after complete client delivery.
  • The WebUI now shares shadcn-svelte feedback, progress, disclosure, navigation and pagination controls, with reusable secret inputs, request recovery, model filters and metric loading states. Mobile observation details use a modal Sheet while desktop details remain a resizable overlay; update notifications use the existing persistent toast surface without changing skip policy.
  • Breaking (Rust API): AgentTool::execute returns AgentToolOutput with explicit payload semantics instead of bare JSON. Tool-result semantics survive platform and Agent adapters, Hook reconstruction, and retained history. Generation Chain payload version 5 prevents legacy client metadata from impersonating trusted tool-text markers; ambiguous legacy tool arrays are rejected while reversible protection is enabled and left unchanged while it is off.
  • Breaking: Interaction Observation replaces legacy flat request logs and debug-build wire capture. Migration 34 removes old request-log rows instead of backfilling them; analytics and Route scheduling now read Confirmed Upstream Usage from Model Turn and Target attempt observations.
  • Debug defaults off after every process start, is snapshotted independently when each run is admitted, and retains Observation metadata and managed Trace segments for the configured request-record retention period (seven days by default).
  • The latest Request Records page continuously accepts new activity after its fixed anchor; historical 24-hour pages keep fixed boundaries and preserve already-open root membership until an explicit refresh or migration.
  • The in-process Local Provider's Search and Fetch now use wreq for HTTP and real headless Chrome/Chromium over native Rust CDP for dynamic pages, replacing Moli while preserving proxy snapshots, cookie isolation, and fetch safety limits. The renderer includes all 14 OMP stealth scripts and its applicable CDP fingerprint mitigations without disabling Chrome's sandbox. Docker and Nix packages include Chromium; other installations can set STRAVIA_CHROME_PATH.
  • The pinned Rust toolchain and minimum workspace Rust version are now 1.98.1.
  • The WebUI now links service connection, visible model inventory actions, and client setup through lightweight task guidance, reuses eligible API Keys, and preserves selections when returning from resource management.
  • Model lists distinguish display names, client Model IDs, enabled state, and associated services; modified model drafts now warn before navigation without changing priority lanes or immediately applied destination settings.
  • Client setup distinguishes copied and written configuration from verified connections, and credential guidance no longer claims editable secrets are shown only once.
  • Breaking: A single administrator account and revocable sessions replace the static Admin Token. Web sign-in uses HttpOnly cookies, 15-minute access JWTs, rotating refresh tokens, and a fixed seven-day session lifetime. Inference and MCP continue to use API Keys.
  • Breaking: Server database connections now come only from server.toml, selected with --config. Existing deployments must move database CLI and environment settings into this file before upgrading; missing or invalid configuration never silently selects another database.
  • Desktop management now requires the same session authentication as Server. Only the native application can obtain its in-memory session; closing to the tray preserves it, while exiting revokes it.

Fixed

  • Remote compaction retains upstream error details across HTTP, SSE, and client WebSocket delivery, including failures after visible output, without weakening ordinary generation error masking. Locked Python E2E workflows explicitly select the repository PyPI index, and the pinned Rust toolchain includes rust-analyzer.
  • Inference execution keeps its full asynchronous run state off caller frames, preventing Windows stack overflow when native compaction and credential diagnostics are combined.
  • Immediate Web Access switches retain their saved values after failed updates without clearing independent search drafts. Dark-theme switches show the active primary color instead of an overridden inactive track.
  • Settings wait for real configuration before offering editable proxy and retention controls. Resource-detail load failures provide consistent retry and return actions instead of appearing as missing resources.
  • Credential Protection uses the shared segmented Tabs style with a rule-count badge instead of a full-width underline. Its tab bar wraps on narrow screens without internal scrollbars or clipped labels.
  • API-key-only connections now support unauthenticated services: an empty key no longer blocks model discovery or inference, and upstream requests omit default authentication. Supplied keys, required channel and structured credentials, and Stravia client authentication retain their existing behavior.
  • Standalone server client-configuration previews no longer require HOME, USERPROFILE, or client-directory environment variables, including on NixOS services. Portable paths are used directly without rewriting serialized configuration; Desktop local-path validation remains unchanged.
  • Model d...
Read more

Stravia v0.1.6

Choose a tag to compare

@github-actions github-actions released this 05 Sep 17:54

Added

  • The management UI now checks GitHub Releases for optional updates; Stravia Desktop can download, verify, and install signed Windows NSIS and Linux AppImage updates, while standalone servers only open the exact Release page.

Fixed

  • Codex OAuth model discovery now uses client version 0.153.0, and generation sends the required model and service-tier routing hint, restoring discovery and invocation of version-gated models such as gpt-6-astra.

Full Changelog: v0.1.5...v0.1.6

Stravia v0.1.5

Choose a tag to compare

@github-actions github-actions released this 04 Sep 09:11

Fixed

  • Streaming responses now preserve UTF-8 characters split across transport chunks and exclude tool output from History Marker continuation, preventing corrupted text and invalid follow-up context.

Full Changelog: v0.1.4...v0.1.5