N. Hariharan
c3d537ae4a
fix(install): remove only graphify's own hook entries, keep others ( #4359 )
...
Hook install/uninstall identified graphify's hooks with
`"graphify" in str(group)` over the whole group dict. That removed a user's
own command sharing graphify's `hooks` array (with the whole group), and any
unrelated group whose command path merely contained the word "graphify" (e.g.
a script under `graphify-notes/`). Uninstall rewrote the settings file with no
backup, and `_strip_graphify_hook` raised AttributeError on a non-dict entry.
Match the individual `hooks[]` entries instead. A graphify entry is a command
hook whose command invokes graphify's own `hook-guard`/`hook-check` subcommands
(current installs) or references `graphify-out/` (the pre-#522 inline bash
guard). Only those entries are removed; a group is dropped only when nothing is
left in it, and non-dict/non-list shapes are passed through. Applies to the
Claude, CodeBuddy, Codex and Gemini install and uninstall filters, keeping them
in step. Uninstall now goes through `_write_settings_with_backup`, so it keeps
a rolling `.graphify-bak` like install already did.
Adds tests covering a user command sharing graphify's group, an unrelated group
whose path contains "graphify", a non-dict entry, and the legacy-bash replacement
plus idempotency for each host.
(cherry picked from commit 41310c256d )
2026-10-12 22:37:54 +01:00
..
2026-10-10 22:13:39 +01:00
2026-10-11 20:47:55 +01:00
2026-10-08 14:27:06 +01:00
2026-10-05 19:40:12 +01:00
2026-10-09 19:18:06 +01:00
2026-10-12 12:16:17 +01:00
2026-10-12 14:49:28 +01:00
2026-09-29 13:49:39 +01:00
2026-10-05 20:11:30 +01:00
2026-10-02 17:10:08 +01:00
2026-10-07 17:26:00 +01:00
2026-10-04 20:40:34 +01:00
2026-10-12 14:49:28 +01:00
2026-10-11 20:49:42 +01:00
2026-10-09 02:48:22 +01:00
2026-10-08 14:27:06 +01:00
2026-09-30 20:41:10 +01:00
2026-09-25 15:44:08 +01:00
2026-10-11 21:07:15 +01:00
2026-10-02 17:10:07 +01:00
2026-10-06 20:54:55 +01:00
2026-10-02 17:10:07 +01:00
2026-09-27 18:56:31 +01:00
2026-10-04 20:23:44 +01:00
2026-10-04 20:23:44 +01:00
2026-10-02 16:50:45 +01:00
2026-10-09 19:19:01 +01:00
2026-10-04 20:23:44 +01:00
2026-10-06 20:54:15 +01:00
2026-10-09 19:19:15 +01:00
2026-10-09 19:17:53 +01:00
2026-10-12 14:50:32 +01:00
2026-09-27 18:39:52 +01:00
2026-10-12 14:50:32 +01:00
2026-10-12 13:01:00 +01:00
2026-10-04 02:07:23 +01:00
2026-10-12 12:29:39 +01:00
2026-09-25 16:01:47 +01:00
2026-10-11 20:49:25 +01:00
2026-10-11 20:47:55 +01:00
2026-09-28 10:15:38 +01:00
2026-10-10 21:20:29 +01:00
2026-10-08 14:28:54 +01:00
2026-10-08 14:28:27 +01:00
2026-10-04 20:23:14 +01:00
2026-10-07 17:26:00 +01:00
2026-10-11 20:49:42 +01:00
2026-10-11 20:49:42 +01:00
2026-10-09 02:51:03 +01:00
2026-10-11 21:06:09 +01:00
2026-09-23 16:54:04 +01:00
2026-10-12 13:02:57 +01:00
2026-10-07 17:26:17 +01:00
2026-10-07 17:52:47 +01:00
2026-09-23 19:45:40 +01:00
2026-10-12 12:16:17 +01:00
2026-09-30 20:10:34 +01:00
2026-10-12 22:37:54 +01:00
2026-10-09 19:46:57 +01:00
2026-10-08 14:27:06 +01:00
2026-09-30 20:41:10 +01:00
2026-10-10 21:37:39 +01:00
2026-10-12 12:15:19 +01:00
2026-10-12 12:15:19 +01:00
2026-10-11 20:47:44 +01:00
2026-10-10 21:20:29 +01:00
2026-10-12 14:49:28 +01:00
2026-10-04 02:08:29 +01:00
2026-10-09 19:18:06 +01:00
2026-10-06 20:54:35 +01:00
2026-09-25 16:15:15 +01:00
2026-10-04 20:23:44 +01:00
2026-09-28 09:13:29 +01:00
2026-10-12 22:37:54 +01:00
2026-10-09 19:18:06 +01:00
2026-10-09 19:18:06 +01:00
2026-10-10 01:13:46 +01:00
2026-10-07 17:26:00 +01:00
2026-09-30 20:10:34 +01:00
2026-10-09 19:17:53 +01:00
2026-10-10 22:11:03 +01:00
2026-10-04 20:23:14 +01:00
2026-09-27 18:39:52 +01:00
2026-10-05 19:40:12 +01:00
2026-09-30 20:41:10 +01:00
2026-09-22 17:30:28 +01:00
2026-10-12 12:16:17 +01:00
2026-10-12 12:16:17 +01:00
2026-10-12 12:16:17 +01:00
2026-10-12 13:01:09 +01:00
2026-10-11 21:06:27 +01:00
2026-10-11 20:47:44 +01:00
2026-10-11 20:49:42 +01:00
2026-10-10 01:24:41 +01:00
2026-10-02 16:50:45 +01:00
2026-09-30 20:41:10 +01:00
2026-10-07 17:26:00 +01:00
2026-10-09 19:18:06 +01:00
2026-10-05 20:12:06 +01:00
2026-10-10 21:39:00 +01:00
2026-10-07 17:26:17 +01:00
2026-10-07 17:26:17 +01:00
2026-10-09 19:18:06 +01:00
2026-10-05 19:40:03 +01:00
2026-09-26 13:45:58 +01:00
2026-10-07 17:26:00 +01:00
2026-10-10 01:13:46 +01:00
2026-10-07 17:26:00 +01:00
2026-10-05 19:40:04 +01:00
2026-10-11 20:49:42 +01:00
2026-09-28 10:18:13 +01:00
2026-10-05 19:40:12 +01:00
2026-10-12 14:49:34 +01:00
2026-10-12 14:50:04 +01:00
2026-10-08 14:27:06 +01:00
2026-09-25 15:44:21 +01:00
2026-10-12 12:16:17 +01:00
2026-10-12 12:16:17 +01:00
2026-10-12 12:16:17 +01:00
2026-10-12 13:01:40 +01:00
2026-10-12 22:37:54 +01:00
2026-10-08 14:28:20 +01:00
2026-10-06 20:54:15 +01:00
2026-10-08 14:29:00 +01:00
2026-10-08 14:29:19 +01:00
2026-10-12 13:02:22 +01:00
2026-10-10 01:33:40 +01:00
2026-10-12 22:37:54 +01:00
2026-10-08 14:28:54 +01:00
2026-10-10 01:28:39 +01:00
2026-10-12 13:01:00 +01:00
2026-10-10 01:01:10 +01:00
2026-10-09 19:17:53 +01:00
2026-10-08 14:27:06 +01:00
2026-10-10 22:11:03 +01:00
2026-10-02 17:10:07 +01:00
2026-10-05 20:11:30 +01:00
2026-10-02 17:10:07 +01:00
2026-10-09 02:48:23 +01:00
2026-10-04 01:43:04 +01:00
2026-10-11 21:07:09 +01:00
2026-10-02 17:10:07 +01:00
2026-10-11 21:06:10 +01:00
2026-10-10 21:20:29 +01:00
2026-10-04 02:07:00 +01:00
2026-10-04 02:07:00 +01:00
2026-10-12 12:18:15 +01:00
2026-10-07 17:26:00 +01:00
2026-10-12 22:37:54 +01:00
2026-10-09 19:18:06 +01:00
2026-10-11 21:06:10 +01:00
2026-10-12 14:49:29 +01:00
2026-10-09 19:17:53 +01:00
2026-10-05 20:12:34 +01:00
2026-10-09 19:18:06 +01:00
2026-10-12 13:01:00 +01:00
2026-10-07 17:26:00 +01:00
2026-10-07 17:26:00 +01:00
2026-10-10 22:11:03 +01:00
2026-10-02 17:10:07 +01:00
2026-09-23 17:01:39 +01:00
2026-10-04 01:43:04 +01:00
2026-10-08 14:27:06 +01:00
2026-10-04 20:40:34 +01:00
2026-10-04 20:23:44 +01:00
2026-10-04 20:23:44 +01:00
2026-10-12 22:37:54 +01:00
2026-10-09 19:18:06 +01:00
2026-09-27 18:39:51 +01:00
2026-10-11 20:49:48 +01:00
2026-10-02 17:10:07 +01:00
2026-10-10 21:38:54 +01:00
2026-10-12 13:01:47 +01:00
2026-10-07 17:26:11 +01:00
2026-10-11 20:47:44 +01:00
2026-10-09 19:18:06 +01:00
2026-09-30 20:41:10 +01:00
2026-10-07 17:26:00 +01:00
2026-10-06 20:54:15 +01:00
2026-10-12 14:49:29 +01:00
2026-09-28 10:15:38 +01:00