graphban-cli 0.8.7__tar.gz → 0.8.8__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.
Files changed (42) hide show
  1. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/PKG-INFO +1 -1
  2. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/pyproject.toml +1 -1
  3. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_playbooks.py +33 -0
  4. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/uv.lock +1 -1
  5. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/.gitignore +0 -0
  6. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/LICENSE +0 -0
  7. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/README.md +0 -0
  8. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/__init__.py +0 -0
  9. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/cli.py +0 -0
  10. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/client.py +0 -0
  11. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/config.py +0 -0
  12. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/data/stack_sdks.toml +0 -0
  13. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/doctor.py +0 -0
  14. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/gitignore.py +0 -0
  15. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/machine.py +0 -0
  16. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/playbooks.py +0 -0
  17. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/setup.py +0 -0
  18. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-answer/SKILL.md +0 -0
  19. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-delegation/SKILL.md +0 -0
  20. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-grill/SKILL.md +0 -0
  21. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-orient/SKILL.md +0 -0
  22. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-prd/SKILL.md +0 -0
  23. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-prove/SKILL.md +0 -0
  24. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-review/SKILL.md +0 -0
  25. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-scan/SKILL.md +0 -0
  26. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-ship/SKILL.md +0 -0
  27. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-unstick/SKILL.md +0 -0
  28. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-wave/SKILL.md +0 -0
  29. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/graphban-work/SKILL.md +0 -0
  30. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/skills/watch-wave/SKILL.md +0 -0
  31. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/stackmap.py +0 -0
  32. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/src/gban/swamp.py +0 -0
  33. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_acts.py +0 -0
  34. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_doctor.py +0 -0
  35. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_login_pair.py +0 -0
  36. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_login_projects.py +0 -0
  37. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_machine_report.py +0 -0
  38. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_packaging.py +0 -0
  39. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_session.py +0 -0
  40. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_setup.py +0 -0
  41. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_stackmap.py +0 -0
  42. {graphban_cli-0.8.7 → graphban_cli-0.8.8}/tests/test_swamp.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: graphban-cli
3
- Version: 0.8.7
3
+ Version: 0.8.8
4
4
  Summary: gban — a Graphban client for the human at a terminal
5
5
  Project-URL: Homepage, https://github.com/asc-me/graphban
6
6
  Project-URL: Repository, https://github.com/asc-me/graphban
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "graphban-cli"
3
- version = "0.8.7"
3
+ version = "0.8.8"
4
4
  description = "gban — a Graphban client for the human at a terminal"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -290,3 +290,36 @@ def test_gban_doctor_prints_the_playbooks_line(tmp_path, monkeypatch, capsys):
290
290
  out = capsys.readouterr()
291
291
  assert "playbooks" in out.out and "at abc" in out.out and "just now" not in out.out
292
292
  assert "last poll" not in out.err
293
+
294
+
295
+ # --- GRPH-1506: hook files ride the pack, each to its own path -------------------------------
296
+
297
+ HOOK = ".cursor/hooks/gb_stop.py"
298
+ HOOKS_JSON = ".cursor/hooks.json"
299
+
300
+
301
+ def _hook_pack(sha_, *extra):
302
+ files = [{"path": SKILL, "kind": "skill", "body": "S1"},
303
+ {"path": HOOK, "kind": "hook", "body": "H1"}, *extra]
304
+ return {"git_sha": sha_, "files": files}
305
+
306
+
307
+ def test_a_hook_is_written_once_at_its_own_path_and_a_skill_still_fans_out(tmp_path):
308
+ poll(URL, tmp_path, client=Fake({"git_sha": "1"}, _hook_pack("1")), now=0)
309
+ assert (tmp_path / HOOK).read_text() == "H1"
310
+ assert playbooks.targets({"path": HOOK, "kind": "hook"}) == [HOOK]
311
+ assert sorted(receipt(tmp_path)["files"]) == sorted([*COPIES, HOOK])
312
+ for rel in COPIES:
313
+ assert (tmp_path / rel).read_text() == "S1"
314
+ assert not (tmp_path / ".claude/hooks").exists()
315
+
316
+
317
+ def test_a_foreign_hooks_json_is_left_and_named_while_the_scripts_are_written(tmp_path):
318
+ (tmp_path / ".cursor").mkdir()
319
+ (tmp_path / HOOKS_JSON).write_text("theirs")
320
+ pack = _hook_pack("1", {"path": HOOKS_JSON, "kind": "hook", "body": "{}"})
321
+ r = poll(URL, tmp_path, client=Fake({"git_sha": "1"}, pack), now=0)
322
+ assert (tmp_path / HOOKS_JSON).read_text() == "theirs"
323
+ assert HOOKS_JSON in r["kept"] and HOOKS_JSON in r["note"]
324
+ assert HOOKS_JSON not in receipt(tmp_path)["files"]
325
+ assert (tmp_path / HOOK).read_text() == "H1"
@@ -124,7 +124,7 @@ wheels = [
124
124
 
125
125
  [[package]]
126
126
  name = "graphban-cli"
127
- version = "0.8.7"
127
+ version = "0.8.8"
128
128
  source = { editable = "." }
129
129
 
130
130
  [package.optional-dependencies]
File without changes
File without changes
File without changes