fix(server): keep provider CLIs available in the macOS service - #8173
Conversation
|
Important Review skippedAuto reviews are disabled on this repository. Please check the settings in the CodeRabbit UI or the ⚙️ Run configurationConfiguration used: Repository UI Review profile: CHILL Plan: Pro Plus Run ID: You can disable this status message by setting the Use the checkbox below for a quick retry:
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
Thread transfer impact✅ Thread transfer remains within every enforced ceiling.
Baseline: Scenario and decoded snapshot size10 historical turns, 5 command tools per turn, 878.9 KiB retained MCP result per historical turn, and a 1.05 MiB retained result in the measured turn.
Updated in place by a trusted workflow. PR artifacts are strictly validated and never executed. |
ApprovabilityVerdict: Approved at Macroscope's review found this PR approvable — The change is a narrowly scoped macOS service fix that preserves provider CLI lookup through a safely constructed LaunchAgent PATH, with focused coverage for fallbacks and status reconciliation. It does not alter Linux behavior, schemas, or unrelated runtime components. You can add or adjust custom eligibility rules. Learn more. |
- Providers no server: compatibilidade preservada após upgrades (pingdotgg#8176), CLIs disponíveis no serviço do macOS (pingdotgg#8173) e fim do probing do Cursor enquanto não estiver habilitado (pingdotgg#8175) - Client-runtime: retry de queries após interrupção de conexão (pingdotgg#8117), com ajustes em authorization/remote e state/runtime - Claude: compactação de threads antigas antes de estourar o uso (pingdotgg#8144), incluindo novo módulo claudeCompaction em packages/shared e medidor de janela de contexto na web - Web: dicas de atalho de thread agora atrasadas em 200 ms (pingdotgg#8172) - Grok: limite nas atualizações cumulativas de saída de ferramentas (pingdotgg#7279) - Mobile: coleta de modelo de dispositivo e versão de SO (pingdotgg#8169) - Docs: release passa a verificar atualizações remotas com migrações de banco (pingdotgg#8177) e doc de providers do Claude atualizada - Conflitos: 2 arquivos conflitaram e foram resolvidos manualmente, mantendo as modificações próprias do fork e incorporando as mudanças do upstream por cima Sync automatico t3code-sync em 2026-08-25T06:05:15-03:00
## What's Changed * feat(mobile): track device models and OS versions by @t3dotgg in pingdotgg/t3code#8169 * fix(grok): bound cumulative tool output updates by @lnieuwenhuis in pingdotgg/t3code#7279 * fix(web): delay thread shortcut hints by 200 ms by @t3dotgg in pingdotgg/t3code#8172 * fix(server): stop probing Cursor until enabled by @t3dotgg in pingdotgg/t3code#8175 * docs(release): verify remote updates with database migrations by @t3dotgg in pingdotgg/t3code#8177 * fix(server): keep provider CLIs available in the macOS service by @t3dotgg in pingdotgg/t3code#8173 * feat(claude): compact old threads before they burn through usage by @t3dotgg in pingdotgg/t3code#8144 * fix(client-runtime): retry queries after connection interruption by @tris203 in pingdotgg/t3code#8117 * fix(server): keep previously used providers working after upgrades by @t3dotgg in pingdotgg/t3code#8176 **Full Changelog**: pingdotgg/t3code@v0.0.34-nightly.20260825.1182...v0.0.34-nightly.20260825.1183 Upstream release: https://github.com/pingdotgg/t3code/releases/tag/v0.0.34-nightly.20260825.1183
The macOS background service starts with launchd's limited PATH, so Codex, Claude, and other provider CLIs disappear if login-shell PATH recovery fails.
Save the installer's PATH in the LaunchAgent, and fall back to the Node directory plus standard macOS binary directories when PATH is missing. Focused tests cover installation, XML escaping, fallback paths, and existing service restarts.
Built by GPT-5.6 Sol in the Codex harness.
Note
Medium Risk
Changes macOS service install and health-check behavior for a critical background daemon; incorrect PATH could break provider CLIs or mask real plist drift via normalization.
Overview
The macOS LaunchAgent plist now sets
PATHinEnvironmentVariables, built from the installer’sPATH(with non–XML-safe segments removed), plus the Node binary directory and standard macOS tool locations when entries are missing.renderBootServicePlistand the launchd wiring take a newenvironmentPathargument.status.currentcompares plist content with thePATHvalue blanked out so a different shellPATHat check time does not force a reinstall.Tests cover preserved installer paths, empty/minimal
PATHfallbacks, XML escaping forPATH, invalid path segments, and unchanged “current” status when only processPATHdiffers.Reviewed by Cursor Bugbot for commit e2e1de2. Bugbot is set up for automated code reviews on this repo. Configure here.
Note
Add
PATHenvironment variable to macOS LaunchAgent plist inbootServicePATHbuilt from the installer'sPATH, the host executable directory, and a fixed set of provider/system directories (/opt/homebrew/bin,/usr/local/bin,/usr/bin,/bin,/usr/sbin,/sbin)PATHsegments containing disallowed XML control characters are dropped, and duplicate directories are de-duplicatedrenderBootServicePlistandlaunchdManageraccept a newenvironmentPathoption that flows through frommakeBootService.statusnow strips thePATHvalue from both on-disk and freshly rendered plists before comparing, so a changedPATHalone does not mark the installed unit as staleselectBootServiceManagerandlaunchdManagernow requireenvironmentPath; callers that do not supply it will produce a plist without aPATHentryMacroscope summarized e2e1de2.