Compare commits

...

7 Commits
1.4.1 ... 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
pdxlocations
44b2a3abee bump version 2025-10-22 07:58:29 -07:00
pdxlocations
a26804b8b6 adjust splash 2025-10-22 07:56:59 -07:00
pdxlocations
b225d5fe51 Update .gitignore and launch.json for debugging configurations; adjust splash screen layout 2025-10-22 07:53:51 -07:00
pdxlocations
ea33b78af0 bump version 2025-10-03 22:30:58 -07:00
6 changed files with 30 additions and 4 deletions

3
.gitignore vendored
View File

@@ -8,4 +8,5 @@ client.log
settings.log
config.json
default_config.log
dist/
dist/
.vscode/launch.json

11
.vscode/launch.json vendored
View File

@@ -1,13 +1,22 @@
{
"version": "0.1.0",
"configurations": [
{
"name": "Python Debugger: Current File",
"name": "Python Debugger: main",
"type": "debugpy",
"request": "launch",
"cwd": "${workspaceFolder}",
"module": "contact.__main__",
"args": []
},
{
"name": "Python Debugger: tcp",
"type": "debugpy",
"request": "launch",
"cwd": "${workspaceFolder}",
"module": "contact.__main__",
"args": ["--host","192.168.86.69"]
}
]
}

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

@@ -22,6 +22,7 @@ def draw_splash(stdscr: object) -> None:
stdscr.addstr(start_y + 1, start_x - 1, message_2, get_color("splash_logo", bold=True))
stdscr.addstr(start_y + 2, start_x - 2, message_3, get_color("splash_logo", bold=True))
stdscr.addstr(start_y + 4, start_x2, message_4, get_color("splash_text"))
stdscr.move(start_y + 5, start_x2)
stdscr.attrset(get_color("window_frame"))
stdscr.box()

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.0"
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"}