Kai (Tam Nhu) Tran and GitHub
107b5b5db4
fix(docker): apply red-team findings — drop :full, rc.1 soak, healthcheck, signing ( #1251 ) ( #1262 )
...
* docs(quickstart): fix raw URL for corporate-proxy fallback (H1)
* feat(docker)!: drop :full image variant — use sibling containers on ccs-net (Q3)
No AI CLIs (claude-code/gemini-cli/grok-cli/opencode) are bundled in the image.
Use sibling containers attached to ccs-net instead.
See docker/README.md#connect-your-app-to-cliproxy.
Also removes bash from apk deps (entrypoint uses #!/bin/sh — L2).
ci(docker): publish only immutable :<ver> tag pre-smoke; promote-mutable-tags
job adds :latest/:MAJOR/:MINOR aliases only after smoke tests pass (H3)
ci(docker): smoke-test-compose-url runs network-contract.sh against the
downloaded /tmp/ccs-compose.yaml instead of re-cloning the repo (H4)
ci(docker): sign published images with cosign keyless OIDC + attach
provenance/SBOM via build-push-action (M8)
test(docker): network-contract.sh now accepts compose-file and image-ref
positional args; replaces python3 healthcheck parser with jq (L4)
* chore(release): cut every main release as rc.N prerelease, manual promote flow (H2)
- .releaserc.cjs: main branch now uses prerelease 'rc' channel — every
semantic-release cut becomes vX.Y.Z-rc.N
- add promote-release.yml: workflow_dispatch flips rc → stable via
'gh release edit --prerelease=false'; triggers docker promote-mutable-tags
- add docs/release-process.md: full soak + promote procedure, rollback steps,
cosign verification command
- releaseNotesGenerator: add revert section, document chore hidden behaviour (L8)
* fix(docker): healthcheck probes both dashboard and cliproxy ports (M1)
compose.yaml healthcheck now checks :3000 and :8317 concurrently with
a 4.5s internal timeout, within Docker's 5s timeout budget.
Also:
- docs(docker): document npm lockfile ephemeral tradeoff above install
layer; note size-budget regression test as the practical safeguard (M3)
- docs(docker): drop :full row from Choosing an image table; add sibling
container note pointing to connect-your-app-to-cliproxy (Q3/docs)
- docs(docker): remove :full docker run block; fix release-tag sentence (Q3)
- docs(docker): fix raw URL in migration section (H1 parity)
- docs(docker): add Volume warning — 'down -v' deletes named volumes (L13)
- docs(docker): update What changes table — remove :full reference (Q3)
- docs(docker): add Image Signatures and SBOM section with cosign verify
and sbom download commands (M8/docs)
- changelog: add Unreleased entries for rc soak, cosign signing, :full
removal with migration guidance
* ci(docker): assert image-size budget per platform; add compose parity + breaking-change guard (M6/L9/L12)
- image-size.sh: add --platform flag; uses 'docker buildx imagetools
inspect' to sum compressed layer sizes from registry manifest for
linux/amd64 and linux/arm64 separately (M6)
- docker-release.yml smoke-test: runs size check for both platforms
- compose-parity.sh: diffs docker/compose.yaml vs
docker/docker-compose.integrated.yml for image name, ports 3000/8317,
volume mounts /root/.ccs and /var/log/ccs, ccs-net definition (L12)
- ci.yml: add compose-parity job wired to cliproxy runner (L12)
- breaking-change-guard.yml: fails PR if compose.yaml changes image name,
network name, or container_name without a feat!/fix! commit (L9)
* chore(ci): fix cosign shell substitution — use tr instead of bash @L expansion (L6/nit)
* test(docker): fix compose-parity port regex for variable-interpolated host ports
2026-05-16 13:33:12 -04:00
Kai (Tam Nhu) Tran and GitHub
b50c2db3ce
docs(docker): P3 — hoist two-command quickstart, restructure docker/README, add parity CI ( #1260 )
...
* docs: hoist Docker zero-install quickstart above npm install path
- Create docs/quickstart-snippet.md as canonical source for the
two-command flow (curl + docker compose up -d), wrapped in
<!-- quickstart-snippet-start/end --> markers
- Hoist the snippet into README.md immediately below the deprecation
banner, above all other install paths
- Rename old npm-only "## Quick Start" to "## Install on Host (npm)"
and move it below the Docker quickstart
* docs(docker): restructure README with zero-install first and migration section
- Reorder top-level sections: zero-install (canonical snippet with
markers), choosing an image, power-user ccs docker, prebuilt image,
connect your app to CLIProxy, migration, env vars, troubleshooting
- Add deprecation banner at the top pointing at the migration section
- Add ## Migration from ccs-dashboard:latest section with step-by-step
instructions covering compose down, data preservation, named volume
vs bind-mount path, and compose up with the new image
- Keep P1's Choosing an image table and P5's Connect Your App to
CLIProxy section intact, just repositioned
* test(docs): parity check for quickstart snippet across README files
Assert README.md and docker/README.md both contain the canonical
quickstart block verbatim, anchored by marker comments. Exits non-zero
and prints a diff on any drift.
* ci(docs): wire quickstart-parity test on push and PR
Runs tests/docs/quickstart-parity.sh on self-hosted runner whenever
docs/quickstart-snippet.md, README.md, docker/README.md, or the
test/workflow files themselves change. Fails fast on snippet drift.
2026-05-16 12:56:09 -04:00
Kai (Tam Nhu) Tran and GitHub
4748c452bd
fix(codex): self-heal ccsxp cliproxy provider ( #1243 )
2026-05-14 12:35:31 -04:00
Kai (Tam Nhu) Tran and GitHub
d61469edcb
fix(config): bind dashboard to loopback by default
2026-05-12 10:59:49 -04:00
Kai (Tam Nhu) Tran and GitHub
eb4bbfddf3
security(browser-mcp): restrict model-callable local file uploads/downloads to safe roots and deny sensitive paths ( #1220 )
...
* fix(browser): restrict file transfer paths
* fix(browser): normalize safe transfer paths
* fix(browser): reject sensitive transfer roots
2026-05-12 08:57:33 -04:00
Tam Nhu Tran
8b34060294
fix(dashboard): show real shared plugin registry state
2026-05-09 03:18:20 -04:00
Tam Nhu Tran
2a422b3bd3
feat(dashboard): add shared resource controls
2026-05-09 02:29:08 -04:00
Tam Nhu Tran
64e1d1f815
feat(auth): add shared resource controls
2026-05-08 11:15:28 -04:00
Kai (Tam Nhu) Tran and GitHub
74d73748ee
feat: support Codex fast service-tier aliases
...
* feat: support Codex fast service-tier aliases
* fix: send Codex fast tier as priority
2026-05-07 15:34:05 -04:00
Kai (Tam Nhu) Tran and GitHub
19a50a8dd8
feat: deprecate GitHub Copilot compatibility surfaces ( #1196 )
2026-05-07 13:06:03 -04:00
Kai (Tam Nhu) Tran and GitHub
8b681df455
fix: route Cursor auth through browser polling
...
Closes #1194
2026-05-07 11:25:17 -04:00
Kai (Tam Nhu) Tran and GitHub
1b5376239f
fix: preserve native Claude passthrough args
...
Closes #1189
2026-05-07 06:14:12 -04:00
Kai (Tam Nhu) Tran and GitHub
be9effcce3
feat: clarify account history sync route ( #1187 )
...
* feat: clarify account history sync route
* fix: clarify shared context command examples
* fix: report missing bare profile settings
2026-05-05 13:33:04 -04:00
Kai (Tam Nhu) Tran and GitHub
923683bf30
feat(cliproxy): route plus dashboard to maintained fork ( #1173 )
2026-05-03 13:01:04 -04:00
Tam Nhu Tran
e5fe86f520
feat: add native Claude effort override
2026-04-30 22:36:47 -04:00
Tam Nhu Tran
c0c856af98
docs(logging): add structured contract reference and bump Node engines to 18+
...
docs/logging-contract.md defines the canonical LogEntry shape, the 8
lifecycle stages, requestId propagation rules, redaction policy, and the
backend ordering guarantee (per-requestId monotonic ts at emit time) that
the dashboard logs UI consumes.
CLAUDE.md updated: Node.js 14+ -> 18+ (AsyncLocalStorage is more stable on
18+ across timer / microtask / dynamic-import boundaries).
Refs #1141 , #1138
2026-04-30 13:01:21 -04:00
Tam Nhu Tran
5013d411a7
feat(cliproxy): self-pause exhausted quota accounts
2026-04-28 20:35:15 -04:00
Tam Nhu Tran
a38c1a75ba
feat: integrate models.dev pricing metadata
2026-04-28 14:50:26 -04:00
Tam Nhu Tran
4309db89c3
feat(cliproxy): add local session affinity controls
2026-04-28 12:17:26 -04:00
Tam Nhu Tran
fe7cc6f9ba
fix(analytics): add native codex and droid collectors
2026-04-26 18:13:33 -04:00
Tam Nhu Tran
82c92aa940
feat(codex): align ccsxp with native cliproxy shortcut
2026-04-26 11:09:54 -04:00
Tam Nhu Tran
5094c23c43
docs(codex): document ccsxp history root
2026-04-24 15:26:44 -04:00
Tam Nhu Tran
3d22bb07f0
fix(cliproxy): route plus backend to maintained fork
2026-04-23 21:25:29 -04:00
Tam Nhu Tran
d5591913ef
fix(proxy): clarify shared port fallback and legacy 3456 handling
2026-04-23 15:00:50 -04:00
Tam Nhu Tran
15751e2db5
feat(proxy): add adaptive local port selection for OpenAI-compatible profiles
2026-04-23 14:47:01 -04:00
Tam Nhu Tran
572b184220
fix(ci): address reviewer follow-up findings
2026-04-22 15:41:35 -04:00
Tam Nhu Tran
ddfbcb63f4
docs(contrib): align local gate shortcuts
2026-04-22 15:12:24 -04:00
Tam Nhu Tran
478d64a50a
fix(cliproxy): quarantine exhausted quota accounts
2026-04-21 12:34:07 -04:00
Tam Nhu Tran
6604357b22
fix(browser): default browser tooling to manual opt-in
2026-04-20 21:15:31 -04:00
Tam Nhu Tran
039ed63a39
fix(browser): harden runtime policy edge cases
2026-04-20 21:01:19 -04:00
Tam Nhu Tran
7d02f55f9f
feat(browser): add explicit runtime policy controls
2026-04-20 21:01:19 -04:00
Tam Nhu Tran
8b2711062e
docs(proxy): document multi-profile proxy lifecycle
2026-04-20 12:45:10 -04:00
Tam Nhu Tran
f36c4a6e32
fix: keep browser setup config-only
2026-04-19 22:07:58 -04:00
Tam Nhu Tran
7ad8bbf0a1
feat: add browser setup flow for Claude attach
2026-04-19 22:00:16 -04:00
Tam Nhu Tran
16f81fc8a5
fix(cliproxy): preserve legacy openai-compat connectors on restart
2026-04-18 20:05:05 -04:00
Tam Nhu Tran
b52503300b
fix(browser): bootstrap managed attach profile setup
2026-04-18 17:18:14 -04:00
Tam Nhu Tran
8a17410f96
fix(browser): address platform and port review
2026-04-16 18:49:24 -04:00
Tam Nhu Tran
4e30c9b080
feat(cli): add browser automation commands
2026-04-16 18:49:24 -04:00
Tam Nhu Tran
3b17bc934a
docs(roadmap): note private-network startup fix
2026-04-16 00:08:25 -04:00
Tam Nhu Tran
8edb56331e
fix: clarify docker dashboard auth setup guidance
2026-04-15 21:15:41 -04:00
Tam Nhu Tran
1923d87a84
chore: merge dev into openai provider routing
2026-04-15 20:36:03 -04:00
Tam Nhu Tran
3b5941c60b
feat(cursor): split legacy bridge from cliproxy provider
2026-04-15 17:04:37 -04:00
Tam Nhu Tran
17187c4abd
feat(proxy): complete openai routing scope
2026-04-15 00:55:11 -04:00
Tam Nhu Tran
b346693c3a
docs(proxy): credit claude-code-router
2026-04-15 00:01:38 -04:00
Tam Nhu Tran
7b64852495
docs(proxy): document openai-compatible routing
2026-04-14 19:27:38 -04:00
Tam Nhu Tran
d6ec5eeebd
fix(ci): preserve AI review variable contract
2026-04-14 13:28:29 -04:00
Tam Nhu Tran
e1271e2dbf
fix(ci): restrict self-hosted PR-Agent comment triggers
2026-04-14 12:43:25 -04:00
Tam Nhu Tran
25216eaf33
feat(ci): migrate AI review to self-hosted PR-Agent
2026-04-14 12:39:52 -04:00
Tam Nhu Tran
87899a489c
fix(ui): finish dashboard i18n follow-up pass
2026-04-13 22:55:13 -04:00
Kai (Tam Nhu) Tran and GitHub
a18146b83e
Merge pull request #971 from kaitranntt/kai/feat/966-cursor-integration-usable
...
feat: make Cursor integration usable and supportable
2026-04-12 16:42:32 -04:00