Commit Graph

4540 Commits

Author SHA1 Message Date
Diego Rodrigues de Sa e Souza
bc32c6710e fix(security): bump form-data/vite (2 HIGH) + env-harden workflow template-injection + allowlist guarded workflow_run (#3949)
Remediate the real findings the now-functional osv-scanner and zizmor gates
surfaced on release/v3.8.26.

Deps (osv-scanner, 2 HIGH -> 0):
- form-data 4.0.5 -> ^4.0.6 (GHSA-hmw2-7cc7-3qxx, transitive via axios)
- vite 8.0.5 -> ^8.0.16 (GHSA-fx2h-pf6j-xcff HIGH + GHSA-v6wh-96g9-6wx3
  MODERATE; dev-only via vitest/@vitejs/plugin-react/fumadocs-mdx)
Applied via package.json overrides of existing deps (no new allowlist entry
needed). vulnCount 13 -> 10; build:cli + vitest MCP suite (16 files/187 tests)
green post-bump.

Workflows (zizmor, 195 -> 187):
- env-harden 7 template-injection findings by moving each ${{ ... }} into env:
  and referencing "$VAR" in the script (GitHub-documented mitigation):
  ci.yml i18n; electron-release.yml validate/build/release steps.
- allowlist 1 dangerous-triggers FP: deploy-vps.yml on:workflow_run is guarded
  on conclusion=='success' and deploys via SSH without checking out untrusted
  code. Added .zizmor.yml rules.dangerous-triggers.ignore with justification.

Tighten baselines to the improved state (direction: down): vulnCount 13 -> 10,
zizmorFindings 195 -> 187. secretFindings (3) and bundleSize (5601) unchanged.
2026-06-15 23:26:17 -03:00
Diego Rodrigues de Sa e Souza
8981b322d7 ci(quality): make zizmor/gitleaks/osv scanners functional + freeze advisory baselines (#3947)
Three CI security gates in the quality-extended job never produced a value;
diagnose + fix each, then freeze the real measured numbers as advisory ratchet
baselines (dedicatedGate => SKIP in the blocking quality-gate ratchet).

FIX 1 — .zizmor.yml: migrate the config from the pre-1.0 'ignores: []' schema to
the 'rules: {}' schema. zizmor 1.25.2 rejected the old field ('unknown field
`ignores`, expected `rules`') and performed NO audit. Now check:workflows emits
zizmorFindings=195.

FIX 2 — scripts/check/check-secrets.mjs: the gate ran 'gitleaks detect --no-git
--source .', which walks the WHOLE tree including a real node_modules/ (90k+ files
under npm ci) and times out (ETIMEDOUT) — gitleaks has no traversal-exclude flag
(.gitleaks.toml paths filter findings AFTER reading). Scope the scan to the source
dirs (src/open-sse/bin/electron/scripts), one 'gitleaks dir <dir>' invocation each
('gitleaks dir' takes a single path; multiple args fall back to scanning the CWD).
Also fix .gitleaks.toml: it lacked [extend].useDefault=true, so the custom config
REPLACED the default ruleset with zero rules and detected nothing — the gate always
reported 0 regardless of real secrets. Now: ~10s (was 120s timeout), secretFindings=3
(generic-api-key false positives in beta-header strings / column names).

FIX 3 — .github/workflows/ci.yml: the scanner install resolved release URLs via
unauthenticated api.github.com (60 req/hr/IP; returns empty when throttled -> silent
no-op install -> every gate self-skips). Switch gitleaks + osv-scanner to 'gh release
download' (preinstalled + GITHUB_TOKEN-authed, 5000 req/hr); add GH_TOKEN to the step
env. actionlint/zizmor install paths unchanged.

MEASURE + FREEZE (advisory, dedicatedGate:true, direction down) in
config/quality/quality-baseline.json: secretFindings=3, zizmorFindings=195,
vulnCount=13 (LOW=4/MOD=7/HIGH=2), bundleSize=5601. Seeded from a local run with the
real binaries on PATH (2026-06-15). They stay advisory (SKIP in the blocking ratchet;
quality-extended is continue-on-error) until a green CI run confirms the fixed tooling
produces values; the flip to blocking is a follow-up PR. continue-on-error untouched.

Validated locally: zizmor --config parses; check:secrets <60s + real count;
check:workflows/check:vuln-ratchet emit real numbers; ci.yml actionlint-clean; baseline
JSON valid; 103 build-scanner unit tests + 19 check-secrets + 18 quality-ratchet pass;
the 4 keys SKIP in the ratchet. FIX 3 logic is sound but CI-only (cannot run gh release
download against the runner locally).
2026-06-15 22:45:48 -03:00
Diego Rodrigues de Sa e Souza
28d57bf5f8 ci(quality): fix scanner install + size-limit preset, promote codeqlAlerts to blocking (#3945)
FIX 1 — security scanner install (gitleaks/osv/actionlint/zizmor):
the step ran under bash -e and aborted before the $GITHUB_PATH export when
'go install ...gitleaks/v8@latest' failed/produced a non-working binary, so no
scanner landed on PATH and every check self-skipped. Rewritten to set +e,
install from official release downloads, ALWAYS export $HOME/.local/bin, and
print diagnostics. Validated only on the next CI run (binaries install in CI).

FIX 2 — size-limit bundleSize: add @size-limit/file devDependency (the correct
preset for the plain FILE-size .size-limit.json) + allowlist entry. check:bundle-size
now measures the 4 bin entries via the preset (bundleSize=5601) instead of erroring
on the missing preset / falling back to fs.statSync.

FIX 3 — codeqlAlerts promoted to BLOCKING: check-codeql-ratchet.mjs now reads
metrics.codeqlAlerts.value, exits 1 ONLY on a real regression (measured > baseline),
and exits 0 (graceful skip) on any measurement failure (gh absent / no auth /
no repo / API error) so missing infra never blocks. Baseline seeded codeqlAlerts=0
(repo has 0 open alerts). Blocking step wired in the quality-gate job with
security-events:read; the duplicate advisory step removed from quality-extended.
New TDD: evaluateCodeqlRatchet (5 cases).
2026-06-15 21:38:31 -03:00
Randi
b250e08d77 fix in-flight request payload sync (#3940)
Integrated into release/v3.8.26 — keep pendingById in sync with the queue detail (Object.assign in place). Validated alongside #3937: typecheck:core clean, 42/42 request-logger + lifecycle tests, eslint 0 errors, file-size OK.
2026-06-15 21:03:26 -03:00
NOXX - Commiter
d88ae9c157 fix(perplexity-web): update request payload to schema v2.18 to fix HTTP 400 (#3938)
Integrated into release/v3.8.26 — Perplexity-web schema v2.18 payload fix for HTTP 400. Validated: 24/24 perplexity tests, typecheck:core clean, file-size rebaselined (perplexity-web.ts 868->939, justified).
2026-06-15 21:01:45 -03:00
Randi
e13496932c fix(stream): persist mid-stream failures (#3937)
Integrated into release/v3.8.26 — mid-stream failure persistence (follow-up to #3879). Validated locally: typecheck:core clean, 75/75 stream/usage tests, eslint 0 errors, file-size + any-budget OK.
2026-06-15 20:58:15 -03:00
Diego Rodrigues de Sa e Souza
fe182d102f docs: require a dedicated git worktree + branch per development task (Hard Rule #19) (#3939)
Multiple sessions/agents share the main checkout, so a git checkout/branch switch
there silently discards another session's uncommitted work. Document the worktree-
isolation workflow (ask the operator for the base branch first, cut a dedicated
worktree+branch off it, tear down only your own) as a new 'Worktree isolation'
subsection under Git Workflow, and codify it as Hard Rule #19.
2026-06-15 20:39:52 -03:00
Diego Rodrigues de Sa e Souza
f3679019ab fix(compression): preserve upstream prompt cache for memory + compression (#3890) (#3936) 2026-06-15 20:05:23 -03:00
Randi
cdefc98327 fix: stabilize reasoning streams and request logs (#3879)
Integrated into release/v3.8.26 (reconciled cc-defaults UI with #3921)
2026-06-15 19:57:26 -03:00
NOXX - Commiter
2b886906a5 feat(media): Vertex AI (Google) speech, transcription, music & video generation (#3929)
Integrated into release/v3.8.26
2026-06-15 19:52:55 -03:00
Hernan Javier Ardila Sanchez
edc050fcdf fix(opencode-plugin): include nested combo-refs in LCD context window (#3910)
Integrated into release/v3.8.26
2026-06-15 19:51:43 -03:00
Diego Rodrigues de Sa e Souza
28c7ced2ec fix(providers): register BytePlus ModelArk so its API key validates (#3877) (#3935) 2026-06-15 19:49:51 -03:00
Randi
15c8df4c78 Fix failed model auto-hide defaults (#3930)
Integrated into release/v3.8.26
2026-06-15 19:49:48 -03:00
Diego Rodrigues de Sa e Souza
17fee53dbd fix(providers): correct Nous Research key validation probe model + accept non-auth 4xx (#3881) (#3934) 2026-06-15 19:43:22 -03:00
Randi
e9671d026f fix(openrouter): show preset field when editing connections (#3921)
Integrated into release/v3.8.26
2026-06-15 19:43:18 -03:00
diego-anselmo
a5e704f7d6 fix(sse): anuncia role assistant no 1º delta do stream Responses→Chat (#3911)
Integrated into release/v3.8.26
2026-06-15 19:41:41 -03:00
NOXX - Commiter
bb45ddf901 fix(vertex): add generative-language scope so SA-JSON model discovery works (#3922)
Integrated into release/v3.8.26
2026-06-15 19:40:47 -03:00
Diego Rodrigues de Sa e Souza
a03426d5ca test: reconcile runtime-timeouts keepAlive baseline to 4000 after #3907 source revert (#3933)
PR #3907 lowered the test assertions for fetchKeepAliveTimeoutMs from 4000 to
1000 expecting DEFAULT_FETCH_KEEPALIVE_TIMEOUT_MS to drop to 1000, but the source
change was reverted on review (kept at 4000, with keepAliveMaxTimeout pinning
instead). The test was left asserting 1000, turning the unit suite red
release-wide. Align the assertions back to the shipped source value (4000).
2026-06-15 19:37:57 -03:00
Diego Rodrigues de Sa e Souza
e697538beb docs: sync all documentation to v3.8.24 + count-guard & wiki/prose CI (#3804)
Integrated into release/v3.8.26 — reconciled: kept #3900's superset wiki-sync, dropped the superseded sync-wiki-home; counts taken from the newer canonical release docs; net-new value = vale/markdownlint docs-lint infra + 7 new docs (Notion/Obsidian/Plugin-Marketplace/Cost-Tracking/Free-Provider-Rankings/Feature-Flags/Egress-Policy) + check-docs-counts-sync guard.
2026-06-15 15:18:16 -03:00
Diego Rodrigues de Sa e Souza
bed3984ac1 docs(mcp): correct MCP tool-inventory diagram source + text to 87 tools (#3909)
* docs(mcp): correct the MCP tool-inventory diagram source + text to 87 tools

The mcp-tools diagram source was frozen at v3.8.8 (43 tools = 30 core + 3 memory +
4 skills + 6 notion) — missing the agent-skills, gamification, plugins and obsidian
modules, and Core had grown 30 → 33. Corrected to the real breakdown verified against
open-sse/mcp-server (TOTAL_MCP_TOOL_COUNT):

  33 core + 3 memory + 4 skills + 3 agent-skills + 8 gamification + 8 plugins
  + 6 notion + 22 obsidian = 87

- renamed mcp-tools-43.{mmd,svg} → mcp-tools-87.{mmd,svg}
- rewrote the .mmd source with the 8 real categories
- fixed MCP-SERVER.md: source-of-truth line, image alt, and the inventory caption
- fixed docs/diagrams/README.md index entry

check:doc-links PASS (links resolve).

⚠️ The committed mcp-tools-87.svg is the OLD render (still draws 43 tools): the SVG
must be regenerated with `npm run docs:render-diagrams` in an environment with a
working headless Chromium. It could NOT be rendered in this sandbox — Chromium is
missing system libraries (libnss3 / libatk / libcups / libxcb, no apt access). The
.mmd source and all surrounding text are correct, so a single render call finalizes
the image.

* docs(mcp): render mcp-tools-87.svg (87-tool inventory diagram)
2026-06-15 14:14:43 -03:00
Diego Rodrigues de Sa e Souza
d0e4ce4e91 docs(quality): correct stale gate count + add opt-in agent-lsp scaffold (#3902)
Integrated into release/v3.8.26
2026-06-15 14:12:18 -03:00
Diego Rodrigues de Sa e Souza
9f5e651b42 ci(quality): wire Stryker mutation testing as advisory nightly (Fase 7 Task 11) (#3898)
Integrated into release/v3.8.26
2026-06-15 14:11:06 -03:00
Diego Rodrigues de Sa e Souza
e9d789822f ci(quality): freeze per-module coverage floors + wire require-tighten (advisory) (#3901)
Integrated into release/v3.8.26
2026-06-15 14:11:02 -03:00
Diego Rodrigues de Sa e Souza
be82146d37 ci(quality): enforce stale-allowlist on check-known-symbols (Fase 6A.3 follow-up) (#3899)
Integrated into release/v3.8.26
2026-06-15 14:10:58 -03:00
Diego Rodrigues de Sa e Souza
f8131c8a19 fix(test): de-flake pipeline-payloads via per-test re-seed + honest reset (#3893)
Integrated into release/v3.8.26
2026-06-15 14:10:55 -03:00
Diego Rodrigues de Sa e Souza
0c0d223f47 fix(ci): drop secrets-in-job-if from nightly-llm-security (startup_failure on push) (#3892)
Integrated into release/v3.8.26
2026-06-15 14:10:50 -03:00
Innokentiy Solntsev
fd7a5d68ae fix(providers): prevent zombie-socket hangs for zai/glm and tighten default keepAlive (#3907)
Integrated into release/v3.8.26 (zai validator; global keepAlive change reverted on review)
2026-06-15 14:06:48 -03:00
Felipe Almeman
9d846f3680 fix(proxy): direct-connection fallback for control-plane ops when a pinned proxy is unreachable (#3906)
Integrated into release/v3.8.26
2026-06-15 14:05:07 -03:00
Hernan Javier Ardila Sanchez
c45f992541 fix(setup): remove stale CJS bundle check from setup-open-code (#3908)
Integrated into release/v3.8.26
2026-06-15 14:03:46 -03:00
Diego Rodrigues de Sa e Souza
3ce7f39b2e docs: regenerate stale counts to canonical (226 providers / 87 MCP tools / 15 strategies / 42 locales) (#3904)
Several docs bodies carried stale counts from the v3.8.0–v3.8.2 era while the code
moved on. Brought them to the canonical values verified against source:
  - providers 177/160+/223 → 226  (docs/reference/PROVIDER_REFERENCE.md "Total providers")
  - MCP tools  37/42/43    → 87    (open-sse/mcp-server TOTAL_MCP_TOOL_COUNT)
  - routing strategies  14 → 15    (routingStrategies.ts ROUTING_STRATEGY_VALUES)
  - i18n locales     40/40+ → 42   (config/i18n.json)
  - MCP scopes   ~13/13 → 30

Files: ARCHITECTURE, CODEBASE_DOCUMENTATION, REPOSITORY_MAP, QUALITY_GATES,
ACP, AGENT-SKILLS, AGENTBRIDGE, PROVIDERS-GUIDE, SETUP_GUIDE, MCP-SERVER (headline),
OMNIROUTE_VS_ALTERNATIVES, README, RELEASE_CHECKLIST.

Executors (60), OAuth providers (16), A2A skills (6) and cloud agents (3) were already
correct (check-docs-counts-sync --strict still passes). Left untouched on purpose: the
point-in-time reports (DOCUMENTATION_AUDIT_REPORT, E2E shakedown) and the MCP tool
inventory diagram (mcp-tools-43.svg) — diagram regeneration is a separate task.

This unblocks full GitHub-wiki content parity: the wiki was synced from these corrected
sources via scripts/docs/sync-wiki.mjs --update-existing.
2026-06-15 13:16:19 -03:00
diegosouzapw
bf022df6b9 fix(docs): add MDX frontmatter to DOCUMENTATION_AUDIT_REPORT so fumadocs build passes
docs/ops/DOCUMENTATION_AUDIT_REPORT.md (added in #3804) was the only file
under docs/ops/ without a `title:` frontmatter block. Fumadocs scans docs/**
into the `docs` collection and fails the production build with
"Invalid input: expected string, received undefined" (title) — the same MDX
frontmatter class of break as the v3.8.25 SUPPLY_CHAIN.md incident (#3864).
Fast Quality Gates does not run `npm run build`, so it stayed green on the
release branch and would only explode at release->main sync. Added the
frontmatter matching the sibling docs/ops/*.md convention; full build now
passes (Next.js compiled 549/549 pages).
2026-06-15 13:09:58 -03:00
Hernan Javier Ardila Sanchez
a475389b98 fix(opencode-plugin): drop CJS bundle to fix OpenCode plugin loader (#3883)
Integrated into release/v3.8.26 (scoped to the ESM-only loader fix)
2026-06-15 12:39:36 -03:00
Abhishek Divekar
6c1c055a20 feat(combo): add sticky round-robin target limit (#3846)
Integrated into release/v3.8.26
2026-06-15 12:33:15 -03:00
Demiurge The Single
05862fa236 fix(mcp): fall back to node:sqlite when better-sqlite3 binding is missing (#3887)
Integrated into release/v3.8.26
2026-06-15 12:30:48 -03:00
Raxxoor
624c846712 feat(glm): add GLM-5.2 with effort-tier routing (high/max) (#3885)
Integrated into release/v3.8.26
2026-06-15 12:25:58 -03:00
Jack Smith
4caa8451f4 Fix/generate models alias lookup (#3870)
Integrated into release/v3.8.26
2026-06-15 12:24:41 -03:00
Jack Smith
97d589864e Fix/candidate pool empty array (#3871)
Integrated into release/v3.8.26
2026-06-15 12:23:46 -03:00
Randi
fbdce3a941 feat: add OpenRouter connection presets (#3878)
Integrated into release/v3.8.26
2026-06-15 12:21:41 -03:00
Diego Rodrigues de Sa e Souza
3424155143 ci(docs): automate GitHub wiki sync (add missing pages + cover counts) (#3900)
The wiki has no native generator and drifts each release — it lacked SUPPLY_CHAIN
plus 24 other docs pages, and the cover counts went stale (212+/14/37 vs 226/15/87).

Adds:
  - scripts/docs/sync-wiki.mjs — adds docs/ pages missing from the wiki (curated;
    internal reports/plans/index excluded) and syncs the four Home.md cover counts.
    Matches the hand-curated, non-deterministic wiki page names by a normalized fuzzy
    key and writes the EXISTING name, so it never creates duplicate pages. Overwriting
    existing-page content is opt-in (--update-existing) and intentionally OFF by
    default: several docs sources still carry stale counts (e.g. ARCHITECTURE.md says
    "177 providers / 37 MCP tools" while the wiki cover is 226/87), so a blind overwrite
    would REGRESS the wiki. Full parity is gated on regenerating those sources — see
    docs/ops/DOCUMENTATION_AUDIT_REPORT.md.
  - .github/workflows/wiki-sync.yml — runs the sync on every push to main that touches
    docs/ (or a count source) + workflow_dispatch, pushing via GITHUB_TOKEN.
  - tests/unit/sync-wiki.test.ts — pure-function coverage (8 tests).

The first run already pushed the 25 missing pages to the wiki.
2026-06-15 12:08:44 -03:00
Diego Rodrigues de Sa e Souza
320a9d3f29 chore(repo): nest quality-gate state under config/quality, declutter root (#3896)
Move the committed quality-gate state files out of the repo root into
config/quality/ and the v3.8.24 documentation audit into docs/ops/, then
re-point every gate script, test and .gitignore entry at the new paths.
Refresh docs/architecture/REPOSITORY_MAP.md (stale since v3.8.2) to match
the current layout.

Moved -> config/quality/:
  quality-baseline.json, complexity-baseline.json, duplication-baseline.json,
  file-size-baseline.json, test-discovery-baseline.json,
  dependency-allowlist.json, .license-allowlist.json
  (generated quality-metrics.json now written here too; still gitignored)

Moved -> docs/ops/:
  DOCUMENTATION_AUDIT_REPORT.md (+ meta.json entry + fabricated-docs skip)

Path updates: check-{complexity,duplication,file-size,test-discovery,deps,
licenses,dead-code,cognitive-complexity,type-coverage}.mjs, check-quality-
ratchet.mjs, collect-metrics.mjs, check-tracked-artifacts.mjs (+ its test and
check-deps test). Also gitignore /logs/ (was untracked-not-ignored).

Tracked root files: 56 -> 48. Tool configs left in root on purpose: most are
auto-discovered there, and the tsconfig variants have location-relative
files:[] arrays that would need 46 path rewrites for a 2-file gain.
2026-06-15 11:32:45 -03:00
Diego Rodrigues de Sa e Souza
7eff73651a docs: update compression section to the 9-engine multi-layer stack (#3894)
Document the real pipeline (Session-Dedup, CCR, RTK, Headroom, Caveman,
LLMLingua-2, Lite, Aggressive, Ultra) that replaced the old RTK+Caveman
framing; presets table kept. '7 options' -> '9 engines'.
2026-06-15 09:43:10 -03:00
diegosouzapw
aa9f3ef1ab docs: sync provider count to 226 + regenerate provider reference + add docs audit report
- README advertised a stale '177 providers'; the canonical generator
  (gen-provider-reference.ts) reports 226 unique provider IDs. Updated the README
  badges/anchors/heading and regenerated docs/reference/PROVIDER_REFERENCE.md (223→226)
  to match the source of truth.
- Adds DOCUMENTATION_AUDIT_REPORT.md (docs/i18n sync audit + plan).

Docs-only; carried over from in-progress working-tree changes and verified against the
generator.
2026-06-15 09:11:38 -03:00
diegosouzapw
7c1a255589 chore(release): open v3.8.26 development cycle 2026-06-15 04:22:43 -03:00
Diego Rodrigues de Sa e Souza
4066a2ca31 fix(ci): grant contents:write to npm publish job for SBOM attach (#3874)
Post-release v3.8.25 CI hotfix — SBOM attach needs contents:write.
2026-06-15 04:17:19 -03:00
Diego Rodrigues de Sa e Souza
35dbf0eea1 Release v3.8.25 (#3866)
* chore(release): continue v3.8.25 development cycle after main code-sync (r5)

main fast-forwarded to release/v3.8.25 (#3863): unblocked Build+Docker via
#3864, plus #3837 (mimocode proxy) and #3862 (trivy bump). This marker
re-opens the umbrella PR for further v3.8.25 work. No version bump.

* fix(db): persist the Keep-latest-backups retention setting (#3834) (#3867)

* fix(oauth): clear GitLab Duo setup message instead of 500 (#3861) (#3868)

* test(oauth): prove refresh_token preserved on real gemini-cli/antigravity dispatch (#3850) (#3869)

* feat(compression-ui): unified compression config UI — per-engine pages + combos editor + menu + WS default-on (#3860)

Integrated into release/v3.8.25 — feat(compression-ui): unified compression configuration UI (Compression Hub + per-engine Lite/Aggressive/Ultra pages + combos editor + sidebar entry + live-WS default-on). File-size re-baselined for sidebarVisibility.ts/chatCore.ts growth; orphan ws test relocated to a collected path.

* docs(changelog): complete the v3.8.25 release notes + credit all contributors

Audited every commit since v3.8.24 and filled the gaps the [3.8.25] section
was missing: a New Features section (compression engines + Compression Studios
#3848, compression UI #3860, injection-guard #3857, kiro discovery #3836, Veo
#3839, mimocode proxy #3837, Arena ELO flag #3821), 9 more Fixed entries
(#3811/#3807/#3759/#3849/#3838/#3835/#3814/#3820/#3819), a Security section
(CCR IDOR #3859, supply-chain #3824), and an Internal/Quality section. Every
contributor and issue reporter is now credited.

* docs(changelog): restore + complete the v3.8.25 release notes

Re-adds CHANGELOG.md (a prior server-side commit accidentally dropped it) with
the complete, audited [3.8.25] section: New Features, the full Fixed list,
Security & Hardening, and Internal/Quality — every contributor and issue
reporter credited.

* chore(release): finalize v3.8.25 — reconcile CHANGELOG + i18n mirrors, document OMNIROUTE_MAX_PENDING_MIGRATIONS, green the unit suite

Release-gate reconciliation for v3.8.25:
- CHANGELOG: dated 2026-06-14, linked #3826, rolled up file-size re-baselines (#3823/#3833),
  recorded the test-greening; re-synced all 41 i18n CHANGELOG mirrors.
- Documented OMNIROUTE_MAX_PENDING_MIGRATIONS (#3416) in .env.example + ENVIRONMENT.md.
- Greened the unit suite (was merged red on 4 CI shards): aligned 10 stale tests to this
  cycle's intended behavior (#3838/#3822/#3501/SOCKS5/Vertex-Express/Antigravity) and the
  same-provider 503 fall-through test; de-flaked the compression benchmark reproducibility
  and ServiceSupervisor crash tests. No production code changed.

* ci(security): clear OpenSSF Scorecard code-scanning noise + harden workflow token permissions

The Security tab held 155 open alerts, ALL from the advisory OpenSSF Scorecard tool
(#3824) — supply-chain/posture scores, not code vulnerabilities — which drowned out
real CodeQL findings.

- scorecard.yml: stop uploading SARIF to the code-scanning tab (drop the upload-sarif
  step + the now-unused security-events: write). The run still produces the OpenSSF
  badge (publish_results) and a downloadable SARIF artifact.
- TokenPermissions hardening (the high-severity, genuinely-valuable subset): set each
  workflow's top-level token to read-only and grant the exact writes at the job level
  that needs them — npm-publish (id-token/packages on publish jobs), docker-publish
  (packages on build), electron-release (contents on build/release, id-token/packages
  on publish-npm), build-fork (packages on build), claude (empty top-level; job grants
  its own). The 155 existing alerts were dismissed.

Not adopting repo-wide SHA-pinning (143 PinnedDependencies advisories) — declined.

* test(integration): align stale wiring/socks5 integration tests to this cycle's behavior

These were red on the CI Integration job (pre-existing). No production code changed:
- integration-wiring: the combos page no longer renders a per-page EmailPrivacyToggle
  (#3822 consolidated it into Settings → Appearance); the provider-detail test-result
  masking and upstream-proxy copy moved to decomposed components (#3501
  BatchTestResultsModal / UpstreamProxyCard) — assertions now read the owning files.
- api-routes-critical: SOCKS5 is now enabled by default (opt-out), so the disabled-
  rejection test must set ENABLE_SOCKS5_PROXY=false explicitly (an unset env now means
  enabled).

(The ~32 live-Gemini integration tests are gated on OMNIROUTE_API_KEY and skip in CI;
they only 'fail' locally when that key is present without a running server.)
v3.8.25
2026-06-15 03:32:11 -03:00
Diego Rodrigues de Sa e Souza
b4180145e6 Merge release/v3.8.25 into main (#3863)
Code-sync release/v3.8.25 → main: unblocks main Build + Docker Hub (#3864 SUPPLY_CHAIN.md frontmatter) + mimocode per-account proxy (#3837) + trivy-action bump (#3862). i18n CHANGELOG drift left for /generate-release. Dev continues on release/v3.8.25.
2026-06-14 21:31:49 -03:00
dependabot[bot]
36baf77ad5 chore(deps): bump aquasecurity/trivy-action (#3862)
Integrated into release/v3.8.25 — chore(deps): bump aquasecurity/trivy-action 0.28.0→0.36.0 (supply-chain scan action, #3824 workflow).
2026-06-14 21:30:40 -03:00
PizzaV
f42e8fa751 feat(mimocode): per-account proxy support for multi-account round-robin (#3837)
Integrated into release/v3.8.25 — feat(mimocode): per-account proxy for multi-account round-robin (runWithProxyContext per account, keyed by fingerprint). Orphan test relocated to a collected vitest path (14/14 green).
2026-06-14 21:30:02 -03:00
Diego Rodrigues de Sa e Souza
337cd18932 fix(sse): clamp Gemini thinking budget to model cap (#3842) (#3865) 2026-06-14 21:27:25 -03:00
Diego Rodrigues de Sa e Souza
e068a63530 fix(docs): add MDX frontmatter to SUPPLY_CHAIN.md (unblocks main Build) (#3864)
Integrated into release/v3.8.25 — fix(docs): SUPPLY_CHAIN.md MDX frontmatter (unblocks main Build + Docker Hub).
2026-06-14 21:17:09 -03:00