-
released this
2026-10-16 11:48:23 +02:00 | -4351 commits to 1.4.23-ew since this releaseBifrost 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.ewkannte"decisions"nicht — beibase_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 auffalsezurü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")→falsemit Gegenproben (chat_completionenabled,liveweiter disabled) npm run buildclean; 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-4Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Decisions im Custom-Provider-Formular freigeschaltet:
-
released this
2026-10-16 10:23:00 +02:00 | -4349 commits to 1.4.23-ew since this releaseBifrost 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 viaacme/<model>, Einträge in/v1/modelsunter dem eigenen Namen (owned_by: "everyware"), eigene Key-Liste mit vollemew_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 viaacme/<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 hartcodetew - 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
ewund Custom-Namen laufen parallel (eigene Queues, eigene Keys, eigene Lanes) - Randfall dokumentiert: bare
/v1/systemoneohne Model-Prefix routet weiterhin auf das Literalew— 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 vetclean; neue Tests: GetProviderKey-Semantik, createBaseProvider-Custom-Pin, Gate-Tabelle (8 Cases), Custom-URL-Input-Akzeptanz + Standard-Provider-Rejection-Regression- Benchmark:
GetProviderKey0 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-3Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Custom Provider auf EW-Basis:
-
released this
2026-10-15 09:44:38 +02:00 | -4341 commits to 1.4.23-ew since this releaseBifrost 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:
ewFilteredResponseHeaderPrefixesumx-smg-erweitert —X-Smg-*-Header aus der Partner-Backend-Kette werden jetzt wiex-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 umX-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-2Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Header-Filter erweitert:
-
released this
2026-10-14 13:15:27 +02:00 | -4338 commits to 1.4.23-ew since this releaseBifrost 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→emulateDecisionViaResponsesexistiert nicht mehr; Emulation ist jetzt Opt-in viaconvert_decision_to_responses) - Fork-Entscheidung: der Vertrag „nativ zuerst, Emulation als Fallback" ist gestrichen — ein EW-Backend ohne
/v1/systemonebekommt 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/scorestattnoul/choice/score), Antworten als Liste in Fragenreihenfolge; das alte Map-Shape bleibt als deprecated Body lesbar (kindwird als Type gelesen) - Unsere bare
POST /v1/systemonebleibt TypeSafe-nativ (Provider-Defaultew); 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 mitx-ewcs-*wie ein chained Bifrost-Hop mitx-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-waitin die neueoverheadBreakdown.tsx(upstream verlagerte OVERHEAD_BUCKET_CATEGORY)
Operator-Hinweise
- E2E/UI-Smoke braucht jetzt
E2E_BASE_URLzusätzlich zuBASE_URL(playwright.config liestE2E_BASE_URL || :8080;BASE_URLallein 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-1Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Upstream 2.3.0 hat den Core-seitigen Emulations-Fallback entfernt (
-
v2.2.6-ew-limits-1
Stablereleased this
2026-10-13 09:01:45 +02:00 | -3620 commits to 1.4.23-ew since this releaseBifrost 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.capacitypro 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 alsrate_limit_errormit 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-Histogrammbifrost_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.urljetzt 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_outstatt rotation-fähigem 429 (tote Requests rotieren nicht)
Operator-Hinweise
- Spill-Over aktivieren:
network_config.max_retries ≥ 1setzen — 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=20grü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-1Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v2.2.6-ew-2
Stablereleased this
2026-10-07 11:59:50 +02:00 | -3607 commits to 1.4.23-ew since this releaseBifrost 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/modelsPricing 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/completionunterdrueckt (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.jsonum die neuen Felder erweitert (generiert aus den Swagger-Annotationen).
Commits
4c0f07bf9feat: expose per-unit image/audio pricing rates in /v1/modelsf85bee892docs(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 viaframework.pricing.pricing_url): alle vier neuen Felder mit exakten Werten am HTTP-Wire bestaetigt; omitempty-Verhalten beigpt-4o-minibestaetigt. Evidenz: /tmp/v1models-qa/wire-final3.txt.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v2.2.6-ew-1
Stablereleased this
2026-10-06 09:18:32 +02:00 | -3605 commits to 1.4.23-ew since this releaseBifrost 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):
/apibraucht ab jetzt denX-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 explizitesfalseunberuehrt. 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-Reconciliation6a8b73fb4) + 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
/apimit deaktivierter Dashboard-Auth rufen, brauchen ab v2.2.6 denX-Bifrost-Setup-Token-Header (odersetup_tokenin config.json) enforce_auth_on_inferencedefault ON fuer frische Deployments — bei neuem EW-Setup explizitfalsesetzen 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-1Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v2.2.5-ew-2
Stablereleased this
2026-10-03 17:39:44 +02:00 | -3556 commits to 1.4.23-ew since this releaseBifrost v2.2.5-ew-2 (EW Fork)
Bugfix-Release auf
v2.2.5-ew-1nach Praezedenz v2.2.2-ew-2/v2.2.3-ew-2. Behebt den Decisions-Toggle-Reset im GUI: dasallowedRequestsSchema(UI, zod) kannte dendecisions-Schluessel nicht — derzodResolverstrippte den Flag beim Speichern, nach dem Reopen erschien der Toggle deaktiviert. Backend/DB unveraendert (core/schemas/provider.gowar korrekt), 0 Migrationen, 0 Interface-Aenderungen.Commits (4)
a0627c75efix(ui):decisionsin zodallowedRequestsSchema— Fix + vitest-Regression (rot→gruen)882bb9cb3test(e2e): Persistence-Pin in ew.spec.ts (Save → Reopen → Toggle bleibt an)82403624bfix(ui):data-testidew-allow-all-apisam Master-Switch-Container434a2516atest(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-2Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v2.2.5-ew-1
Stablereleased this
2026-10-03 10:21:44 +02:00 | -3551 commits to 1.4.23-ew since this releaseBifrost v2.2.5-ew-1 (EW Fork)
Port der EW-Fork auf upstream
transports/v2.2.5(corev1.11.1, frameworkv1.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-1Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
-
v2.2.4-ew-1
Stablereleased this
2026-09-30 16:04:19 +02:00 | -3520 commits to 1.4.23-ew since this releaseBifrost v2.2.4-ew-1 (EW Fork)
Port der EW-Fork auf upstream
transports/v2.2.4(corev1.11.0, frameworkv1.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-1Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads