Compare commits

...

3 Commits
1.4.2 ... 1.4.3

Author SHA1 Message Date
pdxlocations
974a4af7f4 bump version 2025-10-23 21:19:15 -07:00
pdxlocations
9026c56ebf Merge pull request #226 from pdxlocations:improve-traceroute-timer
Implement cooldown for traceroute command
2025-10-22 08:38:44 -07:00
pdxlocations
26ca9599de Implement cooldown for traceroute command to prevent spamming; update UI state to track last traceroute time 2025-10-22 08:38:16 -07:00
3 changed files with 17 additions and 2 deletions

View File

@@ -404,11 +404,25 @@ def handle_enter(input_text: str) -> str:
def handle_ctrl_t(stdscr: curses.window) -> None:
"""Handle Ctrl + T key events to send a traceroute."""
now = time.monotonic()
cooldown = 30.0
remaining = cooldown - (now - ui_state.last_traceroute_time)
if remaining > 0:
curses.curs_set(0) # Hide cursor
contact.ui.dialog.dialog(
"Traceroute Not Sent", f"Please wait {int(remaining)} seconds before sending another traceroute."
)
curses.curs_set(1) # Show cursor again
handle_resize(stdscr, False)
return
send_traceroute()
ui_state.last_traceroute_time = now
curses.curs_set(0) # Hide cursor
contact.ui.dialog.dialog(
f"Traceroute Sent To: {get_name_from_database(ui_state.node_list[ui_state.selected_node])}",
"Results will appear in messages window.\nNote: Traceroute is limited to once every 30 seconds.",
"Results will appear in messages window.",
)
curses.curs_set(1) # Show cursor again
handle_resize(stdscr, False)

View File

@@ -26,6 +26,7 @@ class ChatUIState:
selected_node: int = 0
current_window: int = 0
last_sent_time: float = 0.0
last_traceroute_time: float = 0.0
selected_index: int = 0
start_index: List[int] = field(default_factory=lambda: [0, 0, 0])

View File

@@ -1,6 +1,6 @@
[project]
name = "contact"
version = "1.4.2"
version = "1.4.3"
description = "This Python curses client for Meshtastic is a terminal-based client designed to manage device settings, enable mesh chat communication, and handle configuration backups and restores."
authors = [
{name = "Ben Lipsey",email = "ben@pdxlocations.com"}