Files
OmniRoute/pr_metadata.json

2103 lines
64 KiB
JSON

[
{
"additions": 149,
"author": {
"id": "MDQ6VXNlcjM1NzM4Ng==",
"is_bot": false,
"login": "andrewmunsell",
"name": "Andrew Munsell"
},
"baseRefName": "main",
"body": "## Summary\r\n\r\n- Add tokens_compressed INTEGER column to call_logs (migration 041)\r\n- Capture compression savings from both legacy compressContext() and modular applyCompression() pipelines in chatCore.ts\r\n- Display inline ↓N purple badge in log list view tokens cell\r\n- Show \"Compressed: FROM → TO (-X%)\" badge in detail modal Input section\r\n- Bump CallLogArtifact schemaVersion from 4 to 5\r\n\r\n<img width=\"1840\" height=\"844\" alt=\"CleanShot 2026-05-03 at 20 17 14@2x\" src=\"https://github.com/user-attachments/assets/b8f9b623-0615-4bd3-b71a-1810eb6e41c4\" />\r\n<img width=\"2620\" height=\"1010\" alt=\"CleanShot 2026-05-03 at 20 17 18@2x\" src=\"https://github.com/user-attachments/assets/58ebb33b-e7cb-417a-909e-99d9d58375b2\" />\r\n\r\n## Tests Added Or Updated\r\n\r\n- Add compression tokens unit tests\r\n",
"createdAt": "2026-05-04T03:48:16Z",
"deletions": 7,
"files": [
{
"path": "open-sse/handlers/chatCore.ts",
"additions": 7,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "src/i18n/messages/en.json",
"additions": 1,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "src/lib/db/core.ts",
"additions": 4,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "src/lib/db/migrationRunner.ts",
"additions": 2,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "src/lib/db/migrations/041_compression_tokens.sql",
"additions": 4,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "src/lib/usage/callLogArtifacts.ts",
"additions": 2,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "src/lib/usage/callLogs.ts",
"additions": 8,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "src/lib/usage/migrations.ts",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "src/shared/components/RequestLoggerDetail.tsx",
"additions": 10,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "src/shared/components/RequestLoggerV2.tsx",
"additions": 11,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "tests/unit/call-log-cap.test.ts",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "tests/unit/compression-tokens.test.ts",
"additions": 98,
"deletions": 0,
"changeType": "ADDED"
}
],
"headRefName": "emdash/indicate-compression-in-logs-use9w",
"number": 1923,
"title": "feat(logs): show compression tokens in request log UI"
},
{
"additions": 1698,
"author": {
"id": "MDQ6VXNlcjE0OTIxOTgz",
"is_bot": false,
"login": "oyi77",
"name": "Paijo"
},
"baseRefName": "release/v3.7.9",
"body": "Adds automated model assessment, categorization, and self-healing system for omniroute combos.\n\n## The Problem\nWhen providers fail (rate limits, auth errors, model deprecation), combos silently degrade. Our production experience: 2+ hours manually testing models and updating 44 combos because most returned errors.\n\n## The Solution\nThree new domain modules:\n1. **Assessor** - Probes every provider/model pair (quick/standard/deep tiers)\n2. **Categorizer** - Classifies models by capability with fitness scores\n3. **SelfHealer** - Auto-fixes combos: removes dead models, reduces weights for rate-limited, emergency-adds working alternatives\n\n## New Files\n- src/domain/assessment/assessor.ts\n- src/domain/assessment/categorizer.ts\n- src/domain/assessment/selfHealer.ts\n- src/domain/assessment/types.ts\n- src/domain/assessment/migration.ts\n- src/domain/assessment/index.ts\n- src/app/api/assess/route.ts\n- docs/RFC-AUTO-ASSESSMENT.md (full RFC)\n\n## New DB Tables\n- model_assessments, assessment_runs, combo_health, heal_actions\n\n## API\nPOST /api/assess/models - Run assessment\nGET /api/assess/models?action=working - Get working models\nGET /api/assess/models?action=combo-health - Get combo health\n\n> [!NOTE]\n> **OmniRoute Maintainer Note:** This PR has been deferred and will be accepted and redirected for the `v4.0.0` (or greater) release cycle. Please skip this PR during `v3.x` stabilization reviews.",
"createdAt": "2026-05-03T20:53:04Z",
"deletions": 0,
"files": [
{
"path": "docs/RFC-AUTO-ASSESSMENT.md",
"additions": 518,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "src/app/api/assess/route.ts",
"additions": 110,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "src/domain/assessment/assessor.ts",
"additions": 206,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "src/domain/assessment/categorizer.ts",
"additions": 118,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "src/domain/assessment/index.ts",
"additions": 24,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "src/domain/assessment/migration.ts",
"additions": 109,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "src/domain/assessment/selfHealer.ts",
"additions": 261,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "src/domain/assessment/types.ts",
"additions": 352,
"deletions": 0,
"changeType": "ADDED"
}
],
"headRefName": "feat/auto-assessment-engine",
"number": 1918,
"title": "feat: Auto-Assessment and Self-Healing Combo Engine"
},
{
"additions": 22666,
"author": {
"id": "MDQ6VXNlcjgwMTY4NDE=",
"is_bot": false,
"login": "diegosouzapw",
"name": "Diego Rodrigues de Sa e Souza"
},
"baseRefName": "main",
"body": "### ✨ New Features\n\n- **feat(compression):** major upgrade to Caveman and RTK compression pipelines (#1876, #1889):\n - Add RTK tool-output compression, stacked Caveman + RTK pipelines, compression combo assignments, dashboard context pages, MCP management tools, and language-aware Caveman rule packs.\n - Expand RTK parity with a 39-filter catalog, RTK-style JSON DSL stages, inline verify/benchmark coverage, trust-gated custom filters, expanded command detection, and redacted raw-output recovery.\n - Expose rule intensities, track USD savings, unify config validation, and persist MCP savings.\n - Expand Caveman parity and MCP metadata compression.\n- **feat(provider):** update Jina AI model catalog to support Embeddings and Rerank natively (#1874 — thanks @backryun)\n- **feat(provider):** add NanoGPT image generation provider (#1899 — thanks @Aculeasis)\n- **feat(ui):** move proxy configuration to dedicated System → Proxy page (#1907 — thanks @oyi77)\n- **feat(ui):** add K/M/B/T cost shortener utility (#1902 — thanks @oyi77)\n- **feat(providers):** implement bulk paste for extra API keys (#1916 — thanks @0xtbug)\n- **feat(analytics):** usage history API key backfill + dark mode pricing (#1896 — thanks @Gi99lin)\n\n### 🐛 Bug Fixes\n\n- **fix(providers):** allow local OpenAI-compatible endpoints (like Ollama) to be added without an API key (fixes #1893)\n- **fix(copilot):** emit compatible reasoning text deltas (#1919 — thanks @ivan-mezentsev)\n- **fix(api-manager):** show validation errors inline in modals, not behind (#1920 — thanks @andrewmunsell)\n- **fix(compression):** align seeded standard savings combo with stacked default, preserve stacked defaults, and secure metadata routes.\n- **fix(gemini-cli):** separate Cloud Code transport from Antigravity (#1869 — thanks @dhaern)\n- **fix(codex):** map prompt field to input array for Cursor compatibility (fixes #1872)\n- **fix(core):** align stream parameter default to false per strict OpenAI spec (fixes #1873)\n- **fix(ui):** restore Next.js CSP `unsafe-eval` in production `script-src` to fix unresponsive Onboarding button (fixes #1883)\n- **fix(proxy):** globally strip `prompt_cache_retention` in `BaseExecutor` to prevent upstream 400 errors from strict endpoints like droid/gemini-2-pro (fixes #1884)\n- **fix(ui):** include `isOpen` dependency in `EditConnectionModal` state sync to ensure `maxConcurrent` is properly hydrated when reopening the modal (fixes #1859)\n- **fix(security):** remediate 4 polynomial-redos CodeQL alerts in compression regexes by bounding repetitions and removing overlapping quantifiers\n- **fix(codex):** flatten Chat Completions tool format to Codex Responses format in `normalizeCodexTools` — prevents `Missing required parameter: tools[0].name` upstream errors (#1914 — thanks @tranduykhanh030)\n- **fix(proxy):** add proxy-aware execution context to image generation route — proxy settings are now correctly applied for image providers behind restricted networks (#1904 — thanks @Aculeasis)\n- **fix(translator):** inject `properties: {}` into zero-argument MCP tool schemas during Anthropic→OpenAI translation — prevents 400 errors from OpenAI strict schema validation (#1898 — thanks @bryceIT)\n- **fix(codex):** sanitize raw responses input (#1895 — thanks @dhaern)\n- **fix(combos):** align strategy contracts (#1892 — thanks @dhaern)\n- **fix(combos):** fix combo provider breaker profile handling (#1891 — thanks @rdself)\n- **fix(migrations):** duplicate-column no-op fix (#1886 — thanks @smartenok-ops)\n- **fix(auth):** per-connection OAuth refresh mutex (#1885 — thanks @smartenok-ops)\n- **fix(auth):** require dashboard management auth for compression preview\n\n### 📝 Documentation\n\n- **docs(compression):** document RTK+Caveman stacked savings ranges\n\n### 🏆 Release Attribution & Retroactive Credits\n\n- **@payne0420** (PR #1828 / #1839) — Implementation of the **Rate Limit Watchdog** and environment overrides. (This feature was manually backported to v3.7.8, causing the automatic GitHub Release notes to omit the author's credit).\n",
"createdAt": "2026-05-03T20:35:53Z",
"deletions": 1470,
"files": [
{
"path": ".agents/workflows/deploy-vps-akamai.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": ".agents/workflows/deploy-vps-both.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": ".agents/workflows/deploy-vps-local.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": ".agents/workflows/generate-release.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": ".agents/workflows/version-bump.md",
"additions": 9,
"deletions": 9,
"changeType": "MODIFIED"
},
{
"path": "AGENTS.md",
"additions": 25,
"deletions": 9,
"changeType": "MODIFIED"
},
{
"path": "CHANGELOG.md",
"additions": 47,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "README.md",
"additions": 71,
"deletions": 29,
"changeType": "MODIFIED"
},
{
"path": "docs/API_REFERENCE.md",
"additions": 32,
"deletions": 13,
"changeType": "MODIFIED"
},
{
"path": "docs/ARCHITECTURE.md",
"additions": 16,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/COMPRESSION_ENGINES.md",
"additions": 143,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "docs/COMPRESSION_GUIDE.md",
"additions": 105,
"deletions": 12,
"changeType": "MODIFIED"
},
{
"path": "docs/COMPRESSION_LANGUAGE_PACKS.md",
"additions": 96,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "docs/COMPRESSION_RULES_FORMAT.md",
"additions": 186,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "docs/ENVIRONMENT.md",
"additions": 6,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "docs/FEATURES.md",
"additions": 16,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/MCP-SERVER.md",
"additions": 55,
"deletions": 19,
"changeType": "MODIFIED"
},
{
"path": "docs/RTK_COMPRESSION.md",
"additions": 234,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "docs/SETUP_GUIDE.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/openapi.yaml",
"additions": 199,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "electron/package-lock.json",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "electron/package.json",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "llm.txt",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "next.config.mjs",
"additions": 8,
"deletions": 95,
"changeType": "MODIFIED"
},
{
"path": "open-sse/config/embeddingRegistry.ts",
"additions": 62,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "open-sse/config/imageRegistry.ts",
"additions": 14,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "open-sse/config/rerankRegistry.ts",
"additions": 44,
"deletions": 8,
"changeType": "MODIFIED"
},
{
"path": "open-sse/executors/base.ts",
"additions": 3,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "open-sse/executors/codex.ts",
"additions": 75,
"deletions": 5,
"changeType": "MODIFIED"
},
{
"path": "open-sse/handlers/chatCore.ts",
"additions": 338,
"deletions": 68,
"changeType": "MODIFIED"
},
{
"path": "open-sse/handlers/imageGeneration.ts",
"additions": 1,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "open-sse/handlers/responseSanitizer.ts",
"additions": 3,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "open-sse/mcp-server/README.md",
"additions": 17,
"deletions": 9,
"changeType": "MODIFIED"
},
{
"path": "open-sse/mcp-server/descriptionCompressor.ts",
"additions": 243,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/mcp-server/schemas/tools.ts",
"additions": 121,
"deletions": 32,
"changeType": "MODIFIED"
},
{
"path": "open-sse/mcp-server/server.ts",
"additions": 41,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "open-sse/mcp-server/tools/advancedTools.ts",
"additions": 15,
"deletions": 16,
"changeType": "MODIFIED"
},
{
"path": "open-sse/mcp-server/tools/compressionTools.ts",
"additions": 157,
"deletions": 11,
"changeType": "MODIFIED"
},
{
"path": "open-sse/package.json",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "open-sse/services/AGENTS.md",
"additions": 5,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "open-sse/services/accountFallback.ts",
"additions": 21,
"deletions": 5,
"changeType": "MODIFIED"
},
{
"path": "open-sse/services/autoCombo/index.ts",
"additions": 1,
"deletions": 10,
"changeType": "MODIFIED"
},
{
"path": "open-sse/services/combo.ts",
"additions": 56,
"deletions": 7,
"changeType": "MODIFIED"
},
{
"path": "open-sse/services/compression/aggressive.ts",
"additions": 19,
"deletions": 29,
"changeType": "MODIFIED"
},
{
"path": "open-sse/services/compression/caveman.ts",
"additions": 310,
"deletions": 31,
"changeType": "MODIFIED"
},
{
"path": "open-sse/services/compression/cavemanRules.ts",
"additions": 189,
"deletions": 15,
"changeType": "MODIFIED"
},
{
"path": "open-sse/services/compression/diffHelper.ts",
"additions": 117,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/cavemanAdapter.ts",
"additions": 408,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/index.ts",
"additions": 14,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/registry.ts",
"additions": 87,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/codeStripper.ts",
"additions": 128,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/commandDetector.ts",
"additions": 465,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/deduplicator.ts",
"additions": 37,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filterLoader.ts",
"additions": 220,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filterSchema.ts",
"additions": 182,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/aws.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/biome.json",
"additions": 35,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/build-eslint.json",
"additions": 37,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/build-typescript.json",
"additions": 33,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/build-vite.json",
"additions": 41,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/build-webpack.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/bundle-install.json",
"additions": 35,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/curl.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/df.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/docker-logs.json",
"additions": 42,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/docker-ps.json",
"additions": 33,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/du.json",
"additions": 33,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/error-stacktrace.json",
"additions": 41,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/gcloud.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/generic-output.json",
"additions": 32,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/git-branch.json",
"additions": 45,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/git-diff.json",
"additions": 33,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/git-log.json",
"additions": 33,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/git-status.json",
"additions": 40,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/golangci-lint.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/json-output.json",
"additions": 40,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/make.json",
"additions": 38,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/mypy.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/npm-audit.json",
"additions": 43,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/npm-install.json",
"additions": 41,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/nx.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/pip.json",
"additions": 41,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/playwright.json",
"additions": 42,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/poetry-install.json",
"additions": 35,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/prettier.json",
"additions": 40,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/ps.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/rsync.json",
"additions": 33,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/rubocop.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/ruff.json",
"additions": 40,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/shell-find.json",
"additions": 33,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/shell-grep.json",
"additions": 37,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/shell-ls.json",
"additions": 33,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/ssh.json",
"additions": 43,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/systemctl-status.json",
"additions": 43,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/terraform-plan.json",
"additions": 34,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/test-cargo.json",
"additions": 42,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/test-go.json",
"additions": 41,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/test-jest.json",
"additions": 43,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/test-pytest.json",
"additions": 41,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "open-sse/services/compression/engines/rtk/filters/test-vitest.json",
"additions": 43,
"deletions": 0,
"changeType": "ADDED"
}
],
"headRefName": "release/v3.7.9",
"number": 1917,
"title": "Release v3.7.9"
},
{
"additions": 788,
"author": {
"id": "MDQ6VXNlcjI0MTk4NDIy",
"is_bot": false,
"login": "backryun",
"name": "backryun"
},
"baseRefName": "release/v3.7.9",
"body": "## Summary\r\n\r\ncompletely removing support for Node.js 20.\r\nNode.js 20 has reached EOL.\r\n<img width=\"334\" height=\"327\" alt=\"image\" src=\"https://github.com/user-attachments/assets/f88758e4-fd6e-478e-88e4-8819d0c5e8e0\" />\r\n\r\n## Validation\r\n\r\n- [x] `npm run lint`\r\n- [x] `npm run test:unit`\r\n- [ ] `npm run test:coverage`\r\n- [ ] Coverage is still `>= 60%` for statements, lines, functions, and branches\r\n\r\n## Tests Added Or Updated\r\n\r\nUpdated automated test files:\r\n\r\n- `tests/unit/node-runtime-support.test.ts`\r\n- `tests/unit/chatcore-sanitization.test.ts`\r\n- `tests/unit/codex-stream-false.test.ts`\r\n- `tests/unit/t26-ai-sdk-accept-header-compat.test.ts`\r\n- `tests/integration/chat-pipeline.test.ts`\r\n- `tests/e2e/protocol-clients.test.ts`\r\n\r\nProduction code changed: Node runtime support logic was updated in `src/shared/utils/nodeRuntimeSupport.ts` and `bin/nodeRuntimeSupport.mjs`.\r\n\r\n## Coverage Notes\r\n\r\nThis PR changes `src/` and `bin/`.\r\n\r\nCoverage for the runtime support change is primarily provided by:\r\n\r\n- `tests/unit/node-runtime-support.test.ts`\r\n- `npm run check:node-runtime`\r\n\r\nAdditional regression coverage was run through:\r\n\r\n- `npm run test:unit`\r\n- `npm run test:integration`\r\n- `npm run test:e2e`\r\n- `npm run test:protocols:e2e`\r\n\r\n`npm run test:coverage` was not run, so coverage movement for touched files has not been measured yet. Follow-up before merge: run `npm run test:coverage` and confirm statements, lines, functions, and branches remain `>= 60%`.\r\n\r\n## Reviewer Notes\r\n\r\n- Node.js 20 support is removed from runtime policy, package engines, CI, docs, and runtime warning copy.\r\n- Supported runtime policy is now Node.js `>=22.22.2 <23 || >=24.0.0 <25`.\r\n- CI matrix and local version files now target Node 22/24 support.\r\n- Docs and i18n runtime wording were updated broadly; reviewers should expect many documentation-only diffs.\r\n- `tests/e2e/protocol-clients.test.ts` now explicitly enables A2A before validating the A2A flow, matching the current default where A2A starts disabled.\r\n- Manual validation was performed on Node `v22.22.2`.\n\n> [!NOTE]\n> **OmniRoute Maintainer Note:** This PR has been deferred and will be accepted and redirected for the `v4.0.0` (or greater) release cycle. Please skip this PR during `v3.x` stabilization reviews.",
"createdAt": "2026-05-03T14:11:25Z",
"deletions": 776,
"files": [
{
"path": ".dockerignore",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": ".env.example",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": ".github/workflows/ci.yml",
"additions": 8,
"deletions": 5,
"changeType": "MODIFIED"
},
{
"path": ".npmignore",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "AGENTS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "CLAUDE.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "Dockerfile",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "README.md",
"additions": 10,
"deletions": 10,
"changeType": "MODIFIED"
},
{
"path": "bin/nodeRuntimeSupport.mjs",
"additions": 3,
"deletions": 5,
"changeType": "MODIFIED"
},
{
"path": "compose.prod.yaml",
"additions": 3,
"deletions": 3,
"changeType": "RENAMED"
},
{
"path": "compose.yaml",
"additions": 0,
"deletions": 0,
"changeType": "RENAMED"
},
{
"path": "docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/ar/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/ar/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/ar/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/ar/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/ar/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/ar/docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/ar/docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/ar/llm.txt",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bg/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bg/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bg/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bg/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bg/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bg/docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bg/docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bg/llm.txt",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bn/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bn/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bn/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bn/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bn/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bn/docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/bn/docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/llm.txt",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/da/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/da/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/da/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/da/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/da/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/da/docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/da/docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/da/llm.txt",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/de/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/de/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/de/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/de/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/de/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/de/docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/de/docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/de/llm.txt",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/es/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/es/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/es/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/es/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/es/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/es/docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/es/docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/es/llm.txt",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fa/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fa/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fa/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fa/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fa/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fa/docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fa/docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fi/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fi/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fi/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fi/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fi/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fi/docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fi/docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fi/llm.txt",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fr/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fr/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fr/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fr/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fr/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fr/docs/RELEASE_CHECKLIST.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fr/docs/TROUBLESHOOTING.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/fr/llm.txt",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/gu/CONTRIBUTING.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/gu/README.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/gu/docs/CLI-TOOLS.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/gu/docs/ENVIRONMENT.md",
"additions": 3,
"deletions": 3,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/gu/docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
}
],
"headRefName": "release/v3.7.9",
"number": 1915,
"title": "[will be merge 4.0 update] (Security Fix): Drop node.js 20 support + Update docker files to lastest docker standards"
},
{
"additions": 1119,
"author": {
"id": "U_kgDODPQT-Q",
"is_bot": false,
"login": "vrdons",
"name": ""
},
"baseRefName": "release/v3.7.9",
"body": "## Summary\r\n\r\nTo allow using on bun interface, faster typescript checks\r\n\r\n## Related Issues\r\nNone\r\n\r\n## Validation\r\n\r\n- [x] `npm run lint`\r\n- [ ] `npm run test:unit`\r\nNo, because last tests stucks\r\n- [x] `npm run test:coverage`\r\n- [ ] Coverage is still `>= 60%` for statements, lines, functions, and branches\r\n- [ ] SonarQube PR analysis is green or any remaining issues are explicitly documented below\r\n\r\n## Tests Added Or Updated\r\n\r\n- List every changed or added automated test file.\r\n- If no production code changed, state that here.\r\n\r\n## Coverage Notes\r\n\r\n- If this PR changes `src/`, `open-sse/`, `electron/`, or `bin/`, explain which tests cover the change.\r\n- If coverage moved down in any touched file, explain why and what follow-up task will recover it.\r\n\r\n## Reviewer Notes\r\n\r\n- Call out any risky areas, migrations, feature flags, or manual validation that reviewers should know about.\r\n\n> [!NOTE]\n> **OmniRoute Maintainer Note:** This PR has been deferred and will be accepted and redirected for the `v4.0.0` (or greater) release cycle. Please skip this PR during `v3.x` stabilization reviews.",
"createdAt": "2026-05-02T17:57:46Z",
"deletions": 231022,
"files": [
{
"path": ".agents/workflows/deploy-vps-akamai.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": ".agents/workflows/deploy-vps-both.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": ".agents/workflows/deploy-vps-local.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": ".agents/workflows/generate-release.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "AGENTS.md",
"additions": 4,
"deletions": 4,
"changeType": "MODIFIED"
},
{
"path": "CLAUDE.md",
"additions": 1,
"deletions": 218,
"changeType": "MODIFIED"
},
{
"path": "GEMINI.md",
"additions": 1,
"deletions": 21,
"changeType": "MODIFIED"
},
{
"path": "README.md",
"additions": 63,
"deletions": 36,
"changeType": "MODIFIED"
},
{
"path": "docs/API_REFERENCE.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/ARCHITECTURE.md",
"additions": 2,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "docs/CODEBASE_DOCUMENTATION.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/ENVIRONMENT.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/FEATURES.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/I18N.md",
"additions": 82,
"deletions": 52,
"changeType": "MODIFIED"
},
{
"path": "docs/SETUP_GUIDE.md",
"additions": 9,
"deletions": 8,
"changeType": "MODIFIED"
},
{
"path": "docs/TERMUX_GUIDE.md",
"additions": 2,
"deletions": 10,
"changeType": "MODIFIED"
},
{
"path": "docs/TROUBLESHOOTING.md",
"additions": 17,
"deletions": 41,
"changeType": "MODIFIED"
},
{
"path": "docs/UNINSTALL.md",
"additions": 12,
"deletions": 12,
"changeType": "MODIFIED"
},
{
"path": "docs/USER_GUIDE.md",
"additions": 2,
"deletions": 10,
"changeType": "MODIFIED"
},
{
"path": "docs/VM_DEPLOYMENT_GUIDE.md",
"additions": 1,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/ar/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/ar/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/ar/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/ar/README.md",
"additions": 2,
"deletions": 13,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/ar/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/bg/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/bg/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/bg/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/bg/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/bn/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/bn/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/bn/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/cs/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/cs/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/cs/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/cs/README.md",
"additions": 0,
"deletions": 2379,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/A2A-SERVER.md",
"additions": 0,
"deletions": 200,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/API_REFERENCE.md",
"additions": 0,
"deletions": 469,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/ARCHITECTURE.md",
"additions": 0,
"deletions": 891,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/AUTO-COMBO.md",
"additions": 0,
"deletions": 67,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/CLI-TOOLS.md",
"additions": 0,
"deletions": 398,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/CODEBASE_DOCUMENTATION.md",
"additions": 0,
"deletions": 591,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/COVERAGE_PLAN.md",
"additions": 0,
"deletions": 170,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/ENVIRONMENT.md",
"additions": 0,
"deletions": 669,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/FEATURES.md",
"additions": 0,
"deletions": 270,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/FLY_IO_DEPLOYMENT_GUIDE.md",
"additions": 0,
"deletions": 455,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/I18N.md",
"additions": 0,
"deletions": 441,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/MCP-SERVER.md",
"additions": 0,
"deletions": 87,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/RELEASE_CHECKLIST.md",
"additions": 0,
"deletions": 44,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/TROUBLESHOOTING.md",
"additions": 0,
"deletions": 341,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/UNINSTALL.md",
"additions": 0,
"deletions": 157,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/USER_GUIDE.md",
"additions": 0,
"deletions": 966,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/VM_DEPLOYMENT_GUIDE.md",
"additions": 0,
"deletions": 407,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/cloudflare-zero-trust-guide.md",
"additions": 0,
"deletions": 106,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/docs/features/context-relay.md",
"additions": 0,
"deletions": 130,
"changeType": "MODIFIED"
},
{
"path": "docs/i18n/cs/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/da/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/da/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/da/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/da/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/de/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/de/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/de/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/de/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/es/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/es/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/es/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/es/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fa/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fa/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fa/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fi/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fi/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fi/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fi/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fr/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fr/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fr/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/fr/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/gu/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/gu/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/gu/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/he/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/he/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/he/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/he/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/hi/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/hi/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/hi/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/hi/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/hu/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/hu/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/hu/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/hu/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/id/CHANGELOG.md",
"additions": 0,
"deletions": 4921,
"changeType": "DELETED"
},
{
"path": "docs/i18n/id/CLAUDE.md",
"additions": 0,
"deletions": 233,
"changeType": "DELETED"
},
{
"path": "docs/i18n/id/GEMINI.md",
"additions": 0,
"deletions": 25,
"changeType": "DELETED"
},
{
"path": "docs/i18n/id/llm.txt",
"additions": 0,
"deletions": 476,
"changeType": "DELETED"
},
{
"path": "docs/i18n/in/CHANGELOG.md",
"additions": 0,
"deletions": 3232,
"changeType": "DELETED"
},
{
"path": "docs/i18n/in/CLAUDE.md",
"additions": 0,
"deletions": 229,
"changeType": "DELETED"
}
],
"headRefName": "main",
"number": 1894,
"title": "refactor(db): migrate from better-sqlite3 to node:sqlite, use tsgo"
},
{
"additions": 276,
"author": {
"id": "U_kgDOD9eSjQ",
"is_bot": false,
"login": "smartenok-ops",
"name": ""
},
"baseRefName": "release/v3.7.9",
"body": "When a codex SSE stream hits 429 mid-task, OmniRoute previously gave up (maxAttempts=1, no rotation). Add retry with account rotation when session affinity allows.\r\n\r\nDepends on: per-session sticky routing PR (extractSessionAffinityKey, deleteSessionAccountAffinity).\r\n\r\n## Summary\r\n\r\n- Describe the user-facing or operational change.\r\n\r\n## Related Issues\r\n\r\n- Closes #\r\n- Related to #\r\n\r\n## Validation\r\n\r\n- [ ] `npm run lint`\r\n- [ ] `npm run test:unit`\r\n- [ ] `npm run test:coverage`\r\n- [ ] Coverage is still `>= 60%` for statements, lines, functions, and branches\r\n- [ ] SonarQube PR analysis is green or any remaining issues are explicitly documented below\r\n\r\n## Tests Added Or Updated\r\n\r\n- List every changed or added automated test file.\r\n- If no production code changed, state that here.\r\n\r\n## Coverage Notes\r\n\r\n- If this PR changes `src/`, `open-sse/`, `electron/`, or `bin/`, explain which tests cover the change.\r\n- If coverage moved down in any touched file, explain why and what follow-up task will recover it.\r\n\r\n## Reviewer Notes\r\n\r\n- Call out any risky areas, migrations, feature flags, or manual validation that reviewers should know about.\r\n\n> [!NOTE]\n> **OmniRoute Maintainer Note:** This PR has been deferred and will be accepted and redirected for the `v4.0.0` (or greater) release cycle. Please skip this PR during `v3.x` stabilization reviews.",
"createdAt": "2026-05-02T16:06:11Z",
"deletions": 2,
"files": [
{
"path": "open-sse/handlers/chatCore.ts",
"additions": 84,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "tests/unit/codex-failover.test.ts",
"additions": 192,
"deletions": 0,
"changeType": "ADDED"
}
],
"headRefName": "feat/codex-429-mid-task-failover",
"number": 1888,
"title": "feat(sse): codex 429 mid-task failover with account rotation"
},
{
"additions": 461,
"author": {
"id": "U_kgDOD9eSjQ",
"is_bot": false,
"login": "smartenok-ops",
"name": ""
},
"baseRefName": "release/v3.7.9",
"body": "When concurrent SSE clients use a shared OmniRoute key, randomized account selection causes per-session inconsistencies (one stream hits account A, next request from same logical session hits B). Adds session_account_affinity table + extractSessionAffinityKey helper so a session_key (e.g. SHA of input headers) deterministically pins to one account for its lifetime.\r\n\r\nMigration: 041_session_account_affinity.sql (renumbered from local 026 — please confirm next available slot).\r\n\r\n## Summary\r\n\r\n- Describe the user-facing or operational change.\r\n\r\n## Related Issues\r\n\r\n- Closes #\r\n- Related to #\r\n\r\n## Validation\r\n\r\n- [ ] `npm run lint`\r\n- [ ] `npm run test:unit`\r\n- [ ] `npm run test:coverage`\r\n- [ ] Coverage is still `>= 60%` for statements, lines, functions, and branches\r\n- [ ] SonarQube PR analysis is green or any remaining issues are explicitly documented below\r\n\r\n## Tests Added Or Updated\r\n\r\n- List every changed or added automated test file.\r\n- If no production code changed, state that here.\r\n\r\n## Coverage Notes\r\n\r\n- If this PR changes `src/`, `open-sse/`, `electron/`, or `bin/`, explain which tests cover the change.\r\n- If coverage moved down in any touched file, explain why and what follow-up task will recover it.\r\n\r\n## Reviewer Notes\r\n\r\n- Call out any risky areas, migrations, feature flags, or manual validation that reviewers should know about.\r\n\n> [!NOTE]\n> **OmniRoute Maintainer Note:** This PR has been deferred and will be accepted and redirected for the `v4.0.0` (or greater) release cycle. Please skip this PR during `v3.x` stabilization reviews.",
"createdAt": "2026-05-02T16:05:53Z",
"deletions": 122,
"files": [
{
"path": "src/instrumentation-node.ts",
"additions": 10,
"deletions": 5,
"changeType": "MODIFIED"
},
{
"path": "src/lib/db/migrations/041_session_account_affinity.sql",
"additions": 11,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "src/lib/db/sessionAccountAffinity.ts",
"additions": 122,
"deletions": 0,
"changeType": "ADDED"
},
{
"path": "src/lib/localDb.ts",
"additions": 10,
"deletions": 0,
"changeType": "MODIFIED"
},
{
"path": "src/sse/handlers/chat.ts",
"additions": 14,
"deletions": 1,
"changeType": "MODIFIED"
},
{
"path": "src/sse/services/auth.ts",
"additions": 177,
"deletions": 2,
"changeType": "MODIFIED"
},
{
"path": "tests/unit/sse-auth.test.ts",
"additions": 117,
"deletions": 114,
"changeType": "MODIFIED"
}
],
"headRefName": "feat/per-session-sticky-routing",
"number": 1887,
"title": "feat(auth): per-session sticky routing for codex"
}
]