Fixed
- The installed-server registry now follows
--dir,MCPTOON_HOMEand XDG
(issue #25, re-raised by @examosa).mcptoon installrecorded the servers it
had installed in~/.mcp-cli/pro_installed.json, a path resolved from a
module-level constant — so it ignored all three. Everything else in the state
dir moved where the user asked and this one file did not, which meant a
--dir Xrun wrote half its state inside X and half into$HOME. It is now
resolved the way the rest ofconfig.pyresolves paths:MCPTOON_INSTALLED_FILE
wins when set; an existing legacy~/.mcp-cli/pro_installed.jsonis kept,
never orphaned, so nobody's installed servers look uninstalled after upgrading;
the default isSTATE_DIR/pro_installed.json, besidehandlers/and
toggles.json.installerno longer caches the path at import time — a
constant cannot follow--dir, which is parsed after import — anduninstall
reports the same path it cleans. 6 new tests run each case in a fresh
interpreter under a fabricated$HOME, the only honest way to observe
import-time path resolution. - Every skill count now names what it counted (issue #40). Four surfaces
answered "how many skills?" with four different numbers and none said which
set it had measured, so each one looked wrong while every surface was
internally consistent: 453 (top-levelskills/<name>/dirs), 467 (index
entries minus alias cards), 483 (everySKILL.mdunder the source,
recursively — 30 of them nested), 486 (distinctSKILL.mdacross the four
agent view roots, the footer's number). The fix labels the caliber instead of
collapsing the numbers:skills doctorprints acalibers:line reconciling
all four, and its header saysskill dirsrather than a bareskills;
statussaysindex entries (recursive, deduped, N aliases);skills index
saysindexed N entries (M alias cards, K skills); quickstart says
indexed N entries routable.count_calibers()reads the footer's own
sidecar for the view count rather than walking the roots again — a hand-rolled
walk reported 958 against the footer's 486 here, because two of the four roots
are whole-directory links to the source. A count it cannot take is omitted,
never reported as0. Reported by @activeing123.
Docs
- The wheel-size claim was six releases stale. Every surface that stated it
said534KB, which was accurate for 0.8.26 (547,084 B on PyPI) and had not
been re-measured since; 0.8.32 ships 574,555 B, so the honest figure was
~561KB. Corrected on all nine surfaces plus the repository description, and
534KBmoved intoRETIRED_KBso the old value stays pinned as a known-past
number rather than a wrong current one.