Skip to content

Add model/theme settings and harden widget release flows - #11

Merged
Seungwoo321 merged 32 commits into
mainfrom
develop
May 28, 2026
Merged

Add model/theme settings and harden widget release flows#11
Seungwoo321 merged 32 commits into
mainfrom
develop

Conversation

@Seungwoo321

Copy link
Copy Markdown
Owner

Summary

  • 위젯과 코어 런타임 전반에 모델 선택, 테마 설정, 상태 지속성 기능을 추가해 Claude Code 사용 경험과 동작 일관성을 맞췄습니다.
  • dev-server 재시작 시 발생하던 일시적 503/연결 실패와 배포 브랜치 경쟁 상태를 보완해 전송 및 릴리스 안정성을 높였습니다.
  • 새 동작에 맞춰 문서, README, changeset, 테스트를 함께 갱신했습니다.

Changes

  • 위젯 설정에 modeltheme 옵션을 추가하고, provider·permission mode와 함께 localStorage에 저장되도록 확장했습니다.
  • 서버와 코어 provider가 요청별 모델 선택을 받도록 변경하고, SDK/ACP 경로 모두 Claude Code 기본 프리셋 및 모델 적용 흐름에 맞게 정리했습니다.
  • 위젯 열림 여부, 가시성, 설정 패널 상태를 복원하도록 orchestrator와 저장소 로직을 추가해 새로고침 후에도 이전 UI 상태를 유지하게 했습니다.
  • composer, stream, handoff modal, launcher, shadow root 전반에 테마 토큰을 적용하고, 작업 중 표시기가 툴 실행/응답 공백 구간에서도 유지되도록 개선했습니다.
  • SSE transport에 503 agent server not ready 재시도와 capped exponential backoff를 추가해 hot reload 직후의 일시적 실패를 자동 복구하도록 했습니다.
  • publish.yml에서 push 실패 시 rebase 후 재시도하도록 바꾸고, main→develop 동기화 충돌 시 버전 파일을 더 안전하게 병합하도록 보강했습니다.
  • 위 변경사항을 반영해 widget/permission/security/troubleshooting 문서, React 및 widget-core README, changeset 파일을 업데이트했습니다.
  • core, server, widget-core, transport, mount, settings 관련 테스트를 대폭 보강해 새 동작과 회귀 방지를 검증했습니다.

Test Plan

  • 위젯 설정 패널에서 provider, model, permission mode, theme를 변경한 뒤 새로고침해 값이 유지되는지 확인
  • SDK/ACP provider 각각에서 default, opus, sonnet, haiku 선택 시 요청이 정상 처리되는지 확인
  • dev-server 재시작 직후 프롬프트 전송 시 503/초기 연결 실패가 자동 재시도로 복구되는지 확인
  • 위젯을 닫거나 숨긴 뒤 새로고침해 composer open 상태와 widget visibility가 기대대로 복원되는지 확인
  • 다크/라이트/auto 테마에서 launcher, composer, stream, settings, picker 관련 UI 색상이 일관되게 적용되는지 확인
  • 릴리스 워크플로우에서 non-fast-forward push 및 main→develop back-merge 충돌 시나리오가 안전하게 처리되는지 확인

