Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
47 commits
Select commit Hold shift + click to select a range
b778ad2
feat(notion): add Notion MCP context source with 6 tools, dashboard t…
branben May 31, 2026
38221f2
fix(mcp): reorder enforceScopes guard before MCP_TOOL_MAP lookup, add…
branben May 31, 2026
379b72c
fix(routing): add agy to executor map so it uses AntigravityExecutor …
ReqX May 31, 2026
8477990
fix: CPU leak from Bottleneck limiter accumulation + per-request opti…
soyelmismo May 31, 2026
af8e134
fix: combo credential resolution ignores target.providerId — prefer c…
oyi77 May 31, 2026
8b074d2
fix(claude): sanitize tool schemas + cloak third-party tool names on …
NomenAK May 31, 2026
2b613d9
fix combo vision and codex tool history (#2940)
charithharshana May 31, 2026
4c38961
fix(claude): map WebSearch to Responses web_search (#2938)
makcimbx May 31, 2026
ec72330
fix(claude): strip empty Read pages tool input (#2937)
makcimbx May 31, 2026
e51ab94
Improve self-service provider quota visibility (#2931)
guanbear May 31, 2026
8adc0a0
feat(oauth): add Trae SOLO provider (work/code modes)
S0yora May 31, 2026
9430a53
feat(dashboard): add Trae provider brand icon via @lobehub/icons
S0yora May 31, 2026
2fd1271
fix(oom): prevent unbounded memory growth in caches and provider regi…
May 31, 2026
2f707e0
fix(oom): increase Docker heap to 1024MB + wire OMNIROUTE_MEMORY_MB o…
May 31, 2026
74ba399
fix: address Gemini code review on OOM fix PR #2965
May 31, 2026
778f74c
feat(providers): add SiliconFlow endpoint selector
xz-dev May 31, 2026
bfe4e39
fix(i18n): translate Ukrainian (uk-UA) menu and UI strings
Lion-killer May 31, 2026
ef58d83
Merge pull request #2981 from Lion-killer/i18n/uk-ua-ui-menu
diegosouzapw May 31, 2026
86a22d6
Merge pull request #2975 from xz-dev/feat/siliconflow-cn-endpoint-sel…
diegosouzapw May 31, 2026
6ff3238
fix(oauth): address Trae review feedback (loopback origin, stream cle…
S0yora May 31, 2026
c4a359e
Merge pull request #2964 from S0yora/feat/trae-solo-provider
diegosouzapw May 31, 2026
009ad13
Merge pull request #2965 from soyelmismo/fix/oom-memory-leak-caches
diegosouzapw May 31, 2026
878eb44
fix(privacy): resolve PII feature flag correctly and fix PII response…
May 31, 2026
8a721fa
fix(privacy): address Codex review comments by implementing stateful …
May 31, 2026
ca96d4e
fix(privacy): resolve event ordering and minimize latency in streamin…
May 31, 2026
ac3b640
fix(pii): resolve streaming and non-streaming sanitization bugs
May 31, 2026
b3182ae
fix(pii): correct getMode fallback logic to respect explicit false value
May 31, 2026
76cea02
fix(pii): address remaining review feedback from gemini-code-assist
May 31, 2026
df94e40
fix(pii): comprehensive edge case and adversarial fixes
May 31, 2026
52de749
fix(pii): comprehensive fixes for subagent peer-review findings
Jun 1, 2026
454a11a
test: rename adversarialPii2 to streamingPiiInitialization
Jun 1, 2026
88d8fc1
chore: ignore local pr_reviews files
Jun 1, 2026
fa260ca
fix(pii-sanitization): update feature flags test expected count to 27…
Jun 1, 2026
147b6c0
fix(pii): harden streaming sanitization and resolve metadata corrupti…
Jun 1, 2026
8ed144e
fix(pii): prevent stream buffer OOM, fix JSON formatting on flush, an…
Jun 1, 2026
0682cbf
fix(pii): support parallel tool calls using composite keys in streams…
Jun 1, 2026
6d0e4bc
fix(pii): resolve edge cases introduced by reviewer feedback implemen…
Jun 1, 2026
cdab545
refactor(pii): simplify sseTextTransform and streamingPiiTransform logic
Jun 1, 2026
c876925
perf(pii): apply streaming micro-optimizations and save workspace
Jun 1, 2026
50532b7
fix(pii): resolve ReDoS vulnerabilities in regex patterns
Jun 1, 2026
f19d550
fix(pii): address unresolved review comments and resolve threads
Jun 1, 2026
783a971
feat(skills): add pr-monitor custom workspace skill
Jun 1, 2026
1455d43
docs(pii): document stream sanitization, ReDoS, and test database lea…
Jun 1, 2026
f8f21a3
chore(clean): remove temporary scripts, scratchpad files, and custom …
Jun 1, 2026
5f88466
chore(clean): remove ad-hoc PII vulnerability verification script
Jun 1, 2026
8980615
Merge remote-tracking branch 'origin/release/v3.8.8' into fix/pii-str…
diegosouzapw Jun 1, 2026
23b2a8a
fix(review): drop invalid string===boolean comparison in piiSanitizer…
diegosouzapw Jun 1, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -193,3 +193,7 @@ scripts/i18n/_pending-keys.json
.agents/
.antigravitycli/
.claude/

# PR Reviews and local feedback files
pr_reviews*.json

12 changes: 0 additions & 12 deletions .source/browser.ts

This file was deleted.

83 changes: 0 additions & 83 deletions .source/server.ts

This file was deleted.

8 changes: 8 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,14 @@

- **mcp:** move `enforceScopes` guard before `MCP_TOOL_MAP` lookup, add inline `scopes` parameter to `withScopeEnforcement()`, and declare scopes on all 24 dynamic tool definitions (memory, skills, plugins, gamification, compression) to fix scope enforcement for dynamic MCP tool groups (#2958)

### ✨ New Features

- **notion:** add Notion as an MCP context source — 6 tools (`notion_search`, `notion_list_databases`, `notion_get_database`, `notion_query_database`, `notion_read`, `notion_append_blocks`) scoped under `read:notion` / `write:notion`, with dashboard "Context Sources" tab, settings API, and token persistence in `key_value` table (#2959)

### 🔧 Bug Fixes

- **mcp:** move `enforceScopes` guard before `MCP_TOOL_MAP` lookup, add inline `scopes` parameter to `withScopeEnforcement()`, and declare scopes on all 24 dynamic tool definitions (memory, skills, plugins, gamification, compression) to fix scope enforcement for dynamic MCP tool groups (#2958)

---

## [3.8.7] — 2026-05-29
Expand Down
13 changes: 13 additions & 0 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -428,3 +428,16 @@ git push -u origin feat/your-feature
15. Never expose routes that spawn child processes (`/api/mcp/`, `/api/cli-tools/runtime/`) without `isLocalOnlyPath()` classification in `src/server/authz/routeGuard.ts`. Loopback enforcement happens unconditionally before any auth check — leaked JWT via tunnel cannot trigger process spawning. See `docs/security/ROUTE_GUARD_TIERS.md`.
16. Never include `Co-Authored-By` trailers that credit an AI assistant, LLM, or automation account (e.g. names containing "Claude", "GPT", "Copilot", "Bot"; emails at `anthropic.com` / `openai.com` / bot-owned `noreply.github.com` addresses). Such trailers route attribution to the bot account on GitHub, hiding the real author (`diegosouzapw`) in PR history. Human collaborators — including upstream PR authors and issue reporters being ported into OmniRoute — MAY and SHOULD be credited with standard `Co-authored-by: Name <email>` trailers; the upstream-port workflows (`/port-upstream-features`, `/port-upstream-issues`) depend on this.
17. Never expose routes under `/api/services/` or `/dashboard/providers/services/*/embed/` without `isLocalOnlyPath()` classification in `src/server/authz/routeGuard.ts`. These routes can spawn child processes (`npm install`, `node`). Loopback enforcement happens unconditionally before any auth check — a leaked JWT via tunnel cannot trigger process spawning. See `docs/security/ROUTE_GUARD_TIERS.md`.

---

## PII & Stream Sanitization Learnings

### 1. Regex Security (ReDoS)
All regex patterns matching variable-length strings (e.g. IPv6 address, credit cards) must use strictly bounded, non-overlapping sequences (e.g., limit occurrences with bounded ranges `{1,7}`) to prevent catastrophic backtracking when processing untrusted inputs.

### 2. SSE Snapshot Handling
When parsing streaming LLM responses (e.g. Responses API), check if a chunk represents a final snapshot (`done` or `completed` events). Snapshot text must be sanitized directly as a standalone string (bypassing rolling delta buffers) to prevent text duplication at the end of the stream.

### 3. Database Handles in Tests
Ensure that any unit tests that trigger database migrations or establish SQLite connections call `resetDbInstance()` and properly clean up/close all DB handles in a `test.after(...)` hook. Failure to release database connection handles will cause Node's native test runner to hang indefinitely.
Loading