5.1.32는 5.1.31이 되었어야 했던 릴리즈입니다. 5.1.31은 npm에 배포되지 않았습니다. 릴리즈 파이프라인의 두 검사가 어떤 패키지도 배포되기 전에 이를 중단시켰습니다. 하나는 macOS Intel 데스크톱 엔진, 다른 하나는 Linux musl 빌드에서 실행되었습니다. 두 시점 사이에 omo 자체는 변경되지 않았으므로, 5.1.30에서 업그레이드하는 사용자에게는 아래 모든 항목이 새로운 내용입니다. 공증(notarization) 검사는 이제 Apple의 티켓이 Gatekeeper에 도달할 때까지 기다리며, musl 스모크 테스트는 종료된 호스트 슈퍼바이저를 누수로 보고하지 않습니다. (#10081, #10082)
omo는 senpi 2026.10.12에서 실행되며, 긴 세션이 셸 명령마다 커지지 않습니다. 종료된 bash 세션은 이전에 헤드리스 터미널 화면 전체(10,000줄 스크롤백과 리플레이 기록, 4,000줄 출력 기준 약 20MB)를 유지했고, 32개 세션 제한에 의해 밀려날 때까지 바쁜 세션이나 작업 호스트는 명령마다 그만큼 커졌습니다. 이제는 마지막으로 보이는 화면과 제한된 출력만 유지하며, 활성 터미널의 리플레이 기록은 문자당 약 31바이트 대신 평평한 문자열로 저장됩니다. 압축이 승인된 후에는 프롬프트, 재시도, 재개가 압축된 컨텍스트를 사용하므로, 들어가는 세션이 "Context remains above the compaction threshold" 오류로 거부되거나 두 번 압축되는 일이 없습니다. 한 프로바이더 계정의 할당량이 소진되면 같은 계정의 다른 모델은 건너뛰고, 압축은 아직 응답 가능한 모델에서 실행되며, 오류 메시지는 원시 429 JSON 대신 프로바이더, 초기화 시각, 그리고 /model을 통한 해결 방법을 알려 줍니다. ChatGPT 구독의 GPT-6.1 Sol, Fast, Ultrafast는 500,000 토큰 컨텍스트 윈도우를 사용합니다. 웹 검색은 실제 테스트를 거친 경로에서 활성 모델 자체의 서버 측 검색을 먼저 사용하고, 실패하면 독립형 검색으로 한 번 대체합니다. 프롬프트 캐시 사전 예열은 이제 옵트인(promptCache.keepAlive.enabled)이며, 세션 시작이나 재개 시가 아니라 첫 편집 시에만 시작합니다. RPC 클라이언트에는 eval_cells.list/peek/stop이 추가되었고, 종료 중인 공유 호스트는 새 세션을 가져오는 대신 host_stopping으로 거부합니다. @MoerAI와 @Bearmancer에게 감사드립니다. (senpi#3171, senpi#3170, senpi#3137, senpi#3062, senpi#3131, senpi#3150, senpi#3122, senpi#3140, senpi#3072, senpi#3059, senpi#3101, senpi#3055) (#10069)
권장 모델 프로필(Recommended model profile)이 삭제되었습니다. 모델 프로필을 설정하지 않으면 OmO는 Daily · Normal로 시작합니다. model_profile이 없는 새 OmO Desktop 또는 헤드리스 세션은 Daily · Normal(Claude Opus 5.5, 다음으로 Kimi K3, 그다음 GLM 5.3)을 적용합니다. 이들 중 어느 것도 연결되어 있지 않으면, 연결된 첫 번째 레인을 사용합니다. 즉 Daily · Heavy, Geeky · Normal, Geeky · Heavy 순이므로, ChatGPT만 설정된 환경은 Geeky · Normal로 시작합니다. 여전히 model_profile: "recommended"로 설정된 구성은 같은 기본값을 적용하고 로그 한 줄을 남기며, 이는 오류가 아니고 omo.json도 다시 쓰지 않습니다. 직접 정의한 model_profiles.recommended는 계속 적용됩니다. 대화형 TUI는 변경되지 않았습니다. @code-yeongyu의 요청으로 반영되었습니다. (#10029)
세션 도구가 OpenCode의 이전 저장소에 보관된 세션을 찾고, [object Object] 대신 실제 오류를 표시합니다. OpenCode의 레거시 JSON 저장소에만 존재하는 세션은 목록에 나타나지만 SQLite 서버는 해당 세션에 대해 NotFoundError를 반환합니다. session_search, session_list, session_read, session_info는 이제 이런 세션을 실패하는 대신 이전 저장소에서 읽습니다. 그 밖의 오류는 이름과 메시지로 표시되며, session_search 또는 session_list(날짜 필터 없이)가 여전히 세션을 읽지 못하면 전체 호출을 실패시키지 않고 해당 세션을 건너뛰고 마지막에 이름을 알려 줍니다. 재현 과정을 제공해 주신 @crazyrabbit0에게 감사드립니다. (#5854, #10041)
Ultrawork는 작업이 소유한 워크트리와 런타임 캐시를 생성 시점에 추적합니다. 정리 지침은 작업 명령 실행 전에 캐시 경로의 범위를 지정하고, 경로별 할 일(todo)과 삭제 영수증을 요구하며, 공유 캐시를 지우지 않으면서 열린 PR이 여전히 필요로 하는 워크트리를 보존합니다. 네이티브 전체/압축 지시문, Codex, OpenCode 변형 모두 같은 수명 주기를 따르며, 함께 로드되는 워크플로는 이를 반복하지 않고 참조합니다. (#9951, #9953)
컴퓨터 사용 기능으로 Linux에서 메뉴 명령을 나열하고 선택할 수 있습니다. X11과 Wayland에서 menus.items와 menus.select는 AT-SPI를 통해 창의 메뉴 바를 탐색하고, 선택한 항목 자체의 활성화 동작을 실행합니다. 창에 포커스를 주거나 올리지 않습니다. 요청은 지정한 정확한 창에 고정되므로, 같은 앱의 같은 제목을 가진 형제 창은 대신 사용되지 않고 거부됩니다. 모호하거나 비활성화되었거나 하위 메뉴인 레이블은 어떤 동작도 실행되기 전에 거부됩니다. 메뉴 명령을 선택해도 Ubuntu 22.04의 GTK 앱이 더 이상 충돌하지 않습니다. (#9651, #9994)
컴퓨터 사용 기능으로 한 번의 단계에서 스크린샷을 찍고 창의 접근성 트리를 읽을 수 있습니다. 창에 대한 observe()는 두 가지를 함께 반환하며, 관찰이 실패하거나 취소되면 일반적으로 이전 스크린샷과 접근성 참조가 그대로 유지됩니다. (#9651)
컴퓨터 사용 기능으로 클릭 위치를 바꾸지 않고 스크린샷의 일부를 원본 해상도로 확대할 수 있습니다. 데스크톱, 창 또는 디스플레이에 대한 zoom(region)은 해당 영역을 원본 해상도로 다시 캡처하며, 이후 클릭과 입력은 마지막 전체 스크린샷의 좌표를 계속 사용합니다. (#9651)
컴퓨터 사용 기능으로 Windows에서 메뉴 명령을 나열하고 선택할 수 있습니다. menus.items와 menus.select는 창의 클래식 메뉴 바를 직접 읽고, 메뉴 바가 없으면 UI Automation 메뉴를 읽으며, 키보드 입력 없이 선택한 명령을 실행합니다. 권한이 상승된 창, 모호하거나 비활성화된 레이블, 하위 메뉴, 요청 중에 변경되는 메뉴는 어떤 동작도 실행되기 전에 거부됩니다. 동작 중에 포커스를 가져가는 앱은 백그라운드에서 거부되며, delivery: "foreground"로 작동합니다. (#9651, #9991)
컴퓨터 사용 기능은 기본적으로 작업 중인 모니터의 스크린샷을 찍으며, computer.display(id)로 다른 모니터에 접근할 수 있습니다. 설정하지 않은 computer.display는 이제 모든 디스플레이를 합성하는 대신, 포커스된 창이 주로 놓인 활성 모니터를 캡처합니다. "all"과 디스플레이 ID는 이전과 같이 작동합니다. computer.display("all" | "active" | id)는 세션 기본값을 바꾸지 않고 한 디스플레이에 대한 스크린샷과 입력 핸들을 제공하며, computer.displays()는 모든 모니터를 나열합니다. (#9651, #9995)
OpenCode 요청은 오래된 모델 캐시 대신 선택된 모델의 실시간 기능을 따릅니다. OpenCode가 실시간 모델을 chat.params에 전달하면, 그 변형, 사고(thinking) 지원, temperature 지원, 출력 한도가 캐시된 프로바이더 목록보다 우선합니다. SDK의 provider.info.id 프로바이더 컨텍스트도 provider.id와 함께 허용됩니다. 모델 ID만 전달하는 호출은 캐시 및 내장 대체 값을 그대로 사용합니다. @MoerAI에게 감사드립니다. (#10001)
background_task.taskCleanupDelayMs가 이제 완료된 백그라운드 작업을 조회할 수 있는 기간도 설정합니다. 30분을 넘는 지연 시간이 더 이상 단축되지 않습니다. 설정하지 않으면 기존 타이밍이 유지됩니다. @imadal1n에게 감사드립니다. (#9984)
MCP OAuth 콜백 서버가 오류를 일반 텍스트로 응답합니다. 찾을 수 없음, 프로바이더 오류, 누락된 매개변수에 대한 응답이 이제 X-Content-Type-Options: nosniff와 함께 text/plain; charset=utf-8로 전송되므로, 콜백 URL의 error_description은 텍스트로 표시되며 HTML로 렌더링되지 않습니다. MCP 로그인은 현재 그 텍스트를 반출하지 않는 두 번째 콜백 서버를 통해 실행되므로, 사용자가 보는 내용은 변하지 않습니다. 두 서버의 통합은 별도로 추적 중입니다. @niStee에게 감사드립니다. (#6464, #9979)
OpenCode 작업 위임과 팀 생성이 이제 claude_code.agents: false를 준수하므로, 비활성화된 Claude Code 에이전트는 선택되는 대신 즉시 실패합니다. @cynkai에게 감사드립니다. (#8744, #8802)
위임된 OpenCode 세션은 제목에 작업 카테고리를 표시합니다. 백그라운드, 동기 및 폴백으로 생성된 하위 세션은 설명과 에이전트 접미사를 유지하면서 카테고리를 접두사로 붙입니다. 카테고리가 없는 작업은 기존 제목을 유지합니다. (#6854, #7256)
OpenCode 런타임 폴백은 프로바이더의 콘텐츠 필터 오류 후 모델을 전환할 수 있습니다. 폴백이 활성화되어 있고 대체 모델이 구성되어 있으면, 차단된 응답은 다른 모델로 넘어갑니다. 기존 시도 횟수 제한과 체인 소진은 여전히 재시도를 멈춥니다. (#6796, #7257)
메모리 사실은 프롬프트를 입력한 후에만 추출됩니다. 대기 중인 사실은 세션이 시작, 재바인딩, 재개 또는 포크될 때 더 이상 모델 호출을 시작하지 않습니다. 추출은 최상위 세션에서 사용자가 실제로 입력한 프롬프트를 기다립니다. memory.facts.model, 구성된 빠른 체인 또는 세션의 자체 모델에서 실행되며, 이 중 어느 것도 사용할 수 없으면 큐는 실패를 기록하지 않고 대기 상태로 남습니다. (#9922, #9954)
ulw-* 스킬을 이름으로 호출해도 ultrawork가 켜지지 않습니다. 프롬프트에 있는 ulw-plan, ulw-research, ulw-execute, ulw-loop은 ultrawork를 꺼 둔 상태로 유지되며, 단독 ulw 또는 ultrawork는 여전히 이를 켭니다. (#6876, #7255)
테스트가 이제 환경 누수를 이를 일으킨 파일에서 바로 잡아냅니다. process.env를 변경한 채로 두는 테스트 파일은 변경된 키의 이름과 함께 실패하며, 다음 파일은 깨끗한 환경에서 시작합니다. @Dante-dan에게 감사드립니다. (#9390, #9469)
- 269d219 Merge pull request #10083 from code-yeongyu/docs/changelog-5.1.32-carry-5.1.31
- f989a4b Merge pull request #10082 from code-yeongyu/fix/musl-smoke-zombie-supervisor
- d99043c Merge pull request #10081 from code-yeongyu/fix/10080-gatekeeper-poll
- 80a062a docs(changelog): 배포되지 않은 5.1.31 노트를 5.1.32로 이월
- 0f06814 fix(release): musl 스모크 컨테이너를 정리하고 좀비 슈퍼바이저를 종료된 것으로 처리
- ad2f9a3 fix(release): Accepted 이후 Gatekeeper가 공증 티켓을 확인할 때까지 대기 (#10080)
- b5a0888 Merge pull request #10077 from code-yeongyu/release/v5.1.31-source-state
- a59ed36 Merge pull request #10040 from code-yeongyu/feat/unset-profile-daily
- fdb728f Merge remote-tracking branch 'origin/dev' into feat/unset-profile-daily
- 7aaa357 Merge pull request #10041 from code-yeongyu/fix/5854-session-tool-errors
- 06a379c docs(changelog): 날짜 필터가 없는 호출로 건너뛴 세션 문구 범위 지정 (#5854)
- bce861b fix(session-manager): SQLite 서버가 누락으로 보고한 레거시 저장소 세션 읽기 (#5854)
- 184f50a docs(changelog): 세션 도구 오류 수정 기록 (#5854)
- 7083c79 fix(session-manager): 실제 오류를 표시하고 읽을 수 없는 세션은 건너뛰기 (#5854)
- 3050d72 Merge remote-tracking branch 'origin/dev' into feat/unset-profile-daily
- 7b44ad2 Merge pull request #9953 from code-yeongyu/docs/9951-task-runtime-cache-cleanup
- 6908c8b Merge remote-tracking branch 'origin/dev' into tmp/9953-m3
- bd1d4c1 Merge pull request #9994 from code-yeongyu/feat/cu-b4-linux-menus
- 2d2eac6 Merge remote-tracking branch 'origin/dev' into feat/cu-b4-linux-menus
- 2ea5817 Merge pull request #10011 from code-yeongyu/feat/cu-b8-atomic-observe
- 0a24703 fix(prompts): 생성 시점 QA 해체 추적 복원
- 384fe16 Merge branch 'dev' into feat/cu-b4-linux-menus
- 1417720 Merge branch 'dev' into feat/cu-b8-atomic-observe
- e50fc64 Merge pull request #10010 from code-yeongyu/feat/10009-dori-teaser
- 70a6fc6 Merge remote-tracking branch 'origin/dev' into feat/cu-b4-linux-menus
- bd87440 fix(desktop): observe의 ax 필드만 [위에 표시됨]으로 교체
- f102462 Merge remote-tracking branch 'origin/dev' into tmp/9953-m2
- dee3368 Merge branch 'dev' into feat/10009-dori-teaser
- 5814fdd Merge pull request #10007 from code-yeongyu/feat/cu-b7-region-zoom
- a613880 Merge remote-tracking branch 'origin/feat/cu-b7-region-zoom' into feat/cu-b8-atomic-observe
- 0e28f86 Merge remote-tracking branch 'origin/dev' into feat/cu-b4-linux-menus
- 4a32b69 Merge remote-tracking branch 'origin/dev' into feat/cu-b7-region-zoom
- 8d702e6 Merge remote-tracking branch 'origin/dev' into takeover/9953-devmerge-resume
- 72faaf1 Merge pull request #9991 from code-yeongyu/feat/cu-b3-win32-menus
- de733e3 fix(desktop): 완료된 요청이 동시 취소를 이기도록 하고 observe의 AX를 한 번만 표시
- 880fa52 docs(changelog): [Unreleased]에 원자적 창 관찰 기록
- 8242abd Merge remote-tracking branch 'origin/feat/cu-b7-region-zoom' into feat/cu-b8-atomic-observe
- 85c6b60 feat(computer-use): 원자적 창 observe 추가
- 694d746 feat(web): 랜딩 페이지 하단에 Dori 티저 섹션 추가
- 3462a88 Merge remote-tracking branch 'origin/dev' into feat/cu-b4-linux-menus
- 1e70c7a Merge remote-tracking branch 'origin/dev' into feat/cu-b3-win32-menus
- 9f09bee chore(desktop): captureRegion용 bunshin 디스크립터 템플릿 재생성
- 94e0350 test(codex): 역방향 실행 오버레이 앵커 정렬
- 203c398 Merge remote-tracking branch 'origin/dev' into feat/cu-b7-region-zoom
- ff3fc93 Merge pull request #9995 from code-yeongyu/feat/cu-b6-active-display
- c76fb17 Merge pull request #10002 from code-yeongyu/fix/9998-smoke-supervisor-wait
- d670089 test(desktop): 영역 확대 응답에서 영역이 누락된 경우도 거부
- f303269 fix(codex): 실행 오버레이에서 정리 지침 보존
- 9ba2bf2 docs(changelog): [Unreleased]에 작업 소유 정리 지침 기록
- c76ac26 docs(cleanup): 리소스 소유권을 생성 시점 지침으로 이동
- 64435bf Merge remote-tracking branch 'origin/dev' into fix/9998-smoke-supervisor-wait
- 7b80b9d Merge remote-tracking branch 'origin/feat/cu-b6-active-display' into feat/cu-b7-region-zoom
- abc08bc fix(desktop): 영역 확대 응답에 전체 입력 프레임 요구
- fa1cfed Merge remote-tracking branch 'origin/dev' into takeover/9953-cleanup
- 9f228af Merge remote-tracking branch 'origin/dev' into feat/cu-b4-linux-menus
- 4f55438 Merge remote-tracking branch 'origin/dev' into feat/cu-b6-active-display
- 8ecc3da Merge remote-tracking branch 'origin/dev' into feat/cu-b3-win32-menus
- e1e37b5 fix(desktop): 영역 확대 이전 엔진에서도 스크린샷이 작동하도록 유지
- 89b78d4 Merge pull request #9469 from Dante-dan/fix/9390-env-integrity
- 2dbeb4f docs(changelog): [Unreleased]에 영역 확대 기록
- 5df6ce0 Merge pull request #10001 from MoerAI/fix/live-chat-model-capabilities-20261011
- 4771323 fix(computer-use): 엔진 픽스처 모드 보존
- 58af2de feat(computer-use): 네이티브 영역 확대 추가
- c179f7b docs(changelog): [Unreleased]에 컴퓨터 사용 변경 기록
- 71ce5cc docs(changelog): [Unreleased]에 컴퓨터 사용 변경 기록
- 0173cb8 docs(changelog): [Unreleased]에 컴퓨터 사용 변경 기록
- 91228c0 Merge remote-tracking branch 'origin/dev' into feat/cu-b6-active-display
- c8359de Merge remote-tracking branch 'origin/dev' into feat/cu-b4-linux-menus
- 457ee04 Merge remote-tracking branch 'origin/dev' into feat/cu-b3-win32-menus
- 1f6bf92 Merge pull request #9997 from code-yeongyu/fix/pr-changelog-gate
- 1177ed9 fix(desktop): 메뉴 명령을 실행하기 전에 창 목록을 다시 읽기
- 1fa4626 test(qa): 공유 슈퍼바이저 기한과 엔진 예약 부분 고정
- c5a06ee refactor(desktop): Win32 메뉴 경로에 포그라운드 전달을 플래그로 전달
- 6e9d706 fix(desktop): 어떤 프레임 읽기로도 증명되지 않은 네이티브 메뉴 창 거부
- eb66308 Merge remote-tracking branch 'origin/dev' into feat/cu-b6-active-display
- 3129390 docs(changelog): 개발 병합이 다시 추가한 배포된 항목 삭제
- ae5acf4 Merge remote-tracking branch 'up/dev' into fix/live-chat-model-capabilities-20261011
- 1257fd8 docs(changelog): #10001 실시간 채팅 모델 기능 기여 표기
- 872d592 fix(qa): 드레인 후 예약 시간 내에 관찰된 슈퍼바이저 대기
- db5256b fix(desktop): 하위 메뉴 전용 Win32 위치 스타일만 거부
- 5d88b74 fix(omo-opencode): 실시간 채팅 모델 기능 존중
- c782173 fix(desktop): 호출별 디스플레이 대상으로 모든 모니터 나열
- 44103b2 Merge remote-tracking branch 'up/dev' into fix/9390-env-integrity
- 002ca01 fix(desktop): 네이티브 메뉴 창에 정확히 하나의 프레임 요구
- a103d40 Merge pull request #9954 from code-yeongyu/fix/9922-facts-user-turn
- e1f812e Merge pull request #9984 from imadal1n/fix/terminal-retention-cleanup-delay
- 3693bb8 fix(desktop): 충돌하는 Win32 메뉴 알림 스타일 거부
- 7647647 fix(ci): 릴리즈 changelog 전환 인식 및 워크플로 테스트 축소
- c3483b1 fix(desktop): 디스플레이 대상 노출 및 캡처 의미 보존
- 5ee5b10 fix(ci): 배포 페이로드 포함 및 changelog 게이트 검사 보존
- 83243dd Merge remote-tracking branch 'up/dev' into fix/terminal-retention-cleanup-delay
- a0af5fc test(memory): 런타임 종료 후 엔진 픽스처 정리
분량 관계로 이후 내용은 번역에서 제외했습니다. 전체 내용은 위 원문 링크에서 확인하세요.