github-actions Bot and others added 30 commits May 27, 2026 04:54
설정 패널에 모델과 테마 선택 옵션을 추가하고, 스토어 변경에 따라 라디오 상태가 동기화되도록 구현했습니다. 관련 테스트를 보강했으며 위젯에서 테마 속성을 함께 노출하고 패널 스타일이 테마 변수 값을 사용할 수 있도록 정리했습니다.
설정 타입에 테마와 모델 선택 값을 추가하고 기본값 및 유효성 검사를 정의했습니다. 설정 스토어가 theme과 model 변경을 상태에 반영하고 provider 및 permissionMode와 함께 영속화하도록 확장했습니다. 저장소와 스토어 테스트를 보강해 테마와 모델의 저장 및 복원, 레거시 페이로드의 기본값 보정, 잘못된 값의 기본값 대체 동작을 검증했습니다.
위젯 설정 저장소가 theme과 model 값을 함께 보존하도록 수정하고, 마운트 시 저장된 테마가 host data-theme에 반영되도록 검증을 추가했습니다. 또한 패널 열림 상태와 위젯 표시 여부를 로컬 스토리지에 저장하고 재마운트 시 복원하는 동작을 테스트로 보강했습니다.
ACP 런타임의 인프로세스 SDK provider가 Claude 모델에서 system 역할 오류로 거부되던 문제를 바로잡는 변경을 반영했습니다. Claude Code preset 사용과 settingSources 고정을 검증하는 테스트를 갱신하고, 해당 패치 릴리스를 위한 changeset을 추가했습니다.
위젯 전체 표시 상태와 패널 열림 상태를 localStorage에 저장해 새로고침 후에도 이전 사용자 선택을 복원하도록 변경했습니다. 또한 shadow host의 data-theme 속성으로 전체 위젯 테마 토큰을 전환할 수 있게 해 다크 모드와 auto 테마를 공통 토큰 기반으로 적용하도록 정리했습니다.
트러블슈팅 문서에서 production 가드와 NODE_ENV 판별 위치를 현재 mount.ts 기준 경로와 라인 참조로 업데이트했습니다.
사용자 메시지 이후 활성 턴 상태를 추적해 도구 입력 스트리밍이 끝난 뒤 실행 대기 구간과 tool-result 이후 모델 재호출 구간에서도 assistant-pending 표시가 유지되도록 수정했습니다. 턴 종료와 오류 시에는 표시를 즉시 제거하고, 다단계 스트림 흐름 전반에서 표시가 올바른 시점에만 나타나는지 테스트를 추가했습니다.
섀도우 루트 기본 스타일이 light color-scheme 기준선을 선언하고 텍스트 색상을 폴백 토큰으로 읽는지 검증하는 테스트를 추가했습니다. 또한 dark 팔레트가 명시적 dark 테마와 auto 다크 모드에 동일하게 적용되는지 확인해 테마 토큰 회귀를 방지했습니다.
스트림 렌더러가 테마 토큰을 우선 사용하도록 스타일 값을 정리하고, 도구 결과 이후 모델 응답을 기다리는 동안 작업 중 인디케이터가 다시 표시되도록 동작과 문서를 보강했습니다. 관련 테스트를 추가해 대기 표시가 올바르게 유지되는지 검증했습니다.
에이전트 스트림 요청에서 모델 문자열을 선택적으로 받을 수 있도록 서버 요청 스키마와 컨텍스트 전달 경로를 확장했습니다. 비어 있거나 문자열이 아닌 model 값은 400 오류로 거부하고, 정상 요청은 팩토리 컨텍스트로 그대로 전달되는지 테스트를 추가했습니다.
컴포저 패널과 버튼, 칩 스타일을 테마 토큰 기반으로 전환하고 리사이즈 핸들 및 설정 버튼의 활성 상태를 속성으로 노출해 다크 테마와 테스트 환경에서도 상태를 안정적으로 판별할 수 있게 했습니다.
SDK provider에 Claude Code 프리셋 시스템 프롬프트와 설정 소스 고정을 추가하고 요청 모델 전달을 지원해 터미널과 동일한 컨텍스트 및 모델 선택 동작을 유지하도록 했습니다.
헤드리스 CSS 엔진에서 var() 기반 스타일이 인라인 값으로 유지되지 않는 점을 반영해 테스트를 안정화했습니다. 칩 배경과 테두리는 상수 기반으로 검증하고, 설정 버튼과 리사이즈 핸들의 시각 상태는 aria 및 데이터 속성으로 확인하도록 바꿔 테마 토큰 사용 시에도 의도를 정확히 보장합니다.
전송 계층 테스트에 theme/model 설정 필드를 반영하고, 기본 모델 센티널일 때는 요청 본문에서 model을 제외하는 동작을 검증했습니다. 또한 503 agent not ready 응답의 재시도 성공, 재시도 한도 초과, 502 비재시도, abort 중단까지 추가로 확인해 프리리트라이 동작 범위를 보강했습니다.
에이전트 서버가 재시작 중일 때 프록시가 반환하는 503 응답을 안전하게 재시도하도록 SSE 전송 로직을 보강했습니다. 초기 응답 전 실패에 대한 재시도 횟수를 늘리고 지수 백오프 상한을 추가해 일시적인 재기동 구간을 더 안정적으로 통과하도록 했습니다. 또한 기본 모델 센티널 값은 제외하고 실제 모델 설정만 전달하도록 정리했으며, SDK 및 ACP provider 테스트를 추가해 모델 전달과 터미널 기본 설정 동작을 검증했습니다.
보안 가이드에서 production 차단 설명에 연결된 `mountAgentDevtools()` 소스 경로를 현재 구현 위치에 맞게 수정했습니다. 문서 링크가 실제 코드와 일치하도록 정정해 추적 가능성을 높였습니다.
ACP 실행 파라미터에 모델 지정 옵션을 추가하고, 세션별로 마지막 적용 모델을 추적해 변경된 경우에만 session/set_model을 호출하도록 했습니다. 모델 설정 실패 시에는 잘못된 모델로 프롬프트가 실행되지 않도록 즉시 오류를 반환합니다.
릴리스 및 프리릴리스 publish 워크플로우에서 push가 non-fast-forward로 실패할 때 pull --rebase --autostash 이후 재시도하도록 보강했습니다. main에서 develop으로 동기화할 때는 충돌 파일의 버전을 비교해 더 높은 SemVer를 유지하도록 처리해 개발 브랜치 버전 회귀를 방지합니다.
React 패키지 README의 사전 응답 재시도 옵션 설명을 최신 동작에 맞게 갱신했습니다. 기본 재시도 횟수, 지수 백오프, 최대 백오프 제한과 dev-server 프록시의 503 응답 재시도 조건을 문서화했습니다.
플로팅 채팅과 위젯 전반에 적용되는 theme 설정 추가 내용을 changeset으로 기록했습니다. auto, light, dark 동작과 localStorage 지속성, data-theme 기반 색상 전환 방식, 각 표면의 다크 테마 처리 원칙을 정리했습니다.
위젯 가이드를 현재 widget-core 구현에 맞게 갱신했습니다. 코드 참조 경로와 라인 정보를 packages/react 기준에서 packages/widget-core 기준으로 정리하고, 설정 패널 설명에 모델 선택과 테마 옵션을 추가했으며, 저장되는 설정 범위와 관련 동작 설명도 최신 구현에 맞춰 수정했습니다.
widget 가이드의 소스 경로를 `packages/widget-core` 기준으로 정리하고 settings 항목 설명에 model 및 theme 옵션을 추가했습니다. 또한 widget-core README에서 사전 응답 재시도 기본값과 지수 백오프, 최대 백오프 설정을 최신 동작에 맞게 문서화했습니다.
핸드오프 모달의 하드코딩된 색상과 그림자 값을 CSS 커스텀 프로퍼티 기반으로 바꿨습니다. 상태 텍스트, 배경, 경계선, 버튼, 보조 텍스트가 `--adt-*` 토큰을 우선 사용하도록 조정해 호스트 테마와 더 자연스럽게 통합되도록 했습니다.
응답 수신 전 실패에 대한 재시도 정책 문서를 최신 동작에 맞게 정리했습니다. 기본 재시도 횟수를 4회로 반영하고, dev 서버 프록시의 `503 agent not ready` 케이스와 capped exponential backoff, `preResponseRetryMaxBackoffMs` 옵션을 설명했으며, 자동 재시도가 허용되지 않는 idempotency 경계도 changeset에 함께 명시했습니다.
보안 가이드에서 production 가드 설명이 가리키는 소스 경로를 현재 구현 위치에 맞게 수정했습니다. `mountAgentDevtools()`의 `isProductionBuild` 참조를 `packages/widget-core` 기준의 올바른 파일과 라인으로 바로잡았습니다.
모델 선택 기능 추가 내용을 changeset으로 정리했습니다. 설정 패널의 모델 옵션, 요청 본문 전달 방식, SDK provider와 ACP provider의 적용 흐름, 세션별 중복 설정 방지와 오류 처리, 그리고 서버 측 검증 범위를 릴리스 노트에 담았습니다.
런처 버튼의 배경색, 텍스트 색상, 그림자 색상을 CSS 커스텀 프로퍼티로 읽도록 변경했습니다. 위젯 기본 스타일은 유지하면서 호스트 환경에서 색상을 더 쉽게 오버라이드할 수 있게 했습니다.
가이드 문서의 소스 경로와 코드 위치 참조를 현재 widget-core 구조에 맞게 수정했습니다. 권한 모드 기본값과 production build 차단 로직을 설명하는 문서가 실제 구현 위치를 정확히 가리키도록 정리했습니다.
테스트와 소스 주석에서 오래된 내부 작업 번호 의존성을 제거했습니다. 설명은 유지하면서도 현재 코드 구조만으로 의미가 전달되도록 문맥을 정리했습니다.
widget-core 변경 사항을 배포에 반영하기 위한 changeset 문서를 추가했습니다. 위젯 가시성 상태 유지와 전체 턴 구간의 작업 표시기 동작 변경 내용을 각각 minor, patch 릴리스 노트로 기록했습니다.
@vercel

vercel Bot commented May 28, 2026

Copy link
Copy Markdown

The latest updates on your projects. Learn more about Vercel for GitHub.

Project Deployment Actions Updated (UTC)
agent-devtools-docs Ready Ready Preview, Comment May 28, 2026 1:25am

Request Review

@Seungwoo321
Seungwoo321 merged commit 88c256d into main May 28, 2026
2 checks passed
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.

1 participant