Commit Graph
91 Commits
Author SHA1 Message Date
Tam Nhu Tran 3246c40319 feat(codex-dashboard): add manual long-context controls 2026-04-01 14:57:56 -04:00
Kai (Tam Nhu) TranandGitHub e226a4d161 Merge pull request #866 from kapdon/review/docker-cliproxy-cors
fix(docker): proxy CLIProxy management panel through dashboard to avoid cross-origin errors
2026-04-01 11:52:59 -04:00
Tam Nhu Tran 27409b789b fix(docker): harden proxy with timeout, Bun compat, and test coverage
- Add 30s timeout on proxy requests to prevent indefinite hangs
- Wrap resolveLocalCliproxyPort in try/catch with default port fallback
- Simplify buildProxyBody: remove fragile content-length check that
  caused Bun to fall through to req.pipe() on consumed streams
- Replace proxyRes.pipe(res) with manual streaming for Bun compatibility
  (pipe hangs after writeHead in Bun runtime)
- Replace deprecated req.on('aborted') with res.on('close') cleanup
  (req.on('close') fires with req.destroyed=true in Bun after body
  consumption, prematurely destroying the proxy connection)
- Explicitly end proxy request for bodyless methods (GET/HEAD/OPTIONS)
  instead of piping an already-consumed express stream
- Add server.closeAllConnections() in test cleanup to prevent hangs
- Add GET passthrough and 502 unreachable test cases
2026-04-01 11:39:34 -04:00
Tam Nhu Tran ca54bad2aa fix(codex): harden native runtime detection 2026-04-01 01:39:14 -04:00
Tam Nhu Tran 014a844844 fix: probe Codex config override support directly 2026-03-31 23:38:23 -04:00
UserandClaude Opus 4.6 6471cc55d7 fix(docker): harden cliproxy local proxy with auth guard, dynamic port, and body handling
Move reverse proxy under /api/cliproxy-local so it sits behind auth
middleware. Enforce localhost-only access when dashboard auth is disabled.
Resolve the target port from unified config instead of hardcoding 8317.
Re-serialize parsed JSON bodies before forwarding so writes still work
behind express.json(). Clean up proxy connections on client abort.

On the frontend, point the iframe and health check at the new same-origin
API path, probe the proxy directly, and tighten iframe origin/path
validation before sending the auto-login secret.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-30 16:33:32 -07:00
Tam Nhu Tran bd1ff02521 fix(codex): align cliproxy guidance with runtime behavior 2026-03-29 21:04:59 -04:00
Tam Nhu Tran 0ffde4f3a2 feat(codex-ui): surface cliproxy setup guidance 2026-03-29 19:44:02 -04:00
Tam Nhu Tran 9e43beec40 feat(codex): harden runtime targeting and dashboard editing 2026-03-29 14:18:51 -04:00
Tam Nhu Tran ebc9acf8e4 fix(codex): harden dashboard config editing 2026-03-29 13:14:15 -04:00
Tam Nhu Tran b47aa0d28d feat(codex): add dashboard control center
- add guided editors for top-level settings, trust, profiles, providers, MCP, and features

- refresh raw snapshots after patch saves to avoid stale mtime conflicts

- block structured saves while raw TOML is dirty and add route plus hook coverage
2026-03-29 13:14:15 -04:00
Tam Nhu Tran 8c5da9f9e8 feat: add codex dashboard parity 2026-03-29 13:14:15 -04:00
Tam Nhu Tran f9c1238483 feat(profiles): expose codex runtime across surfaces
- update CLI, API, route, and dashboard surfaces to recognize the Codex runtime target

- normalize persisted codex targets back to claude so runtime-only behavior stays truthful

- add regression coverage for help text, route parsing, and profile storage normalization

Refs #773
2026-03-29 13:14:15 -04:00
Tam Nhu Tran a23caf0051 test(auth): verify effectiveAuthRequired logic for remote vs local access
Cover all 4 combinations: localhost+disabled, remote+disabled,
remote+enabled, localhost+enabled. Also tests isLoopbackRemoteAddress
helper for IPv4, IPv6, mapped addresses, LAN, and undefined.
2026-03-29 11:17:24 -04:00
Tam Nhu Tran 1fd7f81221 test(websearch): assert parser-layer null body errors 2026-03-27 14:58:54 -04:00
Tam Nhu Tran dff40b5e24 fix(websearch): align provider validation metadata 2026-03-27 14:49:00 -04:00
Tam Nhu Tran 4ccc3edcbb fix(websearch): restrict dashboard secrets routes 2026-03-27 14:14:23 -04:00
Tam Nhu Tran 20c48c6105 feat(websearch): manage provider API keys in dashboard
- add masked dashboard-managed API key state for Exa, Tavily, and Brave
- persist WebSearch keys through global_env while keeping WebSearch as the UX surface
- treat dashboard-managed keys as ready in status checks and cover the flow with route/UI tests
2026-03-27 13:25:26 -04:00
Tam Nhu Tran ec1417ab7c fix(channels): reject oversized official channel tokens
Add a 4096-character cap before persisting official channel tokens, map that validation failure to HTTP 400 in the dashboard route, and cover both paths with regression tests.
2026-03-25 22:38:15 -04:00
Tam Nhu Tran 3af554275e test: isolate shared-state test suites for CI stability
- add dependency injection to export-command, binary-manager,
  codex-plan-compatibility, config-command, and usage-syncer
