• src/sbbs3/qtmonitor/CMake

    From Deuc¿@VERT to Git commit to main/sbbs/m on Thursday, May 07, 2026 09:50:00
    https://gitlab.synchro.net/main/sbbs/-/commit/79af1082cafd0d73836adeca
    Added Files:
    src/sbbs3/qtmonitor/CMakeLists.txt LICENSE clientwidget.cpp clientwidget.h loginattemptswidget.cpp loginattemptswidget.h logwidget.cpp logwidget.h main.cpp mainwindow.cpp mainwindow.h mqttclient.cpp mqttclient.h nodewidget.cpp nodewidget.h settingsdialog.cpp settingsdialog.h statswidget.cpp statswidget.h
    Modified Files:
    src/sbbs3/qtmonitor/.gitignore CLAUDE.md README.md
    Removed Files:
    src/sbbs3/qtmonitor/client_widget.py log_widget.py login_attempts_widget.py mainwindow.py mqtt_client.py node_widget.py pyproject.toml qtmonitor.py requirements.txt settings_dialog.py stats_widget.py tls_psk.py
    Log Message:
    qtmonitor: rewrite in C++ with Qt6 Widgets + Qt MQTT

    Replace the Python/PySide6 prototype with a native C++ implementation.
    No Python dependency, no fragile ctypes TLS-PSK hack.

    Uses QSslSocket's native preSharedKeyAuthenticationRequired signal for
    TLS-PSK authentication with broker.js. PSK ciphers filtered from QSslConfiguration::supportedCiphers() since setCiphers(QString) doesn't
    accept OpenSSL directives. TLS managed independently; QMqttClient
    receives the encrypted socket as an IODevice transport.

    SSL certificate errors prompt the user for confirmation; accepted errors
    are remembered for subsequent reconnects within the session.

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/m on Thursday, May 07, 2026 12:43:00
    https://gitlab.synchro.net/main/sbbs/-/commit/eddebddf72ffa9d40bf278ab
    Modified Files:
    src/sbbs3/qtmonitor/CMakeLists.txt
    Log Message:
    qtmonitor: WIN32 subsystem, PRIVATE linkage, qt_finalize_target

    Add WIN32 to suppress console window on Windows (no-op on Unix).
    Use PRIVATE keyword for target_link_libraries as required by qt_finalize_target() which handles WinMain bridging.

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/m on Thursday, May 07, 2026 12:54:00
    https://gitlab.synchro.net/main/sbbs/-/commit/6b33d30f7a4a641e83dd0538
    Modified Files:
    src/sbbs3/qtmonitor/CMakeLists.txt
    Log Message:
    qtmonitor: auto-build Qt MQTT from source when not packaged

    Ubuntu and some other distros don't package qt6-mqtt. Fall back to
    building it from source via FetchContent, matching the installed Qt
    version tag. System packages are preferred when available.

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net
  • From Deuc¿@VERT to Git commit to main/sbbs/m on Thursday, May 07, 2026 13:11:00
    https://gitlab.synchro.net/main/sbbs/-/commit/8886a3dab8d6a1adda321111
    Modified Files:
    src/sbbs3/qtmonitor/CMakeLists.txt
    Log Message:
    qtmonitor: require Qt6WebSockets before building Qt MQTT from source

    Qt MQTT has a transitive dependency on Qt6WebSockets. Make it a
    REQUIRED component so cmake fails at configure time with a clear
    message rather than during the qtmqtt build.

    Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net