OAuthCallbackFlow가 이제 루프백 콜백 서버에서 GET /launch 경로를 제공하고 대기 중인 인증 URL로 302 리다이렉트하며, 해당 단축 URL을 OAuthAuthInfo.launchUrl로 노출합니다. UI는 전체 authorize URL 대신 잘림 방지 복사 대상(약 30자)으로 광고할 수 있으므로, 구성된 행보다 좁은 터미널이 code_challenge_method=S256 같은 OAuth 쿼리 매개변수를 무음으로 버리지 않습니다. (#4418)tool.strict === false를 보존하여, strict: false와 생략된 플래그를 구분하는 백엔드가 선택적 인수를 과하게 채우지 않도록 합니다. (#4336)path, paths, file, file_path, url, uri, title, label) 앞의 행 종료자를 스트립하여 디스패치하고, 일반적인 후행 공백과 콘텐츠 관련 필드(content, input, code, command 등)는 그대로 유지합니다. (#4461)artifact:// 읽기가 셀렉터 페이징 전에 전체 MCP/도구 아티팩트를 구체화하는 문제를 수정했습니다. 이제 무제한 원본 읽기에서 OOM 크래시를 방지하고 제한된 읽기/검색/복사 지침을 표시합니다. (#4482)/mcp reauth 및 /mcp add가 WWW-Authenticate: Bearer scope="..." 챌린지 및 보호된 리소스 메타데이터(scopes_supported / scopes / scope)를 통해 광고된 OAuth 스코프를 버리는 문제를 수정했습니다. 이로 인해 토큰이 필요한 스코프 없이 발급되고 재연결이 insufficient_scope 오류로 실패했습니다. (#4467)--skip하고 계속 진행하므로 나중의 겹치지 않는 작업이 여전히 반영됩니다. (#4438)/mcp reauth가 Windows 및 브라우저를 자동으로 열 수 없는 다른 환경에서 실패하는 문제를 수정했습니다. 두 가지 독립적인 결함이 Linear의 The plain PKCE method is not allowed. Use S256 instead. 오류 페이지에 수렴했습니다: openPath가 베어 rundll32를 호출했고 Windows 시스템 PATH가 더 이상 System32를 참조하지 않을 때 결과 Executable not found in $PATH를 무음으로 삼켰으며, MCPAuthorizationLinkPrompt가 Copy URL: 행을 뷰포트보다 넓게 구성하여 TUI#prepareLine이 무음으로 잘랐습니다 — 후행 code_challenge_method=S256을 자릅니다(RFC 7636 §4.3은 code_challenge가 있고 메서드가 없는 요청을 plain으로 취급합니다). MCP OAuth 폴백, /login, 설정 마법사, auth-broker CLI 및 로그인 대화상자가 이제 단축 OAuthAuthInfo.launchUrl(OAuthCallbackFlow에서 호스팅하는 루프백 /launch 경로)을 복사 대상으로 광고합니다. OSC 8 하이퍼링크는 여전히 전체 URL을 클릭스루에 포함하고, MCP 플로우는 추가로 복사 대상을 OSC 52을 통해 클립보드에 스테이징하며, Windows 열기는 이제 %SystemRoot%\System32\를 통해 rundll32.exe를 해석하고, spawn 실패 및 0이 아닌 종료를 로깅하며 삭제하지 않습니다. (#4418)willRenameFiles 편집처럼 동일한 범위에 대해 중복 바이트 동일 비어있지 않은 텍스트 편집을 반환할 때 lsp rename_file이 중단되는 문제를 수정했습니다. (#4458)PI_TINY_DEVICE=cuda 작은 모델 부작용 런타임이 ONNX Runtime CUDA 제공자 바이너리를 누락하는 문제를 수정했습니다. onnxruntime-node CUDA 사이드카 설치를 복구하고 omp tiny-models download 출력에서 실행 가능한 CUDA 진단을 보존합니다. (#4475)terminal/create가 bash 도구의 전체 셸 라인을 command에 args 없이 보내는 문제를 수정했습니다. 이는 command+args를 직접 생성하는 사양 준수 클라이언트(암시적 셸 없음)를 손상시켰습니다. 공백, 파이프, &&, 리다이렉트 또는 $(...)가 포함된 모든 명령이 ENOENT로 실패하고 에이전트가 무음으로 읽기 전용 도구로 성능이 저하되었습니다. bash 도구는 이제 clientBridge.createTerminal을 호출하기 전에 셸 라인을 래핑하고, 로컬 bash-executor이 settings.getShellConfig()을 통해 해석하는 동일한 셸 바이너리 + 인수를 재사용합니다(Windows의 Git Bash / bash.exe, POSIX의 $SHELL과 sh 폴백). 따라서 bash 의미론 — $VAR, $(...), source, POSIX 인용, -l — 이 두 플랫폼 모두에서 보존됩니다. (#4333)exit code 7 크래시 루프 — 가 부모의 로그에서 진단 불가능했습니다. createWorkerSubprocess는 이제 stderr를 파이프하고 워커가 유휴 상태일 때 라이브 읽기를 시작하지 않으며, onExit 후 스트림을 드레인하고, 캡처된 행을 <exitLabel> stderr 메시지 아래 logger.debug로 내보내며, onError를 통해 표시된 Error에 추가되는 제한된 링에서 마지막 16 KiB를 유지합니다. 종료 표시는 SpawnedSubprocess.stderrDrained를 통해 포스트 종료 드레인과 동기화되므로 전체 네이티브 추적이 tsp: worker error 라인에 unref'd 워커의 이벤트 루프 활력을 재도입하지 않고 나타납니다. (#4324)commitGuard에 게이팅하므로, 동시 flushSync(Ctrl+C / 세션 종료)가 실행 전에 직렬화된 오래된 본문으로 덮어써지지 않습니다. 현재 JSONL 경로에서 포스트 압축 프롬프트, 도구 결과, 제목 변경 및 종료 진단을 다룹니다. (#4338)remember(..., { embedText })를 수정하여 호스트가 마커 없는 프로젝션을 임베딩, FTS 인덱싱 및 다시 임베딩하면서 전체 대화 기록을 저장할 수 있습니다. (#4395)전체 변경 로그: v16.3.4...v16.3.5