- override process.exit in api-export test to prevent silent
  termination in Bun's parallel test runner
- harden test-environment bootstrap with process.env isolation
- fix auth middleware to avoid config upgrade during checks
2026-03-25 16:41:41 -04:00
Tam Nhu Tran a97fc42b10 feat(channels): auto-enable official Claude channels 2026-03-25 16:31:55 -04:00
Tam Nhu Tran 6ccf53ec7d fix(config): preserve hidden auth secrets and block scalars 2026-03-24 15:25:49 -04:00
Tam Nhu Tran e983bed1da fix(config): close dashboard secret redaction gaps 2026-03-24 15:15:29 -04:00
Tam Nhu Tran 37251cd1f8 fix(config): harden dashboard config and rollback paths 2026-03-24 14:38:40 -04:00
Tam Nhu Tran 09eb01f16e fix(auth): verify polled oauth account persistence 2026-03-24 09:15:05 -04:00
Tam Nhu Tran 4df08f6d99 feat: make cliproxy provider nicknames optional by default 2026-03-23 11:02:08 -04:00
Tam Nhu Tran 834704938d test(cliproxy): cover optional nickname auth flows
- add registry coverage for generated ids, reauth, and ambiguous prefixes

- add CLI and dashboard validation tests for optional nickname handling

- add manual callback coverage for persisted social OAuth nicknames
2026-03-23 11:02:08 -04:00
Tam Nhu Tran 04fd8ff019 fix: restore parallel-safe validate pipeline 2026-03-20 09:51:41 -04:00
Tam Nhu Tran 0d90f04f3e fix: stabilize validate pipeline and cliproxy route tests 2026-03-20 09:29:51 -04:00
Tam Nhu Tran 287691fa04 feat(profiles): add cliproxy api profile bridge
- add backend and CLI flows for creating routed API profiles from CLIProxy providers

- add dashboard bridge CTAs, metadata, and guided create dialog mode

- cover bridge routes and dialog behavior with focused tests

Refs #649
2026-03-19 10:24:28 -04:00
Kai (Tam Nhu) TranandGitHub 4581b0578d Merge pull request #741 from kaitranntt/kai/feat/736-dashboard-remote-host-support
feat: add dashboard host binding option
2026-03-17 11:44:25 -04:00
Tam Nhu Tran dcc67477ec fix: align dashboard host warnings with effective bind 2026-03-17 09:58:11 -04:00
Tam Nhu Tran 553f8ac1e5 feat: add dashboard host binding option 2026-03-17 09:57:51 -04:00
Tam Nhu Tran 1043a433f6 fix: normalize plugin metadata across shared launch flows 2026-03-17 09:56:31 -04:00
Tam Nhu Tran a2f531016d feat(claude-extension): add binding workflow 2026-03-15 15:58:37 -04:00
Tam Nhu Tran b82f10e639 feat(config): add Claude IDE extension setup flow 2026-03-15 15:58:37 -04:00
Tam Nhu Tran 7bd4049602 fix(copilot): stop mutating config on read 2026-03-15 14:53:43 -04:00
Tam Nhu Tran c409a4522c fix: normalize stale copilot raptor-mini model 2026-03-10 17:55:28 +07:00
Tam Nhu Tran 5bcad30762 Merge remote-tracking branch 'origin/dev' into pr-689-anthropic-direct-api
# Conflicts:
#	ui/src/components/profiles/profile-dialog.tsx
2026-03-07 15:59:44 +07:00
Tam Nhu Tran 1f29fa0b6a fix(api): complete anthropic direct profile support 2026-03-07 15:58:36 +07:00
Kai (Tam Nhu) TranandGitHub 248b6d11b8 Merge pull request #698 from kaitranntt/kai/feat/issue-697-profile-lifecycle-ux
feat: API profile lifecycle discover/copy/export/import parity
2026-03-07 01:25:53 -05:00
Tam Nhu Tran aed7beb075 fix: confirm risky cliproxy installs in dashboard 2026-03-07 11:13:49 +07:00
Tam Nhu Tran a4b626aede fix: clarify CLIProxy dashboard install lifecycle 2026-03-07 10:52:46 +07:00
Tam Nhu Tran e14df1fe05 fix: restart CLIProxy after dashboard version install 2026-03-07 10:45:29 +07:00
Tam Nhu Tran d6fc5dd64c fix: harden profile lifecycle validation and dashboard UX flows 2026-03-05 18:49:16 +07:00
Tam Nhu Tran 02c81743a0 feat: add API profile lifecycle discover/copy/export/import parity 2026-03-05 18:30:23 +07:00
Tam Nhu Tran c2f564ac66 fix(ghcp): improve oauth failure diagnostics in device flow 2026-03-04 00:19:11 +07:00
Tam Nhu Tran 27101390fe fix(api-profiles): keep AGY denylist when droid provider is set 2026-03-03 23:41:11 +07:00
Tam Nhu Tran 7e471e663c fix(cliproxy): normalize iflow aliases for explicit routing 2026-03-03 23:34:38 +07:00
Tam Nhu Tran 546c4ee4ee fix(cliproxy): normalize stale iflow model aliases 2026-03-03 23:26:07 +07:00