README down to what a user needs; the rest into docs/
The README had grown to 1,010 lines of user docs and design notes in one file,
and had gone stale: it still showed the old numbered menu, set up only three
providers, and listed preflight checks and a file layout that predate the last
three releases. It now carries install, first run, the full command
reference, the providers at a glance, troubleshooting and a docs index.
docs/:
- providers.md presets, defaults, the model cache, context windows, each
provider (OpenRouter's cost guard and guardrail check are
written up for the first time), adding a provider
- live-sessions.md what a switch does to running sessions, and repair
- design.md why settings.json, why keys stay out of it (and the vault
per platform), the preflight checks as they are now
- bar-widget.md the widget as it is now: providers from health.json, every
server provider's settings, the restart after an upgrade
- architecture.md the pieces, every file on disk and who writes it, the
contracts between them, where to change what
- development.md running the tests, the conventions the code follows,
working on the widget, releasing
CONTRIBUTING.md points at it.
Also:
- The per-project session listing used awk, which the CLI avoids because it
is missing from minimal images; it uses the script's own TSV helpers now,
and tests/static.sh fails on any awk in the CLI.
- tests/static.sh checks every relative Markdown link and #anchor.
- A unit test pins the managed env keys between cm-json.py and
claude-mode.ps1, which only a comment kept in step before.
- test_sessions covers the per-project listing, which nothing ran.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -89,6 +89,19 @@ class Providers(unittest.TestCase):
|
||||
with self.assertRaises(SystemExit):
|
||||
call(cm.cmd_provider_resolve, [word])
|
||||
|
||||
def test_managed_keys_match_the_windows_build(self):
|
||||
# A key one build clears and the other does not survives a switch on
|
||||
# that platform - "must stay in lockstep" was only a comment until this.
|
||||
import re
|
||||
with open(os.path.join(REPO, "claude-mode.ps1"), encoding="utf-8") as fh:
|
||||
ps = fh.read()
|
||||
# Up to the line that is only ")", not the first ")": the array's own
|
||||
# comments contain parentheses.
|
||||
block = re.search(r"\$script:BaseManagedEnvKeys\s*=\s*@\((.*?)^\)", ps, re.S | re.M)
|
||||
self.assertIsNotNone(block, "BaseManagedEnvKeys not found in claude-mode.ps1")
|
||||
body = "\n".join(l for l in block.group(1).splitlines() if not l.strip().startswith("#"))
|
||||
self.assertEqual(sorted(re.findall(r"'([A-Z0-9_]+)'", body)), sorted(cm.BASE_MANAGED))
|
||||
|
||||
def test_static_catalogue(self):
|
||||
self.assertEqual(call(cm.cmd_provider_static, ["zai"]).splitlines()[0].split("\t")[0], "glm-5.3")
|
||||
|
||||
|
||||
Reference in New Issue
Block a user