Repository navigation
fix(codex): omit compact client metadata - #1822
Conversation
There was a problem hiding this comment.
Code Review
This pull request modifies the CodexExecutor to ensure that client_metadata is omitted from the request body when processing compact requests. This is implemented by explicitly deleting the field and guarding the metadata application logic with a conditional check. A new unit test has been added to verify that metadata is correctly stripped for the compact endpoint. I have no feedback to provide.
|
Thanks @Tr0sT for this great contribution! 🎉 It's now officially merged into the |
1 similar comment
|
Thanks @Tr0sT for this great contribution! 🎉 It's now officially merged into the |
* 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>
* 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>
* 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 diegosouzapw#1797 diegosouzapw#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 (diegosouzapw#1823) Integrated into release/v3.7.6 * fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab * fix(codex): omit compact client metadata (diegosouzapw#1822) Integrated into release/v3.7.6 * feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (diegosouzapw#1821) Integrated into release/v3.7.6 * Fix endpoint visibility, A2A status, and API catalog (diegosouzapw#1806) Integrated into release/v3.7.6 * fix(analytics): use pure SQL aggregations — no history rows loaded (diegosouzapw#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 diegosouzapw#1804 diegosouzapw#1805 * fix: clear active requests and recover providers (diegosouzapw#1824) Integrated into release/v3.7.6 * feat: inject fallback tool names to prevent upstream 400 errors (diegosouzapw#1775) * feat: auto-restore probe-failed database to prevent data loss (diegosouzapw#1810) * fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (diegosouzapw#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>
* 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 diegosouzapw#1797 diegosouzapw#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 (diegosouzapw#1823) Integrated into release/v3.7.6 * fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab * fix(codex): omit compact client metadata (diegosouzapw#1822) Integrated into release/v3.7.6 * feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (diegosouzapw#1821) Integrated into release/v3.7.6 * Fix endpoint visibility, A2A status, and API catalog (diegosouzapw#1806) Integrated into release/v3.7.6 * fix(analytics): use pure SQL aggregations — no history rows loaded (diegosouzapw#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 diegosouzapw#1804 diegosouzapw#1805 * fix: clear active requests and recover providers (diegosouzapw#1824) Integrated into release/v3.7.6 * feat: inject fallback tool names to prevent upstream 400 errors (diegosouzapw#1775) * feat: auto-restore probe-failed database to prevent data loss (diegosouzapw#1810) * fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (diegosouzapw#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>
* 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 diegosouzapw#1797 diegosouzapw#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 (diegosouzapw#1823) Integrated into release/v3.7.6 * fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab * fix(codex): omit compact client metadata (diegosouzapw#1822) Integrated into release/v3.7.6 * feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (diegosouzapw#1821) Integrated into release/v3.7.6 * Fix endpoint visibility, A2A status, and API catalog (diegosouzapw#1806) Integrated into release/v3.7.6 * fix(analytics): use pure SQL aggregations — no history rows loaded (diegosouzapw#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 diegosouzapw#1804 diegosouzapw#1805 * fix: clear active requests and recover providers (diegosouzapw#1824) Integrated into release/v3.7.6 * feat: inject fallback tool names to prevent upstream 400 errors (diegosouzapw#1775) * feat: auto-restore probe-failed database to prevent data loss (diegosouzapw#1810) * fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (diegosouzapw#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>
* 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 diegosouzapw#1797 diegosouzapw#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 (diegosouzapw#1823) Integrated into release/v3.7.6 * fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab * fix(codex): omit compact client metadata (diegosouzapw#1822) Integrated into release/v3.7.6 * feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (diegosouzapw#1821) Integrated into release/v3.7.6 * Fix endpoint visibility, A2A status, and API catalog (diegosouzapw#1806) Integrated into release/v3.7.6 * fix(analytics): use pure SQL aggregations — no history rows loaded (diegosouzapw#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 diegosouzapw#1804 diegosouzapw#1805 * fix: clear active requests and recover providers (diegosouzapw#1824) Integrated into release/v3.7.6 * feat: inject fallback tool names to prevent upstream 400 errors (diegosouzapw#1775) * feat: auto-restore probe-failed database to prevent data loss (diegosouzapw#1810) * fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (diegosouzapw#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>
Integrated into release/v3.7.6
* 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 diegosouzapw#1797 diegosouzapw#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 (diegosouzapw#1823) Integrated into release/v3.7.6 * fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab * fix(codex): omit compact client metadata (diegosouzapw#1822) Integrated into release/v3.7.6 * feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (diegosouzapw#1821) Integrated into release/v3.7.6 * Fix endpoint visibility, A2A status, and API catalog (diegosouzapw#1806) Integrated into release/v3.7.6 * fix(analytics): use pure SQL aggregations — no history rows loaded (diegosouzapw#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 diegosouzapw#1804 diegosouzapw#1805 * fix: clear active requests and recover providers (diegosouzapw#1824) Integrated into release/v3.7.6 * feat: inject fallback tool names to prevent upstream 400 errors (diegosouzapw#1775) * feat: auto-restore probe-failed database to prevent data loss (diegosouzapw#1810) * fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (diegosouzapw#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>
* 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 diegosouzapw#1797 diegosouzapw#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 (diegosouzapw#1823) Integrated into release/v3.7.6 * fix(dashboard): correct loadPresets ReferenceError in CostOverviewTab * fix(codex): omit compact client metadata (diegosouzapw#1822) Integrated into release/v3.7.6 * feat(chatgpt-web): support thinking_effort (Standard/Extended) for thinking-capable models (diegosouzapw#1821) Integrated into release/v3.7.6 * Fix endpoint visibility, A2A status, and API catalog (diegosouzapw#1806) Integrated into release/v3.7.6 * fix(analytics): use pure SQL aggregations — no history rows loaded (diegosouzapw#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 diegosouzapw#1804 diegosouzapw#1805 * fix: clear active requests and recover providers (diegosouzapw#1824) Integrated into release/v3.7.6 * feat: inject fallback tool names to prevent upstream 400 errors (diegosouzapw#1775) * feat: auto-restore probe-failed database to prevent data loss (diegosouzapw#1810) * fix: safely cast inputs to strings before calling trim() to avoid crashes on numeric fields in proxy modal (diegosouzapw#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>
Summary
client_metadatafor Codex/responses/compactrequestswhile keeping it for normal
/responsescallsRelated Issues
Context
This is another compact-specific Codex passthrough cleanup. We
already fixed
/responses/compacthandling in #1777 by removingunsupported
storeand forcing the compact endpoint through the non-streaming JSON path. Earlier compaction-related work in #1363 and
#1368 focused on context handoff timeouts/limits.
The new failure was a different unsupported field:
Error running remote compact task: {"error":{"message":"[400]:
Unknown parameter:
client_metadata","type":"invalid_request_error","code":"bad_request"}
}
It came back because the Codex executor still reused the normal
/ responsesmetadata decoration for compact requests. That decorationis useful for regular Codex Responses calls, but
/responses/compacthas a stricter schema and rejects
client_metadataentirely, justlike it rejected
storein #1777.Validation
npm run lintnpm run test:unitnpm run test:coverage>= 60%for statements, lines, functions,and branches
explicitly documented below
Tests Added Or Updated
tests/unit/executor-codex.test.tsadds coverage that compactrequests drop incoming
client_metadataand do not receive injectedCodex installation metadata.
Coverage Notes
The production change is limited to
open-sse/executors/codex.ts.The new unit test covers the compact branch of
CodexExecutor.transformRequest, while the existing metadata testcontinues to cover normal
/responsesbehavior.Reviewer Notes
The change intentionally keeps
client_metadataon regular Codex/ responsesrequests. Only/responses/compactstrips it because thecompact endpoint rejects the parameter upstream.