GUI/CLI fixes: crash paths, privacy-lock bypass, threading, logout leaks
- _on_image_download_failed called self.statusBar() which does not exist on a QWidget -> AttributeError crash; use status_bar label. - Ctrl+Shift+P no longer disables the privacy overlay while the session is password-locked (lock bypass). - Registration code confirmation no longer touches Qt widgets from the asyncio thread; new AsyncBridge.confirm_result signal carries the result back to the Qt thread. - MainWindow.closeEvent now disconnects all bridge signal connections (tracked in _bridge_connections), removes the theme listener and stops the periodic refresh timer — every logout/login cycle leaked a window that kept handling notifications (duplicate mark_read, tray toasts). - AsyncBridge logout rewires _key_change_cb onto the fresh ChatClient (key-change MITM warning was dead after logout) and clears _pending_send_queue so queued messages cannot be sent under a different identity. - CLI: fix await precedence crash in the react-to-message prompt. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -348,7 +348,7 @@ async def interactive_menu(client: ChatClient):
|
||||
print("[!] Invalid number.")
|
||||
continue
|
||||
print("Reactions: thumbsup, heart, laugh, surprised, sad, thumbsdown")
|
||||
reaction = await prompt("Reaction: ").strip().lower()
|
||||
reaction = (await prompt("Reaction: ")).lower()
|
||||
if reaction not in ("thumbsup", "heart", "laugh", "surprised", "sad", "thumbsdown"):
|
||||
print("[!] Invalid reaction.")
|
||||
continue
|
||||
|
||||
Reference in New Issue
Block a user