feat: human-friendly TUI output with --agent flag for JSON/compact

- Replace default JSON output with styled TUI tables and ANSI colors.
- Add -a/--agent global flag: small payloads → JSON, large → pipe-delimited compact.
- Update README to reflect new output behavior and remove JSON-first references.
- Bump version to 2.0.2.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-04-16 18:36:23 +08:00
parent b78845eb43
commit 9395978440
5 changed files with 366 additions and 56 deletions

View File

@@ -20,7 +20,7 @@ class CLITestCase(unittest.TestCase):
def test_init_dispatches(self):
captured = {}
with patch.object(cli, "ensure_init_files", return_value={"force": True, "root": "/tmp/ch"}), patch.object(
cli, "print_json", side_effect=lambda payload: captured.setdefault("payload", payload)
cli, "print_output", side_effect=lambda payload, **kwargs: captured.setdefault("payload", payload)
):
result = cli.main(["init", "--force"])
self.assertEqual(result, 0)
@@ -40,7 +40,7 @@ class CLITestCase(unittest.TestCase):
def test_update_dispatches(self):
captured = {}
with patch.object(cli, "self_update", return_value={"command": "pipx upgrade coinhunter", "returncode": 0}), patch.object(
cli, "print_json", side_effect=lambda payload: captured.setdefault("payload", payload)
cli, "print_output", side_effect=lambda payload, **kwargs: captured.setdefault("payload", payload)
):
result = cli.main(["update"])
self.assertEqual(result, 0)