하이라이트
- 데스크톱 플러그인을 만들고, 설치하고, 공유할 수 있습니다 (실험적) (#55246, #59469, #59489)
- 데스크톱 앱 경험을 새롭게 개선했습니다 (#56898, #58865, #55838, #57962)
- 플러그인과 SDK에 실험적 이미지 생성 및 판단(decision) 생성 API를 추가했습니다. 이미지 생성이나 판단 모델 워크플로우(typesafe, clef 등 참고)를 구현할 수 있습니다. (#59190, #59380, #58758)
- 플러그인이 이제
ctx.session.instructions.entry.put/list/remove를 사용해 키가 지정된 세션 지침을 추가하고 업데이트할 수 있습니다. 시스템 프롬프트를 직접 수정해 프롬프트 캐시를 무효화하는 대신, 각 변경 사항이 다음 단계에 작은 업데이트로 추가됩니다. 이 항목은 컴팩션(compaction)과 되돌리기(revert) 이후에도 유지되며, 추가 모델 턴을 시작하지 않습니다. (#56550)
- 옵트인 방식으로 데스크톱에서 Todo 도구를 복원했습니다 (#59092)
- 프로바이더/모델별로 프롬프트 캐시 TTL을 설정할 수 있습니다 (#59157)
호환성을 깨는 변경 사항
@opencode/ai 루트가 이제 Promise API입니다
@opencode/ai가 이제 @opencode/sdk 및 @opencode/client와 같은 방식으로 동작합니다. 패키지 루트는 Promise API를 내보내며, Effect API는 @opencode/ai/effect로 이동했습니다. @opencode/ai/promise는 제거되었고, 와일드카드 서브패스 익스포트는 프로바이더 및 프로토콜 엔트리 포인트를 명시적으로 나열한 목록으로 대체되었습니다. (#58847, #59183)
-import { AI } from "@opencode/ai/promise"
-import { LLM } from "@opencode/ai"
+import { AI } from "@opencode/ai"
+import { LLM } from "@opencode/ai/effect"
OpenCode GitHub Action이 제거되었습니다
OpenCode GitHub Action은 더 이상 배포되지 않습니다. 워크플로우에서 해당 항목을 제거하세요. (#59032)
TUI 플러그인은 OpenTUI 0.7이 필요합니다
@opencode/plugin은 이제 @opentui/core와 @opentui/solid 0.7.0을 필요로 합니다. 이전에는 0.6.8 이상이면 되었습니다. OpenTUI 0.6에 의존하는 플러그인은 업그레이드하기 전까지 설치에 실패합니다. OpenTUI 0.7에서는 커스텀 renderable이 생성 시점에 클래스로부터 훅을 읽습니다. 따라서 renderBefore, renderAfter, onLifecyclePass는 클래스 필드가 아니라 생성자에서 할당해야 하고, 리플렉션으로 훅을 추가한 뒤에는 refreshHooks()를 호출해야 하며, defineNativeIntegration()은 static nativeIntegration 선언으로 대체해야 합니다. 자세한 내용은 OpenTUI 0.7.0 릴리즈 노트를 참고하세요. (#59295)
코어
개선 사항
- 실험적 이미지 및 판단 생성 API 엔드포인트를 추가했습니다. (#59190)
- 카탈로그 프로바이더용 이미지 및 판단 엔트리포인트를 추가했습니다. (#59380)
- 통합 재빌드 성능을 개선했습니다. (#59402)
- 커스텀 모델 설정에서 모델 타입을 지정할 수 있습니다. (#59388)
- 모델 목록 API 요청을 타입별로 필터링할 수 있습니다. (#59355)
- external-directory 권한 검사가 프로젝트의 파일 시스템을 사용하도록 변경했습니다. (#59089)
- 코드 검색이 매우 긴 줄을 찾을 때 메모리 사용량을 줄였습니다. (#59205)
- 플러그인이 타입별로 이벤트 구독을 필터링할 수 있습니다. (#58864)
- 설정 가능한 프롬프트 캐시 TTL을 추가했습니다. (#59157)
- 이미지 크기 조정을 메인 프로세스 밖으로 옮기고, 유휴 이미지 메모리를 해제합니다. (#58820)
- 한 step 동안 반복되는 세션 히스토리 로딩을 줄였습니다. (#59091)
- 세션 미디어용 실험적 API와 옵트인 미디어 URI 지원을 추가했습니다. (#59103)
/api/info에 머신 호스트 이름을 추가했습니다. (#59090)
experimental.media_blob 뒤에서 콘텐츠 주소 지정(content-addressed) 블롭 스토리지를 세션 미디어용으로 실험적으로 추가했습니다. (#58656, #58741)
- 세션 히스토리를 가장 최근에 완료된 컴팩션 시점부터 시작합니다. (#59020)
- 저장되지 않는 durable 이벤트 페이로드 인코딩 작업을 줄였습니다. (#58923)
serverInfo에서 MCP 서버 제목을 노출합니다. (#58950)
- OpenCode Console 워크스페이스 설정을 설정 레이어로 적용합니다. (#57703)
- AI 패키지의 실험적 evaluations를 OpenAI Decisions, System One, Cloudflare Run 모델을 포함한 Decision API로 대체했습니다. (#58758, #58382, #58379, #58381)
- 도구 실행 속도를 높이기 위해 도구 스키마를 한 번만 변환합니다. (#58798, #58848)
- 변경 사항을 인식하면서도 Git 프로젝트 탐색을 더 빠르게 했습니다. (#58616)
- OpenCode Console 예산 한도와 Go 사용량을 작업이 차단되는 시점에 표시합니다. (#58694, #58714)
- 프로바이더가 보고한 세션 비용을 기록합니다. (#58562)
- macOS에서 Git을 더 안정적으로 찾습니다. (#58602)
- 프롬프트 step마다 모델 세부 정보를 한 번만 확인합니다. (#58601)
- 플러그인이 후속 모델 요청을 위한 세션 지침 엔트리를 관리할 수 있습니다. (#56550)
- ChatGPT로 로그인에 GPT-6.1 Terra와 GPT-6.1 Terra Fast를 추가했습니다. (#59359)
버그 수정
- 각 세션 step과 도구 호출 전에 플러그인 재로드가 끝날 때까지 기다립니다. @kernel-oops 및 @Tarquinen님 감사합니다. (#51133)
- 프로바이더가 보고한 토큰 수를 기준으로 세션 컴팩션 크기를 정해 사용 가능한 컨텍스트를 보존합니다. (#59441)
- 사용할 수 없는 models.dev API 엔트리포인트를 건너뛰어, 모델 카탈로그 업데이트가 실패하지 않도록 했습니다. (#59475)
- 서버가 응답을 인코딩할 수 없을 때 참조 ID와 함께 서버 오류를 반환합니다. (#59459)
- 모델 요청이 실행 중인 세션을 미리 준비(warm)하지 않도록 했습니다. (#59325)
- 마이그레이션 중에도 기존 MCP
codemode 설정을 유지합니다. @tneemo님 감사합니다. (#59126)
eu 및 us 멀티 리전에 올바른 Vertex AI 엔드포인트를 사용합니다. (#59335)
http:// 또는 https://를 포함한 Databricks 호스트를 허용합니다. (#59334)
- 패치 편집으로 파일을 자기 자신으로 이동할 때 파일이 손상되지 않도록 했습니다. (#59197)
- 커스텀 명령 입력에서 리터럴
$0과 $ARGUMENTS 텍스트를 그대로 보존합니다. (#59198)
- 종료 시 프로젝트 위치를 동시에 닫습니다. (#59326)
- 끝의 슬래시를 포함해 동등한 디렉터리 경로를 하나의 위치로 처리합니다. (#59327)
- tuple, default, 키워드와 유사한 인자가 있을 때 Kimi에 올바른 도구 스키마를 전송합니다. (#59207)
execute 권한이 거부되면 Code Mode MCP 도구를 직접 노출합니다. (#59315)
- 위치와 프로세스 간에 OAuth 자격 증명 갱신을 조정합니다. (#54023)
- 원격 Git 브랜치를 올바르게 나열하고 검색합니다. 원격 이름만 단독으로 표시하지 않습니다. (#58597)
- AVIF, HEIC/HEIF, QuickTime, M4A 첨부 파일을 올바르게 감지합니다. (#58480, #58886, #58887)
- 장시간 실행되는 도구 호출과 변경되지 않은 훅 모델 요청이 유지하는 메모리를 줄였습니다. (#58448, #58449)
- 모든 메시지를 읽지 않고 세션 diff를 로드해, 대형 세션의 성능을 개선했습니다. (#57686)
- 세션 이벤트가 동등한 디렉터리 경로를 사용할 때도 활성 위치를 유지합니다. (#56259)
- 호환성 스킬은 자체 소스가 변경될 때만 다시 로드합니다. (#59086)
- 설정이 변경되지 않았을 때 불필요한 카탈로그 업데이트를 발행하지 않습니다. (#56267)
- 세션 폼을 폴링하는 동안 유휴 상태이거나 삭제된 프로젝트 위치를 부팅하지 않습니다. (#59083)
- 에이전트 및 프로바이더 목록을 반환하기 전에 플러그인을 기다려, 카탈로그가 불완전해지는 것을 방지합니다. (#59082)
- 프로젝트 디렉터리가 삭제된 후에도 세션과 지침 엔트리를 관리할 수 있습니다. (#58997)
- 퍼지 파일 검색을 처음 사용할 때만 시작해 프로젝트 시작 작업을 줄였습니다. (#58959)
- 종료가 멈추면 10초 후 종료하고 대기 중인 작업을 보고합니다. (#58817)
- 변경되지 않았다면 다시 내려받지 않고도 모델 카탈로그를 최신 상태로 유지합니다. (#58813)
- xAI Responses의
top_k 설정을 보내고, 지원되지 않는 페널티는 더 이상 보내지 않습니다. (#58868)
- Groq에서 공통 병렬 도구 호출 및 service-tier 설정을 적용합니다. (#58871)
- 제한된 요청을 컨텍스트 오버플로우로 잘못 보고하지 않고 재시도합니다. (#58866)
- OpenAI Chat finish reason 뒤에 도착한 스트리밍 텍스트와 reasoning을 보존합니다. (#58851)
- AWS REST JSON 오류 타입의 위치와 상관없이 오류를 일관되게 분류합니다. (#58770)
- 큰 base64 첨부 파일을 지연이나 멈춤 없이 검증합니다. (#58811)
- Bedrock 스로틀링 오류를 컨텍스트 오버플로우 대신 레이트 리밋으로 재시도합니다. @Irish-Joseph님 감사합니다. (#58759)
- 서버가 잘못된 MCP 도구를 반환해도 정상 도구를 계속 사용할 수 있게 합니다. (#58350)
- 디렉터리를 가로질러 절대 지침 파일 glob을 매칭합니다. @heimoshuiyu님 감사합니다. (#58749)
- Bedrock 엔드포인트 URL에 설정된 프로바이더 리전을 사용합니다. (#58538)
- 알 수 없는 OpenAI Chat finish reason을 처리하며, 응답을 실패시키지 않습니다. (#58608)
- 엔드포인트 변환으로 변경 사항이 없을 때 불필요한 Azure 모델 업데이트를 피합니다. (#58600)
- 불투명한 브라우저 스크린샷에는 JPEG를 우선 사용해 첨부 파일 크기를 줄입니다. (#56990)
- 호환 호스트가 형식을 생략하면 바이트를 기준으로 생성된 이미지 타입을 감지합니다. (#58475)
- 세션이 긴 도구를 실행하거나 입력을 기다리는 동안 프로젝트 서비스를 유지하며, 24시간 비활성 상한을 둡니다. (#57274)
- 관련 없는 설정 변경과 호환성 스킬 업데이트 폭주로 스킬이 반복 재로드되지 않도록 방지합니다. (#56260)
TUI
개선 사항
- 애니메이션되는 세션 탭 펄스가 보이는 동안 CPU 사용량을 줄였습니다. (#59235)
- 통합 선택기에서 OpenCode Go보다 OpenCode Console을 먼저 나열합니다. (#59107)
- OpenCode Console 사용량 한도에 대해
/usage, 모델 선택기, 프롬프트, 사이드바, 경고, 오류 세부 정보를 추가했습니다. (#58731)
- 여러 프로세스가 CLI 서비스 파일을 동시에 갱신할 때도 서비스 등록을 더 안정적으로 합니다. (#59105)
버그 수정
opencode run --format json의 서버 연결 오류를 JSON으로 반환합니다. @andreivince님 감사합니다. (#59366)
- 붙여넣은 프롬프트 텍스트를 다시 복사할 때 원본을 보존합니다. (#59209)
- Windows에서 파일이 잠시 잠겨 있어도 백그라운드 서비스를 안정적으로 업데이트합니다. (#59105)
- 백그라운드 서비스 상태 디렉터리를 도구 셸에서 분리하고, 포트를 막고 있는 프로세스를 식별합니다. (#58815)
- 브랜치를 전환한 후 Git 브랜치 세부 정보를 새로 고칩니다. (#58982)
- 플러그인 슬롯이나 라우트가 일반 텍스트를 렌더링해도 TUI가 계속 실행되도록 합니다. @anmol0b 및 @Tarquinen님 감사합니다. (#58144)
- 지원되는 CLI 명령 어디에서든
--server와 --standalone을 인식합니다. (#58505)
- 닫힌 세션과 백그라운드 세션의 트랜스크립트를 해제해 메모리 증가를 방지합니다. (#58434, #57025)
- 원격 액세스 터널이 HTTP 프록시를 통해 연결되도록 합니다. (#58464)
- 개발 빌드가 릴리즈 빌드와 서버, 데이터베이스, 포트를 공유하지 않도록 분리했습니다. (#58331)
데스크톱
개선 사항
- 설정 › 확장 › 플러그인에서 데스크톱 플러그인을 관리합니다. (#59489)
- 데스크톱 줌 설정을 영구적으로 저장합니다. (#59277)
- 옵트인한 경우 데스크톱 디버그 빌드에서
SIGUSR2로 힙 스냅샷을 캡처합니다. (#58317)
- 브라우저 탭에 열린 세션 제목을 표시합니다. (#59131)
- todowrite 작업을 컴포저 위에 표시합니다. (#59092)
- 세션 탭으로 돌아올 때 세션 히스토리를 한 번만 로드합니다. (#59166)
- 숫자 키로 질문에 답할 수 있고, 다중 선택 항목은 체크박스로 표시합니다. (#58595)
- 위치 선택기에 항상 사용할 수 있는 프로젝트 추가 작업을 추가했습니다. (#57962)
- 모든 메시지에서 되돌리기(rewind)나 포크(fork)를 할 수 있습니다. (#58865)
- 라인 코멘트를 편집하고 셸 출력을 복사할 수 있습니다. (#58970, #58974)
- 메시지 안의 Mermaid 다이어그램을 훨씬 빠르게 렌더링하고, 열 너비에 맞게 크기를 조정합니다. (#57483, #57004)
- 데스크톱 디버그 빌드에 옵트인 메모리 로깅과 원격 디버깅을 추가했습니다. (#58315)
- 실험적 Sources 설정 뒤에서 한 턴의 웹 소스를 표시합니다. (#58307)
- 완료된 셸 알림에서 셸 출력으로 바로 이동합니다. (#58663)
- 음성 통화 패널이 떠 있어도 컴포저를 사용할 수 있습니다. (#58587)
- 기본으로 Soft Radar 활동 스피너를 사용하고, 실험적 변형을 제공합니다. (#58010, #57903)
- 실험적 새 모델 선택기를 추가했습니다. (#58413)
- 데스크톱 베타에서 실험적 Console 음성 통화를 추가했습니다. (#58249)
- 타임라인 너비 설정을 추가했습니다. (#58308)
- 명령, 세션, 모델 검색 목록에 고정된 섹션을 추가해 개선했습니다. (#58222)
- 최근에 닫은 세션에서 검색할 수 있습니다. (#55721)
- 확장 설정과 스킬을 사이드 탭에서 엽니다. (#58023)
- 세션 확장 목록에 마우스를 올리면 열리며, 키보드 탐색을 따릅니다. (#58021)
- 줌 컨트롤이 있는 동영상 미리보기를 추가했습니다. (#57924)
- 생성된 프로젝트 아바타와 실험적 아바타 스타일 전환기를 추가했습니다. (#57871, #57930)
- 새 탭 보기에 최근 닫은 사이드 탭을 추가했습니다. (#57863)
- 검색 가능한 프롬프트 히스토리 선택기를 추가했습니다. (#57716)
- 명령 팔레트에서 설정을 찾을 수 있습니다. (#57651)
- 대기 중이거나 steer된 메시지를 묶고, 연속된 사용자 메시지를 하나의 메타데이터 줄로 묶습니다. (#57561, #57552)
- 파일 트리와 폴더 선택기의 성능을 개선했습니다. (#57573, #57557)
- 새 결과를 불러오는 동안에도 브랜치 검색 결과가 보이도록 유지합니다. (#57531)
- 세션 헤더에 세션 세부 정보 메뉴를 추가했습니다. (#57528)
- 하위 에이전트의 모델, 상태, 경과 시간을 컴포저 영역에 표시합니다. (#57473)
- 탭 메뉴에서 세션을 삭제하고, Ctrl+R로 현재 세션 이름을 바꿀 수 있습니다. (#57453, #57423)
- 세션 요약 및 프로젝트 메뉴 작업을 복원했습니다. (#57781)
- 백그라운드 활동 캡슐을 왼쪽, 가운데, 오른쪽에 두거나 숨길 수 있습니다. (#57962)
- 세션 헤더와 위치 메뉴에 프로젝트 및 워크트리 세부 정보를 표시합니다. (#57962)
- 디버그 바에 텍스트 렌더링 컨트롤을 추가했습니다. (#57326)
- 백그라운드 작업의 경과 시간을 표시합니다. (#57218)
- 스트리밍 Markdown 렌더링의 안정성과 성능을 개선했습니다. (#57016)
- 사이드 패널을 분할하고, 탭이 있는 드래그 가능한 하단 패널을 추가했습니다. (#56960)
- 연결, 세션, 설정 화면 전반에 일관된 MCP 로그인 및 오류 상태 링크를 추가했습니다. (#57962)
- 여러 파일 탭을 한 번에 열고, 사이드 패널 콘텐츠를 탭에서 열 수 있습니다. (#57182, #57094)
- 세션을 steer하면 실행 중인 작업을 백그라운드로 옮깁니다. (#57142)
- 타임라인이 컴포저 아래에서 스크롤되어도 콘텐츠가 계속 보이도록 합니다. (#57141)
- 설정을 서버별 전환기가 있는 평면 목록으로 단순화했습니다. (#57962)
- 선택한 타임라인 또는 터미널 텍스트를 컴포저에 인용합니다. (#55664, #58420)
- 제목 표시줄에서 온라인 서버 전체의 세션을 검색합니다. (#57962)
- 모션 줄이기(Reduce motion) 외관 설정을 추가했습니다. (#57103)
- 새 세션 위치 선택기에 모든 서버의 프로젝트를 표시합니다. (#57962)
- 검색 가능한 대화상자에서 즐겨찾기와 최근 모델을 선택할 수 있습니다. (#55838)
- 새 세션 위치 선택기를 컴포저 아래에 배치합니다. (#56952)
- 메시지와 컴포저의 썸네일에서 이미지 미리보기를 바로 엽니다. (#56896)
- 간소화된 위치 선택기에서 현재 브랜치를 기준으로 새 워크트리를 시작합니다. (#57962)
- 컴포저 활동 캡슐에서 실행 중인 하위 에이전트와 셸을 관리합니다. (#57962)
- 각 서버의 프로젝트를 동기화하고, 홈에서 자주 사용하는 프로젝트를 우선 표시합니다. (#57962)
- 설정에서 Focus와 Pro 인터페이스 레이아웃 중 선택할 수 있습니다. (#56898)
- 터미널을 사이드 패널 탭으로 엽니다. (#57962)
- 하나의 새 세션 위치 대화상자에서 프로젝트와 워크트리를 선택합니다. (#57962)
- 기본적으로 하위 에이전트를 별도의 타임라인 행으로 표시합니다. (#57962)
- 세로 탭용 사이드바 토글을 추가했습니다. (#55646)
- 사이드 패널 탭용 ⌘1–9 및 ⇧⌘[ / ⇧⌘] 단축키를 추가했습니다. (#57301)
- 세션 위치를 사용할 수 없을 때 새 디렉터리나 워크트리를 선택할 수 있습니다. (#56087)
- 모델 관리, MCP, 포크 대화상자를 간결한 검색 목록으로 새로 고쳤습니다. (#56029, #56028)
- 이후의 Windows 데스크톱 업데이트를 약 1초 만에 설치합니다. (#55933)
- Execute 행에서 개별 Code Mode 도구 호출을 표시합니다. (#55649)
- Commentary 타임라인 카테고리와 표시 설정을 추가했습니다. (#55248)
- 메시지에서 다른 세션으로 가는
@ 링크를 지원합니다. (#57480)
- 세션 헤더, 제목 표시줄, 컴포저, 파일 트리, 브라우저 패널, 타임라인, 설정 전반의 간격, 정렬, 테두리, 타이포그래피를 다듬었습니다. (#58195, #57776, #57570, #57782, #57336, #57363, #58100, #58979)
버그 수정
- 중복된 탭 단축키를 막고, 설치되지 않은 플러그인 명령을 단축키 목록에서 제거합니다. (#59499)
- todo 패널에서 todo 항목이 줄어들지 않도록 합니다. (#59430)
- 질문이 바뀔 때도 질문 도크의 답변과 컨트롤 위치를 올바르게 유지합니다. (#59383)
- @ 메뉴가 검색하는 동안 열려 있도록 합니다. (#59425)
- macOS에서 Cmd+Q 후 종료가 완료되도록 합니다. @anmol0b님 감사합니다. (#59144)
- 설정에서 현재 세션 위치의 MCP 서버를 전환할 수 있습니다. (#59132)
- 이전 이동을 놓쳤을 때도 steering 메시지를 전달합니다. (#58984)
- 검색하는 동안 세션 및 명령 팔레트 검색 결과가 안정적으로 유지되도록 합니다. (#58908, #57479)
- 프로젝트 검색을 프로젝트 목록으로 제한합니다. (#58978)
- 사용자 지정 Close tab 단축키가 터미널과 브라우저 탭도 닫을 수 있게 합니다. (#58945)
- 실시간 상태 행이 컴포저 위에서 튀거나 빈 간격을 남기지 않도록 합니다. (#58691, #58697)
- 열린 대화상자 뒤에서도 브라우저 탭이 움직이지 않도록 합니다. (#58958)
- 사이드바나 패널이 움직이는 동안에도 사이드 패널 콘텐츠와 브라우저 페이지가 보이도록 합니다. (#58202, #58185)
- 세션 diff를 안정적으로 렌더링합니다.
- 적절한 경우 터미널, 사이드 패널, 대화상자, 컴포저에서 키보드 포커스를 유지합니다. (#57980, #57297, #56273)
- 비어 있는 브라우저 및 사이드 패널 탭을 자동으로 닫지 않고 보존합니다. (#58440)
- 닫힌 트랜스크립트, 버려진 도구 결과 이미지, 유지되던 UI 배치, 중단된 타임라인 작업을 해제해 데스크톱 메모리 사용량을 줄였습니다. (#57025, #58434, #58427, #58560, #58447, #58439, #58432)
- 파일 트리에서 가로 스크롤과 고정된 변경 배지를 복원합니다. (#58117)
- 추론만 있는 턴에서도 실시간 Thinking을 표시합니다. (#58299)
- 처음 보이는 턴을 완료한 후에는 이전 히스토리 로딩을 멈추고, 첫 트랜스크립트 페이지를 우선합니다. (#57700, #57741)
- 새로 고치는 동안에도 홈의 프로젝트 및 세션 목록이 안정적으로 유지되도록 합니다.
- 삭제된 세션이 홈에 다시 나타나지 않도록 합니다. (#55349)
- 여러 단어로 된 제목을 포함해 @ 멘션에서 세션을 즉시 찾습니다. (#57683)
- 변경 사항을 서버와 동기화하는 동안에도 대기 중인 메시지를 편집할 수 있습니다. (#57569)
- 이미지 및 동영상 URL을 브라우저 패널에서 엽니다. (#57562)
- 제출된 생성 폼을 완료로 표시하고, 각 응답을 한 번만 전송합니다. (#57537)
- 재사용 가능한 뷰, 가상화된 중간 크기 파일, 캐시된 diff로 파일 보기 성능을 개선했습니다. (#57551)
- 추적되지 않은 폴더를 펼칠 수 있는 하나의 검토 행으로 묶습니다. (#57527)
분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.