The build_toolbar() method created a local GtkBox (hbox) and packed all
buttons into it, but never added hbox to the window's vbox. The toolbar
was created then immediately garbage collected.
Fix: Inline all UI construction directly into build_ui() and pack the
toolbar box into the vbox with gtk_box_pack_start().
Bug fixes:
- Fixed PTY bridge: IO thread now uses pty_slave_ instead of pty_master_
(remote output was never reaching the terminal)
- Fixed double-delete crash on tab close by removing page-removed callback
- Fixed port being ignored in password dialog (always used port 22)
- Added EINTR handling in select() for IO thread
- Added mutex for thread-safe cleanup
- Added try/catch for std::stoi in server config parsing
- VtePty lifecycle now managed properly (no double-close)
- Redundant ssh_channel_poll_timeout call removed
New:
- Added .desktop file for system-wide application menu entry
- Makefile.am installs desktop file to $(datadir)/applications
- Makefile.am installs icon to $(datadir)/icons/hicolor/256x256/apps