application.app was never set anywhere - application.py is just a
constants module. Every call to view_chat(), on_new_chat(),
view_conversation(), on_reposts(), and on_likes() crashed with
AttributeError, silently swallowed by get_event's except clause.
Fix: store controller reference on each buffer during create_buffer()
in mainController, then use self.controller instead of the broken
application.app.controller pattern throughout all Bluesky buffer and
dialog code.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
ChatBuffer now has get_message(), get_formatted_message(), and view_item()
so repeat_item, copy_to_clipboard, and view work correctly with chat
messages. open_conversation (Ctrl+Win+Alt+C) detects chat buffers and
delegates to view_chat(). Opening a chat buffer now announces its name
and item count for screen reader feedback.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Replicate the Mastodon pattern where conversation buffers are inserted
as children of the direct_messages node, making Chats expandable in the
tree. Also adds duplicate detection and auto-navigation to existing
chat buffers.
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>