Repository navigation
fix(pstack): finish the move from Claude Code to Codex in configure and doctor - #30
Merged
Merged
Conversation
…nd doctor A models file written for a Claude Code install names only Claude models. After `pstack install --codex`, configure kept every role as the user's choice, because it compares roles with the defaults of the harnesses installed now, so with foreign seats off every role in Codex ran on the session's model, and doctor said nothing. When no entry in the file can run in an installed harness, configure now adds that harness's defaults after each kept choice, and doctor warns until it does. doctor also told users to install upstream's plugin even after they had. It now reads enabledPlugins in ~/.claude/settings.json and drops that step once pstack@cursor-plugins is enabled.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
Moving a Claude Code install of this fork to Codex, as
pstack/README.mddescribes, left Codex with no models of its own and gave no warning:configurekept Claude-only roles.plan()replaces a role with new defaults only when it equals the defaults for the harnesses installed now. A file written for Claude Code holds Claude defaults, which look like custom choices next to Codex's, soconfigurekept all 17 as "your choice". Withforeign seats: off, Codex drops everyclaude:entry, so every role ran on the session's own model and panels had one model.doctorreported 0 problems.doctorkept saying to install upstream's plugin after it was installed. Both the superseded-install warning and the "claude is installed" note always carried/plugin install pstack@cursor-plugins.Both turned up while moving a real install today.
What changes
harnesses_without_entries()finds installed harnesses that no entry anywhere in the models file can run on. Entries that count: native entries,inherit-parent, and foreign entries that will actually be seated. The test is on the whole file, so a single role someone pinned to one harness on purpose is left alone (test_configure_keeps_your_overrides_and_drops_retired_rolesstill holds).configureadds that harness's defaults after each kept choice and says so. A role set with--setis left as given.doctorwarnsno entry in the models file can run in codex, so every role runs on its session model, withpstack configureas the fix.doctorreadsenabledPluginsin~/.claude/settings.jsonthrough a newclaude_settings(), which the read-rules check now uses too. Whenpstack@cursor-pluginsis enabled, neither note tells you to install it.pstack/README.md: the move steps now say to runpstack configureafterpstack install --codex, and why.Risk
A models file whose entries all point at other harnesses on purpose gains entries for the installed harness on the next
configure. Before, those roles ran on the session's model in that harness, so the defaults are a different choice, and they're printed when added.Proof
install --codex.doctorwarns,configureadds Codex's defaults while keeping the Claude ones,doctoris then quiet, and a secondconfigureleaves the file byte-for-byte the same.doctornotes.mainwith the old CLI, each for the reason it targets.configurekeeps each Claude choice and addscodex:gpt-6.1-solorcodex:gpt-6-astra, both models to every panel, and the "added codex's defaults" line.install_test.shpass,check.pyreports 0 problems, and everything compiles.