Skip to content

chore(release): v3.4.2 — memory/skills, claude code bridge, i18n CI, model-sync - #901

Merged
diegosouzapw merged 100 commits into
mainfrom
release/v3.4.2
Apr 1, 2026
Merged

diegosouzapw merged 100 commits into
mainfrom
release/v3.4.2

Conversation

@diegosouzapw

Copy link
Copy Markdown
Collaborator

🚀 Release v3.4.2

✨ New Features

  • Antigravity Memory & Skills: Completed remote memory and skills injection for the Antigravity provider at the proxy network level.
  • Claude Code Compatibility: Built a natively hidden compatibility bridge for Claude Code, passing tools and formatting through cleanly.
  • Web Search MCP: Added the omniroute_web_search tool with the execute:search scope.
  • Cache Components: Implemented dynamic cache components utilizing TDD.
  • UI & Customization: Added custom favicon support, appearance tabs, wired whitelabeling to the sidebar, and added Windsurf guide steps across all 33 languages.
  • Log Retention: Unified request log retention and artifacts natively.
  • Model Enhancements: Added explicit contextLength for all opencode-zen models.
  • i18n & translations: Integrated 33 language translations natively, including placeholder CI validations and Chinese documentation updates (i18n + CI: translations, placeholder validation, and CI fixes #873, docs: Translate the Chinese version of the document #869).

🐛 Bug Fixes

🛠️ Maintenance

Integrated PRs

Tests

  • ✅ 1232/1232 tests pass (0 failures)
  • ✅ TypeScript typecheck:core passes

⚠️ After merging: run Phase 2 steps to tag, publish, and deploy.

christopher-s and others added 30 commits March 31, 2026 09:22
…lation

- Remove x-goog-user-project header and executor-level project override
  that caused 403 "Cloud Code Private API has not been used in project X"
- Add PROJECT_ROUTE_ERROR classifier type so project-routing 403s don't
  permanently ban accounts (keeps accounts active, tracks the error)
- Fix Cloud Code envelope unwrapping for content accumulation in stream.ts
  (Cloud Code wraps responses in { response: { candidates: [...] } })
- Extract unwrapGeminiChunk() into streamHelpers.ts with format guard
- Remove _currentModel singleton race condition from GeminiCLIExecutor
- Add handler for PROJECT_ROUTE_ERROR in chatCore.ts
- Add TODO in antigravity.ts about same stale-project risk
- Add 7 unit tests for error classifier and stream unwrap paths
…errors

The stored projectId from OAuth connection time becomes stale because the
Cloud Code API rotates free-tier projects. Native Gemini CLI refreshes the
project every 30 seconds via loadCodeAssist — OmniRoute never did, causing
403 "has not been used in project X" errors that permanently banned accounts.

- Add refreshProject() to GeminiCLIExecutor that calls loadCodeAssist API
  with 10s timeout and caches the result for 30s (matching native CLI)
- transformRequest() replaces the stale projectId in the envelope before
  sending to the Cloud Code API, falling back to the stored ID on failure
- Make transformRequest calls await-compatible in base executor and
  all subclasses (antigravity, cursor, kiro) so async overrides work
- Deduplicate in-flight loadCodeAssist requests to prevent thundering herd
- Add typeof guard on cloudaicompanionProject.id before calling .trim()
- Evict oldest cache entry when all entries are still valid
- Fix unwrapGeminiChunk to use explicit null-safe check
- Update test description for null response case
…avity/

- Replace stale model IDs (gemini-3.1-pro-preview, gemini-3.1-flash-lite-preview)
  with correct High/Low tier variants from fetchAvailableModels API
  (gemini-3-pro-high, gemini-3-pro-low, gemini-3.1-pro-high, gemini-3.1-pro-low, etc.)
- Remove ag/ alias prefix in favor of antigravity/ across registry, providers,
  model capabilities, combos, docs, and static model providers
- Make provider alias optional in Zod schema and guard ALIAS_TO_ID/ID_TO_ALIAS maps
- Show raw model IDs in quota display instead of unmapped display names
- Update T28 model catalog test to assert new High/Low tier models
…veUserQuota

retrieveUserQuota only returns Gemini model quotas. fetchAvailableModels
returns all models (including Claude) with per-model quotaInfo.
Added missing step 5 'Use Thinking Variant' to all 33 i18n language files
for cliTools.guides.opencode.steps.5

The step was already defined in CLI_TOOLS constant but the i18n
translations were missing, causing the step title/description to
not display in the UI.
- Changed README path from ROOT to docs/i18n/{lang}/README.md
- Fixed prefix check from 'Disponible en' pattern to '🌐 **Languages:**'
- Added try/catch for missing README files
Added missing i18n keys for 'strict-random' routing strategy:
- combos.strategyGuide.strict-random: {when, avoid, example}
- combos.strategyRecommendations.strict-random: {title, description, tip1, tip2, tip3}

Total: 264 keys across all language files (8 keys × 33 languages)

These keys were already in pt-BR (incorrectly translated) and are now
aligned with the English fallback values from combos/page.tsx
Added missing cliTools.guides.windsurf.steps[1-5] with title and desc:
- step 1: Open AI Settings
- step 2: Add Custom Provider
- step 3: Base URL (http://127.0.0.1:20128/v1)
- step 4: API Key
- step 5: Select Model

Total: 165 keys across all language files (5 steps × 2 keys × 33 languages)
Detects mismatched placeholders like {count} vs {pocet} between
source (en.json) and translations. Catches cases where raw placeholders
like {# models} are translated without preserving the placeholder format.

Found 14 issues in cs.json as test case.
Fixed 14 placeholders that were translated instead of preserved:
- usage.inDuration: {trvání} -> {duration}
- usage.detailsContains: {termín} -> {term}
- usage.dayTimeFormat: {den} -> {day}
- translator.youWithFormat: {formát} -> {format}
- providers.testedCount: added missing {count} placeholder
- providers.allTestsPassed: added missing {total} placeholder
- All ICU plural formats now correctly preserve {# X} inner format
Added 130 missing keys from en.json:
- a2aDashboard: 46 keys
- agents: 6+ keys
- cliTools.guides notes: continue, kiro, opencode
- And all other missing keys from recent additions

Total: All 33 language files now have full key parity.
Updated regex to only match top-level placeholders like {count}, {day}
and ignore {# X} format inside ICU plural/select constructs.
- Also fix quick_check to only fail on missing keys (not untranslated)
- Use compact JSON for GITHUB_OUTPUT
The check-route-validation script now accepts both validateBody()
and .safeParse() as valid body validation methods. This fixes false
positives for routes using Zod schemas with safeParse().
Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com>
Models without quota data (e.g. tab-completion models) were showing 0%
because remainingFraction defaulted to 0 when absent. Now defaults to 1
so they show 100% remaining instead.
rdself and others added 20 commits April 1, 2026 04:39
- SECURITY.md: supported versions 3.4.x/3.0.x, MCP scopes (10),
  audit trail, Zod v4 validation, TLS/CLI fingerprint
- CONTRIBUTING.md: Node >=18<24, port 20128, project structure
  (21 DB modules, 25 MCP tools, memory/skills/electron), 122 test files
- README.md: 60+ providers, 25 MCP tools, 10 scopes, 9 strategies
- .dockerignore: expanded exclusions (tests, docs, electron, *.tgz)
- .npmignore: added llm.txt, bun.lock, tsconfig variants, subprojects
- .gitignore: _*/ dirs, docs/new-features, COVERAGE_PLAN allowlist

Deleted files:
- 20 README.*.md redirect stubs (consolidated in docs/i18n/)
- 4 scratch test files (test_exception/target_format/translator/out)
- restart.sh, validate-translation.sh (obsolete scripts)
- Moved COVERAGE_PLAN.md -> docs/COVERAGE_PLAN.md
- copilot-usage: use future reset date (2026-12-31) to avoid stale
  quota window causing remainingPercentage to reset to 100%
- request-log-migration: close SQLite DB before cleanup to release
  Windows file locks; remove stale archive dir before second test
The wrapInCloudCodeEnvelopeForClaude function converts Claude message
blocks to Antigravity/Gemini parts format but only handles text,
tool_use, and tool_result types. Image blocks (type: 'image' with
base64 source) are silently dropped, causing Claude models routed
through Antigravity to never receive image content.

This adds handling for image blocks, converting them to inlineData
format (the same format the Gemini path already uses successfully).

Tested: Claude via Antigravity now correctly receives and describes
image content that was previously invisible.
Prevent auto-sync from wiping manually-imported models when the upstream
/models endpoint fails, times out, or returns an empty list. Added
`allowEmpty` option (default false) to replaceCustomModels — callers that
intentionally clear all models (DELETE ?all=true) pass `allowEmpty: true`.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
# Conflicts:
#	tests/unit/copilot-usage.test.mjs
# Conflicts:
#	open-sse/handlers/chatCore.ts
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Copilot AI review requested due to automatic review settings April 1, 2026 22:32
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@kilo-code-bot

kilo-code-bot Bot commented Apr 1, 2026

Copy link
Copy Markdown

Code Review Summary

Status: No Issues Found | Recommendation: Merge

Overview

This is a release PR (v3.4.2) containing documentation updates, CHANGELOG entries, and workflow improvements. No code changes were made — all modifications are to documentation files, localization files, and workflow configurations.

Severity Count
CRITICAL 0
WARNING 0
SUGGESTION 0

Changes Reviewed

File Status Summary
.agents/workflows/update-docs.md Removed Old documentation workflow replaced
.agents/workflows/version-bump.md Added (327 lines) New version bump workflow with detailed phases
CHANGELOG.md Modified Release v3.4.2 notes with 12 new features, 11 bug fixes, and maintenance items
CONTRIBUTING.md Modified Updated Node.js version range, test commands, project structure documentation
README.md Modified Provider count (67→60), routing strategies (6→9), MCP scopes (9→10)
README.{ar,bg,cs,da,fi,he,hu,id,in,ja,ko,ms,nl,no,phi,pl,pt,ro,sk}.md Removed Consolidated to centralized i18n structure in docs/i18n/

Quality Observations

  1. CHANGELOG Completeness - Release notes are comprehensive with proper PR attribution (i18n + CI: translations, placeholder validation, and CI fixes #873, docs: Translate the Chinese version of the document #869, fix(model-sync): skip replace when auto-sync returns empty model list #899, fix(antigravity): add image passthrough for Claude models #898, etc.)
  2. Breaking Changes Documented - The v3.4.1 section properly documents the logging redesign with migration notes
  3. Test Coverage Claimed - PR description states 1232/1232 tests passing
  4. Documentation Structure - Proper consolidation of redundant language-specific README files into docs/i18n/

Files Reviewed (4 files with substantive changes)

  • CHANGELOG.md - No issues
  • CONTRIBUTING.md - No issues
  • README.md - No issues
  • .agents/workflows/version-bump.md - No issues

This is a well-structured release PR with proper documentation. All changes are appropriately scoped for a version release.

.trim()
.replace(/\/$/, "");
if (!normalized) return "";
return normalized.replace(/\/messages(?:\?[^#]*)?$/i, "");

Check failure

Code scanning / CodeQL

Polynomial regular expression used on uncontrolled data High

This
regular expression
that depends on
library input
may run slow on strings starting with '/messages?' and with many repetitions of '/messages?'.
This
regular expression
that depends on
library input
may run slow on strings starting with '/messages?' and with many repetitions of '/messages?'.

Copilot AI 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.

Pull request overview

Release v3.4.2 content + documentation re-org, alongside new i18n CI validation and refreshed security/dev docs to match the current runtime.

Changes:

  • Added/updated multi-language documentation under docs/i18n/*/docs/ and refreshed localized READMEs/CHANGELOGs.
  • Introduced an i18n validation job matrix in GitHub Actions.
  • Updated root/docs guidance and ignore rules (SECURITY.md, CONTRIBUTING.md, .env.example, .dockerignore, .npmignore) to reflect new logging/limits/runtime behavior.

Reviewed changes

Copilot reviewed 94 out of 1127 changed files in this pull request and generated 7 comments.

Show a summary per file
File Description
docs/i18n/bg/docs/RELEASE_CHECKLIST.md Adds Bulgarian release checklist under new docs/ i18n layout
docs/i18n/bg/docs/MCP-SERVER.md Adds Bulgarian MCP server doc under new i18n layout
docs/i18n/bg/docs/FEATURES.md Updates Bulgarian dashboard features (language links + provider list tweak)
docs/i18n/bg/docs/COVERAGE_PLAN.md Adds Bulgarian coverage plan doc
docs/i18n/bg/docs/AUTO-COMBO.md Adds Bulgarian auto-combo doc
docs/i18n/bg/docs/A2A-SERVER.md Adds Bulgarian A2A server doc
docs/i18n/bg/SECURITY.md Adds Bulgarian security policy doc
docs/i18n/bg/TROUBLESHOOTING.md Removes old Bulgarian troubleshooting doc (pre-reorg path)
docs/i18n/bg/RELEASE_CHECKLIST.md Removes old Bulgarian release checklist (pre-reorg path)
docs/i18n/bg/README.md Refreshes Bulgarian README content and feature counts
docs/i18n/bg/MCP-SERVER.md Removes old Bulgarian MCP server doc (pre-reorg path)
docs/i18n/bg/FEATURES.md Removes old Bulgarian features doc (pre-reorg path)
docs/i18n/bg/CLI-TOOLS.md Removes old Bulgarian CLI tools guide (pre-reorg path)
docs/i18n/bg/CHANGELOG.md Updates Bulgarian changelog with v3.4.2 entries + language links
docs/i18n/bg/AUTO-COMBO.md Removes old Bulgarian auto-combo doc (pre-reorg path)
docs/i18n/bg/A2A-SERVER.md Removes old Bulgarian A2A server doc (pre-reorg path)
docs/i18n/ar/docs/TROUBLESHOOTING.md Adds Arabic troubleshooting doc under new i18n layout
docs/i18n/ar/docs/RELEASE_CHECKLIST.md Adds Arabic release checklist under new i18n layout
docs/i18n/ar/docs/MCP-SERVER.md Adds Arabic MCP server doc under new i18n layout
docs/i18n/ar/docs/FEATURES.md Updates Arabic dashboard features (language links + provider list tweak)
docs/i18n/ar/docs/COVERAGE_PLAN.md Adds Arabic coverage plan doc
docs/i18n/ar/docs/AUTO-COMBO.md Adds Arabic auto-combo doc
docs/i18n/ar/docs/A2A-SERVER.md Adds Arabic A2A server doc under new i18n layout
docs/i18n/ar/TROUBLESHOOTING.md Removes old Arabic troubleshooting doc (pre-reorg path)
docs/i18n/ar/SECURITY.md Adds Arabic security policy doc
docs/i18n/ar/RELEASE_CHECKLIST.md Removes old Arabic release checklist (pre-reorg path)
docs/i18n/ar/README.md Refreshes Arabic README content and feature counts
docs/i18n/ar/MCP-SERVER.md Removes old Arabic MCP server doc (pre-reorg path)
docs/i18n/ar/FEATURES.md Removes old Arabic features doc (pre-reorg path)
docs/i18n/ar/CLI-TOOLS.md Removes old Arabic CLI tools guide (pre-reorg path)
docs/i18n/ar/CHANGELOG.md Updates Arabic changelog with v3.4.2 entries + language links
docs/i18n/ar/AUTO-COMBO.md Removes old Arabic auto-combo doc (pre-reorg path)
docs/i18n/ar/A2A-SERVER.md Removes old Arabic A2A server doc (pre-reorg path)
docs/i18n/README.md Adds cs to i18n index
docs/adr/0003-security-checklist-proxy-limits.md Removes ADR document
docs/adr/0002-api-error-contract-management-endpoints.md Removes ADR document
docs/adr/0001-proxy-registry-limit-generalization.md Removes ADR document
docs/USER_GUIDE.md Updates env var docs tables formatting + adds provider limits cadence env var
SECURITY.md Updates supported versions, adds MCP scope/audit details, tweaks terminology
README.md Updates headline stats/features (providers count, MCP tool count, logging details)
CONTRIBUTING.md Updates dev prerequisites, env defaults, test commands, repo structure overview
CHANGELOG.md Adds v3.4.2 release notes and additional logging cleanup bullet
.npmignore Expands ignored files/folders for npm package
.github/workflows/ci.yml Adds i18n validation matrix job and generator job
.env.example Updates logging env vars, adds limits sync interval env var
.dockerignore Expands ignore rules to reduce Docker context size
.agents/workflows/version-bump.md Adds new agent workflow for version bump/release prep
.agents/workflows/update-docs.md Removes older agent workflow doc
README.*.md Removes legacy root-level translated README stubs pointing to docs/i18n/*
Comments suppressed due to low confidence (2)

docs/i18n/README.md:3

  • This count is now stale: the same file adds cs, and the PR description mentions 33 languages. Update the stated language count so it matches the actual set of translations tracked in docs/i18n/.
Translations of documentation into 30 languages. Code blocks remain in English.

docs/adr/0001-proxy-registry-limit-generalization.md:1

  • This PR deletes ADRs (docs/adr/0001..0003) but the release description/notes don’t mention removing architectural decision records. If these decisions are still relevant, consider keeping them (or moving them to an archive folder) to preserve design history and avoid breaking references to ADR IDs.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread .github/workflows/ci.yml
id: langs
run: |
LANG_DIR="src/i18n/messages"
LANGS=$(ls "$LANG_DIR"/*.json | xargs -n1 basename | sed 's/.json$//' | grep -v '^en$' | jq -R . | jq -s . | jq -c .)

Copilot AI Apr 1, 2026

Copy link

Choose a reason for hiding this comment

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

This will fail if there are no non-en locale JSON files (e.g. grep -v '^en$' yields nothing), because ${LANGS} can become empty/non-JSON and fromJson(...) in the matrix will error. Make the generator robust by defaulting to [] when the filtered list is empty (and/or avoid ls-failure cases by globbing safely).

Suggested change
LANGS=$(ls "$LANG_DIR"/*.json | xargs -n1 basename | sed 's/.json$//' | grep -v '^en$' | jq -R . | jq -s . | jq -c .)
LANGS=$(ls "$LANG_DIR"/*.json 2>/dev/null | xargs -n1 basename 2>/dev/null | sed 's/.json$//' | grep -v '^en$' || true)
if [ -n "$LANGS" ]; then
LANGS=$(printf '%s\n' "$LANGS" | jq -R . | jq -s . | jq -c .)
else
LANGS='[]'
fi

Copilot uses AI. Check for mistakes.
Comment thread .github/workflows/ci.yml
i18n:
name: i18n Validation
runs-on: ubuntu-latest
continue-on-error: true

Copilot AI Apr 1, 2026

Copy link

Choose a reason for hiding this comment

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

With continue-on-error: true, translation validation failures won't fail CI, which reduces the enforcement value of the new i18n checks (and may conflict with the PR description around CI placeholder validations). If the intent is to gate merges on placeholder correctness, remove continue-on-error or move it behind a repo/branch condition.

Suggested change
continue-on-error: true

Copilot uses AI. Check for mistakes.

---

> Model Context Protocol server with 16 intelligent tools

Copilot AI Apr 1, 2026

Copy link

Choose a reason for hiding this comment

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

This doc claims the MCP server has 16 tools, but other updated docs in this PR (e.g. READMEs) reference 25 tools. Update this header (and the tool lists below if needed) so the Bulgarian MCP documentation matches the current MCP tool surface.

Copilot uses AI. Check for mistakes.

---

> Model Context Protocol server with 16 intelligent tools

Copilot AI Apr 1, 2026

Copy link

Choose a reason for hiding this comment

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

This doc claims the MCP server has 16 tools, but other updated docs in this PR (e.g. READMEs) reference 25 tools. Update this header (and the tool lists below if needed) so the Arabic MCP documentation matches the current MCP tool surface.

Copilot uses AI. Check for mistakes.
Comment on lines +13 to +19
| Problem | Solution |
| ----------------------------- | ------------------------------------------------------------------ |
| First login not working | Set `INITIAL_PASSWORD` in `.env` (no hardcoded default) |
| Dashboard opens on wrong port | Set `PORT=20128` and `NEXT_PUBLIC_BASE_URL=http://localhost:20128` |
| No request logs under `logs/` | Set `ENABLE_REQUEST_LOGS=true` |
| EACCES: permission denied | Set `DATA_DIR=/path/to/writable/dir` to override `~/.omniroute` |
| Routing strategy not saving | Update to v1.4.11+ (Zod schema fix for settings persistence) |

Copilot AI Apr 1, 2026

Copy link

Choose a reason for hiding this comment

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

This troubleshooting page still instructs users to set ENABLE_REQUEST_LOGS=true, but this PR updates .env.example to the new APP_LOG_* / CALL_LOG_* model and removes ENABLE_REQUEST_LOGS. Update this table to reference the current logging env vars and current log locations/retention behavior.

Suggested change
| Problem | Solution |
| ----------------------------- | ------------------------------------------------------------------ |
| First login not working | Set `INITIAL_PASSWORD` in `.env` (no hardcoded default) |
| Dashboard opens on wrong port | Set `PORT=20128` and `NEXT_PUBLIC_BASE_URL=http://localhost:20128` |
| No request logs under `logs/` | Set `ENABLE_REQUEST_LOGS=true` |
| EACCES: permission denied | Set `DATA_DIR=/path/to/writable/dir` to override `~/.omniroute` |
| Routing strategy not saving | Update to v1.4.11+ (Zod schema fix for settings persistence) |
| Problem | Solution |
| ----------------------------- | ------------------------------------------------------------------------------------------------------------- |
| First login not working | Set `INITIAL_PASSWORD` in `.env` (no hardcoded default) |
| Dashboard opens on wrong port | Set `PORT=20128` and `NEXT_PUBLIC_BASE_URL=http://localhost:20128` |
| No request logs under `logs/` | Configure `APP_LOG_*` / `CALL_LOG_*` in `.env` (see `.env.example`; logs are written under `logs/` with rotation/retention) |
| EACCES: permission denied | Set `DATA_DIR=/path/to/writable/dir` to override `~/.omniroute` |
| Routing strategy not saving | Update to v1.4.11+ (Zod schema fix for settings persistence) |

Copilot uses AI. Check for mistakes.
Comment thread docs/USER_GUIDE.md
Comment on lines +512 to +513
| `JWT_SECRET` | `omniroute-default-secret-change-me` | JWT signing secret (**change in production**) |
| `INITIAL_PASSWORD` | `123456` | First login password |

Copilot AI Apr 1, 2026

Copy link

Choose a reason for hiding this comment

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

These defaults conflict with other updates in this PR (e.g. CONTRIBUTING.md now suggests INITIAL_PASSWORD=CHANGEME, and SECURITY.md states the server fails fast on missing/weak secrets). If the runtime no longer ships with these insecure defaults, update this table to reflect the real defaults/requirements (or mark them as examples rather than defaults).

Copilot uses AI. Check for mistakes.
Comment thread CHANGELOG.md
---

## [3.3.11] - 2026-03-31
## [3.4.0] - 2026-03-31

Copilot AI Apr 1, 2026

Copy link

Choose a reason for hiding this comment

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

This hunk indicates a version header was changed from ## [3.3.11] - 2026-03-31 to ## [3.4.0] - 2026-03-31. If 3.3.11 was a real released version, this edit rewrites published history and can break link anchors/upgrade references. Consider restoring the original version heading or ensuring 3.4.0 is inserted without overwriting an existing entry.

Copilot uses AI. Check for mistakes.

@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 introduces a comprehensive documentation overhaul, including a new version-bump workflow, updated architecture details in AGENTS.md, and expanded multi-language support with Arabic and Bulgarian translations. It also refines environment variable configurations for logging and provider synchronization while cleaning up the repository structure. Feedback focuses on correcting critical syntax errors in shell commands and configuration snippets caused by curly quotes and improper spacing. Additionally, corrections were suggested for a non-existent TypeScript version reference, trailing parentheses in several files, and inconsistent default password values across the documentation.

// turbo

```bash
cd /home/diegosouzapw/dev/proxys/9router

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.

critical

The workflow contains a hardcoded absolute path /home/diegosouzapw/dev/proxys/9router. This will cause the workflow to fail on any other machine or in a CI environment. Use relative paths or environment variables instead. This issue is repeated on lines 67, 136, 159, 177, 239, 248, 257, and 302.

Suggested change
cd /home/diegosouzapw/dev/proxys/9router
cd "$(git rev-parse --show-toplevel)"


# Add official Docker repository
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg

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.

critical

The shell command is broken due to an extra space between $ and ( and the use of curly quotes (“, ”). This will prevent the apt source list from being correctly configured.

Suggested change
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | tee /etc/apt/sources.list.d/docker.list > /dev/null

```

### 2.2 Create environment variables file

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.

critical

The use of curly quotes (‘, ’) in shell commands and configuration snippets will cause syntax errors. This issue is repeated throughout the file (e.g., lines 176, 211, 314, 325).

Suggested change
cat > /opt/omniroute/.env << 'EOF'

Comment thread AGENTS.md
- **Runtime**: Next.js 16 (App Router), Node.js, ES Modules
- **Language**: TypeScript 5.9 (`src/`) + JavaScript (`open-sse/`)
- **Runtime**: Next.js 16 (App Router), Node.js ≥18 <24, ES Modules (`"type": "module"`)
- **Language**: TypeScript 5.9 (`src/`) + JavaScript (`open-sse/`, `electron/`)

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

TypeScript 5.9 is not yet released (current stable is 5.8). This is likely a typo for 5.7 or 5.8.

Suggested change
- **Language**: TypeScript 5.9 (`src/`) + JavaScript (`open-sse/`, `electron/`)
- **Language**: TypeScript 5.8 (`src/`) + JavaScript (`open-sse/`, `electron/`)

Comment thread AGENTS.md
| Proxy logging | `src/lib/proxyLogger.ts` |
| Data paths resolution | `src/lib/dataPaths.ts` |
JSON-RPC 2.0, SSE streaming, Task Manager with TTL cleanup(
Agent Card at `/.well-known/agent.json`.

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

Trailing open parenthesis at the end of the line.

Suggested change
Agent Card at `/.well-known/agent.json`.
JSON-RPC 2.0, SSE streaming, Task Manager with TTL cleanup.

Comment thread docs/USER_GUIDE.md
| Variable | Default | Description |
| --------------------------------------- | ------------------------------------ | --------------------------------------------------------------------------------------------------------- |
| `JWT_SECRET` | `omniroute-default-secret-change-me` | JWT signing secret (**change in production**) |
| `INITIAL_PASSWORD` | `123456` | First login password |

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

Inconsistent default password. CONTRIBUTING.md was updated to use CHANGEME, but this file still references 123456.

Suggested change
| `INITIAL_PASSWORD` | `123456` | First login password |
| `INITIAL_PASSWORD` | `CHANGEME` | First login password |


## Observability and Operational Signals

Runtime visibility sources:

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

Trailing open parenthesis at the end of the line.

Suggested change
Runtime visibility sources:
JSON-RPC 2.0, SSE streaming, Task Manager with TTL cleanup.

| `artifacts[].content` | The LLM response text |
| `metadata.routing_explanation` | Human-readable explanation of routing decision |
| `metadata.cost_envelope` | Estimated vs actual cost with currency |
| `metadata.resilience_trace` | Array of events (primary_selected, fallback_needed, etc.) |

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

Trailing open parenthesis at the end of the line.

Suggested change
| `metadata.resilience_trace` | Array of events (primary_selected, fallback_needed, etc.) |
JSON-RPC 2.0, SSE streaming, Task Manager with TTL cleanup.

@diegosouzapw
diegosouzapw merged commit e37adcd into main Apr 1, 2026
4 of 5 checks passed
@diegosouzapw
diegosouzapw deleted the release/v3.4.2 branch April 1, 2026 23:04
Poid-ZA pushed a commit to Poid-ZA/OmniRoute that referenced this pull request Aug 5, 2026
….4.2

chore(release): v3.4.2 — memory/skills, claude code bridge, i18n CI, model-sync
muhamadgalihsaputra pushed a commit to niyatna/NiyatnaRoute that referenced this pull request Sep 27, 2026
….4.2

chore(release): v3.4.2 — memory/skills, claude code bridge, i18n CI, model-sync
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.