boost-skill-cli 1.0.178__tar.gz → 1.0.179__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/PKG-INFO +1 -1
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/_version.py +2 -2
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/output.py +15 -4
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/PKG-INFO +1 -1
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/design-roadmap.html +2 -2
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D08.md +4 -4
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_output.py +40 -1
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/.gitattributes +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/.gitignore +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/.gitleaks.toml +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/.htmlvalidate.json +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/.markdownlint-cli2.jsonc +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/.pre-commit-config.yaml +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/CLAUDE.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/CONTRIBUTING.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/LICENSE +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/MANIFEST.in +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/Makefile +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/README.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/SECURITY.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/__init__.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/__main__.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/cli.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/cliparse.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/__init__.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/bmad.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/configuration.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/discovery.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/hooks.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/info.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/intelligence.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/pkg.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/quality.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/taps.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/commands/team.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/__init__.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/adapters.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/agents.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/ai.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/catalog.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/claude_settings.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/config.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/dense.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/embed.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/frontmatter.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/gitutil.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/imperative.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/injectscan.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/journal.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/lockfile.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/logs.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/mcp.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/nethttp.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/paths.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/policy.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/rag.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/registry.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/rules.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/secretscan.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/serve.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/stackprobe.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/staleness.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/store.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/typosquat.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/updatediff.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/util.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/core/workflows.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/data/registries.json +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/errors.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_cli/spin.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/SOURCES.txt +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/dependency_links.txt +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/entry_points.txt +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/requires.txt +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/top_level.txt +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/.claude/settings.local.json +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/DEBUGGING.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/adapters.html +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/commands.html +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/demo.gif +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/demo.tape +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/eval.html +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/index.html +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/mcp-hub.html +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/rag-architecture.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D01.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D02.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D03.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D04.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D05.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D06.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D07.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D09.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D10.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D11.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D12.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D13.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D14.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D15.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D16.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D17.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D18.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D19.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D20.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D21.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D22.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D23.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D24.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D25.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/BOOST-D26.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/accessibility-audit-pa11y-ci-axe-core.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/atomic-corruption-safe-lock-file-writes.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/atomic-skill-install-temp-dir-swap.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/autonomous-ship-workflow-and-isolated-worktree.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/boost-run-live-agents.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/bring-commands-under-mutation-testing.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/broken-link-and-anchor-checking-lychee.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/browse-crashes-selecting-a-rule-or-workflow.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/build-provenance-slsa-attestations.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/cache-the-catalog-entry-set-across-rag-queries.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/capability-manifest-and-least-privilege-policy.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/clean-env-install-smoke-pip-and-pipx.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/command-reference-docs-site.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/complexity-and-dead-code-radar-xenon-vulture.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/consolidate-skill-staleness-drift-logic-into-cor.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/coverage-dashboard-codecov-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/coverage-guided-fuzzing-atheris-oss-fuzz.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/crash-recorder-error-paths-core-logs-py.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/dependency-cve-gate-pip-audit.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/docstring-coverage-interrogate.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/doctor-checks-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/end-of-options-guard-on-git-commands.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/extension-free-tests-core-dense-py.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/extract-mcp-http-servers-out-of-configuration-py.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/finish-mutation-hardening-across-core.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/fix-self-update-version-detection-dead-branch.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/fork-safe-network-proxy-handler.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/framework-adapter-langgraph.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/framework-adapter-multi-agent.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/framework-adapters-boost-adapt.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/frontmatter-scalar-over-coercion.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/github-pages-deploy-is-broken-every-push.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/golden-set-statistical-power.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/hash-pinned-reproducible-toolchain-uv-lock.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/html-validation-html-validate.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/install-scope-user-or-project.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/integrity-verification-boost-verify.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/invocation-pid-logging-for-crash-correlation.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/layering-guard-import-linter.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/lighthouse-ci-on-the-pages-site.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/list-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/localize-the-stored-bm25-snippet.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/lockfile-enforcement-and-commit-pinning.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/log-timestamps-mislabeled-utc.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/lowest-version-resolution-uv-resolution-lowest-d.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/make-the-roadmaps-discoverable.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/markdown-consistency-markdownlint-cli2.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/mcp-hub-diagram-node-text-overflow.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/mcp-launch-objc-fork-safety.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/mcp-register-names-server-before-env.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/mcp-startup-self-harden-fork-safety.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/memoize-config-load-in-process.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/modernization-smells-refurb-pyupgrade.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/mutation-hardening-core-frontmatter-py.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/mutation-hardening-core-gitutil-py.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/mutation-hardening-core-store-py.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/one-command-every-env-nox.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/one-shared-atomic-write-helper.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/package-metadata-validation-twine-check-friends.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/patch-coverage-gate-diff-cover.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/performance-regression-gate-pytest-benchmark.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/post-deploy-smoke-headless-load-check.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/pre-release-python-canary-3-14t-free-threaded.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/promote-nav-footer-into-the-shared-style-system.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/prompt-injection-scanning-of-skill-markdown.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/property-based-tests-hypothesis-on-the-parsers.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/prose-and-terminology-linting-vale.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/prune-ignored-dirs-during-scan-dir-walk.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/quality-dashboard-sonarcloud-free-for-oss.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/ranx-significance-monitor.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/reconcile-the-theme-drift.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/refresh-the-marketing-surface.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/retrieval-quality-eval-harness.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/reuse-helpers-kill-minor-dead-work.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/robust-tag-argument-parsing.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/rule-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/runner-egress-monitoring-stepsecurity-harden-run.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/runtime-explain-faithfulness-guardrail.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/sbom-aware-scanning-osv-scanner.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/sbom-on-every-release-cyclonedx-syft.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/scan-and-sync-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/second-type-checker-pyright.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/secret-and-pii-scanning-of-installed-skills.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/secret-scanning-gitleaks-push-protection.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/security-linting-bandit-via-ruff-s-rules.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/shift-left-gate-pre-commit-pre-commit-ci.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/single-imperative-rule-extractor.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/single-tech-stack-prober.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/split-oversized-command-modules.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/startup-and-import-time-budget-x-importtime.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/stop-re-serializing-entry-meta-on-every-search.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/supply-chain-posture-openssf-scorecard.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/surface-every-docs-page-from-the-guide.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/tap-signing-and-provenance-sigstore-minisign.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/theme-asset-linting-stylelint-eslint.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/typo-detection-codespell.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/typosquat-and-name-confusion-detection.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/unify-tilde-two-copies-have-a-boundary-bug.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/untrack-generated-build-noise.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/update-diff-before-apply.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/update-refreshes-rules-and-workflows.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/visual-regression-pass-on-the-guide.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/widen-the-ruff-rule-surface-b-sim-c4-perf-ruf.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/windows-in-the-ci-matrix.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/workflow-install-native-materialization.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/workflow-linting-actionlint.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/workflow-sast-zizmor.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/workspace-scope-install.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap.html +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/examples/README.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/examples/adapt-demo.sh +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/examples/boost-run-prototype.sh +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/index.html +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/noxfile.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/pyproject.toml +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/bench_cli.sh +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/build_command_reference.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/build_registries.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/build_roadmap.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/ensure_eval_corpus.sh +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/eval_explain.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/eval_recommend.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/eval_retrieval.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/import_budget.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/scripts/mutation_gate.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/setup.cfg +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/style/README.md +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/style/boost.css +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/style/boost.js +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/style/demo.html +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/adapt.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/browse.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/count.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/discover.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/doctor.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/environment.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/explain.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/index.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/install.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/list.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/mcp.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/search.feature +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/steps/cli_steps.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/steps/discovery_steps.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/steps/mcp_steps.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/bdd/features/steps/quality_steps.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/conftest.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/eval/baseline.json +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/eval/explain.jsonl +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/eval/golden.jsonl +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/eval/recommend.jsonl +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/eval/taps.txt +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_adapt.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_bmad.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_configuration.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_discovery.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_hooks.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_info.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_intelligence.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_pkg.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_quality.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_taps.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_cli_team.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_everyday_loop.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/functional/test_property_parsers.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/make_fixture.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/perf/test_benchmarks.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/smoke.sh +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_adapters.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_agents.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_ai.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_catalog.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_claude_settings.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_cliparse.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_command_reference_fresh.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_config.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_dense.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_dense_fallback.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_docs_pages_linked.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_embed.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_errors_and_cli_table.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_eval_stats_summary.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_frontmatter.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_gitleaks_config.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_gitutil.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_imperative.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_import_budget.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_injectscan.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_journal.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_lockfile.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_logs.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_mcp.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_mutation_hardening.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_nethttp.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_paths.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_pkg_confusions.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_pkg_injection.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_pkg_secrets.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_policy.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_rag.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_registries_fresh.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_registry.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_roadmap_fresh.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_rules.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_secretscan.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_serve.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_spin.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_stackprobe.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_staleness.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_store.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_token_parity.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_typosquat.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_updatediff.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_util.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_version.py +0 -0
- {boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/tests/unit/test_workflows.py +0 -0
|
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
|
|
|
18
18
|
commit_id: str | None
|
|
19
19
|
__commit_id__: str | None
|
|
20
20
|
|
|
21
|
-
__version__ = version = '1.0.
|
|
22
|
-
__version_tuple__ = version_tuple = (1, 0,
|
|
21
|
+
__version__ = version = '1.0.179'
|
|
22
|
+
__version_tuple__ = version_tuple = (1, 0, 179)
|
|
23
23
|
|
|
24
24
|
__commit_id__ = commit_id = None
|
|
@@ -419,6 +419,11 @@ def table(rows, headers=None) -> None:
|
|
|
419
419
|
numeric columns are right-aligned, and when a row would overflow the
|
|
420
420
|
terminal the widest text column is shrunk (its cells clipped with an
|
|
421
421
|
ellipsis) so wide catalogs stay on one line instead of wrapping.
|
|
422
|
+
|
|
423
|
+
On a color terminal, columns are joined by a dim ``│`` separator — the
|
|
424
|
+
terminal cousin of the web stat blocks' hairline borders. Non-color output
|
|
425
|
+
(pipes, NO_COLOR, tests) keeps the plain two-space gutter byte-for-byte,
|
|
426
|
+
so scripts that parse table output never see the ornament.
|
|
422
427
|
"""
|
|
423
428
|
rows = [[str(x) for x in r] for r in rows]
|
|
424
429
|
all_rows = ([list(map(str, headers))] if headers else []) + rows
|
|
@@ -429,17 +434,23 @@ def table(rows, headers=None) -> None:
|
|
|
429
434
|
for i in range(ncols)]
|
|
430
435
|
numeric = [_numeric_col([r[i] for r in rows if i < len(r)])
|
|
431
436
|
for i in range(ncols)]
|
|
432
|
-
|
|
437
|
+
if use_color():
|
|
438
|
+
sep, sep_w = " " + DIM + "│" + RESET + " ", 3
|
|
439
|
+
else:
|
|
440
|
+
sep, sep_w = " ", 2
|
|
441
|
+
widths = _fit_widths(widths, numeric, term_width(), sep=sep_w)
|
|
433
442
|
|
|
434
443
|
def fmt(cell: str, i: int) -> str:
|
|
435
444
|
cell = _clip_visible(cell, widths[i])
|
|
436
445
|
return _rpad(cell, widths[i]) if numeric[i] else _pad(cell, widths[i])
|
|
437
446
|
|
|
438
447
|
if headers:
|
|
439
|
-
|
|
440
|
-
|
|
448
|
+
# Bold each header cell individually: a whole-line wrap would be
|
|
449
|
+
# cancelled at the first separator's RESET on color terminals.
|
|
450
|
+
cells = [c(fmt(str(h), i), BOLD) for i, h in enumerate(headers)]
|
|
451
|
+
print(sep.join(cells).rstrip())
|
|
441
452
|
for r in rows:
|
|
442
|
-
print(
|
|
453
|
+
print(sep.join(fmt(cell, i) for i, cell in enumerate(r)).rstrip())
|
|
443
454
|
|
|
444
455
|
|
|
445
456
|
def confirm(prompt: str, default: bool = False) -> bool:
|
|
@@ -305,11 +305,11 @@
|
|
|
305
305
|
</article>
|
|
306
306
|
|
|
307
307
|
<article class="ritem" data-track="layout" data-impact="med">
|
|
308
|
-
<div class="ritem-top"><span class="rid">BOOST-D08</span><span class="rstatus
|
|
308
|
+
<div class="ritem-top"><span class="rid">BOOST-D08</span><span class="rstatus done">Shipped</span></div>
|
|
309
309
|
<h4>Width-aware, right-aligned tables</h4>
|
|
310
310
|
<p><code>table()</code> is a naive <code>ljust</code> that ignores terminal width and left-aligns numeric columns. Make it width-aware (shrink the widest text column to fit), right-align counts with tabular figures, and add dim column separators — matching the web's <code>font-variant-numeric: tabular-nums</code> stat blocks.</p>
|
|
311
311
|
<div class="rmeta"><span class="m-cat">layout</span><span>Complexity M</span><span class="m-imp med">Impact Med</span><span class="m-wow">★★★☆☆</span></div>
|
|
312
|
-
<div class="rref"><code>core/output.py
|
|
312
|
+
<div class="rref"><code>core/output.py · table()</code></div>
|
|
313
313
|
</article>
|
|
314
314
|
|
|
315
315
|
<article class="ritem" data-track="layout" data-impact="med">
|
|
@@ -2,15 +2,15 @@
|
|
|
2
2
|
id: BOOST-D08
|
|
3
3
|
board: design
|
|
4
4
|
track: layout
|
|
5
|
-
status:
|
|
5
|
+
status: done
|
|
6
6
|
impact: med
|
|
7
7
|
complexity: M
|
|
8
8
|
wow: 3
|
|
9
9
|
category: layout
|
|
10
|
-
ref: "core/output.py
|
|
10
|
+
ref: "core/output.py · table()"
|
|
11
11
|
order: 4
|
|
12
|
-
owner:
|
|
13
|
-
pr:
|
|
12
|
+
owner: loop/d08-tables
|
|
13
|
+
pr: 202
|
|
14
14
|
title: Width-aware, right-aligned tables
|
|
15
15
|
---
|
|
16
16
|
<code>table()</code> is a naive <code>ljust</code> that ignores terminal width and left-aligns numeric columns. Make it width-aware (shrink the widest text column to fit), right-align counts with tabular figures, and add dim column separators — matching the web's <code>font-variant-numeric: tabular-nums</code> stat blocks.
|
|
@@ -602,16 +602,55 @@ class TestTableColor:
|
|
|
602
602
|
import re
|
|
603
603
|
monkeypatch.setenv("CLICOLOR_FORCE", "1")
|
|
604
604
|
# a colored cell must not push the next column out of alignment
|
|
605
|
+
# (color mode joins columns with the dim │ separator)
|
|
605
606
|
output.table([[output.aurora("ab", "cyan"), "x"], ["cd", "y"]])
|
|
606
607
|
vis = [re.sub(r"\x1b\[[0-9;]*m", "", ln)
|
|
607
608
|
for ln in capsys.readouterr().out.splitlines()]
|
|
608
|
-
assert vis == ["ab
|
|
609
|
+
assert vis == ["ab │ x", "cd │ y"]
|
|
609
610
|
|
|
610
611
|
def test_header_row_is_bold_when_forced(self, capsys, monkeypatch):
|
|
611
612
|
monkeypatch.setenv("CLICOLOR_FORCE", "1")
|
|
612
613
|
output.table([["x", "1"]], headers=["NAME", "N"])
|
|
613
614
|
assert capsys.readouterr().out.startswith("\033[1mNAME")
|
|
614
615
|
|
|
616
|
+
def test_every_header_cell_is_bold(self, capsys, monkeypatch):
|
|
617
|
+
# A whole-line BOLD wrap would be cancelled by the separator's RESET;
|
|
618
|
+
# each header cell must carry its own bold instead.
|
|
619
|
+
monkeypatch.setenv("CLICOLOR_FORCE", "1")
|
|
620
|
+
output.table([["x", "y"]], headers=["AA", "BB"])
|
|
621
|
+
header = capsys.readouterr().out.splitlines()[0]
|
|
622
|
+
assert header.count(output.BOLD) == 2
|
|
623
|
+
assert "\033[1mAA" in header and "\033[1mBB" in header
|
|
624
|
+
|
|
625
|
+
def test_separator_is_dim_pipe_in_color_mode(self, capsys, monkeypatch):
|
|
626
|
+
monkeypatch.setenv("CLICOLOR_FORCE", "1")
|
|
627
|
+
output.table([("a", "b")])
|
|
628
|
+
out = capsys.readouterr().out
|
|
629
|
+
assert " " + output.DIM + "│" + output.RESET + " " in out
|
|
630
|
+
|
|
631
|
+
def test_no_separator_glyph_when_color_off(self, capsys, monkeypatch):
|
|
632
|
+
monkeypatch.setenv("NO_COLOR", "1")
|
|
633
|
+
monkeypatch.delenv("CLICOLOR_FORCE", raising=False)
|
|
634
|
+
output.table([("a", "b"), ("cc", "d")], headers=["X", "Y"])
|
|
635
|
+
out = capsys.readouterr().out
|
|
636
|
+
assert "│" not in out # plain two-space gutter,
|
|
637
|
+
assert out == "X Y\na b\ncc d\n" # byte-identical to before
|
|
638
|
+
|
|
639
|
+
def test_separator_width_counts_in_fit_budget(self, capsys, monkeypatch):
|
|
640
|
+
import os as _os
|
|
641
|
+
import re
|
|
642
|
+
# 3 columns of visible width 4 + two 3-wide separators = 18 > 17,
|
|
643
|
+
# so exactly one text column must shrink; with the old 2-wide gutter
|
|
644
|
+
# (total 16) nothing would shrink. Proves sep=3 reaches _fit_widths.
|
|
645
|
+
monkeypatch.setenv("CLICOLOR_FORCE", "1")
|
|
646
|
+
monkeypatch.setattr(output.shutil, "get_terminal_size",
|
|
647
|
+
lambda fb: _os.terminal_size((17, 24)))
|
|
648
|
+
output.table([("aaaa", "bbbb", "cccc")])
|
|
649
|
+
vis = re.sub(r"\x1b\[[0-9;]*m", "",
|
|
650
|
+
capsys.readouterr().out.splitlines()[0])
|
|
651
|
+
assert len(vis.rstrip()) <= 17
|
|
652
|
+
assert "…" in vis # a cell was clipped
|
|
653
|
+
|
|
615
654
|
|
|
616
655
|
class TestTable:
|
|
617
656
|
@pytest.fixture(autouse=True)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/boost_skill_cli.egg-info/entry_points.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/boost-run-live-agents.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/list-rules-and-workflows.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{boost_skill_cli-1.0.178 → boost_skill_cli-1.0.179}/docs/roadmap/items/one-command-every-env-nox.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|