Tam Nhu Tran
63198ab1ff
docs(ui): add health redesign verification report and screenshots
...
Self-contained verification report at ui/docs/health-redesign/report.html
showing four states of the redesigned health page (initial, loading,
expanded issue, expansion fix). Screenshots at the same level so the
report's relative image refs resolve when opened directly.
Captures the design exploration delivered against the handoff brief
(plans/reports/handoff-260425-1417-health-page-redesign.md).
2026-04-25 16:29:47 -04:00
Tam Nhu Tran
90a3d330df
fix(ui): polish health page background and priority card layout
...
Iteration on top of the health redesign:
- layout.tsx: drop backdrop-blur transparency on the global header
(interfered with the new health page colored backdrop)
- health.tsx: switch from fixed full-viewport background to scoped
absolute positioning; replace unreliable external grain SVG (vercel
app) with an inline data URI that always loads
- health-priority-card.tsx: refine spacing, expansion behavior, and
visual hierarchy
2026-04-25 16:29:16 -04:00
Tam Nhu Tran
4d314ef2b7
chore: resolve merge conflicts and integrate health page redesign
2026-04-25 14:48:40 -04:00
Tam Nhu Tran
36ed091e4d
feat(ui): redesign health page with prioritized layout and premium aesthetics
2026-04-25 14:45:58 -04:00
Tam Nhu Tran
ba4fbcf75f
docs(ui): add HeroBar and rail-anchored demos to styleguide
...
The v1.1 design contract names three identity-strip patterns but the
styleguide previously only demoed PageHeader. Future contributors
visiting /_styleguide had no live preview of HeroBar or rail-anchored
identity, leaving the contract under-documented.
Add:
- 1a. HeroBar demo (canonical: home pattern) -- single-row dense hero
with logo + title + version badge + 4 inline stat tiles, dotted
background pattern, anonymized data
- 1b. Rail-anchored identity demo (canonical: cliproxy pattern) -- a
Config 3-pane layout where the left rail carries brand + Quick Setup
CTA + provider list + footer status, with NO top chrome
- 1c. PageHeader demo (existing, retitled with health pattern reference)
All demos use anonymized data (Provider A/B/C, Demo Dashboard, fake
metrics) so screenshots are safe to publish without Privacy mode.
2026-04-25 14:08:42 -04:00
Tam Nhu Tran
d9332907cc
docs(ui): drop redundant home/cliproxy screenshots from phase2 report
...
home and cliproxy were reverted to their original designs; before/after
screenshots would show identical content. Keep only health migration
screenshots and refocus the HTML report on the design-system docs
restructure (three identity-strip patterns).
2026-04-25 14:02:07 -04:00
Tam Nhu Tran
1a2fd848f0
refactor(ui): revert home/cliproxy migrations and restructure design system
...
User feedback caught a Phase 2 mistake: forcing home and cliproxy into
a one-size-fits-all PageShell + PageHeader chrome regressed density on
both pages.
- home: original 1-row hero (logo + title + version + 4 inline stats)
was split into PageHeader + KpiRow, doubling vertical footprint
- cliproxy: original rail-anchored brand was duplicated by a top
PageHeader, stealing ~80px from the 3-pane body
Resolution: revert both pages to dev-branch state, then restructure
ui/docs/design-system.md to extract THREE identity-strip patterns from
the canonical references rather than imposing one:
1. HeroBar (1-row dense) -> home pattern
2. Rail-anchored (no top chrome) -> cliproxy pattern
3. PageHeader (title + description) -> health pattern
Health stays migrated -- the Monitor archetype + PageHeader is a real
improvement there because the gauge + KPI row + group cards don't fit
the HeroBar pattern.
Future page migrations adapt to whichever identity-strip pattern fits
the page's content shape, not the other way around. design-decisions.md
gets a v1.1 revision row capturing the rationale.
2026-04-25 13:34:43 -04:00
Tam Nhu Tran
c59622fabd
fix(ui): restore click-through navigation on home KPI cards
...
PR-Agent caught a regression: pre-migration the four home stats had
onClick handlers navigating to /providers, /cliproxy, /accounts, and
/health. The Phase 2 migration dropped those handlers, removing the
shortcuts for all users.
Add an optional onClick prop to KpiCard. When supplied, the tile
promotes from a static <div> to a <button> with hover lift, keyboard
focus ring, and an accessible aria-label derived from the label.
Wire all four home KPIs back to their original navigation targets.
2026-04-25 13:18:44 -04:00
Tam Nhu Tran
339fcd81e6
docs(ui): add phase 2 visual preview with before/after screenshots
...
Self-contained HTML report at ui/docs/design-system-phase2-preview.html
with embedded base64 before/after screenshots so reviewers can scrub
the cliproxy / home / health migrations side-by-side without leaving
GitHub. Captured via Playwright with Privacy mode on; data anonymized.
2026-04-25 13:13:44 -04:00
Tam Nhu Tran
9a2c09357a
feat(ui): migrate cliproxy page to design system Config archetype
...
Wrap master-detail layout in PageShell + PageHeader + ConfigLayout.
PageHeader carries the brand strip (Zap icon + CLIProxy title +
account-management description) and refresh button. The existing
sidebar (Quick Setup CTA, sectioned providers list, variants list,
ProxyStatusWidget, footer connection summary) becomes ConfigLayout's
left rail; ProviderEditor and EmptyProviderState become the form pane.
Pure layout migration: every sub-flow still mounts correctly --
QuickSetupWizard dialog, AddAccountDialog (URL action=auth deep-link),
AccountSafetyWarningCard for gemini/agy, provider selection persisted
to localStorage and URL deep-link, all bulk pause/resume/solo/delete
mutations untouched. ProviderEditor (which contains the form + raw JSON
internally) remains as a single 'form' slot.
2026-04-25 13:13:14 -04:00
Tam Nhu Tran
5e3e554693
feat(ui): migrate health page to design system Monitor archetype
...
Hero gauge + status copy moved into a MonitorCard variant=terminal,
preserving the ccs doctor / live-ops aesthetic per locked decision #4 .
HealthStatsBar replaced by a 4-column KpiRow with severity tones
(Checks / Passed / Warnings / Errors). Each HealthGroupSection becomes
its own MonitorCard while keeping the existing accordion behavior
intact -- so check expansion, sort-by-severity, and live monitoring
continue to work unchanged.
PageHeader carries the version badge, last-scan relative time,
auto-refresh hint, ccs doctor copy action, and refresh button.
Pure layout + visual hierarchy migration -- no new metrics, no new
features. LOC: 263 -> ~245.
2026-04-25 13:12:41 -04:00
Tam Nhu Tran
3ae5f20dc8
feat(ui): migrate home page to design system Monitor archetype
...
Wrap in PageShell + PageHeader + MonitorLayout. Replace bespoke hero
stat row with KpiRow + 4 KpiCards (profiles, cliproxy, accounts, health
with status-derived tone). AuthMonitor and ErrorLogsMonitor become
MonitorCard children; the 'logs moved' callout becomes a MonitorCard.
Pure layout migration -- behavior preserved (navigation, configuration
warning Alert, hooks unchanged). Hero punch retained via tone-coded KPI
cards. LOC: 208 -> 173.
2026-04-25 13:12:08 -04:00
github-actions[bot]
b868852e63
chore(release): 7.74.0-dev.6 [skip ci]
2026-04-25 16:58:28 +00:00
Kai (Tam Nhu) Tran
283f866897
Merge pull request #1088 from kaitranntt/kai/feat/design-system-foundations
...
feat(ui): add design system foundations (PageShell + ConfigLayout + MonitorLayout)
2026-04-25 12:54:57 -04:00
Tam Nhu Tran
6261e150e3
fix(ui): address PR-Agent round 3 review on ConfigLayout duplicate DOM
...
Render exactly one layout at a time -- desktop 3-pane grid OR mobile
tabs -- via a useIsDesktop matchMedia hook gated at the lg breakpoint.
Previously the component rendered BOTH and toggled visibility via
Tailwind 'hidden lg:grid' / 'lg:hidden'. This duplicated FormSection
elements in the DOM, so document.getElementById() in SectionRail's
scroll-spy and click-to-jump would resolve to the (hidden) desktop copy
first on mobile -- making the rail attach to the wrong scroller and
never update the active section.
2026-04-25 12:48:06 -04:00
Tam Nhu Tran
caef89a7aa
fix(ui): address PR-Agent round 2 review feedback
...
MonitorLayout:
- Wrap ScrollArea in an explicit flex-col container with min-h-0. The
previous version relied on the parent (PageShell) being flex-col for
flex-1 to compute a definite height; that's fragile. The wrapper now
establishes its own flex column so the ScrollArea reliably scrolls
whether or not the caller's wrapper is flex.
ConfigLayout (MobileTabs):
- Derive active tab during render with fallback to first available, same
pattern applied to JsonPane in the previous round. Parent toggling
`left` or `json` props could change the available tabs and leave
the controlled Tabs value pointing at a tab id that no longer existed,
rendering an empty pane on mobile until the user manually switched.
2026-04-25 12:43:41 -04:00
Tam Nhu Tran
37de42d463
fix(ui): address PR-Agent review feedback on JsonPane and SectionRail
...
JsonPane:
- Reset active tab when the tabs prop changes. Previously activeTab was
initialized once and never re-synced; a parent swapping the tab set
(e.g. selecting a different entity) could leave us pointing at a stale
id, leaving the pane empty and Copy returning '{}'.
- Force textarea remount on data change in editable mode via key={text}.
Uncontrolled defaultValue retained the prior value when the underlying
config changed, so onBlur could save stale text.
SectionRail:
- Default scroll-spy root to the nearest scrollable ancestor instead of
the page viewport. FormPane wraps its body in a shadcn ScrollArea, so
IntersectionObserver with root:null was watching the wrong scroller and
the active section never updated as the form scrolled.
- observeRoot prop still wins when supplied for explicit overrides.
2026-04-25 12:36:58 -04:00
Tam Nhu Tran
e0d2ab0444
docs(ui): add design system visual preview + screenshots
...
Self-contained HTML report at ui/docs/design-system-preview.html with
embedded base64 screenshots so the PR review and the report itself remain
viewable without external hosting. Companion to the live /_styleguide
route.
Screenshots captured with Privacy mode ON via Playwright; all data
anonymized (Provider A/B/C, fake metrics) -- no real account names,
emails, or OAuth identifiers.
2026-04-25 12:21:33 -04:00
Tam Nhu Tran
64e78f6e69
feat(ui): add design system foundations
...
Introduce two locked page archetypes -- Config (3-pane) and Monitor
(KPI row + 12-col grid) -- wrapped by shared PageShell + PageHeader.
Primitives:
- page-shell/: PageShell, PageHeader, EmptyState, ErrorState
- config-layout/: ConfigLayout, ListPane, SectionRail, FormPane,
FormSection, JsonPane (read-only by default, opt-in editable)
- monitor-layout/: MonitorLayout, KpiRow, KpiCard, MonitorGrid,
MonitorCard (incl. variant="terminal")
Single ConfigLayout component, prop-controlled left rail:
- ListPane for multi-entity (cliproxy, accounts, providers)
- SectionRail for single-entity (codex, copilot, cursor, droid)
with IntersectionObserver scroll-spy
- omit for none
DEV-ONLY /_styleguide route gated by import.meta.env.DEV. Shows every
primitive plus composed Config (multi + single) and Monitor demos using
fully anonymized data (Provider A/B/C, fake metrics).
Phase 1 of dashboard design system unification. Existing pages untouched
this phase -- migrations land in Phase 2+.
Locked decisions in ui/docs/design-decisions.md:
1. In-app /_styleguide over Storybook
2. Archetype name: Monitor (not Dashboard)
3. JsonPane read-only by default
4. Health terminal aesthetic kept as variant
5. i18n per-page namespaces
6. SectionRail uses scroll-spy
2026-04-25 12:16:27 -04:00
github-actions[bot]
ba63758e8c
chore(release): 7.74.0-dev.5 [skip ci]
2026-04-25 16:10:07 +00:00
Kai (Tam Nhu) Tran
5dd5878bb4
Merge pull request #1086 from BlackJulySnow/main
...
feat: add extra models support for API profiles
2026-04-25 12:07:01 -04:00
Tam Nhu Tran
bc16c5168c
fix(ui/profiles): latch extraModels touch state for explicit-clear
...
The previous fix used react-hook-form's `dirtyFields.extraModels` to
gate forwarding of the empty value. RHF compares each value to its
`defaultValues` entry, so typing "x" and erasing back to "" reverts
the dirty flag to false — making it impossible to clear a saved
ANTHROPIC_EXTRA_MODELS through the dashboard.
Track a local boolean that latches true on the first onChange and
resets when the dialog closes. The latch survives a "type then
delete" round-trip, so the empty-string delete signal still reaches
the server, while a never-touched field still gets skipped to
preserve the existing saved value.
2026-04-25 12:00:50 -04:00
Tam Nhu Tran
9122f68dd4
fix(ui/profiles): preserve ANTHROPIC_EXTRA_MODELS on untouched edit-dialog save
...
The edit dialog cannot pre-populate `extraModels` from the existing
profile (the Profile type carries no env data), so the field always
opens blank in edit mode. Forwarding that blank value unconditionally
clobbered any saved ANTHROPIC_EXTRA_MODELS, since the PUT route treats
an empty string as a delete signal.
Track react-hook-form's `dirtyFields.extraModels` and only include the
field in the update payload when the user actually touched it. Typing
then clearing still marks the field dirty, so the explicit-clear UX
keeps working.
2026-04-25 11:45:51 -04:00
Tam Nhu Tran
7f14c565df
test: cover --extra-models parsing and CLIProxy sync dedup
2026-04-25 11:30:44 -04:00
Tam Nhu Tran
b1a0d1a175
fix(cliproxy/sync): dedup ANTHROPIC_EXTRA_MODELS entries against primary model
2026-04-25 11:30:33 -04:00
Tam Nhu Tran
a28d544abb
docs(api): document --extra-models flag in ccs api --help
2026-04-25 11:30:22 -04:00
Tam Nhu Tran
f01210fbf2
style: apply prettier formatting to extra-models changes
2026-04-25 11:30:11 -04:00
github-actions[bot]
eba53715e7
chore(release): 7.74.0-dev.4 [skip ci]
2026-04-25 15:28:27 +00:00
Kai (Tam Nhu) Tran
a3a4c856e0
Merge pull request #1087 from walker1211/fix/browser-mcp-devtools-targets
...
fix(browser): improve DevTools page creation and screenshot diagnostics
2026-04-25 11:24:57 -04:00
walker1211 and Claude Opus 4.7
785f439e9b
test(image-analysis): 隔离 hook e2e 环境变量
...
避免本机会话的 CCS_IMAGE_ANALYSIS_* 配置污染 e2e 子进程,确保 mock CLIProxy 场景稳定验证。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-25 14:46:34 +08:00
walker1211 and Claude Opus 4.7
4c46d6c5ae
fix(browser): 修复 DevTools 页面创建和截图诊断
...
兼容 Chrome DevTools /json/new 的 PUT 方法,过滤不可用的 top-chrome 页面目标,并在截图前对 0x0 viewport 给出明确错误。
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com >
2026-04-25 14:46:18 +08:00
github-actions[bot]
fb5b852b94
chore(release): 7.74.0-dev.3 [skip ci]
2026-04-24 21:05:44 +00:00
Kai (Tam Nhu) Tran
e2f91a6ed0
Merge pull request #1085 from kaitranntt/kai/fix/ccsxp-codex-history
...
fix(codex): align ccsxp history with native codex
2026-04-24 17:02:19 -04:00
Tam Nhu Tran
5094c23c43
docs(codex): document ccsxp history root
2026-04-24 15:26:44 -04:00
Tam Nhu Tran
8ffda0268d
fix(codex): align ccsxp history with native codex
2026-04-24 15:24:12 -04:00
B1GGersnow
2915ab0c40
feat: add extra models support for API profiles
...
Add ANTHROPIC_EXTRA_MODELS env var to allow each API profile to
configure additional models alongside the primary ANTHROPIC_MODEL.
These are synced to CLIProxy config.yaml during ccs cliproxy sync.
- profile-mapper.ts: parse ANTHROPIC_EXTRA_MODELS on sync
- profile-writer.ts: write extra models to settings.json
- shared.ts + create-command.ts: --extra-models CLI flag
- profile-routes.ts + route-helpers.ts: REST API support
- profile-dialog.tsx + api-client.ts: frontend input
2026-04-25 03:20:29 +08:00
github-actions[bot]
02dae9c5cf
chore(release): 7.74.0-dev.2 [skip ci]
2026-04-24 14:54:13 +00:00
Kai (Tam Nhu) Tran
94429aa659
Merge pull request #1084 from kaitranntt/kai/feat/1081-gpt-5-5
...
feat: add GPT-5.5 support to Codex catalogs
2026-04-24 10:50:49 -04:00
Tam Nhu Tran
4efd61ee34
feat: add gpt-5.5 to codex model catalogs
2026-04-24 10:30:59 -04:00
github-actions[bot]
a6170a967d
chore(release): 7.74.0-dev.1 [skip ci]
2026-04-24 04:37:56 +00:00
Kai (Tam Nhu) Tran
303d59b9c8
Merge pull request #1082 from kaitranntt/kai/chore/sync-main-release-7-74-into-dev
...
chore: sync main release into dev
2026-04-24 00:34:48 -04:00
Tam Nhu Tran
2931e1f093
chore: sync main release into dev
...
# Conflicts:
# package.json
2026-04-24 00:30:18 -04:00
semantic-release-bot
8ccf193fd4
chore(release): 7.74.0 [skip ci]
...
## [7.74.0](https://github.com/kaitranntt/ccs/compare/v7.73.1...v7.74.0 ) (2026-04-24)
### Features
* add browser setup flow for Claude attach ([7ad8bbf ](https://github.com/kaitranntt/ccs/commit/7ad8bbf0a1e03b03d85f81c1ca41c317afc0af2b ))
* **browser:** add explicit runtime policy controls ([7d02f55 ](https://github.com/kaitranntt/ccs/commit/7d02f55f9fba3fb81c0d1f1bfeb0183809de4d54 ))
* **browser:** 增加 artifact 持久化与导入导出能力 ([2f167d8 ](https://github.com/kaitranntt/ccs/commit/2f167d8445e294cadb6be8e1190a0d33188f0b22 ))
* **browser:** 增加 orchestration 执行策略增强 ([101396f ](https://github.com/kaitranntt/ccs/commit/101396f728dea649e1cb7e0d02e2a9ac8e66729a ))
* **browser:** 增加 Phase 10A recording 生命周期 ([17a3434 ](https://github.com/kaitranntt/ccs/commit/17a343405629178c1a082132069102b0d8f28e9c ))
* **browser:** 增加 Phase 6B mock response 能力 ([f133deb ](https://github.com/kaitranntt/ccs/commit/f133deb5399367cdadd2901fbb29032d39bb5d36 ))
* **browser:** 增加 richer request matching 能力 ([bd073ac ](https://github.com/kaitranntt/ccs/commit/bd073acf4736c337ee9d1d6ff616c27f124ca292 ))
* **browser:** 增加 sequence 组合块能力 ([0038b06 ](https://github.com/kaitranntt/ccs/commit/0038b063ac2eb98255d09e0755096d94bca70813 ))
* **browser:** 增加跨 page orchestration 能力 ([1833ed3 ](https://github.com/kaitranntt/ccs/commit/1833ed3ad612c290226208e6557eacb282bfd6b2 ))
* **browser:** 增强 assert_query 断言与诊断信息 ([4af9675 ](https://github.com/kaitranntt/ccs/commit/4af967559cd985b0829bbb197edcae1bb264bdc0 ))
* **browser:** 完成 browser MCP 第一阶段能力与配置打通 ([b90eae3 ](https://github.com/kaitranntt/ccs/commit/b90eae38928cce19c246b69f2c530947adc401f4 ))
* **browser:** 完成 browser MCP 第三阶段能力 ([cf2375e ](https://github.com/kaitranntt/ccs/commit/cf2375e169d808964a9c80077a657712630e6d35 ))
* **browser:** 完成 browser MCP 第五阶段页面控制 ([ff0e708 ](https://github.com/kaitranntt/ccs/commit/ff0e7085b815e290d61cff39d8099e61df6a793b ))
* **browser:** 完成 browser MCP 第六阶段 6A 最小拦截闭环 ([a93e0b6 ](https://github.com/kaitranntt/ccs/commit/a93e0b649447610bce3034c92b6e857c7f8d1e8b ))
* **browser:** 完成 browser MCP 第四阶段输入能力 ([e92a2c1 ](https://github.com/kaitranntt/ccs/commit/e92a2c11bfedd8c4d18cf591baa15e9236aacb68 ))
* **browser:** 完成 Phase 10A 录制动作规范化 ([5288387 ](https://github.com/kaitranntt/ccs/commit/5288387151e150b37990e6098d75c957c6d7e0ac ))
* **browser:** 完成 Phase 10B replay 能力 ([9d21e83 ](https://github.com/kaitranntt/ccs/commit/9d21e83d46da314d78189cbb483c0689b090738e ))
* **browser:** 完成 Phase 10C orchestration 能力 ([7785503 ](https://github.com/kaitranntt/ccs/commit/77855035f4d0f6cbd37209b25b11c6cc5360b4cd ))
* **browser:** 完成 Phase 8 文件传输能力 ([492ee5b ](https://github.com/kaitranntt/ccs/commit/492ee5b083520ac3d8e86d1cf26a677a940e5850 ))
* **browser:** 完成 Phase 9 拖拽与指针动作能力 ([844b5f6 ](https://github.com/kaitranntt/ccs/commit/844b5f6c428e2d2db3e301c805790689c4020661 ))
* **cliproxy:** add --json flag to catalog command ([92d76ca ](https://github.com/kaitranntt/ccs/commit/92d76cad89e00ece4bc7a91dd1f28a3b2b22ee54 ))
* **cliproxy:** add 'max' thinking level for Claude Opus 4.7 ([45fe7ab ](https://github.com/kaitranntt/ccs/commit/45fe7ab08666addb0937cc46bc02ceb1fb91588c ))
* **cliproxy:** add Claude Opus 4.7 support ([6105812 ](https://github.com/kaitranntt/ccs/commit/61058123e10de6ed21cadc0d1450b08cd28df6db ))
* **cliproxy:** add thinking config to catalog --json and test false values ([c1d0a4d ](https://github.com/kaitranntt/ccs/commit/c1d0a4d2eb15d69a42498d13b2fa9fbe763451e6 ))
* **cliproxy:** include model metadata in catalog --json output ([6fc2262 ](https://github.com/kaitranntt/ccs/commit/6fc22625ac3917d4066e6ea96df80ad5952a8f85 ))
* **cliproxy:** separate core and plus provider sections ([f6c86b7 ](https://github.com/kaitranntt/ccs/commit/f6c86b79fcbc041e6c2b586f62078739032aab40 ))
* **glmt:** fix sequential tool_use block handling ([a0f9176 ](https://github.com/kaitranntt/ccs/commit/a0f91761ed6c95b229eaca8102d18bd119a0da9b ))
* **proxy:** add adaptive local port selection for OpenAI-compatible profiles ([15751e2 ](https://github.com/kaitranntt/ccs/commit/15751e2db5cc223111f85986add5156ee03631a8 ))
* **proxy:** add HEAD method support for health probe endpoints ([baa58c9 ](https://github.com/kaitranntt/ccs/commit/baa58c9543d6ec65548dcdad7c281ce68b8ea0eb ))
* **proxy:** support profile-scoped local proxy ports ([94bf1fb ](https://github.com/kaitranntt/ccs/commit/94bf1fbfe9b970eb7ce86881e958ddc4880e0d79 ))
### Bug Fixes
* **browser:** default browser tooling to manual opt-in ([6604357 ](https://github.com/kaitranntt/ccs/commit/6604357b2262e06502be49f4678063b887404ce2 ))
* **browser:** harden Browser MCP sessions and artifacts ([7732b20 ](https://github.com/kaitranntt/ccs/commit/7732b2039ab8501669465f524dc27b3037a7c5b7 ))
* **browser:** harden runtime policy edge cases ([039ed63 ](https://github.com/kaitranntt/ccs/commit/039ed63a390da270fa5bb1685239508a21509d5c ))
* **browser:** preserve opt-in browser settings and env isolation ([c24033d ](https://github.com/kaitranntt/ccs/commit/c24033dc6b301c27a0fe2c75d1e4327222b14313 ))
* **browser:** 修复 download 事件的 pageIndex 过滤 ([40c718c ](https://github.com/kaitranntt/ccs/commit/40c718c584428a9dee61a15e172157935a7ad39f ))
* **browser:** 对齐 browser status 输出字段 ([acdb93e ](https://github.com/kaitranntt/ccs/commit/acdb93e1a8733c1c9eac803b04785a8113b1ea26 ))
* **browser:** 对齐 phase11e 与 upstream browser 配置体系 ([d8954e9 ](https://github.com/kaitranntt/ccs/commit/d8954e9453cb6d9d92f84eeb27db79e839d1e9ce ))
* **ci:** address reviewer follow-up findings ([572b184 ](https://github.com/kaitranntt/ccs/commit/572b18422076f03d2d8ccbfce802740148a5fe36 ))
* **ci:** isolate bun cache per job ([08edf1e ](https://github.com/kaitranntt/ccs/commit/08edf1eef4459927ef72b794df0969b33460dd81 ))
* **ci:** keep fast bucket stable for commonjs tests ([6d4dcc1 ](https://github.com/kaitranntt/ccs/commit/6d4dcc1174f4c6382233e12cfa9a211ddde367db ))
* **ci:** keep release workflows on full test coverage ([b314cf3 ](https://github.com/kaitranntt/ccs/commit/b314cf353ed38ea16919ba4fa0029dfc5cf66c0b ))
* **ci:** rely on idempotent dependency sync ([f4f33b0 ](https://github.com/kaitranntt/ccs/commit/f4f33b0b5f10c62d692ff81a9d444898e5db867c ))
* **ci:** stop caching node_modules in GitHub Actions ([1b3ca82 ](https://github.com/kaitranntt/ccs/commit/1b3ca82a8408c25ab3b7911c64483fc87a3bdbb6 ))
* **ci:** tighten slow bucket guardrails ([5af639d ](https://github.com/kaitranntt/ccs/commit/5af639ddf76ba7f84552d7b841c027c235cace1d ))
* **ci:** use PAT token for dev release pushes ([06fffd3 ](https://github.com/kaitranntt/ccs/commit/06fffd302506aff1cc645e41a87175ba5cde5cc1 ))
* **ci:** validate cached ui dependencies ([02747ed ](https://github.com/kaitranntt/ccs/commit/02747edb7266e3e260fd09a15ec28b78340d8c2c ))
* **cliproxy:** address Presto review feedback on Opus 4.7 ([0d09199 ](https://github.com/kaitranntt/ccs/commit/0d09199439d335d948ac1a7e48e00cac5b18be27 )), closes [atrvd/ccs#8 ](https://github.com/atrvd/ccs/issues/8 ) [#2 ](https://github.com/kaitranntt/ccs/issues/2 ) [#3 ](https://github.com/kaitranntt/ccs/issues/3 )
* **cliproxy:** guard against undefined catalog and add issueUrl field ([02c5a5c ](https://github.com/kaitranntt/ccs/commit/02c5a5c7a17d580606b4666362c6a9840a49e1d7 ))
* **cliproxy:** keep provider sections consistent for variants ([254abd5 ](https://github.com/kaitranntt/ccs/commit/254abd504f7e53a4b3b8b22d2ef20f18ae3e1b0a ))
* **cliproxy:** preserve adaptive thinking on opus 4.7 paths ([71deda5 ](https://github.com/kaitranntt/ccs/commit/71deda553ad84defdf9dfcc8b90fb7fc1d5c6833 ))
* **cliproxy:** preserve explicit false values in catalog --json ([f5520de ](https://github.com/kaitranntt/ccs/commit/f5520de42ad76ec9ed22bf36893e68d8fba0af4e ))
* **cliproxy:** quarantine exhausted quota accounts ([478d64a ](https://github.com/kaitranntt/ccs/commit/478d64a50ab7d6aef8507efe92971641ad523b09 ))
* **cliproxy:** route plus backend to maintained fork ([3d22bb0 ](https://github.com/kaitranntt/ccs/commit/3d22bb07f0d551959498c76939ba83dd4ee1d948 ))
* **cliproxy:** scope Opus 4.7 rollout to verified providers ([571538d ](https://github.com/kaitranntt/ccs/commit/571538dc1c3cf08929705f3efde9d944ba48de59 ))
* **cliproxy:** use adaptive thinking for Claude Opus 4.7 ([46920db ](https://github.com/kaitranntt/ccs/commit/46920dbc08a18c4c853547fe1e1ec32981e765de ))
* **husky:** re-exec pre-push under bash for sh compatibility ([dea704c ](https://github.com/kaitranntt/ccs/commit/dea704c57dea8ba9c9538ddea6638fbd4e5c7660 ))
* **image-analysis:** clear runtime env on native-read fallback ([4cf826e ](https://github.com/kaitranntt/ccs/commit/4cf826efa24dff5b173881452219e92a4f341381 ))
* **image-analysis:** clear runtime env on native-read fallback ([63082d4 ](https://github.com/kaitranntt/ccs/commit/63082d4aed903d83e09dc3ac85f630367fe7a32b ))
* keep browser setup config-only ([f36c4a6 ](https://github.com/kaitranntt/ccs/commit/f36c4a6e32c7daf92054707dc4f64eff462aafe5 ))
* preserve codex effort suffixes in dashboard profiles ([e2ca197 ](https://github.com/kaitranntt/ccs/commit/e2ca19739784d7ad864928af32abed314a48899c ))
* preserve supplemental codex effort variants ([3a63cc0 ](https://github.com/kaitranntt/ccs/commit/3a63cc04312b127cbaa31a1a2c2f58c1c3047515 ))
* **proxy:** avoid undefined status port output ([54c3b2d ](https://github.com/kaitranntt/ccs/commit/54c3b2d40b08f699715905b151d085d37c5af789 ))
* **proxy:** clarify shared port fallback and legacy 3456 handling ([d559191 ](https://github.com/kaitranntt/ccs/commit/d5591913efaada396e185fd522b9047476f2840b ))
* **proxy:** disambiguate activate without profile ([630a493 ](https://github.com/kaitranntt/ccs/commit/630a493ccad8e3acac3559947eb5a8b362b7f446 ))
* **proxy:** handle end-of-options parsing ([2a80f7b ](https://github.com/kaitranntt/ccs/commit/2a80f7b1c193b839bcf4af691ae5b84ac6f44fd5 ))
* **proxy:** handle legacy stop and preferred ports ([391bddd ](https://github.com/kaitranntt/ccs/commit/391bdddc2232836f9e49dcfa710c7ad1ffac19b9 ))
* **proxy:** harden stale daemon ownership checks ([1cfed73 ](https://github.com/kaitranntt/ccs/commit/1cfed73ca5bb8d1e8def81aeb63ebe36a074badd ))
* **proxy:** honor subcommand help flags ([dfd070c ](https://github.com/kaitranntt/ccs/commit/dfd070c9c6074424e1ce911c7a004547ce66d05f ))
* **proxy:** ignore legacy singleton session file ([f345cf4 ](https://github.com/kaitranntt/ccs/commit/f345cf441e474e1fecbef95fbff8c95351079721 ))
* **proxy:** parse flag options before profile args ([6928d8b ](https://github.com/kaitranntt/ccs/commit/6928d8bb65cb51ab6b1e1b7095989931c040da80 ))
* **proxy:** persist daemon state after startup ([c0c1198 ](https://github.com/kaitranntt/ccs/commit/c0c119867abfce30a9ddb6b8b9a4365809c897a7 ))
* **proxy:** preserve legacy state and exact ports ([24c2484 ](https://github.com/kaitranntt/ccs/commit/24c24847f7c981cc0654c2cd5a6310edca4609fe ))
* **proxy:** preserve running daemons on restart failure ([db32d15 ](https://github.com/kaitranntt/ccs/commit/db32d15d86316d07f1325443e218a1a642135219 ))
* **proxy:** retain explicit profile names in status ([afcb1ab ](https://github.com/kaitranntt/ccs/commit/afcb1abf9e507155f0978898ac5b9d565ec3af88 ))
* **proxy:** retry candidate ports on bind conflict ([8ad2763 ](https://github.com/kaitranntt/ccs/commit/8ad2763942d92ab665d7a2c742ca94ec969eac32 ))
* **proxy:** retry raced dynamic port binds ([7cf5553 ](https://github.com/kaitranntt/ccs/commit/7cf555356aa1d8b42c7860cc924381d4cc81aecb ))
* **proxy:** update tests for tool_result+text and disconnect handler changes ([b2a4579 ](https://github.com/kaitranntt/ccs/commit/b2a45790989a0a1c72fe1f8b72aff7f3f499b459 ))
* route codex remote https through local proxy chain ([7a9e67e ](https://github.com/kaitranntt/ccs/commit/7a9e67e6dc7de70709b6baaa3a9a1158b27fbd33 ))
* **runtime:** isolate nested Anthropic env across delegation paths ([f78c30a ](https://github.com/kaitranntt/ccs/commit/f78c30ac50cb2351a77b840c483ecb94c6a9ab6d ))
* **runtime:** strip inherited Anthropic routing env selectively ([9ae85b8 ](https://github.com/kaitranntt/ccs/commit/9ae85b82c12c45e73f0819ca33ad5ffd2f3ac323 ))
* **runtime:** strip reintroduced Anthropic routing env ([1fd2fb8 ](https://github.com/kaitranntt/ccs/commit/1fd2fb83fbf08ef9ef9a03fb69d9c6cea5f8eb37 ))
* **settings-profile:** pass selective Anthropic env stripping to Claude launches ([5881a50 ](https://github.com/kaitranntt/ccs/commit/5881a505d9b824aa9c7f8a9fb06d7122a94325d5 ))
* **settings-profile:** preserve non-routing env for Claude launches ([2191f0a ](https://github.com/kaitranntt/ccs/commit/2191f0a6c7ee9121bd28da6b56d58d9f50e119cc ))
* **test:** correct expected error message text ([889d3d8 ](https://github.com/kaitranntt/ccs/commit/889d3d89e9e1d93a55356def036806c2982506d9 ))
* **test:** stabilize proxy integration server ports ([e6ac91b ](https://github.com/kaitranntt/ccs/commit/e6ac91b9c716d21ba2a0493b4023efaa5e126975 ))
* **test:** stabilize suite isolation for dev pushes ([89a32c2 ](https://github.com/kaitranntt/ccs/commit/89a32c2ecd269d0d4b1da4455bac2fa942a5585d ))
* **transformers:** preserve tool ordering across proxy streams ([399f403 ](https://github.com/kaitranntt/ccs/commit/399f403322ad8be4ce23a286872fd19c76efa0f4 ))
* **ui:** surface the max thinking level in settings and help ([b3bc176 ](https://github.com/kaitranntt/ccs/commit/b3bc17639ca632cf456f3c0e983c1bc24e9546bc ))
### Hotfixes
* **cliproxy:** fallback from deleted CLIProxyAPIPlus to original backend ([b8b48a9 ](https://github.com/kaitranntt/ccs/commit/b8b48a99ba8d9e17398886a005c7c64f011ad6f3 )), closes [#1062 ](https://github.com/kaitranntt/ccs/issues/1062 )
* close cliproxy plus fallback gaps ([dd90ea7 ](https://github.com/kaitranntt/ccs/commit/dd90ea7e2fa4dcac6227009caacc1f76711c79b5 ))
* preserve plus fallback state and guard variant updates ([3e7ce17 ](https://github.com/kaitranntt/ccs/commit/3e7ce1743b491a7698b210df05bdc815cc02191b ))
### Documentation
* **browser:** 增补 11A 断言与诊断能力说明 ([26baa01 ](https://github.com/kaitranntt/ccs/commit/26baa019e3c54a0cad6cafab7a6002e04e6b0dbe ))
* **browser:** 增补 11B sequence 能力说明 ([78f3879 ](https://github.com/kaitranntt/ccs/commit/78f3879e19adfc90464fb2aca00a218b5efe55d5 ))
* **browser:** 增补 11C 执行策略能力说明 ([d0e6087 ](https://github.com/kaitranntt/ccs/commit/d0e6087126fdd9b5a0915229a2c6fd5395e9495c ))
* **browser:** 增补 11D 持久化与导入导出说明 ([3c791a4 ](https://github.com/kaitranntt/ccs/commit/3c791a467fba9605da341b10bacda460564d9759 ))
* **browser:** 增补 11E 跨 page orchestration 说明 ([f6ef59e ](https://github.com/kaitranntt/ccs/commit/f6ef59ef96fdce0571e1b6dd0580a5499615fd52 ))
* **browser:** 增补 browser MCP 第七阶段设计 ([a5ef77a ](https://github.com/kaitranntt/ccs/commit/a5ef77a3d8928440d927c84d207477993cae3d6a ))
* **browser:** 增补 browser MCP 第八阶段设计 ([26aa8f4 ](https://github.com/kaitranntt/ccs/commit/26aa8f4c20f4b60390387b40625ee5e5fa130bf6 ))
* **browser:** 增补 browser MCP 第六阶段设计 ([e0b58ee ](https://github.com/kaitranntt/ccs/commit/e0b58ee1621df9aa7fddc9b0fcdaef12ee865a0c ))
* **browser:** 增补 Phase 10A recording 能力说明 ([b477a75 ](https://github.com/kaitranntt/ccs/commit/b477a75d0e110d4611babefcc34aee4a77be5aeb ))
* **browser:** 增补 Phase 10B replay 能力说明 ([2099145 ](https://github.com/kaitranntt/ccs/commit/2099145e2cf0dd530cb144fb296c8e7e66e848c4 ))
* **browser:** 增补 Phase 10C orchestration 能力说明 ([c708bde ](https://github.com/kaitranntt/ccs/commit/c708bde817bc11ab87065e514078b2d2f725db9b ))
* **cliproxy:** clarify catalog --json output format in JSDoc ([f090c32 ](https://github.com/kaitranntt/ccs/commit/f090c32c2f23065dbc1633ab9689124cffe4411d ))
* **cliproxy:** document v18 config bump for Opus 4.7 ([faca421 ](https://github.com/kaitranntt/ccs/commit/faca421705ba7279e3c2ed3a74afca51b88d770c )), closes [atrvd/ccs#8 ](https://github.com/atrvd/ccs/issues/8 ) [#1 ](https://github.com/kaitranntt/ccs/issues/1 )
* **contrib:** align local gate shortcuts ([ddfbcb6 ](https://github.com/kaitranntt/ccs/commit/ddfbcb63f44eb6f379765bf5e44f42189d9012f3 ))
* **contrib:** clarify CI lanes and parity gates ([c9eaae1 ](https://github.com/kaitranntt/ccs/commit/c9eaae17c184a91addc2df85733db3d6339bb720 ))
* **proxy:** document multi-profile proxy lifecycle ([8b27110 ](https://github.com/kaitranntt/ccs/commit/8b2711062eb2076858d414f29af01d046642fa35 ))
* remove maintainer-only runner info from contributor docs ([a3f5aff ](https://github.com/kaitranntt/ccs/commit/a3f5aff45d06c3c200e568d92217a56525ec3dbf ))
* **test-bucket:** document slowTests addition criteria ([eab2b48 ](https://github.com/kaitranntt/ccs/commit/eab2b48f2c9a536453411d9bde2c8c5867f57162 ))
### Performance Improvements
* **test-bucket:** only serialize slow bucket, parallelize fast ([6b5c74a ](https://github.com/kaitranntt/ccs/commit/6b5c74aa4baaac2b43da73250e9e8e30f68aafa5 ))
### Tests
* align browser launch assertions with setup guidance ([341e612 ](https://github.com/kaitranntt/ccs/commit/341e612e48df4f9663cd3bd2e0ecd0403f00327c ))
* **browser:** split Browser MCP hook coverage by domain ([50fa27f ](https://github.com/kaitranntt/ccs/commit/50fa27f0a55b8ff8eeccbe5b19c4d04aa8724605 ))
* **browser:** 扩展 fulfill interception harness ([23eccb2 ](https://github.com/kaitranntt/ccs/commit/23eccb24f3efa285f6eb3894c0d58a3b0f15c987 ))
* **browser:** 扩展 network interception harness ([68b5683 ](https://github.com/kaitranntt/ccs/commit/68b56839db7914887db6a535e5b0ebb9c2beb8a4 ))
* **browser:** 扩展 richer matching interception harness ([ef06564 ](https://github.com/kaitranntt/ccs/commit/ef06564b6063e3837706fd8eae4e6d3f315f7f7d ))
* **browser:** 添加 Phase 6A 失败测试 ([491e9db ](https://github.com/kaitranntt/ccs/commit/491e9db51ebef504ac8580b0002df31888b9ce8d ))
* **browser:** 添加 Phase 6B fulfill 失败测试 ([1fbb53c ](https://github.com/kaitranntt/ccs/commit/1fbb53c4b1355d91b0031f6e5afdec5ec184c14b ))
* **browser:** 添加 Phase 7 richer matching 失败测试 ([cb415b4 ](https://github.com/kaitranntt/ccs/commit/cb415b41275bdade0570ef6c46fcb10004b6485b ))
* **browser:** 补充 Phase 6B 边界覆盖并同步文档 ([447b5c8 ](https://github.com/kaitranntt/ccs/commit/447b5c8bc1b311530bf533fa836218ae40f991e0 ))
* **browser:** 补充 Phase 7 回归覆盖并同步文档 ([126c30a ](https://github.com/kaitranntt/ccs/commit/126c30ac1af20b3ac6088b17e773ab5a43711f16 ))
* **ci:** cover pr workflow coverage ([cf5fc96 ](https://github.com/kaitranntt/ccs/commit/cf5fc96b7d25b55100045f3b3595aa2eb982445b ))
* **ci:** cover push quality workflow ([b9f5783 ](https://github.com/kaitranntt/ccs/commit/b9f5783facddb2decb702e378e558c5faac2fc80 ))
* **ci:** keep split browser MCP suites in slow bucket ([5081231 ](https://github.com/kaitranntt/ccs/commit/508123166774ecbcb76101bbd4aa6209f693b607 ))
* **cliproxy:** add catalog --json tests and clarify flag priority ([c1d462e ](https://github.com/kaitranntt/ccs/commit/c1d462ea41d4086cb6facb808131a51cb85730ff ))
* **cliproxy:** cover Claude Opus 4.7 in Claude provider catalog ([7492688 ](https://github.com/kaitranntt/ccs/commit/7492688effa2ab2dd12094dc4b6d9f7f2e8d909b )), closes [atrvd/ccs#8 ](https://github.com/atrvd/ccs/issues/8 ) [#4 ](https://github.com/kaitranntt/ccs/issues/4 )
* **model-pricing:** add cache pricing coverage for Opus 4.7 ([de0f8b3 ](https://github.com/kaitranntt/ccs/commit/de0f8b32642c2eda34efc8d06317f91ee00957ba )), closes [atrvd/ccs#8 ](https://github.com/atrvd/ccs/issues/8 ) [#6 ](https://github.com/kaitranntt/ccs/issues/6 )
* **model-pricing:** align Opus 4.7 cache coverage ([21ec661 ](https://github.com/kaitranntt/ccs/commit/21ec661106b649c0ff626501a71a461478a63edd ))
* **proxy:** cover multi-profile daemon ports ([8942be3 ](https://github.com/kaitranntt/ccs/commit/8942be3afcff581476aa82161ec7ddce0aaea35c ))
* **proxy:** gate proxy e2e coverage in checks ([69da284 ](https://github.com/kaitranntt/ccs/commit/69da284104dbd5ab0c367ac08fcafeb1cd079770 ))
### CI
* add fast test budget warning ([4c67750 ](https://github.com/kaitranntt/ccs/commit/4c677507d0e568418a79c6c6893f62e2fe560049 ))
* preserve fast test budget summary on failure ([aa4a05e ](https://github.com/kaitranntt/ccs/commit/aa4a05e85922c787cada4dc1111469a1bcfdcfd6 ))
2026-04-24 04:24:34 +00:00
Kai (Tam Nhu) Tran
6f815429c5
Merge pull request #1080 from kaitranntt/kai/release/promote-dev-to-main-260424
...
feat: promote dev to stable release
2026-04-24 00:21:07 -04:00
Tam Nhu Tran
af552f8bc8
chore(release): 7.73.1-dev.12
2026-04-24 00:15:12 -04:00
github-actions[bot]
654ce0d2f7
chore(release): 7.73.1-dev.12 [skip ci]
2026-04-24 04:07:19 +00:00
Kai (Tam Nhu) Tran
9fbc7cb104
Merge pull request #1078 from kaitranntt/kai/chore/sync-main-into-dev-260424
...
chore: sync main hotfixes into dev
2026-04-24 00:03:59 -04:00
Tam Nhu Tran
7dd9aba810
chore: merge main hotfixes into dev
2026-04-23 23:49:18 -04:00
github-actions[bot]
2fdada9e55
chore(release): 7.73.1-dev.11 [skip ci]
2026-04-24 03:25:00 +00:00
Kai (Tam Nhu) Tran
e4c7301a10
Merge pull request #1077 from kaitranntt/kai/fix/1042-codex-remote-proxy-hang
...
fix: route codex remote https through local proxy chain
2026-04-23 23:21:41 -04:00