methodproof 0.7.31__tar.gz → 0.7.32__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.
- {methodproof-0.7.31 → methodproof-0.7.32}/CHANGELOG.md +5 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/PKG-INFO +1 -1
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/cli.py +4 -2
- {methodproof-0.7.31 → methodproof-0.7.32}/pyproject.toml +1 -1
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_cli_start.py +7 -1
- {methodproof-0.7.31 → methodproof-0.7.32}/.github/workflows/ci.yml +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/.gitignore +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/LICENSE +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/README.md +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/__init__.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/__main__.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/_daemon.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/agents/__init__.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/agents/base.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/agents/music.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/agents/terminal.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/agents/watcher.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/analysis.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/binding.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/bip39.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/bridge.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/config.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/crypto.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/e2e.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/graph.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hook.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/__init__.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/claude_code.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/claude_code.sh +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/cline_hook.sh +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/codex_hook.sh +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/gemini_hook.sh +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/install.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/kiro_hook.sh +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/mcp_register.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/openclaw/HOOK.md +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/openclaw/handler.ts +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/openclaw_install.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/opencode_plugin.js +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/hooks/wrappers.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/integrity.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/kdf.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/keychain.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/live.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/lock.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/mcp.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/migrate_db.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/proxy.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/proxy_daemon.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/repos.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/skills/methodproof/SKILL.md +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/store.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/sync.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/tui/__init__.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/tui/consent.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/tui/init.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/tui/log.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/tui/login_success.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/tui/review.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/tui/start.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/tui/status.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/tui/theme.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/viewer.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/methodproof/wordlist.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/test_windows_compat.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/__init__.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/conftest.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_analysis.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_cli_auth.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_cli_config.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_cli_helpers.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_cli_session.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_cli_share.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_cli_update.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_e2e_integration.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_graph.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_hooks.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_live.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_openclaw_hooks.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_profiles.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_security.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_store.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_sync.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_viewer.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/tests/test_wrappers.py +0 -0
- {methodproof-0.7.31 → methodproof-0.7.32}/uv.lock +0 -0
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [0.7.32] — 2026-04-12
|
|
4
|
+
|
|
5
|
+
### Fixed
|
|
6
|
+
- **`mp start` no longer hard-fails on missing shell hook** — instead of `ERROR: Run methodproof init first` + exit, `mp start` now auto-installs the hook and continues. Prints a note that terminal capture won't work until the shell is restarted. Prevents the frustrating dead-end where auto-update + missing hook blocks the entire session.
|
|
7
|
+
|
|
3
8
|
## [0.7.31] — 2026-04-12
|
|
4
9
|
|
|
5
10
|
### Fixed
|
|
@@ -1111,8 +1111,10 @@ def cmd_start(args: argparse.Namespace) -> None:
|
|
|
1111
1111
|
|
|
1112
1112
|
_log_step("Checking hooks")
|
|
1113
1113
|
if not hook.is_installed():
|
|
1114
|
-
|
|
1115
|
-
|
|
1114
|
+
rc = hook.install()
|
|
1115
|
+
print(f" Shell hook installed ({rc}). Restart your shell or run:")
|
|
1116
|
+
print(f" eval \"$(methodproof shell-hook)\"")
|
|
1117
|
+
print(f" Terminal command capture won't work until the hook is active.")
|
|
1116
1118
|
|
|
1117
1119
|
_log_step("Authenticating")
|
|
1118
1120
|
account_id = _require_auth(cfg)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "methodproof"
|
|
3
|
-
version = "0.7.
|
|
3
|
+
version = "0.7.32"
|
|
4
4
|
description = "See how you code. Capture and visualize your engineering process."
|
|
5
5
|
requires-python = ">=3.11"
|
|
6
6
|
dependencies = ["watchdog>=4.0", "websocket-client>=1.7", "cryptography>=43.0", "keyring>=25.0", "textual>=0.59", "rich>=13.7"]
|
|
@@ -17,10 +17,16 @@ from methodproof import cli, config, graph, store
|
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
@patch("methodproof.hook.is_installed", return_value=False)
|
|
20
|
-
|
|
20
|
+
@patch("methodproof.hook.install", return_value="zsh: ~/.zshrc")
|
|
21
|
+
@patch("methodproof.cli._require_auth", side_effect=SystemExit("not logged in"))
|
|
22
|
+
def test_start_hooks_not_installed_auto_installs(mock_auth, mock_install, mock_hook, logged_in_cfg, cli_args, capsys):
|
|
23
|
+
"""Missing hook auto-installs and continues (no longer hard-fails)."""
|
|
21
24
|
logged_in_cfg()
|
|
22
25
|
with pytest.raises(SystemExit):
|
|
23
26
|
cli.cmd_start(cli_args())
|
|
27
|
+
out = capsys.readouterr().out
|
|
28
|
+
assert "Shell hook installed" in out
|
|
29
|
+
mock_install.assert_called_once()
|
|
24
30
|
|
|
25
31
|
|
|
26
32
|
@patch("methodproof.hook.is_installed", return_value=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
|
|
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
|