• v2.3.0-ew-4 f6b91fd402

    Bifrost v2.3.0-ew-4 (EW Fork)
    All checks were successful
    Docker Build / docker (push) Successful in 10m14s
    Docker Release / release (push) Successful in 7m44s
    Stable

    engel75 released this 2026-10-16 11:48:23 +02:00 | -4351 commits to 1.4.23-ew since this release

    Bifrost v2.3.0-ew-4 (EW Fork)

    Patch-Release auf 2.3.0-ew1 (2 Commits): UI-Fix für die Spec-13-Partner-Anlage.

    Änderungen

    • Decisions im Custom-Provider-Formular freigeschaltet: PROVIDER_SUPPORTED_REQUESTS.ew kannte "decisions" nicht — bei base_provider_type: "ew" war die Decisions-API im Allowed-Requests-Block ausgegraut (Switch disabled, Tooltip „Not supported by ew") und wurde beim Base-Wechsel still auf false zurückgesetzt
    • Reines UI-Problem: das Backend served Decisions nativ seit Spec 11 (/v1/decisions + /v1/systemone, ew_allowed_requests-Schema korrekt), und das per-Key-Model-/Key-Formular war bereits bedient (Spec 13) — nur die Provider-Level-Checkbox-Liste war seit Spec 11 nicht erweitert worden

    Kompatibilität / Operator-Hinweise

    • Keine Breaking Changes, kein Config-Eingriff — Bestands-Provider verhalten sich unverändert
    • Partner, die einen EW-basierten Custom Provider bereits ohne decisions angelegt haben, können die API jetzt im Provider-Formular nachaktivieren (oder die Key-Level-Toggles nutzen, die funktionierten durchgehend)

    Qualität

    • Vitest 31/31 grün; Regressionstest red-first: isRequestTypeDisabled("ew", "decisions") → false mit Gegenproben (chat_completion enabled, live weiter disabled)
    • npm run build clean; Working-Tree-Diff ausschließlich die 2 UI-Dateien + SHA-Tabellen-Zeile
    • Bekannter Zusatzbefund (bewusst NICHT Teil dieses Releases): die Provider-Level-Checkbox-Liste deckt weitere Backend-Typen nicht ab (responses*, count_tokens, compaction, ocr, image_*_stream) — pre-existing seit Spec 02/11, kein Spec-13-Defekt

    Details: specs/README.md (SHA-Tabelle), Commit 5aff48751
    Image: forge.engelmann.me/engel75/bifrost:v2.3.0-ew-4

    Downloads
  • v2.3.0-ew-3 72bcd92ae5

    Bifrost v2.3.0-ew-3 (EW Fork)
    All checks were successful
    Docker Build / docker (push) Successful in 10m1s
    Docker Release / release (push) Successful in 8m27s
    Stable

    engel75 released this 2026-10-16 10:23:00 +02:00 | -4349 commits to 1.4.23-ew since this release

    Bifrost v2.3.0-ew-3 (EW Fork)

    Feature-Release auf 2.3.0-ew1 (8 Commits): EW als Base-Provider (Spec 13) — Partner betreiben Bifrosts EW-Features unter ihrem eigenen Provider-Namen.

    Änderungen

    • Custom Provider auf EW-Basis: "custom_provider_config": { "base_provider_type": "ew" } unter beliebigem Namen (z. B. acme) — Routing via acme/<model>, Einträge in /v1/models unter dem eigenen Namen (owned_by: "everyware"), eigene Key-Liste mit vollem ew_key_config (URL, ModelName, Capacity, AllowedRequests)
    • Alle EW-Features folgen dem Base-Typ: Response-Sanitizer (inkl. x-smg--Denylist), Entry-Lanes (Pro-Key-Capacity), RoutingInfo-Key-Gate, x-ewcs-Branding, Spec-09-Image-Edit-Gates (multipart-Passthrough, url/url[]-Input, dual mask), Per-Key-API-Toggles, Decisions via acme/<model>-Prefix
    • Kern-Fix: EWProvider.GetProviderKey() löst den Namen jetzt dynamisch auf (providerUtils.GetProviderName-Muster) — Key-Ziehung, Modell-Listen-Präfix und Identity-Felder folgen dem Custom-Namen statt hartcodet ew
    • UI: Keys-Form rendert die ew_key_config-Felder auch für EW-basierte Customs (API-Key-Guard unangetastet); Icons erben das Base-Provider-Icon (bereits vorhanden)

    Kompatibilität / Operator-Hinweise

    • Keine Breaking Changes, keine Migration, kein Config-Eingriff — der plain-ew-Provider verhält sich byte-identisch wie bisher (Vertrag, Spec-Sektion 7, durch 6 Test-Pins + Live-Smoke abgesichert)
    • Plain ew und Custom-Namen laufen parallel (eigene Queues, eigene Keys, eigene Lanes)
    • Randfall dokumentiert: bare /v1/systemone ohne Model-Prefix routet weiterhin auf das Literal ew — Partner-Namen nutzen den expliziten Prefix (acme/<model>)
    • Harness Case 8.5.V (FEATURE="custom_naming", live-only) verlangt Operator-Config mit beiden Providern

    Qualität

    • make build LOCAL=1, ew/openai/handlers-Suiten grün, go vet clean; neue Tests: GetProviderKey-Semantik, createBaseProvider-Custom-Pin, Gate-Tabelle (8 Cases), Custom-URL-Input-Akzeptanz + Standard-Provider-Rejection-Regression
    • Benchmark: GetProviderKey 0 allocs/op auf beiden Pfaden (plain 1.0 ns, custom 2.1 ns) — Common Case zahlt nichts
    • Gotcha-20-Pin (payload_ordering_test.go) unberührt und grün; Harness 8.5.V in beiden 8.5-Positionen, augment/filter validiert (6 Requests custom_naming / 2 sanitization)
    • Unabhängige Verifikation: Backward-Compat-Vertrag durch Reviewer bestätigt, Live-Smoke mit plain-ew + Custom-Config (Routing, per-Key-Dialing, Parallelbetrieb per curl belegt)

    Details: specs/13-ew-as-base-provider.md
    Image: forge.engelmann.me/engel75/bifrost:v2.3.0-ew-3

    Downloads
  • v2.3.0-ew-2 98618c19ba

    Bifrost v2.3.0-ew-2 (EW Fork)
    All checks were successful
    Docker Build / docker (push) Successful in 9m44s
    Docker Release / release (push) Successful in 7m45s
    Stable

    engel75 released this 2026-10-15 09:44:38 +02:00 | -4341 commits to 1.4.23-ew since this release

    Bifrost v2.3.0-ew-2 (EW Fork)

    Patch-Release auf 2.3.0-ew1 (3 Commits): ein neuer Denylist-Eintrag im EW Response Sanitizer (Spec 10).

    Änderungen

    • Header-Filter erweitert: ewFilteredResponseHeaderPrefixes um x-smg- erweitert — X-Smg-*-Header aus der Partner-Backend-Kette werden jetzt wie x-litellm-* / llm_provider-* / x-ratelimit-* aus allen EW-Antworten gefiltert
    • Ein Eintrag deckt alle Oberflächen ab (alles läuft durch filterEWResponseHeaders): extra_fields.provider_response_headers, der Context-Forwarding-Key inkl. Error-Paths, alle 5 Chunk-Shapes und alle 11 OpenAI-Delegation-Sites
    • Case-insensitives Präfix-Matching: X-Smg-*, X-SMG-*, x-smg-* gleichermaßen erfasst; Original-Casing überlebender Header bleibt unverändert

    Kompatibilität / Operator-Hinweise

    • Keine Breaking Changes, keine Migration, kein Config-Eingriff — der Eintrag ist fest im fork-owned Provider (core/providers/ew/, keine Upstream-Konfliktfläche)
    • Kein Verhalten für Nicht-EW-Provider betroffen

    Qualität

    • go test ./core/providers/ew/ vollständig grün; Sanitizer-Suite um X-Smg-Request-Id (Mixed-Casing) + X-SMG-Request-Id (Uppercase-Pin im Fully-Filtered-Test) erweitert
    • Harness Case 8.5.S in beiden 8.5-Positionen um x-smg-* erweitert (Text-Splice ohne Reserialize, JSON validiert, augment/filter-Skripte grün: FEATURE="sanitization" = 2 Requests)
    • Live-Harness-Run gegen die Partner-Umgebung steht noch aus (User-Run, PROVIDER=ew FEATURE="sanitization")

    Details: specs/10-ew-response-sanitizer-ewcs-headers.md (Port-Note 7)
    Image: forge.engelmann.me/engel75/bifrost:v2.3.0-ew-2

    Downloads
  • v2.3.0-ew-1 86b4521fcb

    Bifrost v2.3.0-ew-1 (EW Fork)
    All checks were successful
    Docker Build / docker (push) Successful in 9m56s
    Docker Release / release (push) Successful in 8m7s
    Stable

    engel75 released this 2026-10-14 13:15:27 +02:00 | -4338 commits to 1.4.23-ew since this release

    Bifrost v2.3.0-ew-1 (EW Fork)

    Port-Release: EW-Fork auf Upstream transports/v2.3.0 (712-Commit-Sprung — A2A Agent Gateway, Warp Assistant, GPT Live Sessions, Cloudflare Provider, Provider-Injected MCP Tools, OAuth-Minted Keys).

    ⚠️ Breaking: EW Decisions nativ-only (Spec 11, Betriebsentscheidung)

    • Upstream 2.3.0 hat den Core-seitigen Emulations-Fallback entfernt (unsupported_operation → emulateDecisionViaResponses existiert nicht mehr; Emulation ist jetzt Opt-in via convert_decision_to_responses)
    • Fork-Entscheidung: der Vertrag „nativ zuerst, Emulation als Fallback" ist gestrichen — ein EW-Backend ohne /v1/systemone bekommt jetzt den echten 404/405/501-Fehler statt transparenter Emulation
    • Ausweg für Clients: x-bf-compat: ["convert_decision_to_responses"] — Achtung: der Marker umgeht den nativen EW-Pfad komplett (Dispatch geht direkt zur Emulation, der SystemOne-Endpunkt wird nicht mehr gefragt)
    • Decision-Schema jetzt OpenAI-Shape: input + geordnete Fragenliste (predicate/choice/score statt noul/choice/score), Antworten als Liste in Fragenreihenfolge; das alte Map-Shape bleibt als deprecated Body lesbar (kind wird als Type gelesen)
    • Unsere bare POST /v1/systemone bleibt TypeSafe-nativ (Provider-Default ew); Upstreams neue Route liegt unter /typesafe/v1/systemone — keine Kollision

    Port-Umfang

    • 102 Picks + 2 Harness-Deferrals (Reconciliation) + 7 Adaption/Fixup/Docs-Commits; 10 Konflikt-Stops, alle mit etablierten Mustern — Details in specs/08 (Sektion Port v2.2.6-ew1 → v2.3.0-ew1)
    • Neue Provider-Interface-Methode ModelRetrieve → EW-Stub (unsupported_operation)
    • x-ewcs-Branding erweitert: Header-Konstanten-Werte gebrandet (Namen bleiben upstream-förmig) + gatewayOwnedResponseHeaderPrefixEW — ein chained EW-Hop antwortet mit x-ewcs-* wie ein chained Bifrost-Hop mit x-bifrost-*, beides wird nie als eigene Identity weitergeleitet
    • EW-Migrationen bleiben EW-LAST (jetzt 3: add_ew_key_config_columns, add_ew_allowed_requests_column, add_ew_capacity_column)
    • config.schema.json: EW-$defs konfliktfrei durchgegangen (der in Spec 12 prognostizierte Re-Anchor-Konflikt trat nicht ein)
    • ew.lane-wait in die neue overheadBreakdown.tsx (upstream verlagerte OVERHEAD_BUCKET_CATEGORY)

    Operator-Hinweise

    • E2E/UI-Smoke braucht jetzt E2E_BASE_URL zusätzlich zu BASE_URL (playwright.config liest E2E_BASE_URL || :8080; BASE_URL allein lässt den Setup gegen einen Stale-8080-Server laufen)
    • npm run format (oxfmt lokal) formatiert 38 Upstream-UI-Dateien um (Versionsdrift) — nicht committen
    • Upstream-Neuflächen (A2A/Warp/Live/Cloudflare) sind ohne EW-Gates — EW-Keys davon nicht berührt (AllowedRequests-Defaults)
    • Der neue Upstream-Tools-Tab-E2E-Test ist gegen eine stale MCP-Fixture (:3001, "reusing it") flaky — Umgebungsproblem, kein Fork-Defekt

    Qualität

    • make build LOCAL=1, go vet über alle Module, 4 Testsuiten grün (handlers TestAuth inkl. Spec-04-Regressionen, integrations inkl. 9 EW-Route-Tests, ew inkl. 13 umgeschriebener Decision-Tests, configstore inkl. EW-LAST-Pin + Redaction-Test)
    • Docker-Build + Symbol-Check: 157 Spec-Symbole + 14 Lane-Symbole, Versionsstring exakt
    • UI-Smoke: 64 passed / 1 pre-existing / 3 skipped
    • Harness: 5 EW-Folder (8.5.Q–U, 9 Cases, Specs 09/03/10/11/12) in beiden 8.5-Positionen re-appliziert, augment/filter validiert

    Details: specs/08-version-port-log.md, specs/11-ew-decisions-systemone.md (Update-Note)
    Image: forge.engelmann.me/engel75/bifrost:v2.3.0-ew-1

    Downloads
  • v2.2.6-ew-limits-1 b3c945c053

    v2.2.6-ew-limits-1
    All checks were successful
    Docker Build / docker (push) Successful in 9m19s
    Docker Release / release (push) Successful in 7m43s
    Stable

    engel75 released this 2026-10-13 09:01:45 +02:00 | -3620 commits to 1.4.23-ew since this release

    Bifrost v2.2.6-ew-limits-1 (EW Fork)

    Feature-Release: Per-Entry Capacity Lanes (Spec 12) — Umbau des Limits-Systems im EW-Provider.

    EW-Feature: Entry Lanes (Spec 12)

    • ew_key_config.capacity pro EW-Key/Entry: {concurrency, queue_size, queue_timeout_seconds, drop_excess} — eigene Drossel pro SGLang-Backend/Gateway-VIP vor dem Backend-Call
    • Semaphore + begrenzte FIFO-Warteschlange mit Warte-Timeout; Überlast → deterministisches 429 statt unbegrenztem Queue-Stau (Klasse des 540s-Overhead-Vorfalls strukturell beendet)
    • Rotation: Lane-429 ist rotation-fähig (IsBifrostError=false) — Spill-Over auf den nächsten Entry mit network_config.max_retries ≥ 1; client-seitig erscheint der Fehler als rate_limit_error mit Message-Signatur "is at its concurrency limit"
    • Registry überlebt Provider-Recreation (Key-CRUD); nil/abwesende capacity = unbegrenzt (exakt Altverhalten, kein Backfill nötig)
    • Streams halten den Slot bis Stream-Ende (Concurrency-Einheit, spiegelbildlich zum SGLang-Model-Gateway)

    Konfiguration & Verwaltung

    • UI: Capacity-Felder im EW-Key-Formular (concurrency / queue_size / queue_timeout_seconds / drop_excess) + Tabellen-Anzeige; Zod-Validierung spiegelt die Server-Regeln
    • config.schema.json: EW-Provider erstmals first-class (providers-Map-Entry + $defs.ew_key + provider_with_ew_config)
    • Observability: ew.lane-wait-Span → overhead_breakdown-Bucket in den Request-Logs + Prometheus-Histogramm bifrost_ew_lane_wait_seconds {provider, key_id, key_name, outcome}
    • Persistenz: 1 additive Spalte keys.ew_capacity_json (Migration EW-LAST, NULL = Altverhalten)

    Begleitfixes

    • keyDialTargets: ew_key_config.url jetzt im SSRF/Endpoint-Change-Guard — Verhaltenswechsel für Deployments mit deaktivierter Dashboard-Auth: Ändern einer EW-Key-URL ohne Auth → 403 (authentifiziert unverändert)
    • Timeout-Klassifikation korrigiert: Client-Deadline während des Wartens → 504 request_timed_out statt rotation-fähigem 429 (tote Requests rotieren nicht)

    Operator-Hinweise

    • Spill-Over aktivieren: network_config.max_retries ≥ 1 setzen — sonst ist ein Lane-429 final
    • Sizing: Entry-Capacity ≈ Gateway --max-concurrent-requests × Replikas bzw. Σ Instanz-Kapazität; N Bifrost-Prozesse = N× konfigurierte Concurrency pro Entry (keine Cross-Node-Koordination)
    • Bekannte Lücke: TranscriptionStream-Passthrough-Modus unterzählt die Lane während des Passthrough-Streamings (dokumentiert, kein Leak)
    • Retry-After-Header wird bei Lane-429s nicht gesetzt

    Qualität

    • 13 Commits auf Branch ew-limits-rework (Plan ew-per-entry-queue-limits; Final Wave 4× APPROVE: Compliance / Code-Quality / Manual-QA / Scope)
    • Lost-Wakeup-Race im Lane-Release vom Review gefunden und gefixt (Restock unter Lock, Regressionstest); Cancel-vs-Timeout-Race ebenfalls gefixt
    • Stress-Test 200 Goroutines (max in-flight ≤ cap, rejected = total − admitted), go test -race -count=20 grün, nil-Capacity-Pfad 0 allocs/op
    • Alle Module frisch gebaut/gevettet/getestet (core, framework, transports, telemetry, UI build + vitest 9/9); Harness-Case 8.5.U strukturell validiert (augment 639 Requests / 324 Guards, FEATURE=lane → 1 Request)

    Details: specs/12-ew-entry-lanes.md
    Image: forge.engelmann.me/engel75/bifrost:v2.2.6-ew-limits-1

    Downloads
  • v2.2.6-ew-2 f85bee8920

    v2.2.6-ew-2
    Some checks failed
    Docker Build / docker (push) Has been cancelled
    Docker Release / release (push) Successful in 9m12s
    Stable

    engel75 released this 2026-10-07 11:59:50 +02:00 | -3607 commits to 1.4.23-ew since this release

    Bifrost v2.2.6-ew-2 (EW Fork)

    Feature-Release auf v2.2.6-ew-1: transparente per-unit Pricing-Rates in /v1/models.

    Neu

    • /v1/models Pricing um Unit-Rates erweitert: image_output (Image-Generation, pro Bild), input_per_second / output_per_second (Speech bzw. Transcription, pro Sekunde), input_per_character (Transcription, pro Zeichen).
    • Bei aktiven Unit-Rates werden prompt/completion unterdrueckt (omitempty) — keine irrefuehrenden Token-Rates fuer Audio/Image-Modelle; tokenbasierte Misch-Modelle behalten ihre Rates.
    • Enrichment im Framework-Handler: Rate-Felder kommen aus dem Katalog (DB-Rows bzw. Default-Feed), Format via formatCost (10 Dezimalstellen, exakt).
    • openapi.json um die neuen Felder erweitert (generiert aus den Swagger-Annotationen).

    Commits

    • 4c0f07bf9 feat: expose per-unit image/audio pricing rates in /v1/models
    • f85bee892 docs(openapi): add unit-rate pricing fields to /v1/models Pricing schema

    Verified

    go build ./core/... ./framework/...; go test ./core/schemas ./framework/modelcatalog (frisch, -count=1); Live-Wire-Check am lokal gebooteten Gateway (Stub-Upstream, Katalog via framework.pricing.pricing_url): alle vier neuen Felder mit exakten Werten am HTTP-Wire bestaetigt; omitempty-Verhalten bei gpt-4o-mini bestaetigt. Evidenz: /tmp/v1models-qa/wire-final3.txt.

    Downloads
  • v2.2.6-ew-1 1b9bb71b03

    v2.2.6-ew-1
    All checks were successful
    Docker Build / docker (push) Successful in 9m30s
    Docker Release / release (push) Successful in 7m54s
    Stable

    engel75 released this 2026-10-06 09:18:32 +02:00 | -3605 commits to 1.4.23-ew since this release

    Bifrost v2.2.6-ew-1 (EW Fork)

    Port der EW-Fork auf upstream transports/v2.2.6 (Security-Backport-Release).

    EW-Features (Specs 01-11)

    • EW Provider (SGLang/OpenAI-kompatibel) + Per-Key API Toggles inkl. Decisions-Toggle
    • OpenAI-konformer Error Envelope fuer OpenAI/Cursor-Routen
    • Whitelisted Routes fuer Inference (Spec 04) — Flag-Site kompatibel mit dem neuen Setup-Lock-Middleware-Stack; Bypass weiter ueber Governance-Evaluate
    • EW Image-Edit Passthrough (Spec 09)
    • EW Response Sanitizer + x-ewcs Header Branding (Spec 10) — jetzt auch auf den neuen Panic-Recovery-Correlation-Header-Sites
    • EW Decisions + SystemOne: nativer Decision-Pfad mit Emulations-Fallback, bare /v1/systemone-Route, UI-Toggle (Spec 11)

    Upstream-Basis v2.2.6 (Security-Backports)

    OSS Management API Setup Lock (#8010): /api braucht ab jetzt den X-Bifrost-Setup-Token-Header, solange Dashboard-Auth inaktiv (403 ohne Token; whitelisted Routen und /health bleiben oeffentlich). Inference-Auth default ON fuer frische Deployments (#7864/#8010) — Bestands-DBs und explizites false unberuehrt. Provider-CRUD-Auth (#7867), Panic-Recovery (#7866), guarded dialer (#7861), zstd-Decoder-Cap (#7859), VK-scoped Semantic-Cache (#7862).

    Port-Qualitaet

    • 88 Commits: 85 Picks von 2.2.5-ew1 (oldest-first, mit -x; 3 leer-erhalten) + 2 Follow-ups (x-ewcs-Branding auf neue #7866-Sites 5c976c761; Harness-Reconciliation 6a8b73fb4) + Docs
    • 3 Konflikt-Stops (statt 5 prognostiziert), alle nach dokumentierten Mustern: middlewares.go APIMiddleware-Tail (upstream isAPIRouteWhitelisted), schemas.ts EOF (setupTokenFormSchema), 1 leer-obsolet
    • 0 Adaptions-Commits (vierter Port in Folge; kein Interface-Change, Governance-Evaluate unveraendert)
    • Erstmals 0 Upstream-Migrationsaenderungen — EW-Migrationen bleiben letzte Entries (:501/:502)
    • Verifiziert: Build (make build LOCAL=1), go vet, 4 Go-Suiten gruen (integrations erstmals ohne Pre-existing-Failures), Harness-Struktur (639 Requests, 324 Guards, 356 mit FEATURE=ew), Docker-Smoke (127 Symbol-Matches), UI-Smoke 44 passed / 5 dokumentierte Pre-existing (ew.spec.ts inkl. Decisions-Pin gruen — mit BIFROST_SETUP_TOKEN gegen den neuen Setup-Lock)

    Operator-Hinweise

    • Scripts/API-Clients, die /api mit deaktivierter Dashboard-Auth rufen, brauchen ab v2.2.6 den X-Bifrost-Setup-Token-Header (oder setup_token in config.json)
    • enforce_auth_on_inference default ON fuer frische Deployments — bei neuem EW-Setup explizit false setzen oder den VK-Pfad nutzen

    Details: specs/08-version-port-log.md (Port v2.2.5-ew1 -> v2.2.6-ew1)
    Image: forge.engelmann.me/engel75/bifrost:v2.2.6-ew-1

    Downloads
  • v2.2.5-ew-2 374cfb9f43

    v2.2.5-ew-2
    All checks were successful
    Docker Build / docker (push) Successful in 9m32s
    Docker Release / release (push) Successful in 7m43s
    Stable

    engel75 released this 2026-10-03 17:39:44 +02:00 | -3556 commits to 1.4.23-ew since this release

    Bifrost v2.2.5-ew-2 (EW Fork)

    Bugfix-Release auf v2.2.5-ew-1 nach Praezedenz v2.2.2-ew-2/v2.2.3-ew-2. Behebt den Decisions-Toggle-Reset im GUI: das allowedRequestsSchema (UI, zod) kannte den decisions-Schluessel nicht — der zodResolver strippte den Flag beim Speichern, nach dem Reopen erschien der Toggle deaktiviert. Backend/DB unveraendert (core/schemas/provider.go war korrekt), 0 Migrationen, 0 Interface-Aenderungen.

    Commits (4)

    • a0627c75e fix(ui): decisions in zod allowedRequestsSchema — Fix + vitest-Regression (rot→gruen)
    • 882bb9cb3 test(e2e): Persistence-Pin in ew.spec.ts (Save → Reopen → Toggle bleibt an)
    • 82403624b fix(ui): data-testid ew-allow-all-apis am Master-Switch-Container
    • 434a2516a test(e2e): Pin betritt zuerst den Custom-Mode (das Per-API-Grid unmountet im Unrestricted-Mode)

    Verifikation

    • ✅ Unit-Regression rot→gruen (vitest 2/2), tsc + UI-Build gruen
    • ✅ E2E live auf dem gebauten Binary gruen: focused 1 passed, Flow 44 passed ohne neue Fehler (Baseline + bekannter Pre-existing-Drift, separat dokumentiert)
    • ✅ Final Wave F1 APPROVE / F2 APPROVE / F3 PASS / F4 APPROVE

    Details: specs/08-version-port-log.md (Release v2.2.5-ew-2)
    Image: forge.engelmann.me/engel75/bifrost:v2.2.5-ew-2

    Downloads
  • v2.2.5-ew-1 910b59d433

    v2.2.5-ew-1
    All checks were successful
    Docker Build / docker (push) Successful in 10m6s
    Docker Release / release (push) Successful in 7m49s
    Stable

    engel75 released this 2026-10-03 10:21:44 +02:00 | -3551 commits to 1.4.23-ew since this release

    Bifrost v2.2.5-ew-1 (EW Fork)

    Port der EW-Fork auf upstream transports/v2.2.5 (core v1.11.1, framework v1.8.0).

    EW-Features (Specs 01-11)

    • EW Provider (SGLang/OpenAI-kompatibel) + Per-Key API Toggles
    • OpenAI-konformer Error Envelope fuer OpenAI/Cursor-Routen
    • Whitelisted Routes fuer Inference — jetzt auf upstreams Raw-Path-Fix (#7832) re-anchored, damit gegen URL-encoded Traversal-Bypass gehaertet
    • EW Image-Edit Passthrough (Spec 09)
    • EW Response Sanitizer + x-ewcs Header Branding (Spec 10)
    • EW Decisions + SystemOne: nativer Decision-Pfad mit Emulations-Fallback, bare /v1/systemone-Route, UI-Toggle (Spec 11)

    Upstream-Basis v2.2.5

    Raw-Path-Auth-Bypass-Fixes (#7831/#7832), First-Time-Setup-Token (#7830), Code-Mode-AutoExecute-Enforcement (#7833), Fast-Tier->272k-Pricing (#7834/#7837/#7838), Gemini->OpenAI-Fallback-Strips (#7835). 2 neue Migrationen (nullable, reversibel); EW-Migrationen bleiben letzte Einträge.

    Port-Qualitaet

    • 80 Commits: 78 Picks von 2.2.4-ew1 (oldest-first, mit -x; 2 harness-only-Picks leer-erhalten) + 1 Harness-Reconciliation (a34fcdc3d) + Docs
    • 5 Konflikt-Stops, alle nach dokumentierten Mustern aufgeloest (migrations.go, middlewares.go Raw-Path-Re-Anchor, middlewares_test.go, harness.json x5 — upstream hat die Collection minifiziert)
    • 0 Adaptions-Commits (dritter Port in Folge; kein Interface-Change, keine exportierten Signaturaenderungen)
    • Verifiziert: Build (make build LOCAL=1), go vet, Go-Suiten (TestAuth inkl. neuer Traversal-Tests, integrations, ew, core, configstore, schemas, governance, routing), Harness-Struktur (639 Requests, 324 Guards, 355 mit FEATURE=ew), Docker-Smoke (140 Symbol-Matches Spec 01-11), UI-Smoke 43/48 (5 dokumentierte Pre-existing-Failures, ew.spec.ts gruen)

    Details: specs/08-version-port-log.md (Port v2.2.4-ew1 -> v2.2.5-ew1)
    Image: forge.engelmann.me/engel75/bifrost:v2.2.5-ew-1

    Downloads
  • v2.2.4-ew-1 4ce3306664

    v2.2.4-ew-1
    All checks were successful
    Docker Build / docker (push) Successful in 10m34s
    Docker Release / release (push) Successful in 8m2s
    Stable

    engel75 released this 2026-09-30 16:04:19 +02:00 | -3520 commits to 1.4.23-ew since this release

    Bifrost v2.2.4-ew-1 (EW Fork)

    Port der EW-Fork auf upstream transports/v2.2.4 (core v1.11.0, framework v1.7.5).

    EW-Features (Specs 01-11)

    • EW Provider (SGLang/OpenAI-kompatibel) + Per-Key API Toggles
    • OpenAI-konformer Error Envelope fuer OpenAI/Cursor-Routen
    • Whitelisted Routes fuer Inference
    • EW Image-Edit Passthrough (Spec 09)
    • EW Response Sanitizer + x-ewcs Header Branding (Spec 10)
    • EW Decisions + SystemOne: nativer Decision-Pfad mit Emulations-Fallback, bare /v1/systemone-Route, UI-Toggle (Spec 11)

    Upstream-Basis v2.2.4

    Routing-Fallback-Re-Parse (#7538), Tool-Search GPT-5.4+ (#7534), Anthropic Between-Tools Thinking (#7665), Bedrock Thinking Tokens (#7691), Encrypted-Reasoning-Retry (#7680), Governance-Hydration (#7615/#7637). Keine DB-Migrationen, keine Interface-Changes, kein Go-Bump.

    Port-Qualitaet

    • 77 Commits: 76 Picks von 2.2.3-ew2 (oldest-first, mit -x) + 1 Follow-up; 1 Konflikt (trivial: bifrost_test.go EOF-Append, asymmetrische Schluss-Klammern -> go-vet-Gate), 0 Adaptions-Commits
    • Byte-Identitaet: git diff 2.2.3-ew2..2.2.4-ew1 = exakt das 187-Dateien-Upstream-Delta
    • Verifiziert: Build (make build LOCAL=1), Go-Suiten (TestAuth, integrations, core/providers/ew, configstore, schemas, governance, routing), Harness-Struktur (639 Requests generiert, 345 mit FEATURE=ew), Docker-Smoke (142 Symbol-Matches Spec 01-11), UI-Smoke 43/48 (5 dokumentierte Pre-existing-Failures, ew.spec.ts gruen)

    Details: specs/08-version-port-log.md (Port v2.2.3-ew2 -> v2.2.4-ew1)
    Image: forge.engelmann.me/engel75/bifrost:v2.2.4-ew-1

    Downloads