Skip to content

fix(xiaomi-mimo): update models to V2.5, fix Token Plan validation and default region - #1823

Merged
diegosouzapw merged 4 commits into
cheaper-inference:release/v3.7.6from
Gi99lin:fix/xiaomi-mimo-provider
Apr 30, 2026
Merged

diegosouzapw merged 4 commits into
cheaper-inference:release/v3.7.6from
Gi99lin:fix/xiaomi-mimo-provider

Conversation

@Gi99lin

@Gi99lin Gi99lin commented Apr 30, 2026

Copy link
Copy Markdown
Contributor

Summary

Fixes Xiaomi MiMo provider failing to connect — both adding API keys and sending requests were broken due to outdated model IDs and incorrect regional endpoint defaults.

Root Cause

Two issues combined to completely break the provider:

  1. Outdated model IDs — The registry listed mimo-v2-pro, mimo-v2-omni, mimo-v2-tts, but Xiaomi released the V2.5 series (mimo-v2.5-pro, mimo-v2.5, mimo-v2.5-tts, etc.). The generic OpenAI validation sends a test chat request with the first registered model — using an obsolete model ID caused validation failure.

  2. Wrong default regional endpoint — Token Plan keys (tp-*) only work on their assigned regional cluster. The default token-plan-ams endpoint doesn't work for all TP keys. Changed to token-plan-sgp which has wider availability.

  3. No custom validation — Xiaomi was using the generic validateOpenAILikeProvider which first tries GET /models (works but gives false negatives on wrong region), then falls through to /chat/completions with an obsolete model. Added dedicated SPECIALTY_VALIDATORS entry.

Changes

open-sse/config/providerRegistry.ts

  • Added V2.5 models: mimo-v2.5-pro, mimo-v2.5, mimo-v2.5-tts, mimo-v2.5-tts-voiceclone, mimo-v2.5-tts-voicedesign
  • Kept V2 legacy models for backward compatibility

src/lib/providers/validation.ts

  • Added xiaomi-mimo to SPECIALTY_VALIDATORS — validates via /chat/completions using the user's configured baseUrl (critical for Token Plan regional endpoints)

src/app/(dashboard)/dashboard/providers/[id]/page.tsx

  • Changed default base URL from token-plan-ams to token-plan-sgp

tests/unit/xiaomi-mimo-provider.test.ts

  • Updated assertions for new V2.5 model list and SGP URLs

Verification

  • ✅ Tested with live Token Plan key (tp-*) on SGP endpoint
  • ✅ GET /v1/models returns all 8 models (V2 + V2.5)
  • ✅ POST /v1/chat/completions with mimo-v2.5-pro returns 200
  • ✅ Confirmed Anthropic API (/messages) returns 404 on Token Plan — OpenAI format is the only option
  • ✅ 20+ production requests processed successfully after deployment
  • ✅ All 4 unit tests pass
  • ✅ chat-openai-compat-providers integration test passes

Gi99lin added 3 commits April 29, 2026 19:27
…d default region

- Update model list: add mimo-v2.5-pro, mimo-v2.5, mimo-v2.5-tts,
  mimo-v2.5-tts-voiceclone, mimo-v2.5-tts-voicedesign (keep V2 legacy)
- Add custom validation in SPECIALTY_VALIDATORS — Token Plan keys (tp-*)
  only work on regional endpoints, not api.xiaomimimo.com; validates via
  /chat/completions with the user's configured baseUrl
- Change default Token Plan region from AMS to SGP (more universally
  accessible for international users)
- Update unit tests for new model list and SGP URLs
@Gi99lin
Gi99lin requested a review from diegosouzapw as a code owner April 30, 2026 14:08

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request updates the Xiaomi MiMo provider by adding several v2.5 models to the registry and changing the default regional base URL from Amsterdam to Singapore. It also introduces a custom API key validator. Feedback was provided regarding the validator's logic: it currently uses a hardcoded model ID instead of allowing a user-specified one and is too permissive with HTTP status codes, potentially marking failed requests (like 404 or 5xx) as valid.

Comment on lines +2840 to +2863
"xiaomi-mimo": async ({ apiKey, providerSpecificData }: any) => {
try {
const baseUrl = normalizeBaseUrl(
providerSpecificData?.baseUrl || "https://api.xiaomimimo.com/v1"
);
const chatUrl = `${baseUrl.replace(/\/chat\/completions$/, "")}/chat/completions`;
const res = await validationWrite(chatUrl, {
method: "POST",
headers: buildBearerHeaders(apiKey, providerSpecificData),
body: JSON.stringify({
model: "mimo-v2.5-pro",
messages: [{ role: "user", content: "test" }],
max_tokens: 1,
}),
});
if (res.status === 401 || res.status === 403) {
return { valid: false, error: "Invalid API key" };
}
// Any non-auth response (200, 400, 422, 429) means auth passed
return { valid: true, error: null };
} catch (error: any) {
return toValidationErrorResult(error);
}
},

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The specialty validator for xiaomi-mimo has two issues:

  1. It uses a hardcoded model ID mimo-v2.5-pro, ignoring any user-provided validationModelId in providerSpecificData. This can cause validation to fail if the user only has access to specific models.
  2. The validity check is too permissive. It returns valid: true for any status code other than 401 or 403, including 404 (wrong URL) or 5xx (server error). It should only consider the key valid if the response indicates that authentication was successful (e.g., 200, 400, 422, or 429).
    "xiaomi-mimo": async ({ apiKey, providerSpecificData }: any) => {
      try {
        const baseUrl = normalizeBaseUrl(
          providerSpecificData?.baseUrl || "https://api.xiaomimimo.com/v1"
        );
        const chatUrl = baseUrl.replace(/\/chat\/completions$/, "") + "/chat/completions";
        const testModelId = providerSpecificData?.validationModelId || "mimo-v2.5-pro";
        const res = await validationWrite(chatUrl, {
          method: "POST",
          headers: buildBearerHeaders(apiKey, providerSpecificData),
          body: JSON.stringify({
            model: testModelId,
            messages: [{ role: "user", content: "test" }],
            max_tokens: 1,
          }),
        });
        if (res.status === 401 || res.status === 403) {
          return { valid: false, error: "Invalid API key" };
        }
        if (res.ok || res.status === 400 || res.status === 422 || res.status === 429) {
          return { valid: true, error: null };
        }
        if (res.status >= 500) {
          return { valid: false, error: "Provider unavailable (" + res.status + ")" };
        }
        return { valid: false, error: "Validation failed: " + res.status };
      } catch (error: any) {
        return toValidationErrorResult(error);
      }
    },

@diegosouzapw
diegosouzapw changed the base branch from main to release/v3.7.6 April 30, 2026 14:25
@diegosouzapw

Copy link
Copy Markdown
Collaborator

Thanks @Gi99lin for this great contribution! 🎉 It's now officially merged into the release/v3.7.6 branch and will be part of the next release. We deeply appreciate your effort!

@diegosouzapw
diegosouzapw merged commit dff22ad into cheaper-inference:release/v3.7.6 Apr 30, 2026
1 check was pending
@diegosouzapw diegosouzapw mentioned this pull request Apr 30, 2026
diegosouzapw added a commit that referenced this pull request Apr 30, 2026
* feat(api-keys): add rename support in permissions modal

Add an editable key name field at the top of the permissions modal,
allowing users to rename API keys alongside existing permission settings.

The backend already supported name updates via PATCH /api/keys/:id — this
wires the UI to send the name field and refreshes the key list on success.

Changes:
- Add keyName state and text input to PermissionsModal
- Update handleUpdatePermissions to validate and send name in PATCH body
- Add integration test for rename via PATCH (valid, empty, too-long names)
- Update E2E mock to handle PATCH requests

* chore(release): bump version to 3.7.6

* chore(release): v3.7.6 — merge API key rename feature and sync docs

* chore(release): expand contributor credits to 155 PRs across full project history

- Expanded acknowledgment table from 29 to 53 contributors
- Added 100+ previously uncredited PRs from project inception through v3.7.5
- Moved contributor credits section to v3.7.6 (current release)
- Synced llm.txt version to 3.7.6

* fix: resolve security ReDoS in codex and bugs #1797 #1789

* feat(dashboard): implement remaining v3.7.6 dashboard features and fixes

* fix(xiaomi-mimo): update models to V2.5, fix Token Plan validation and default region (#1823)

Integrated into release/v3.7.6

* fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab

* fix(codex): omit compact client metadata (#1822)

Integrated into release/v3.7.6

* feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (#1821)

Integrated into release/v3.7.6

* Fix endpoint visibility, A2A status, and API catalog (#1806)

Integrated into release/v3.7.6

* fix(analytics): use pure SQL aggregations — no history rows loaded (#1802)

Integrated into release/v3.7.6

* fix(stability): resolve codex input validation, enable combo circuit breaker, and fix broken unit tests

* docs(changelog): update for stability bug fixes #1804 #1805

* fix: clear active requests and recover providers (#1824)

Integrated into release/v3.7.6

* feat: inject fallback tool names to prevent upstream 400 errors (#1775)

* feat: auto-restore probe-failed database to prevent data loss (#1810)

* fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (#1825)

* chore(release): v3.7.6 — final stability patches for production

* test: update expected db probe-failure error message for auto-restore feature

* chore(workflow): mandate implementation plan generation in resolve-issues

* docs(changelog): rewrite v3.7.6 with complete commit-accurate entries

* feat(analytics): add cost-based usage insights and activity streaks

Expand usage analytics to report total cost, per-series cost totals,
API key counts, and current activity streaks using pricing-aware token
calculations.

Also make probe-failed database recovery choose the newest backup by
its embedded timestamp instead of filesystem mtime so auto-restore
selects the intended snapshot reliably.

* fix(mitm): enforce transparent interception on port 443 only

Reject non-443 MITM port updates in the settings API and normalize
stored configuration back to the required transparent interception
port.

Lock the dashboard port field to 443, update the validation copy, and
add integration coverage to prevent stale custom ports from being
accepted or surfaced.

* docs(changelog): update for analytics and mitm features

---------

Co-authored-by: Andrew Munsell <andrew@wizardapps.net>
Co-authored-by: Antigravity Assistant <bot@antigravity.local>
Co-authored-by: Gi99lin <74502520+Gi99lin@users.noreply.github.com>
Co-authored-by: Sergey Morozov <tr0st@bk.ru>
Co-authored-by: payne <baboialex95@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: ipanghu <bypanghu@163.com>
diegosouzapw added a commit that referenced this pull request Apr 30, 2026
* feat(api-keys): add rename support in permissions modal

Add an editable key name field at the top of the permissions modal,
allowing users to rename API keys alongside existing permission settings.

The backend already supported name updates via PATCH /api/keys/:id — this
wires the UI to send the name field and refreshes the key list on success.

Changes:
- Add keyName state and text input to PermissionsModal
- Update handleUpdatePermissions to validate and send name in PATCH body
- Add integration test for rename via PATCH (valid, empty, too-long names)
- Update E2E mock to handle PATCH requests

* chore(release): bump version to 3.7.6

* chore(release): v3.7.6 — merge API key rename feature and sync docs

* chore(release): expand contributor credits to 155 PRs across full project history

- Expanded acknowledgment table from 29 to 53 contributors
- Added 100+ previously uncredited PRs from project inception through v3.7.5
- Moved contributor credits section to v3.7.6 (current release)
- Synced llm.txt version to 3.7.6

* fix: resolve security ReDoS in codex and bugs #1797 #1789

* feat(dashboard): implement remaining v3.7.6 dashboard features and fixes

* fix(xiaomi-mimo): update models to V2.5, fix Token Plan validation and default region (#1823)

Integrated into release/v3.7.6

* fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab

* fix(codex): omit compact client metadata (#1822)

Integrated into release/v3.7.6

* feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (#1821)

Integrated into release/v3.7.6

* Fix endpoint visibility, A2A status, and API catalog (#1806)

Integrated into release/v3.7.6

* fix(analytics): use pure SQL aggregations — no history rows loaded (#1802)

Integrated into release/v3.7.6

* fix(stability): resolve codex input validation, enable combo circuit breaker, and fix broken unit tests

* docs(changelog): update for stability bug fixes #1804 #1805

* fix: clear active requests and recover providers (#1824)

Integrated into release/v3.7.6

* feat: inject fallback tool names to prevent upstream 400 errors (#1775)

* feat: auto-restore probe-failed database to prevent data loss (#1810)

* fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (#1825)

* chore(release): v3.7.6 — final stability patches for production

* test: update expected db probe-failure error message for auto-restore feature

* chore(workflow): mandate implementation plan generation in resolve-issues

* docs(changelog): rewrite v3.7.6 with complete commit-accurate entries

* feat(analytics): add cost-based usage insights and activity streaks

Expand usage analytics to report total cost, per-series cost totals,
API key counts, and current activity streaks using pricing-aware token
calculations.

Also make probe-failed database recovery choose the newest backup by
its embedded timestamp instead of filesystem mtime so auto-restore
selects the intended snapshot reliably.

* fix(mitm): enforce transparent interception on port 443 only

Reject non-443 MITM port updates in the settings API and normalize
stored configuration back to the required transparent interception
port.

Lock the dashboard port field to 443, update the validation copy, and
add integration coverage to prevent stale custom ports from being
accepted or surfaced.

* docs(changelog): update for analytics and mitm features

* chore(release): attribute community contributors

Co-authored-by: rdself <rdself@users.noreply.github.com>
Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
Co-authored-by: clousky2020 <clousky2020@users.noreply.github.com>
Co-authored-by: benzntech <benzntech@users.noreply.github.com>
Co-authored-by: kang-heewon <kang-heewon@users.noreply.github.com>
Co-authored-by: herjarsa <herjarsa@users.noreply.github.com>
Co-authored-by: backryun <backryun@users.noreply.github.com>
Co-authored-by: tombii <tombii@users.noreply.github.com>
Co-authored-by: christopher-s <christopher-s@users.noreply.github.com>
Co-authored-by: zen0bit <zen0bit@users.noreply.github.com>
Co-authored-by: k0valik <k0valik@users.noreply.github.com>
Co-authored-by: zhangqiang8vip <zhangqiang8vip@users.noreply.github.com>
Co-authored-by: wlfonseca <wlfonseca@users.noreply.github.com>
Co-authored-by: RaviTharuma <RaviTharuma@users.noreply.github.com>
Co-authored-by: prakersh <prakersh@users.noreply.github.com>
Co-authored-by: payne0420 <payne0420@users.noreply.github.com>
Co-authored-by: only4copilot <only4copilot@users.noreply.github.com>
Co-authored-by: jay77721 <jay77721@users.noreply.github.com>
Co-authored-by: hijak <hijak@users.noreply.github.com>
Co-authored-by: hartmark <hartmark@users.noreply.github.com>
Co-authored-by: defhouse <defhouse@users.noreply.github.com>
Co-authored-by: xiaoge1688 <xiaoge1688@users.noreply.github.com>
Co-authored-by: xandr0s <xandr0s@users.noreply.github.com>
Co-authored-by: willbnu <willbnu@users.noreply.github.com>
Co-authored-by: slewis3600 <slewis3600@users.noreply.github.com>
Co-authored-by: sergey-v9 <sergey-v9@users.noreply.github.com>
Co-authored-by: razllivan <razllivan@users.noreply.github.com>
Co-authored-by: nmime <nmime@users.noreply.github.com>
Co-authored-by: Moutia-Ben-Yahia <Moutia-Ben-Yahia@users.noreply.github.com>
Co-authored-by: Mind-Dragon <Mind-Dragon@users.noreply.github.com>
Co-authored-by: mercs2910 <mercs2910@users.noreply.github.com>
Co-authored-by: MAINER4IK <MAINER4IK@users.noreply.github.com>
Co-authored-by: luandiasrj <luandiasrj@users.noreply.github.com>
Co-authored-by: knopki <knopki@users.noreply.github.com>
Co-authored-by: kfiramar <kfiramar@users.noreply.github.com>
Co-authored-by: ken2190 <ken2190@users.noreply.github.com>
Co-authored-by: keith8496 <keith8496@users.noreply.github.com>
Co-authored-by: jonesfernandess <jonesfernandess@users.noreply.github.com>
Co-authored-by: JasonLandbridge <JasonLandbridge@users.noreply.github.com>
Co-authored-by: i1hwan <i1hwan@users.noreply.github.com>
Co-authored-by: Gorchakov-Pressure <Gorchakov-Pressure@users.noreply.github.com>
Co-authored-by: foxy1402 <foxy1402@users.noreply.github.com>
Co-authored-by: dt418 <dt418@users.noreply.github.com>
Co-authored-by: dhaern <dhaern@users.noreply.github.com>
Co-authored-by: DavyMassoneto <DavyMassoneto@users.noreply.github.com>
Co-authored-by: dail45 <dail45@users.noreply.github.com>
Co-authored-by: congvc-dev <congvc-dev@users.noreply.github.com>
Co-authored-by: be0hhh <be0hhh@users.noreply.github.com>
Co-authored-by: andruwa13 <andruwa13@users.noreply.github.com>
Co-authored-by: AndrewDragonIV <AndrewDragonIV@users.noreply.github.com>
Co-authored-by: AndersonFirmino <AndersonFirmino@users.noreply.github.com>
Co-authored-by: alexsvdk <alexsvdk@users.noreply.github.com>
Co-authored-by: abhinavjnu <abhinavjnu@users.noreply.github.com>

---------

Co-authored-by: Andrew Munsell <andrew@wizardapps.net>
Co-authored-by: Antigravity Assistant <bot@antigravity.local>
Co-authored-by: Gi99lin <74502520+Gi99lin@users.noreply.github.com>
Co-authored-by: Sergey Morozov <tr0st@bk.ru>
Co-authored-by: payne <baboialex95@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: ipanghu <bypanghu@163.com>
Co-authored-by: rdself <rdself@users.noreply.github.com>
Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
Co-authored-by: clousky2020 <clousky2020@users.noreply.github.com>
Co-authored-by: benzntech <benzntech@users.noreply.github.com>
Co-authored-by: kang-heewon <kang-heewon@users.noreply.github.com>
Co-authored-by: herjarsa <herjarsa@users.noreply.github.com>
Co-authored-by: backryun <backryun@users.noreply.github.com>
Co-authored-by: tombii <tombii@users.noreply.github.com>
Co-authored-by: christopher-s <christopher-s@users.noreply.github.com>
Co-authored-by: zen0bit <zen0bit@users.noreply.github.com>
Co-authored-by: k0valik <k0valik@users.noreply.github.com>
Co-authored-by: zhangqiang8vip <zhangqiang8vip@users.noreply.github.com>
Co-authored-by: wlfonseca <wlfonseca@users.noreply.github.com>
Co-authored-by: RaviTharuma <RaviTharuma@users.noreply.github.com>
Co-authored-by: prakersh <prakersh@users.noreply.github.com>
Co-authored-by: payne0420 <payne0420@users.noreply.github.com>
Co-authored-by: only4copilot <only4copilot@users.noreply.github.com>
Co-authored-by: jay77721 <jay77721@users.noreply.github.com>
Co-authored-by: hijak <hijak@users.noreply.github.com>
Co-authored-by: hartmark <hartmark@users.noreply.github.com>
Co-authored-by: defhouse <defhouse@users.noreply.github.com>
Co-authored-by: xiaoge1688 <xiaoge1688@users.noreply.github.com>
Co-authored-by: xandr0s <xandr0s@users.noreply.github.com>
Co-authored-by: willbnu <willbnu@users.noreply.github.com>
Co-authored-by: slewis3600 <slewis3600@users.noreply.github.com>
Co-authored-by: sergey-v9 <sergey-v9@users.noreply.github.com>
Co-authored-by: razllivan <razllivan@users.noreply.github.com>
Co-authored-by: nmime <nmime@users.noreply.github.com>
Co-authored-by: Moutia-Ben-Yahia <Moutia-Ben-Yahia@users.noreply.github.com>
Co-authored-by: Mind-Dragon <Mind-Dragon@users.noreply.github.com>
Co-authored-by: mercs2910 <mercs2910@users.noreply.github.com>
Co-authored-by: MAINER4IK <MAINER4IK@users.noreply.github.com>
Co-authored-by: luandiasrj <luandiasrj@users.noreply.github.com>
Co-authored-by: knopki <knopki@users.noreply.github.com>
Co-authored-by: kfiramar <kfiramar@users.noreply.github.com>
Co-authored-by: ken2190 <ken2190@users.noreply.github.com>
Co-authored-by: keith8496 <keith8496@users.noreply.github.com>
Co-authored-by: jonesfernandess <jonesfernandess@users.noreply.github.com>
Co-authored-by: JasonLandbridge <JasonLandbridge@users.noreply.github.com>
Co-authored-by: i1hwan <i1hwan@users.noreply.github.com>
Co-authored-by: Gorchakov-Pressure <Gorchakov-Pressure@users.noreply.github.com>
Co-authored-by: foxy1402 <foxy1402@users.noreply.github.com>
Co-authored-by: dt418 <dt418@users.noreply.github.com>
Co-authored-by: dhaern <dhaern@users.noreply.github.com>
Co-authored-by: DavyMassoneto <DavyMassoneto@users.noreply.github.com>
Co-authored-by: dail45 <dail45@users.noreply.github.com>
Co-authored-by: congvc-dev <congvc-dev@users.noreply.github.com>
Co-authored-by: be0hhh <be0hhh@users.noreply.github.com>
Co-authored-by: andruwa13 <andruwa13@users.noreply.github.com>
Co-authored-by: AndrewDragonIV <AndrewDragonIV@users.noreply.github.com>
Co-authored-by: AndersonFirmino <AndersonFirmino@users.noreply.github.com>
Co-authored-by: alexsvdk <alexsvdk@users.noreply.github.com>
Co-authored-by: abhinavjnu <abhinavjnu@users.noreply.github.com>
@diegosouzapw diegosouzapw mentioned this pull request May 4, 2026
@Gi99lin
Gi99lin deleted the fix/xiaomi-mimo-provider branch May 21, 2026 21:34
HouMinXi pushed a commit to HouMinXi/OmniRoute that referenced this pull request Aug 2, 2026
* feat(api-keys): add rename support in permissions modal

Add an editable key name field at the top of the permissions modal,
allowing users to rename API keys alongside existing permission settings.

The backend already supported name updates via PATCH /api/keys/:id — this
wires the UI to send the name field and refreshes the key list on success.

Changes:
- Add keyName state and text input to PermissionsModal
- Update handleUpdatePermissions to validate and send name in PATCH body
- Add integration test for rename via PATCH (valid, empty, too-long names)
- Update E2E mock to handle PATCH requests

* chore(release): bump version to 3.7.6

* chore(release): v3.7.6 — merge API key rename feature and sync docs

* chore(release): expand contributor credits to 155 PRs across full project history

- Expanded acknowledgment table from 29 to 53 contributors
- Added 100+ previously uncredited PRs from project inception through v3.7.5
- Moved contributor credits section to v3.7.6 (current release)
- Synced llm.txt version to 3.7.6

* fix: resolve security ReDoS in codex and bugs cheaper-inference#1797 cheaper-inference#1789

* feat(dashboard): implement remaining v3.7.6 dashboard features and fixes

* fix(xiaomi-mimo): update models to V2.5, fix Token Plan validation and default region (cheaper-inference#1823)

Integrated into release/v3.7.6

* fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab

* fix(codex): omit compact client metadata (cheaper-inference#1822)

Integrated into release/v3.7.6

* feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (cheaper-inference#1821)

Integrated into release/v3.7.6

* Fix endpoint visibility, A2A status, and API catalog (cheaper-inference#1806)

Integrated into release/v3.7.6

* fix(analytics): use pure SQL aggregations — no history rows loaded (cheaper-inference#1802)

Integrated into release/v3.7.6

* fix(stability): resolve codex input validation, enable combo circuit breaker, and fix broken unit tests

* docs(changelog): update for stability bug fixes cheaper-inference#1804 cheaper-inference#1805

* fix: clear active requests and recover providers (cheaper-inference#1824)

Integrated into release/v3.7.6

* feat: inject fallback tool names to prevent upstream 400 errors (cheaper-inference#1775)

* feat: auto-restore probe-failed database to prevent data loss (cheaper-inference#1810)

* fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (cheaper-inference#1825)

* chore(release): v3.7.6 — final stability patches for production

* test: update expected db probe-failure error message for auto-restore feature

* chore(workflow): mandate implementation plan generation in resolve-issues

* docs(changelog): rewrite v3.7.6 with complete commit-accurate entries

* feat(analytics): add cost-based usage insights and activity streaks

Expand usage analytics to report total cost, per-series cost totals,
API key counts, and current activity streaks using pricing-aware token
calculations.

Also make probe-failed database recovery choose the newest backup by
its embedded timestamp instead of filesystem mtime so auto-restore
selects the intended snapshot reliably.

* fix(mitm): enforce transparent interception on port 443 only

Reject non-443 MITM port updates in the settings API and normalize
stored configuration back to the required transparent interception
port.

Lock the dashboard port field to 443, update the validation copy, and
add integration coverage to prevent stale custom ports from being
accepted or surfaced.

* docs(changelog): update for analytics and mitm features

---------

Co-authored-by: Andrew Munsell <andrew@wizardapps.net>
Co-authored-by: Antigravity Assistant <bot@antigravity.local>
Co-authored-by: Gi99lin <74502520+Gi99lin@users.noreply.github.com>
Co-authored-by: Sergey Morozov <tr0st@bk.ru>
Co-authored-by: payne <baboialex95@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: ipanghu <bypanghu@163.com>
HouMinXi pushed a commit to HouMinXi/OmniRoute that referenced this pull request Aug 2, 2026
* feat(api-keys): add rename support in permissions modal

Add an editable key name field at the top of the permissions modal,
allowing users to rename API keys alongside existing permission settings.

The backend already supported name updates via PATCH /api/keys/:id — this
wires the UI to send the name field and refreshes the key list on success.

Changes:
- Add keyName state and text input to PermissionsModal
- Update handleUpdatePermissions to validate and send name in PATCH body
- Add integration test for rename via PATCH (valid, empty, too-long names)
- Update E2E mock to handle PATCH requests

* chore(release): bump version to 3.7.6

* chore(release): v3.7.6 — merge API key rename feature and sync docs

* chore(release): expand contributor credits to 155 PRs across full project history

- Expanded acknowledgment table from 29 to 53 contributors
- Added 100+ previously uncredited PRs from project inception through v3.7.5
- Moved contributor credits section to v3.7.6 (current release)
- Synced llm.txt version to 3.7.6

* fix: resolve security ReDoS in codex and bugs cheaper-inference#1797 cheaper-inference#1789

* feat(dashboard): implement remaining v3.7.6 dashboard features and fixes

* fix(xiaomi-mimo): update models to V2.5, fix Token Plan validation and default region (cheaper-inference#1823)

Integrated into release/v3.7.6

* fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab

* fix(codex): omit compact client metadata (cheaper-inference#1822)

Integrated into release/v3.7.6

* feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (cheaper-inference#1821)

Integrated into release/v3.7.6

* Fix endpoint visibility, A2A status, and API catalog (cheaper-inference#1806)

Integrated into release/v3.7.6

* fix(analytics): use pure SQL aggregations — no history rows loaded (cheaper-inference#1802)

Integrated into release/v3.7.6

* fix(stability): resolve codex input validation, enable combo circuit breaker, and fix broken unit tests

* docs(changelog): update for stability bug fixes cheaper-inference#1804 cheaper-inference#1805

* fix: clear active requests and recover providers (cheaper-inference#1824)

Integrated into release/v3.7.6

* feat: inject fallback tool names to prevent upstream 400 errors (cheaper-inference#1775)

* feat: auto-restore probe-failed database to prevent data loss (cheaper-inference#1810)

* fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (cheaper-inference#1825)

* chore(release): v3.7.6 — final stability patches for production

* test: update expected db probe-failure error message for auto-restore feature

* chore(workflow): mandate implementation plan generation in resolve-issues

* docs(changelog): rewrite v3.7.6 with complete commit-accurate entries

* feat(analytics): add cost-based usage insights and activity streaks

Expand usage analytics to report total cost, per-series cost totals,
API key counts, and current activity streaks using pricing-aware token
calculations.

Also make probe-failed database recovery choose the newest backup by
its embedded timestamp instead of filesystem mtime so auto-restore
selects the intended snapshot reliably.

* fix(mitm): enforce transparent interception on port 443 only

Reject non-443 MITM port updates in the settings API and normalize
stored configuration back to the required transparent interception
port.

Lock the dashboard port field to 443, update the validation copy, and
add integration coverage to prevent stale custom ports from being
accepted or surfaced.

* docs(changelog): update for analytics and mitm features

* chore(release): attribute community contributors

Co-authored-by: rdself <rdself@users.noreply.github.com>
Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
Co-authored-by: clousky2020 <clousky2020@users.noreply.github.com>
Co-authored-by: benzntech <benzntech@users.noreply.github.com>
Co-authored-by: kang-heewon <kang-heewon@users.noreply.github.com>
Co-authored-by: herjarsa <herjarsa@users.noreply.github.com>
Co-authored-by: backryun <backryun@users.noreply.github.com>
Co-authored-by: tombii <tombii@users.noreply.github.com>
Co-authored-by: christopher-s <christopher-s@users.noreply.github.com>
Co-authored-by: zen0bit <zen0bit@users.noreply.github.com>
Co-authored-by: k0valik <k0valik@users.noreply.github.com>
Co-authored-by: zhangqiang8vip <zhangqiang8vip@users.noreply.github.com>
Co-authored-by: wlfonseca <wlfonseca@users.noreply.github.com>
Co-authored-by: RaviTharuma <RaviTharuma@users.noreply.github.com>
Co-authored-by: prakersh <prakersh@users.noreply.github.com>
Co-authored-by: payne0420 <payne0420@users.noreply.github.com>
Co-authored-by: only4copilot <only4copilot@users.noreply.github.com>
Co-authored-by: jay77721 <jay77721@users.noreply.github.com>
Co-authored-by: hijak <hijak@users.noreply.github.com>
Co-authored-by: hartmark <hartmark@users.noreply.github.com>
Co-authored-by: defhouse <defhouse@users.noreply.github.com>
Co-authored-by: xiaoge1688 <xiaoge1688@users.noreply.github.com>
Co-authored-by: xandr0s <xandr0s@users.noreply.github.com>
Co-authored-by: willbnu <willbnu@users.noreply.github.com>
Co-authored-by: slewis3600 <slewis3600@users.noreply.github.com>
Co-authored-by: sergey-v9 <sergey-v9@users.noreply.github.com>
Co-authored-by: razllivan <razllivan@users.noreply.github.com>
Co-authored-by: nmime <nmime@users.noreply.github.com>
Co-authored-by: Moutia-Ben-Yahia <Moutia-Ben-Yahia@users.noreply.github.com>
Co-authored-by: Mind-Dragon <Mind-Dragon@users.noreply.github.com>
Co-authored-by: mercs2910 <mercs2910@users.noreply.github.com>
Co-authored-by: MAINER4IK <MAINER4IK@users.noreply.github.com>
Co-authored-by: luandiasrj <luandiasrj@users.noreply.github.com>
Co-authored-by: knopki <knopki@users.noreply.github.com>
Co-authored-by: kfiramar <kfiramar@users.noreply.github.com>
Co-authored-by: ken2190 <ken2190@users.noreply.github.com>
Co-authored-by: keith8496 <keith8496@users.noreply.github.com>
Co-authored-by: jonesfernandess <jonesfernandess@users.noreply.github.com>
Co-authored-by: JasonLandbridge <JasonLandbridge@users.noreply.github.com>
Co-authored-by: i1hwan <i1hwan@users.noreply.github.com>
Co-authored-by: Gorchakov-Pressure <Gorchakov-Pressure@users.noreply.github.com>
Co-authored-by: foxy1402 <foxy1402@users.noreply.github.com>
Co-authored-by: dt418 <dt418@users.noreply.github.com>
Co-authored-by: dhaern <dhaern@users.noreply.github.com>
Co-authored-by: DavyMassoneto <DavyMassoneto@users.noreply.github.com>
Co-authored-by: dail45 <dail45@users.noreply.github.com>
Co-authored-by: congvc-dev <congvc-dev@users.noreply.github.com>
Co-authored-by: be0hhh <be0hhh@users.noreply.github.com>
Co-authored-by: andruwa13 <andruwa13@users.noreply.github.com>
Co-authored-by: AndrewDragonIV <AndrewDragonIV@users.noreply.github.com>
Co-authored-by: AndersonFirmino <AndersonFirmino@users.noreply.github.com>
Co-authored-by: alexsvdk <alexsvdk@users.noreply.github.com>
Co-authored-by: abhinavjnu <abhinavjnu@users.noreply.github.com>

---------

Co-authored-by: Andrew Munsell <andrew@wizardapps.net>
Co-authored-by: Antigravity Assistant <bot@antigravity.local>
Co-authored-by: Gi99lin <74502520+Gi99lin@users.noreply.github.com>
Co-authored-by: Sergey Morozov <tr0st@bk.ru>
Co-authored-by: payne <baboialex95@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: ipanghu <bypanghu@163.com>
Co-authored-by: rdself <rdself@users.noreply.github.com>
Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
Co-authored-by: clousky2020 <clousky2020@users.noreply.github.com>
Co-authored-by: benzntech <benzntech@users.noreply.github.com>
Co-authored-by: kang-heewon <kang-heewon@users.noreply.github.com>
Co-authored-by: herjarsa <herjarsa@users.noreply.github.com>
Co-authored-by: backryun <backryun@users.noreply.github.com>
Co-authored-by: tombii <tombii@users.noreply.github.com>
Co-authored-by: christopher-s <christopher-s@users.noreply.github.com>
Co-authored-by: zen0bit <zen0bit@users.noreply.github.com>
Co-authored-by: k0valik <k0valik@users.noreply.github.com>
Co-authored-by: zhangqiang8vip <zhangqiang8vip@users.noreply.github.com>
Co-authored-by: wlfonseca <wlfonseca@users.noreply.github.com>
Co-authored-by: RaviTharuma <RaviTharuma@users.noreply.github.com>
Co-authored-by: prakersh <prakersh@users.noreply.github.com>
Co-authored-by: payne0420 <payne0420@users.noreply.github.com>
Co-authored-by: only4copilot <only4copilot@users.noreply.github.com>
Co-authored-by: jay77721 <jay77721@users.noreply.github.com>
Co-authored-by: hijak <hijak@users.noreply.github.com>
Co-authored-by: hartmark <hartmark@users.noreply.github.com>
Co-authored-by: defhouse <defhouse@users.noreply.github.com>
Co-authored-by: xiaoge1688 <xiaoge1688@users.noreply.github.com>
Co-authored-by: xandr0s <xandr0s@users.noreply.github.com>
Co-authored-by: willbnu <willbnu@users.noreply.github.com>
Co-authored-by: slewis3600 <slewis3600@users.noreply.github.com>
Co-authored-by: sergey-v9 <sergey-v9@users.noreply.github.com>
Co-authored-by: razllivan <razllivan@users.noreply.github.com>
Co-authored-by: nmime <nmime@users.noreply.github.com>
Co-authored-by: Moutia-Ben-Yahia <Moutia-Ben-Yahia@users.noreply.github.com>
Co-authored-by: Mind-Dragon <Mind-Dragon@users.noreply.github.com>
Co-authored-by: mercs2910 <mercs2910@users.noreply.github.com>
Co-authored-by: MAINER4IK <MAINER4IK@users.noreply.github.com>
Co-authored-by: luandiasrj <luandiasrj@users.noreply.github.com>
Co-authored-by: knopki <knopki@users.noreply.github.com>
Co-authored-by: kfiramar <kfiramar@users.noreply.github.com>
Co-authored-by: ken2190 <ken2190@users.noreply.github.com>
Co-authored-by: keith8496 <keith8496@users.noreply.github.com>
Co-authored-by: jonesfernandess <jonesfernandess@users.noreply.github.com>
Co-authored-by: JasonLandbridge <JasonLandbridge@users.noreply.github.com>
Co-authored-by: i1hwan <i1hwan@users.noreply.github.com>
Co-authored-by: Gorchakov-Pressure <Gorchakov-Pressure@users.noreply.github.com>
Co-authored-by: foxy1402 <foxy1402@users.noreply.github.com>
Co-authored-by: dt418 <dt418@users.noreply.github.com>
Co-authored-by: dhaern <dhaern@users.noreply.github.com>
Co-authored-by: DavyMassoneto <DavyMassoneto@users.noreply.github.com>
Co-authored-by: dail45 <dail45@users.noreply.github.com>
Co-authored-by: congvc-dev <congvc-dev@users.noreply.github.com>
Co-authored-by: be0hhh <be0hhh@users.noreply.github.com>
Co-authored-by: andruwa13 <andruwa13@users.noreply.github.com>
Co-authored-by: AndrewDragonIV <AndrewDragonIV@users.noreply.github.com>
Co-authored-by: AndersonFirmino <AndersonFirmino@users.noreply.github.com>
Co-authored-by: alexsvdk <alexsvdk@users.noreply.github.com>
Co-authored-by: abhinavjnu <abhinavjnu@users.noreply.github.com>
Poid-ZA pushed a commit to Poid-ZA/OmniRoute that referenced this pull request Aug 5, 2026
* feat(api-keys): add rename support in permissions modal

Add an editable key name field at the top of the permissions modal,
allowing users to rename API keys alongside existing permission settings.

The backend already supported name updates via PATCH /api/keys/:id — this
wires the UI to send the name field and refreshes the key list on success.

Changes:
- Add keyName state and text input to PermissionsModal
- Update handleUpdatePermissions to validate and send name in PATCH body
- Add integration test for rename via PATCH (valid, empty, too-long names)
- Update E2E mock to handle PATCH requests

* chore(release): bump version to 3.7.6

* chore(release): v3.7.6 — merge API key rename feature and sync docs

* chore(release): expand contributor credits to 155 PRs across full project history

- Expanded acknowledgment table from 29 to 53 contributors
- Added 100+ previously uncredited PRs from project inception through v3.7.5
- Moved contributor credits section to v3.7.6 (current release)
- Synced llm.txt version to 3.7.6

* fix: resolve security ReDoS in codex and bugs cheaper-inference#1797 cheaper-inference#1789

* feat(dashboard): implement remaining v3.7.6 dashboard features and fixes

* fix(xiaomi-mimo): update models to V2.5, fix Token Plan validation and default region (cheaper-inference#1823)

Integrated into release/v3.7.6

* fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab

* fix(codex): omit compact client metadata (cheaper-inference#1822)

Integrated into release/v3.7.6

* feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (cheaper-inference#1821)

Integrated into release/v3.7.6

* Fix endpoint visibility, A2A status, and API catalog (cheaper-inference#1806)

Integrated into release/v3.7.6

* fix(analytics): use pure SQL aggregations — no history rows loaded (cheaper-inference#1802)

Integrated into release/v3.7.6

* fix(stability): resolve codex input validation, enable combo circuit breaker, and fix broken unit tests

* docs(changelog): update for stability bug fixes cheaper-inference#1804 cheaper-inference#1805

* fix: clear active requests and recover providers (cheaper-inference#1824)

Integrated into release/v3.7.6

* feat: inject fallback tool names to prevent upstream 400 errors (cheaper-inference#1775)

* feat: auto-restore probe-failed database to prevent data loss (cheaper-inference#1810)

* fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (cheaper-inference#1825)

* chore(release): v3.7.6 — final stability patches for production

* test: update expected db probe-failure error message for auto-restore feature

* chore(workflow): mandate implementation plan generation in resolve-issues

* docs(changelog): rewrite v3.7.6 with complete commit-accurate entries

* feat(analytics): add cost-based usage insights and activity streaks

Expand usage analytics to report total cost, per-series cost totals,
API key counts, and current activity streaks using pricing-aware token
calculations.

Also make probe-failed database recovery choose the newest backup by
its embedded timestamp instead of filesystem mtime so auto-restore
selects the intended snapshot reliably.

* fix(mitm): enforce transparent interception on port 443 only

Reject non-443 MITM port updates in the settings API and normalize
stored configuration back to the required transparent interception
port.

Lock the dashboard port field to 443, update the validation copy, and
add integration coverage to prevent stale custom ports from being
accepted or surfaced.

* docs(changelog): update for analytics and mitm features

---------

Co-authored-by: Andrew Munsell <andrew@wizardapps.net>
Co-authored-by: Antigravity Assistant <bot@antigravity.local>
Co-authored-by: Gi99lin <74502520+Gi99lin@users.noreply.github.com>
Co-authored-by: Sergey Morozov <tr0st@bk.ru>
Co-authored-by: payne <baboialex95@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: ipanghu <bypanghu@163.com>
Poid-ZA pushed a commit to Poid-ZA/OmniRoute that referenced this pull request Aug 5, 2026
* feat(api-keys): add rename support in permissions modal

Add an editable key name field at the top of the permissions modal,
allowing users to rename API keys alongside existing permission settings.

The backend already supported name updates via PATCH /api/keys/:id — this
wires the UI to send the name field and refreshes the key list on success.

Changes:
- Add keyName state and text input to PermissionsModal
- Update handleUpdatePermissions to validate and send name in PATCH body
- Add integration test for rename via PATCH (valid, empty, too-long names)
- Update E2E mock to handle PATCH requests

* chore(release): bump version to 3.7.6

* chore(release): v3.7.6 — merge API key rename feature and sync docs

* chore(release): expand contributor credits to 155 PRs across full project history

- Expanded acknowledgment table from 29 to 53 contributors
- Added 100+ previously uncredited PRs from project inception through v3.7.5
- Moved contributor credits section to v3.7.6 (current release)
- Synced llm.txt version to 3.7.6

* fix: resolve security ReDoS in codex and bugs cheaper-inference#1797 cheaper-inference#1789

* feat(dashboard): implement remaining v3.7.6 dashboard features and fixes

* fix(xiaomi-mimo): update models to V2.5, fix Token Plan validation and default region (cheaper-inference#1823)

Integrated into release/v3.7.6

* fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab

* fix(codex): omit compact client metadata (cheaper-inference#1822)

Integrated into release/v3.7.6

* feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (cheaper-inference#1821)

Integrated into release/v3.7.6

* Fix endpoint visibility, A2A status, and API catalog (cheaper-inference#1806)

Integrated into release/v3.7.6

* fix(analytics): use pure SQL aggregations — no history rows loaded (cheaper-inference#1802)

Integrated into release/v3.7.6

* fix(stability): resolve codex input validation, enable combo circuit breaker, and fix broken unit tests

* docs(changelog): update for stability bug fixes cheaper-inference#1804 cheaper-inference#1805

* fix: clear active requests and recover providers (cheaper-inference#1824)

Integrated into release/v3.7.6

* feat: inject fallback tool names to prevent upstream 400 errors (cheaper-inference#1775)

* feat: auto-restore probe-failed database to prevent data loss (cheaper-inference#1810)

* fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (cheaper-inference#1825)

* chore(release): v3.7.6 — final stability patches for production

* test: update expected db probe-failure error message for auto-restore feature

* chore(workflow): mandate implementation plan generation in resolve-issues

* docs(changelog): rewrite v3.7.6 with complete commit-accurate entries

* feat(analytics): add cost-based usage insights and activity streaks

Expand usage analytics to report total cost, per-series cost totals,
API key counts, and current activity streaks using pricing-aware token
calculations.

Also make probe-failed database recovery choose the newest backup by
its embedded timestamp instead of filesystem mtime so auto-restore
selects the intended snapshot reliably.

* fix(mitm): enforce transparent interception on port 443 only

Reject non-443 MITM port updates in the settings API and normalize
stored configuration back to the required transparent interception
port.

Lock the dashboard port field to 443, update the validation copy, and
add integration coverage to prevent stale custom ports from being
accepted or surfaced.

* docs(changelog): update for analytics and mitm features

* chore(release): attribute community contributors

Co-authored-by: rdself <rdself@users.noreply.github.com>
Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
Co-authored-by: clousky2020 <clousky2020@users.noreply.github.com>
Co-authored-by: benzntech <benzntech@users.noreply.github.com>
Co-authored-by: kang-heewon <kang-heewon@users.noreply.github.com>
Co-authored-by: herjarsa <herjarsa@users.noreply.github.com>
Co-authored-by: backryun <backryun@users.noreply.github.com>
Co-authored-by: tombii <tombii@users.noreply.github.com>
Co-authored-by: christopher-s <christopher-s@users.noreply.github.com>
Co-authored-by: zen0bit <zen0bit@users.noreply.github.com>
Co-authored-by: k0valik <k0valik@users.noreply.github.com>
Co-authored-by: zhangqiang8vip <zhangqiang8vip@users.noreply.github.com>
Co-authored-by: wlfonseca <wlfonseca@users.noreply.github.com>
Co-authored-by: RaviTharuma <RaviTharuma@users.noreply.github.com>
Co-authored-by: prakersh <prakersh@users.noreply.github.com>
Co-authored-by: payne0420 <payne0420@users.noreply.github.com>
Co-authored-by: only4copilot <only4copilot@users.noreply.github.com>
Co-authored-by: jay77721 <jay77721@users.noreply.github.com>
Co-authored-by: hijak <hijak@users.noreply.github.com>
Co-authored-by: hartmark <hartmark@users.noreply.github.com>
Co-authored-by: defhouse <defhouse@users.noreply.github.com>
Co-authored-by: xiaoge1688 <xiaoge1688@users.noreply.github.com>
Co-authored-by: xandr0s <xandr0s@users.noreply.github.com>
Co-authored-by: willbnu <willbnu@users.noreply.github.com>
Co-authored-by: slewis3600 <slewis3600@users.noreply.github.com>
Co-authored-by: sergey-v9 <sergey-v9@users.noreply.github.com>
Co-authored-by: razllivan <razllivan@users.noreply.github.com>
Co-authored-by: nmime <nmime@users.noreply.github.com>
Co-authored-by: Moutia-Ben-Yahia <Moutia-Ben-Yahia@users.noreply.github.com>
Co-authored-by: Mind-Dragon <Mind-Dragon@users.noreply.github.com>
Co-authored-by: mercs2910 <mercs2910@users.noreply.github.com>
Co-authored-by: MAINER4IK <MAINER4IK@users.noreply.github.com>
Co-authored-by: luandiasrj <luandiasrj@users.noreply.github.com>
Co-authored-by: knopki <knopki@users.noreply.github.com>
Co-authored-by: kfiramar <kfiramar@users.noreply.github.com>
Co-authored-by: ken2190 <ken2190@users.noreply.github.com>
Co-authored-by: keith8496 <keith8496@users.noreply.github.com>
Co-authored-by: jonesfernandess <jonesfernandess@users.noreply.github.com>
Co-authored-by: JasonLandbridge <JasonLandbridge@users.noreply.github.com>
Co-authored-by: i1hwan <i1hwan@users.noreply.github.com>
Co-authored-by: Gorchakov-Pressure <Gorchakov-Pressure@users.noreply.github.com>
Co-authored-by: foxy1402 <foxy1402@users.noreply.github.com>
Co-authored-by: dt418 <dt418@users.noreply.github.com>
Co-authored-by: dhaern <dhaern@users.noreply.github.com>
Co-authored-by: DavyMassoneto <DavyMassoneto@users.noreply.github.com>
Co-authored-by: dail45 <dail45@users.noreply.github.com>
Co-authored-by: congvc-dev <congvc-dev@users.noreply.github.com>
Co-authored-by: be0hhh <be0hhh@users.noreply.github.com>
Co-authored-by: andruwa13 <andruwa13@users.noreply.github.com>
Co-authored-by: AndrewDragonIV <AndrewDragonIV@users.noreply.github.com>
Co-authored-by: AndersonFirmino <AndersonFirmino@users.noreply.github.com>
Co-authored-by: alexsvdk <alexsvdk@users.noreply.github.com>
Co-authored-by: abhinavjnu <abhinavjnu@users.noreply.github.com>

---------

Co-authored-by: Andrew Munsell <andrew@wizardapps.net>
Co-authored-by: Antigravity Assistant <bot@antigravity.local>
Co-authored-by: Gi99lin <74502520+Gi99lin@users.noreply.github.com>
Co-authored-by: Sergey Morozov <tr0st@bk.ru>
Co-authored-by: payne <baboialex95@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: ipanghu <bypanghu@163.com>
Co-authored-by: rdself <rdself@users.noreply.github.com>
Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
Co-authored-by: clousky2020 <clousky2020@users.noreply.github.com>
Co-authored-by: benzntech <benzntech@users.noreply.github.com>
Co-authored-by: kang-heewon <kang-heewon@users.noreply.github.com>
Co-authored-by: herjarsa <herjarsa@users.noreply.github.com>
Co-authored-by: backryun <backryun@users.noreply.github.com>
Co-authored-by: tombii <tombii@users.noreply.github.com>
Co-authored-by: christopher-s <christopher-s@users.noreply.github.com>
Co-authored-by: zen0bit <zen0bit@users.noreply.github.com>
Co-authored-by: k0valik <k0valik@users.noreply.github.com>
Co-authored-by: zhangqiang8vip <zhangqiang8vip@users.noreply.github.com>
Co-authored-by: wlfonseca <wlfonseca@users.noreply.github.com>
Co-authored-by: RaviTharuma <RaviTharuma@users.noreply.github.com>
Co-authored-by: prakersh <prakersh@users.noreply.github.com>
Co-authored-by: payne0420 <payne0420@users.noreply.github.com>
Co-authored-by: only4copilot <only4copilot@users.noreply.github.com>
Co-authored-by: jay77721 <jay77721@users.noreply.github.com>
Co-authored-by: hijak <hijak@users.noreply.github.com>
Co-authored-by: hartmark <hartmark@users.noreply.github.com>
Co-authored-by: defhouse <defhouse@users.noreply.github.com>
Co-authored-by: xiaoge1688 <xiaoge1688@users.noreply.github.com>
Co-authored-by: xandr0s <xandr0s@users.noreply.github.com>
Co-authored-by: willbnu <willbnu@users.noreply.github.com>
Co-authored-by: slewis3600 <slewis3600@users.noreply.github.com>
Co-authored-by: sergey-v9 <sergey-v9@users.noreply.github.com>
Co-authored-by: razllivan <razllivan@users.noreply.github.com>
Co-authored-by: nmime <nmime@users.noreply.github.com>
Co-authored-by: Moutia-Ben-Yahia <Moutia-Ben-Yahia@users.noreply.github.com>
Co-authored-by: Mind-Dragon <Mind-Dragon@users.noreply.github.com>
Co-authored-by: mercs2910 <mercs2910@users.noreply.github.com>
Co-authored-by: MAINER4IK <MAINER4IK@users.noreply.github.com>
Co-authored-by: luandiasrj <luandiasrj@users.noreply.github.com>
Co-authored-by: knopki <knopki@users.noreply.github.com>
Co-authored-by: kfiramar <kfiramar@users.noreply.github.com>
Co-authored-by: ken2190 <ken2190@users.noreply.github.com>
Co-authored-by: keith8496 <keith8496@users.noreply.github.com>
Co-authored-by: jonesfernandess <jonesfernandess@users.noreply.github.com>
Co-authored-by: JasonLandbridge <JasonLandbridge@users.noreply.github.com>
Co-authored-by: i1hwan <i1hwan@users.noreply.github.com>
Co-authored-by: Gorchakov-Pressure <Gorchakov-Pressure@users.noreply.github.com>
Co-authored-by: foxy1402 <foxy1402@users.noreply.github.com>
Co-authored-by: dt418 <dt418@users.noreply.github.com>
Co-authored-by: dhaern <dhaern@users.noreply.github.com>
Co-authored-by: DavyMassoneto <DavyMassoneto@users.noreply.github.com>
Co-authored-by: dail45 <dail45@users.noreply.github.com>
Co-authored-by: congvc-dev <congvc-dev@users.noreply.github.com>
Co-authored-by: be0hhh <be0hhh@users.noreply.github.com>
Co-authored-by: andruwa13 <andruwa13@users.noreply.github.com>
Co-authored-by: AndrewDragonIV <AndrewDragonIV@users.noreply.github.com>
Co-authored-by: AndersonFirmino <AndersonFirmino@users.noreply.github.com>
Co-authored-by: alexsvdk <alexsvdk@users.noreply.github.com>
Co-authored-by: abhinavjnu <abhinavjnu@users.noreply.github.com>
tkgo11 pushed a commit to tkgo11/OmniRoute that referenced this pull request Sep 23, 2026
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
* feat(api-keys): add rename support in permissions modal

Add an editable key name field at the top of the permissions modal,
allowing users to rename API keys alongside existing permission settings.

The backend already supported name updates via PATCH /api/keys/:id — this
wires the UI to send the name field and refreshes the key list on success.

Changes:
- Add keyName state and text input to PermissionsModal
- Update handleUpdatePermissions to validate and send name in PATCH body
- Add integration test for rename via PATCH (valid, empty, too-long names)
- Update E2E mock to handle PATCH requests

* chore(release): bump version to 3.7.6

* chore(release): v3.7.6 — merge API key rename feature and sync docs

* chore(release): expand contributor credits to 155 PRs across full project history

- Expanded acknowledgment table from 29 to 53 contributors
- Added 100+ previously uncredited PRs from project inception through v3.7.5
- Moved contributor credits section to v3.7.6 (current release)
- Synced llm.txt version to 3.7.6

* fix: resolve security ReDoS in codex and bugs cheaper-inference#1797 cheaper-inference#1789

* feat(dashboard): implement remaining v3.7.6 dashboard features and fixes

* fix(xiaomi-mimo): update models to V2.5, fix Token Plan validation and default region (cheaper-inference#1823)

Integrated into release/v3.7.6

* fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab

* fix(codex): omit compact client metadata (cheaper-inference#1822)

Integrated into release/v3.7.6

* feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (cheaper-inference#1821)

Integrated into release/v3.7.6

* Fix endpoint visibility, A2A status, and API catalog (cheaper-inference#1806)

Integrated into release/v3.7.6

* fix(analytics): use pure SQL aggregations — no history rows loaded (cheaper-inference#1802)

Integrated into release/v3.7.6

* fix(stability): resolve codex input validation, enable combo circuit breaker, and fix broken unit tests

* docs(changelog): update for stability bug fixes cheaper-inference#1804 cheaper-inference#1805

* fix: clear active requests and recover providers (cheaper-inference#1824)

Integrated into release/v3.7.6

* feat: inject fallback tool names to prevent upstream 400 errors (cheaper-inference#1775)

* feat: auto-restore probe-failed database to prevent data loss (cheaper-inference#1810)

* fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (cheaper-inference#1825)

* chore(release): v3.7.6 — final stability patches for production

* test: update expected db probe-failure error message for auto-restore feature

* chore(workflow): mandate implementation plan generation in resolve-issues

* docs(changelog): rewrite v3.7.6 with complete commit-accurate entries

* feat(analytics): add cost-based usage insights and activity streaks

Expand usage analytics to report total cost, per-series cost totals,
API key counts, and current activity streaks using pricing-aware token
calculations.

Also make probe-failed database recovery choose the newest backup by
its embedded timestamp instead of filesystem mtime so auto-restore
selects the intended snapshot reliably.

* fix(mitm): enforce transparent interception on port 443 only

Reject non-443 MITM port updates in the settings API and normalize
stored configuration back to the required transparent interception
port.

Lock the dashboard port field to 443, update the validation copy, and
add integration coverage to prevent stale custom ports from being
accepted or surfaced.

* docs(changelog): update for analytics and mitm features

---------

Co-authored-by: Andrew Munsell <andrew@wizardapps.net>
Co-authored-by: Antigravity Assistant <bot@antigravity.local>
Co-authored-by: Gi99lin <74502520+Gi99lin@users.noreply.github.com>
Co-authored-by: Sergey Morozov <tr0st@bk.ru>
Co-authored-by: payne <baboialex95@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: ipanghu <bypanghu@163.com>
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
* feat(api-keys): add rename support in permissions modal

Add an editable key name field at the top of the permissions modal,
allowing users to rename API keys alongside existing permission settings.

The backend already supported name updates via PATCH /api/keys/:id — this
wires the UI to send the name field and refreshes the key list on success.

Changes:
- Add keyName state and text input to PermissionsModal
- Update handleUpdatePermissions to validate and send name in PATCH body
- Add integration test for rename via PATCH (valid, empty, too-long names)
- Update E2E mock to handle PATCH requests

* chore(release): bump version to 3.7.6

* chore(release): v3.7.6 — merge API key rename feature and sync docs

* chore(release): expand contributor credits to 155 PRs across full project history

- Expanded acknowledgment table from 29 to 53 contributors
- Added 100+ previously uncredited PRs from project inception through v3.7.5
- Moved contributor credits section to v3.7.6 (current release)
- Synced llm.txt version to 3.7.6

* fix: resolve security ReDoS in codex and bugs cheaper-inference#1797 cheaper-inference#1789

* feat(dashboard): implement remaining v3.7.6 dashboard features and fixes

* fix(xiaomi-mimo): update models to V2.5, fix Token Plan validation and default region (cheaper-inference#1823)

Integrated into release/v3.7.6

* fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab

* fix(codex): omit compact client metadata (cheaper-inference#1822)

Integrated into release/v3.7.6

* feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (cheaper-inference#1821)

Integrated into release/v3.7.6

* Fix endpoint visibility, A2A status, and API catalog (cheaper-inference#1806)

Integrated into release/v3.7.6

* fix(analytics): use pure SQL aggregations — no history rows loaded (cheaper-inference#1802)

Integrated into release/v3.7.6

* fix(stability): resolve codex input validation, enable combo circuit breaker, and fix broken unit tests

* docs(changelog): update for stability bug fixes cheaper-inference#1804 cheaper-inference#1805

* fix: clear active requests and recover providers (cheaper-inference#1824)

Integrated into release/v3.7.6

* feat: inject fallback tool names to prevent upstream 400 errors (cheaper-inference#1775)

* feat: auto-restore probe-failed database to prevent data loss (cheaper-inference#1810)

* fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (cheaper-inference#1825)

* chore(release): v3.7.6 — final stability patches for production

* test: update expected db probe-failure error message for auto-restore feature

* chore(workflow): mandate implementation plan generation in resolve-issues

* docs(changelog): rewrite v3.7.6 with complete commit-accurate entries

* feat(analytics): add cost-based usage insights and activity streaks

Expand usage analytics to report total cost, per-series cost totals,
API key counts, and current activity streaks using pricing-aware token
calculations.

Also make probe-failed database recovery choose the newest backup by
its embedded timestamp instead of filesystem mtime so auto-restore
selects the intended snapshot reliably.

* fix(mitm): enforce transparent interception on port 443 only

Reject non-443 MITM port updates in the settings API and normalize
stored configuration back to the required transparent interception
port.

Lock the dashboard port field to 443, update the validation copy, and
add integration coverage to prevent stale custom ports from being
accepted or surfaced.

* docs(changelog): update for analytics and mitm features

* chore(release): attribute community contributors

Co-authored-by: rdself <rdself@users.noreply.github.com>
Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
Co-authored-by: clousky2020 <clousky2020@users.noreply.github.com>
Co-authored-by: benzntech <benzntech@users.noreply.github.com>
Co-authored-by: kang-heewon <kang-heewon@users.noreply.github.com>
Co-authored-by: herjarsa <herjarsa@users.noreply.github.com>
Co-authored-by: backryun <backryun@users.noreply.github.com>
Co-authored-by: tombii <tombii@users.noreply.github.com>
Co-authored-by: christopher-s <christopher-s@users.noreply.github.com>
Co-authored-by: zen0bit <zen0bit@users.noreply.github.com>
Co-authored-by: k0valik <k0valik@users.noreply.github.com>
Co-authored-by: zhangqiang8vip <zhangqiang8vip@users.noreply.github.com>
Co-authored-by: wlfonseca <wlfonseca@users.noreply.github.com>
Co-authored-by: RaviTharuma <RaviTharuma@users.noreply.github.com>
Co-authored-by: prakersh <prakersh@users.noreply.github.com>
Co-authored-by: payne0420 <payne0420@users.noreply.github.com>
Co-authored-by: only4copilot <only4copilot@users.noreply.github.com>
Co-authored-by: jay77721 <jay77721@users.noreply.github.com>
Co-authored-by: hijak <hijak@users.noreply.github.com>
Co-authored-by: hartmark <hartmark@users.noreply.github.com>
Co-authored-by: defhouse <defhouse@users.noreply.github.com>
Co-authored-by: xiaoge1688 <xiaoge1688@users.noreply.github.com>
Co-authored-by: xandr0s <xandr0s@users.noreply.github.com>
Co-authored-by: willbnu <willbnu@users.noreply.github.com>
Co-authored-by: slewis3600 <slewis3600@users.noreply.github.com>
Co-authored-by: sergey-v9 <sergey-v9@users.noreply.github.com>
Co-authored-by: razllivan <razllivan@users.noreply.github.com>
Co-authored-by: nmime <nmime@users.noreply.github.com>
Co-authored-by: Moutia-Ben-Yahia <Moutia-Ben-Yahia@users.noreply.github.com>
Co-authored-by: Mind-Dragon <Mind-Dragon@users.noreply.github.com>
Co-authored-by: mercs2910 <mercs2910@users.noreply.github.com>
Co-authored-by: MAINER4IK <MAINER4IK@users.noreply.github.com>
Co-authored-by: luandiasrj <luandiasrj@users.noreply.github.com>
Co-authored-by: knopki <knopki@users.noreply.github.com>
Co-authored-by: kfiramar <kfiramar@users.noreply.github.com>
Co-authored-by: ken2190 <ken2190@users.noreply.github.com>
Co-authored-by: keith8496 <keith8496@users.noreply.github.com>
Co-authored-by: jonesfernandess <jonesfernandess@users.noreply.github.com>
Co-authored-by: JasonLandbridge <JasonLandbridge@users.noreply.github.com>
Co-authored-by: i1hwan <i1hwan@users.noreply.github.com>
Co-authored-by: Gorchakov-Pressure <Gorchakov-Pressure@users.noreply.github.com>
Co-authored-by: foxy1402 <foxy1402@users.noreply.github.com>
Co-authored-by: dt418 <dt418@users.noreply.github.com>
Co-authored-by: dhaern <dhaern@users.noreply.github.com>
Co-authored-by: DavyMassoneto <DavyMassoneto@users.noreply.github.com>
Co-authored-by: dail45 <dail45@users.noreply.github.com>
Co-authored-by: congvc-dev <congvc-dev@users.noreply.github.com>
Co-authored-by: be0hhh <be0hhh@users.noreply.github.com>
Co-authored-by: andruwa13 <andruwa13@users.noreply.github.com>
Co-authored-by: AndrewDragonIV <AndrewDragonIV@users.noreply.github.com>
Co-authored-by: AndersonFirmino <AndersonFirmino@users.noreply.github.com>
Co-authored-by: alexsvdk <alexsvdk@users.noreply.github.com>
Co-authored-by: abhinavjnu <abhinavjnu@users.noreply.github.com>

---------

Co-authored-by: Andrew Munsell <andrew@wizardapps.net>
Co-authored-by: Antigravity Assistant <bot@antigravity.local>
Co-authored-by: Gi99lin <74502520+Gi99lin@users.noreply.github.com>
Co-authored-by: Sergey Morozov <tr0st@bk.ru>
Co-authored-by: payne <baboialex95@gmail.com>
Co-authored-by: Randi <55005611+rdself@users.noreply.github.com>
Co-authored-by: Paijo <14921983+oyi77@users.noreply.github.com>
Co-authored-by: ipanghu <bypanghu@163.com>
Co-authored-by: rdself <rdself@users.noreply.github.com>
Co-authored-by: oyi77 <oyi77@users.noreply.github.com>
Co-authored-by: clousky2020 <clousky2020@users.noreply.github.com>
Co-authored-by: benzntech <benzntech@users.noreply.github.com>
Co-authored-by: kang-heewon <kang-heewon@users.noreply.github.com>
Co-authored-by: herjarsa <herjarsa@users.noreply.github.com>
Co-authored-by: backryun <backryun@users.noreply.github.com>
Co-authored-by: tombii <tombii@users.noreply.github.com>
Co-authored-by: christopher-s <christopher-s@users.noreply.github.com>
Co-authored-by: zen0bit <zen0bit@users.noreply.github.com>
Co-authored-by: k0valik <k0valik@users.noreply.github.com>
Co-authored-by: zhangqiang8vip <zhangqiang8vip@users.noreply.github.com>
Co-authored-by: wlfonseca <wlfonseca@users.noreply.github.com>
Co-authored-by: RaviTharuma <RaviTharuma@users.noreply.github.com>
Co-authored-by: prakersh <prakersh@users.noreply.github.com>
Co-authored-by: payne0420 <payne0420@users.noreply.github.com>
Co-authored-by: only4copilot <only4copilot@users.noreply.github.com>
Co-authored-by: jay77721 <jay77721@users.noreply.github.com>
Co-authored-by: hijak <hijak@users.noreply.github.com>
Co-authored-by: hartmark <hartmark@users.noreply.github.com>
Co-authored-by: defhouse <defhouse@users.noreply.github.com>
Co-authored-by: xiaoge1688 <xiaoge1688@users.noreply.github.com>
Co-authored-by: xandr0s <xandr0s@users.noreply.github.com>
Co-authored-by: willbnu <willbnu@users.noreply.github.com>
Co-authored-by: slewis3600 <slewis3600@users.noreply.github.com>
Co-authored-by: sergey-v9 <sergey-v9@users.noreply.github.com>
Co-authored-by: razllivan <razllivan@users.noreply.github.com>
Co-authored-by: nmime <nmime@users.noreply.github.com>
Co-authored-by: Moutia-Ben-Yahia <Moutia-Ben-Yahia@users.noreply.github.com>
Co-authored-by: Mind-Dragon <Mind-Dragon@users.noreply.github.com>
Co-authored-by: mercs2910 <mercs2910@users.noreply.github.com>
Co-authored-by: MAINER4IK <MAINER4IK@users.noreply.github.com>
Co-authored-by: luandiasrj <luandiasrj@users.noreply.github.com>
Co-authored-by: knopki <knopki@users.noreply.github.com>
Co-authored-by: kfiramar <kfiramar@users.noreply.github.com>
Co-authored-by: ken2190 <ken2190@users.noreply.github.com>
Co-authored-by: keith8496 <keith8496@users.noreply.github.com>
Co-authored-by: jonesfernandess <jonesfernandess@users.noreply.github.com>
Co-authored-by: JasonLandbridge <JasonLandbridge@users.noreply.github.com>
Co-authored-by: i1hwan <i1hwan@users.noreply.github.com>
Co-authored-by: Gorchakov-Pressure <Gorchakov-Pressure@users.noreply.github.com>
Co-authored-by: foxy1402 <foxy1402@users.noreply.github.com>
Co-authored-by: dt418 <dt418@users.noreply.github.com>
Co-authored-by: dhaern <dhaern@users.noreply.github.com>
Co-authored-by: DavyMassoneto <DavyMassoneto@users.noreply.github.com>
Co-authored-by: dail45 <dail45@users.noreply.github.com>
Co-authored-by: congvc-dev <congvc-dev@users.noreply.github.com>
Co-authored-by: be0hhh <be0hhh@users.noreply.github.com>
Co-authored-by: andruwa13 <andruwa13@users.noreply.github.com>
Co-authored-by: AndrewDragonIV <AndrewDragonIV@users.noreply.github.com>
Co-authored-by: AndersonFirmino <AndersonFirmino@users.noreply.github.com>
Co-authored-by: alexsvdk <alexsvdk@users.noreply.github.com>
Co-authored-by: abhinavjnu <abhinavjnu@users.noreply.github.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants