From b159cdc7464678696f4fe75cc6493df5d95eadba Mon Sep 17 00:00:00 2001 From: Justin Bollinger Date: Wed, 22 Apr 2026 19:07:17 -0400 Subject: [PATCH] feat(notify): move options 83/84 under new Notifications submenu (82) Co-Authored-By: Claude Sonnet 4.6 --- hate_crack.py | 3 +-- hate_crack/main.py | 9 ++------- tests/test_ui_menu_options.py | 19 +++++++++++++++++-- 3 files changed, 20 insertions(+), 11 deletions(-) diff --git a/hate_crack.py b/hate_crack.py index 7e190b1..178655d 100755 --- a/hate_crack.py +++ b/hate_crack.py @@ -94,8 +94,7 @@ def get_main_menu_options(): "22": _attacks.combipow_crack, "80": _attacks.wordlist_tools_submenu, "81": _attacks.rule_tools_submenu, - "83": toggle_notifications, - "84": test_pushover_notification, + "82": notifications_submenu, "90": download_hashmob_rules, "91": weakpass_wordlist_menu, "92": download_hashmob_wordlists, diff --git a/hate_crack/main.py b/hate_crack/main.py index f4cc751..f9bccf7 100755 --- a/hate_crack/main.py +++ b/hate_crack/main.py @@ -4213,11 +4213,7 @@ def get_main_menu_items(): ("22", "Combipow Passphrase Attack"), ("80", "Wordlist Tools"), ("81", "Rule File Tools"), - ( - "83", - f"Toggle Pushover Notifications [{'ON' if _notify.get_settings().enabled else 'OFF'}]", - ), - ("84", "Send Test Pushover Notification"), + ("82", "Notifications"), ("90", "Download rules from Hashmob.net"), ("91", "Analyze Hashcat Rules"), ("92", "Download wordlists from Hashmob.net"), @@ -4261,8 +4257,7 @@ def get_main_menu_options(): "22": combipow_crack, "80": wordlist_tools_submenu, "81": rule_tools_submenu, - "83": toggle_notifications, - "84": test_pushover_notification, + "82": notifications_submenu, "90": lambda: download_hashmob_rules(rules_dir=rulesDirectory), "91": analyze_rules, "92": download_hashmob_wordlists, diff --git a/tests/test_ui_menu_options.py b/tests/test_ui_menu_options.py index df81093..77f4294 100644 --- a/tests/test_ui_menu_options.py +++ b/tests/test_ui_menu_options.py @@ -32,8 +32,7 @@ MENU_OPTION_TEST_CASES = [ ("22", CLI_MODULE._attacks, "combipow_crack", "combipow"), ("80", CLI_MODULE._attacks, "wordlist_tools_submenu", "wordlist-tools"), ("81", CLI_MODULE._attacks, "rule_tools_submenu", "rule-tools"), - ("83", CLI_MODULE, "toggle_notifications", "toggle-notifications"), - ("84", CLI_MODULE, "test_pushover_notification", "test-pushover"), + ("82", CLI_MODULE, "notifications_submenu", "notifications-submenu"), ("90", CLI_MODULE, "download_hashmob_rules", "hashmob-rules"), ("91", CLI_MODULE, "weakpass_wordlist_menu", "weakpass-menu"), ("92", CLI_MODULE, "download_hashmob_wordlists", "hashmob-wordlists"), @@ -79,3 +78,19 @@ def test_main_menu_option_94_hashview_visible_with_hashview_api_key(monkeypatch) options = CLI_MODULE.get_main_menu_options() assert "94" in options assert options["94"]() == sentinel + + +def test_main_menu_no_longer_exposes_options_83_84(): + """Options 83 and 84 moved into the Notifications submenu (option 82).""" + options = CLI_MODULE.get_main_menu_options() + assert "83" not in options + assert "84" not in options + assert "82" in options + + +def test_main_menu_items_include_notifications_entry(): + items = dict(CLI_MODULE.get_main_menu_items()) + assert "82" in items + assert "Notifications" in items["82"] + assert "83" not in items + assert "84" not in items