UMANS_WEBSEARCH_PROVIDER=native|exa 지원을 추가했습니다.convertTools (openai-responses)는 이제 구조적 JSON-Schema 검증을 통과하지만 공급자가 거부하는 enum/const vs type 모순에 대해 각 도구의 내보낸 파라미터 스키마를 검증합니다 — 예를 들어 type: "null" 노드의 null이 아닌 enum, 또는 array 노드의 enum — 그리고 도구 이름과 스키마 경로를 지정하는 logger.warn으로 위반 도구만 격리하여 다른 모든 도구를 사용 가능하게 유지합니다. @oh-my-pi/pi-ai/utils/schema에 findStrictToolSchemaViolation을 추가했습니다 (#2652)fc_<call_id> 항목 ID를 사용하는 병렬 도구 호출 델타의 인수를 삭제하는 Ollama/로컬 호스트의 OpenAI Responses 호환 스트림을 수정했습니다. 이는 이전 ast_grep 호출을 {}로 남기고 검증을 실패하게 했습니다. (#2715)<thinking> 출력이 방지됩니다 (#2700).toolChoice: "auto"로 명시적 toolConfig AUTO 모드를 직렬화하는 것을 수정했습니다. 이는 Gemini-3 모델이 도구를 실행하는 대신 원본 계획 JSON을 유출할 수 있게 했습니다. (#2776)num_ctx를 채운 후 빈 finish_reason:length를 반환하는 OpenAI 호환 Ollama 완성을 수정하여 빈 길이 중지 대신 실행 가능한 컨텍스트 윈도우 오류를 표시합니다. (#2774)opencode OAuth 발신자에 대한 자격증명을 발급하는 것을 수정했습니다. OMP 요청은 pi로 식별되므로 첫 번째 인증된 Codex 요청이 401을 반환할 수 있었습니다 (#2696).web_search를 공급자 서버 도구로 노출하지 않도록 했습니다.UMANS_WEBSEARCH_PROVIDER 환경 변수를 추가했습니다.task (task.eager: always) 및 eager todo (todo.eager: preferred/always) 숨겨진 리마인더는 이제 압축(context-full / snapcompact / handoff / shake) 후 자동-지속 턴에서 다시 실행됩니다. 압축은 첫 번째 메시지 서문을 요약하므로 에이전트는 그렇지 않으면 작업 위임 / 단계적 todo 지도를 작업 중에 조용히 잃어버립니다. 압축 후 todo 알림은 리마인더 전용이며 재개된 턴에 todo 도구를 강제하지 않습니다..el 및 .emacs 경로는 이제 지원되지 않는 언어 블록 분석 오류를 보고하는 대신 SWAP.BLK, DEL.BLK 및 INS.BLK.POST에 대해 최상위 수준 폼을 분석합니다.markit-ai가 로드하기 전에 MuPDF 출력을 파일 로거를 통해 라우팅합니다 (#2766)./exit 및 /quit가 공유 종료 윈도우 내에서 session_shutdown 핸들러를 실행하여 hanging 확장당 하나의 종료 제한 시간을 기다리지 않도록 수정했습니다 (#2736)..github/instructions/*.instructions.md 검색을 수정했습니다. 이제 applyTo 범위를 준수하는 규칙으로 파일을 로드합니다. 항상 적용되는 ** 파일과 glob 범위 항목에 대한 rule://<name> 접근을 포함합니다 (#2731)./advisor dump raw를 수정하여 이미 literal <thinking> 태그를 포함하는 Opus 4.5 thinking 콘텐츠가 중첩된 thinking 태그로 렌더링되지 않도록 했습니다 (#2700).plugin-extensions-discovery 테스트 스위트는 더 이상 개발자의 실제 ~/.omp/plugins에 픽스처를 작성하거나 그 node_modules를 rm -rf 하지 않습니다. 그 XDG_DATA_HOME 격리는 Windows에서 no-op였습니다 (XDG는 Linux/macOS로 게이트됨). XDG 마이그레이션 Linux/macOS 환경에서 우회되었으므로 로컬 실행이 설치된 플러그인을 삭제할 수 있었습니다. 이제 스위트는 os.homedir() mock과 cleared XDG_* vars를 통해 전체 config 루트를 격리하고, 분석이 temp home을 벗어나면 실패하는 사전 쓰기 가드가 있습니다 (#2721).extensions 매니페스트 항목이 sub-extensions 디렉토리를 가리키는 설치된 플러그인 (표준 pi extensions/<name>/index.ts 레이아웃, 예: pi.extensions: ["./extensions"])이 더 이상 설치 중에 거부되지 않거나 (declared extension entry not found on disk) 로드 중에 조용히 삭제되지 않습니다. 플러그인 매니페스트 분석기는 이제 구성된 디렉토리 (-e) 확장 로더와 같은 방식으로 디렉토리를 분석합니다: 디렉토리의 자체 package.json omp/pi extensions (권위 있음 — 누락된 선언된 항목이 decoy index로 폴백되는 대신 보고됨), 직접 index.{ts,js,mjs,cjs}, sub-extensions의 일수준 스캔 (#2713).@upstream 라우팅 선택자가 업스트림 슬러그도 모델 ID에 나타나는 경우를 수정했습니다. openrouter/...@deepseek:high는 공급자 범위 fuzzy 매칭에 의해 사용되지 않고 openRouterRouting.only를 유지합니다 (#2708).omp plugin list --json이 omp-plugins.lock.json 및 node_modules symlinks에만 존재하는 로컬 링크 플러그인을 생략하는 것을 수정했습니다. (#2742).el, .emacs, emacs-lisp/elisp) 지원을 추가했습니다. astGrep/astEdit, summarizeCode 및 blockRangeAt을 Emacs Lisp 소스에서 사용 가능하게 합니다.?1010/?1011을 비활성화하고 종료 시 이전 집합 모드를 복원합니다 (#2732).TMUX/STY/ZELLIJ를 설정하지 않으므로 resize/reset 중에 직접 터미널로 처리되고 TERM=dumb로 실행될 수 있습니다. 렌더러는 이제 CMUX 작업 영역/표면 env 마커를 멀티플렉서 신호로 처리하고 ED3 (CSI 3 J)을 내보내는 대신 pane scrollback을 보존합니다.PI_TUI_RESIZE_IN_PLACE=1|0으로 재정의 가능합니다.Full Changelog: v16.0.1...v16.0.2