diff --git a/CMakeLists.txt b/CMakeLists.txt index 22ca2cd..5ed10e9 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,5 +1,5 @@ cmake_minimum_required(VERSION 3.16) -project(UARTScope VERSION 1.0.0 LANGUAGES CXX) +project(UARTScope VERSION 1.1.0 LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) @@ -12,6 +12,7 @@ find_package(Qt6 REQUIRED COMPONENTS Gui Widgets SerialPort + Network ) set(SOURCES @@ -49,6 +50,7 @@ target_link_libraries(uartscope PRIVATE Qt6::Gui Qt6::Widgets Qt6::SerialPort + Qt6::Network ) # V4L2 uses Linux kernel headers directly (linux/videodev2.h) diff --git a/include/connectdialog.h b/include/connectdialog.h index e63c8a3..7e637ef 100644 --- a/include/connectdialog.h +++ b/include/connectdialog.h @@ -4,16 +4,31 @@ #include #include #include +#include +#include #include #include struct SerialConfig { + // Which transport to use: a real/virtual serial port, or a plain TCP + // connection (e.g. for emulators/firmware that stream their debug + // UART over the network, such as FS-UAE piped through socat). + enum class ConnectionType { Serial, Network }; + ConnectionType connectionType = ConnectionType::Serial; + + // Serial-specific QString portName; qint32 baudRate = 115200; QSerialPort::DataBits dataBits = QSerialPort::Data8; QSerialPort::Parity parity = QSerialPort::NoParity; QSerialPort::StopBits stopBits = QSerialPort::OneStop; QSerialPort::FlowControl flowControl = QSerialPort::NoFlowControl; + + // Network-specific + QString networkHost; + quint16 networkPort = 0; + + // Common QString logFilePath; }; @@ -32,11 +47,17 @@ private slots: private: void addPtyPorts(); + QTabWidget *m_modeTabs = nullptr; + QComboBox *m_portCombo = nullptr; QComboBox *m_baudCombo = nullptr; QComboBox *m_dataBitsCombo = nullptr; QComboBox *m_parityCombo = nullptr; QComboBox *m_stopBitsCombo = nullptr; QComboBox *m_flowCombo = nullptr; + + QLineEdit *m_hostEdit = nullptr; + QSpinBox *m_portSpin = nullptr; + QLineEdit *m_logPathEdit = nullptr; }; diff --git a/include/serialworker.h b/include/serialworker.h index 7375f4e..5e6f9f4 100644 --- a/include/serialworker.h +++ b/include/serialworker.h @@ -2,17 +2,27 @@ #include #include #include +#include +#include #include #include #include #include -// SerialWorker lives in its own QThread and owns the QSerialPort. +// SerialWorker lives in its own QThread and owns the actual data source, +// which is either a QSerialPort (real/virtual serial device) or a +// QTcpSocket (for firmware/emulators that send their debug UART over a +// TCP connection, e.g. FS-UAE's serial-over-socat setup). Both are +// QIODevice subclasses, so the byte-parsing pipeline below (line +// buffering, ANSI stripping, tag detection, logging) is shared as-is +// between the two transports; only opening/closing/reconnect handling +// differs. +// // It emits newLine() for every complete line received, // tagDetected() when a line contains a recognised tag like [WDG], // and clearScreen() when an ANSI clear-screen sequence is received. -// Auto-reconnect: if the port drops unexpectedly, the worker retries -// every reconnectIntervalMs until success or closePort(). +// Auto-reconnect: if the connection drops unexpectedly, the worker +// retries every reconnectIntervalMs until success or closePort(). class SerialWorker : public QObject { Q_OBJECT @@ -30,6 +40,7 @@ public slots: QSerialPort::Parity parity, QSerialPort::StopBits stopBits, QSerialPort::FlowControl flowControl); + void openNetwork(const QString &host, quint16 port); void closePort(); void setLogFile(const QString &path); void stopLogging(); @@ -46,16 +57,28 @@ signals: private slots: void onReadyRead(); void onPortError(QSerialPort::SerialPortError err); + void onSocketConnected(); + void onSocketDisconnected(); + void onSocketError(QAbstractSocket::SocketError err); void tryReconnect(); void flushScanTail(); private: + enum class ConnectionMode { Serial, Network }; + void processRawData(const QByteArray &data); void appendToLineBuffer(const QByteArray &toProcess); void processLine(const QString &line); void scheduleReconnect(); + ConnectionMode m_mode = ConnectionMode::Serial; + QSerialPort *m_port = nullptr; + QTcpSocket *m_socket = nullptr; + // Points at whichever of m_port/m_socket is the currently active data + // source; onReadyRead() reads from this without caring which it is. + QIODevice *m_device = nullptr; + QFile *m_logFile = nullptr; QTextStream *m_logStream = nullptr; QString m_buffer; @@ -77,10 +100,15 @@ private: int m_reconnectIntervalMs = 2000; int m_reconnectAttempt = 0; + // Serial-specific connection parameters QString m_portName; qint32 m_baudRate = 115200; QSerialPort::DataBits m_dataBits = QSerialPort::Data8; QSerialPort::Parity m_parity = QSerialPort::NoParity; QSerialPort::StopBits m_stopBits = QSerialPort::OneStop; QSerialPort::FlowControl m_flowControl = QSerialPort::NoFlowControl; + + // Network-specific connection parameters + QString m_networkHost; + quint16 m_networkPort = 0; }; diff --git a/include/videowidget.h b/include/videowidget.h index 3606caa..34c5b6b 100644 --- a/include/videowidget.h +++ b/include/videowidget.h @@ -1,15 +1,22 @@ #pragma once #include #include +#include #include #include #include #include #include #include +#include #include "v4l2worker.h" +// VideoWidget shows the live V4L2 preview and can additionally record it +// to an MP4 file. Recording works by piping raw BGRA frames into an +// external `ffmpeg` process (via QProcess/stdin), which encodes them to +// H.264/MP4 - this avoids reimplementing video encoding and just needs +// ffmpeg to be installed and on PATH. class VideoWidget : public QWidget { Q_OBJECT @@ -29,6 +36,7 @@ private slots: void onStartStop(); void onFreeze(bool frozen); void onScreenshot(); + void onRecordToggled(bool checked); void refreshDeviceList(); protected: @@ -40,6 +48,9 @@ private: void startCapture(); void stopCapture(); void updateScaled(); + void startRecording(); + void stopRecording(); + void writeRecordingFrame(const QImage &frame); QThread *m_thread = nullptr; V4l2Worker *m_worker = nullptr; @@ -54,5 +65,15 @@ private: QPushButton *m_startBtn = nullptr; QPushButton *m_freezeBtn = nullptr; QPushButton *m_screenshotBtn = nullptr; + QPushButton *m_recordBtn = nullptr; QLabel *m_infoLabel = nullptr; + + // Recording state. m_recordProcess is the running ffmpeg instance (or + // nullptr when not recording); m_recordSize is the frame size the + // recording was started with, so a mid-stream resolution change (which + // ffmpeg's raw pipe can't handle) can be detected and the recording + // stopped cleanly instead of corrupting the output file. + QProcess *m_recordProcess = nullptr; + bool m_recording = false; + QSize m_recordSize; }; diff --git a/src/connectdialog.cpp b/src/connectdialog.cpp index 75e873d..5a5ec2d 100644 --- a/src/connectdialog.cpp +++ b/src/connectdialog.cpp @@ -10,24 +10,28 @@ ConnectDialog::ConnectDialog(QWidget *parent) : QDialog(parent) { - setWindowTitle(tr("Connect to UART")); - setMinimumWidth(360); + setWindowTitle(tr("Connect to UARTScope input")); + setMinimumWidth(380); - auto *form = new QFormLayout(); + m_modeTabs = new QTabWidget(this); + + // ── "Seriell" tab: real or virtual (PTY) serial port ──────────────── + auto *serialTab = new QWidget(m_modeTabs); + auto *form = new QFormLayout(serialTab); form->setRowWrapPolicy(QFormLayout::DontWrapRows); form->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); auto *portRow = new QHBoxLayout(); - m_portCombo = new QComboBox(this); + m_portCombo = new QComboBox(serialTab); m_portCombo->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - auto *refreshBtn = new QPushButton(tr("↻"), this); + auto *refreshBtn = new QPushButton(tr("↻"), serialTab); refreshBtn->setMaximumWidth(30); connect(refreshBtn, &QPushButton::clicked, this, &ConnectDialog::refreshPorts); portRow->addWidget(m_portCombo, 1); portRow->addWidget(refreshBtn); form->addRow(tr("Port:"), portRow); - m_baudCombo = new QComboBox(this); + m_baudCombo = new QComboBox(serialTab); const QList bauds = {1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600}; for (int b : bauds) @@ -35,7 +39,7 @@ ConnectDialog::ConnectDialog(QWidget *parent) m_baudCombo->setCurrentText("115200"); form->addRow(tr("Baud rate:"), m_baudCombo); - m_dataBitsCombo = new QComboBox(this); + m_dataBitsCombo = new QComboBox(serialTab); m_dataBitsCombo->addItem("5", QSerialPort::Data5); m_dataBitsCombo->addItem("6", QSerialPort::Data6); m_dataBitsCombo->addItem("7", QSerialPort::Data7); @@ -43,7 +47,7 @@ ConnectDialog::ConnectDialog(QWidget *parent) m_dataBitsCombo->setCurrentText("8"); form->addRow(tr("Data bits:"), m_dataBitsCombo); - m_parityCombo = new QComboBox(this); + m_parityCombo = new QComboBox(serialTab); m_parityCombo->addItem(tr("None"), QSerialPort::NoParity); m_parityCombo->addItem(tr("Even"), QSerialPort::EvenParity); m_parityCombo->addItem(tr("Odd"), QSerialPort::OddParity); @@ -51,18 +55,52 @@ ConnectDialog::ConnectDialog(QWidget *parent) m_parityCombo->addItem(tr("Mark"), QSerialPort::MarkParity); form->addRow(tr("Parity:"), m_parityCombo); - m_stopBitsCombo = new QComboBox(this); + m_stopBitsCombo = new QComboBox(serialTab); m_stopBitsCombo->addItem("1", QSerialPort::OneStop); m_stopBitsCombo->addItem("1.5", QSerialPort::OneAndHalfStop); m_stopBitsCombo->addItem("2", QSerialPort::TwoStop); form->addRow(tr("Stop bits:"), m_stopBitsCombo); - m_flowCombo = new QComboBox(this); + m_flowCombo = new QComboBox(serialTab); m_flowCombo->addItem(tr("None"), QSerialPort::NoFlowControl); m_flowCombo->addItem(tr("RTS/CTS"), QSerialPort::HardwareControl); m_flowCombo->addItem(tr("XON/XOFF"), QSerialPort::SoftwareControl); form->addRow(tr("Flow control:"), m_flowCombo); + m_modeTabs->addTab(serialTab, tr("Seriell")); + + // ── "Netzwerk (TCP)" tab: e.g. FS-UAE's serial-over-socat output ──── + auto *networkTab = new QWidget(m_modeTabs); + auto *netForm = new QFormLayout(networkTab); + netForm->setRowWrapPolicy(QFormLayout::DontWrapRows); + netForm->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); + + m_hostEdit = new QLineEdit(networkTab); + m_hostEdit->setPlaceholderText(tr("z. B. localhost oder 192.168.1.50")); + m_hostEdit->setText("localhost"); + netForm->addRow(tr("Host / IP:"), m_hostEdit); + + m_portSpin = new QSpinBox(networkTab); + m_portSpin->setRange(1, 65535); + m_portSpin->setValue(1234); + netForm->addRow(tr("Port:"), m_portSpin); + + auto *netInfoLabel = new QLabel( + tr("Für Emulatoren/Firmware, die die UART-Ausgabe über TCP senden " + "statt über ein echtes serielles Gerät (z. B. FS-UAE, dessen " + "serielle Schnittstelle per socat auf einen TCP-Port " + "gelegt wird): hier Host und Port statt eines seriellen Ports " + "angeben. Baudrate/Parität etc. spielen dabei keine Rolle."), + networkTab); + netInfoLabel->setWordWrap(true); + netInfoLabel->setStyleSheet("color: gray; font-size: 10px;"); + netForm->addRow(netInfoLabel); + + m_modeTabs->addTab(networkTab, tr("Netzwerk (TCP)")); + + // ── shared: log file (applies to either transport) ────────────────── + auto *logForm = new QFormLayout(); + logForm->setFieldGrowthPolicy(QFormLayout::ExpandingFieldsGrow); auto *logRow = new QHBoxLayout(); m_logPathEdit = new QLineEdit(this); m_logPathEdit->setPlaceholderText(tr("(optional) path/to/output.log")); @@ -71,7 +109,7 @@ ConnectDialog::ConnectDialog(QWidget *parent) connect(browseBtn, &QPushButton::clicked, this, &ConnectDialog::browseLogFile); logRow->addWidget(m_logPathEdit, 1); logRow->addWidget(browseBtn); - form->addRow(tr("Log file:"), logRow); + logForm->addRow(tr("Log file:"), logRow); auto *buttons = new QDialogButtonBox( QDialogButtonBox::Ok | QDialogButtonBox::Cancel, this); @@ -79,7 +117,8 @@ ConnectDialog::ConnectDialog(QWidget *parent) connect(buttons, &QDialogButtonBox::rejected, this, &QDialog::reject); auto *mainLayout = new QVBoxLayout(this); - mainLayout->addLayout(form); + mainLayout->addWidget(m_modeTabs); + mainLayout->addLayout(logForm); mainLayout->addWidget(buttons); refreshPorts(); @@ -146,12 +185,20 @@ void ConnectDialog::browseLogFile() SerialConfig ConnectDialog::config() const { SerialConfig cfg; + cfg.connectionType = (m_modeTabs->currentIndex() == 1) + ? SerialConfig::ConnectionType::Network + : SerialConfig::ConnectionType::Serial; + cfg.portName = m_portCombo->currentData().toString(); cfg.baudRate = m_baudCombo->currentData().toInt(); cfg.dataBits = static_cast(m_dataBitsCombo->currentData().toInt()); cfg.parity = static_cast(m_parityCombo->currentData().toInt()); cfg.stopBits = static_cast(m_stopBitsCombo->currentData().toInt()); cfg.flowControl = static_cast(m_flowCombo->currentData().toInt()); + + cfg.networkHost = m_hostEdit->text().trimmed(); + cfg.networkPort = static_cast(m_portSpin->value()); + cfg.logFilePath = m_logPathEdit->text().trimmed(); return cfg; } diff --git a/src/main.cpp b/src/main.cpp index e96c677..98e4b2f 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,7 +7,7 @@ int main(int argc, char *argv[]) { QApplication app(argc, argv); app.setApplicationName("UARTScope"); - app.setApplicationVersion("1.0.0"); + app.setApplicationVersion("1.1.0"); app.setOrganizationName("ChicaDev"); app.setStyle(QStyleFactory::create("Fusion")); diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index c9e9b00..77867cf 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -117,6 +117,7 @@ void MainWindow::setupUi() void MainWindow::setupToolBar() { auto *tb = addToolBar(tr("Main")); + tb->setObjectName("mainToolBar"); // required by QMainWindow::saveState() tb->setMovable(false); m_connectAction = tb->addAction(tr("Connect…")); @@ -199,9 +200,17 @@ void MainWindow::onConnectClicked() return; m_lastConfig = dlg.config(); - if (m_lastConfig.portName.isEmpty()) { - QMessageBox::warning(this, tr("No port"), tr("Please select a valid serial port.")); - return; + + if (m_lastConfig.connectionType == SerialConfig::ConnectionType::Serial) { + if (m_lastConfig.portName.isEmpty()) { + QMessageBox::warning(this, tr("No port"), tr("Please select a valid serial port.")); + return; + } + } else { + if (m_lastConfig.networkHost.isEmpty()) { + QMessageBox::warning(this, tr("No host"), tr("Please enter a host/IP to connect to.")); + return; + } } if (!m_lastConfig.logFilePath.isEmpty()) @@ -216,14 +225,21 @@ void MainWindow::onConnectClicked() m_worker->setReconnectInterval(interval); }, Qt::QueuedConnection); - QMetaObject::invokeMethod(m_worker, "openPort", - Qt::QueuedConnection, - Q_ARG(QString, m_lastConfig.portName), - Q_ARG(qint32, m_lastConfig.baudRate), - Q_ARG(QSerialPort::DataBits, m_lastConfig.dataBits), - Q_ARG(QSerialPort::Parity, m_lastConfig.parity), - Q_ARG(QSerialPort::StopBits, m_lastConfig.stopBits), - Q_ARG(QSerialPort::FlowControl, m_lastConfig.flowControl)); + if (m_lastConfig.connectionType == SerialConfig::ConnectionType::Serial) { + QMetaObject::invokeMethod(m_worker, "openPort", + Qt::QueuedConnection, + Q_ARG(QString, m_lastConfig.portName), + Q_ARG(qint32, m_lastConfig.baudRate), + Q_ARG(QSerialPort::DataBits, m_lastConfig.dataBits), + Q_ARG(QSerialPort::Parity, m_lastConfig.parity), + Q_ARG(QSerialPort::StopBits, m_lastConfig.stopBits), + Q_ARG(QSerialPort::FlowControl, m_lastConfig.flowControl)); + } else { + QMetaObject::invokeMethod(m_worker, "openNetwork", + Qt::QueuedConnection, + Q_ARG(QString, m_lastConfig.networkHost), + Q_ARG(quint16, m_lastConfig.networkPort)); + } } void MainWindow::onDisconnectClicked() @@ -238,10 +254,17 @@ void MainWindow::onPortOpened() m_stateLabel->setText(tr("● Connected")); m_stateLabel->setStyleSheet("color: #4ec94e;"); m_reconnectLabel->clear(); - m_portLabel->setText( - QStringLiteral("%1 @ %2 baud") - .arg(m_lastConfig.portName) - .arg(m_lastConfig.baudRate)); + if (m_lastConfig.connectionType == SerialConfig::ConnectionType::Network) { + m_portLabel->setText( + QStringLiteral("%1:%2 (TCP)") + .arg(m_lastConfig.networkHost) + .arg(m_lastConfig.networkPort)); + } else { + m_portLabel->setText( + QStringLiteral("%1 @ %2 baud") + .arg(m_lastConfig.portName) + .arg(m_lastConfig.baudRate)); + } statusBar()->clearMessage(); } @@ -299,12 +322,15 @@ void MainWindow::clearAllViews() void MainWindow::showFormatReference() { - static const QString referenceText = R"( + static const QString referenceText = R"UARTSCOPE( # UARTScope – Output Format Reference # Give this text to your AI assistant to generate compatible UART output. -UARTScope reads from a serial UART port and interprets the incoming text in -three parallel ways. You can use any combination. +UARTScope reads from either a serial UART port OR a plain TCP connection +(see the "Netzwerk (TCP)" tab in the Connect dialog - handy for emulators +like FS-UAE whose debug UART is piped through socat to a TCP port) and +interprets the incoming text in three parallel ways. You can use any +combination. ──────────────────────────────────────────────────────────── 1. RAW OUTPUT (always active) @@ -397,7 +423,7 @@ void uart_status_update(void) { // Clear screen from firmware when you want a fresh start: // uart_printf("\033[2J\033[H"); -)"; +)UARTSCOPE"; auto *dlg = new QDialog(this); dlg->setWindowTitle(tr("UARTScope – Format Reference")); @@ -546,7 +572,7 @@ void MainWindow::showAbout() grid->addWidget(v, row, 1); }; - addRow(0, tr("Version"), "1.0.0"); + addRow(0, tr("Version"), "1.1.0"); addRow(1, tr("Entwickler"), "Dany Thinnes"); addRow(2, tr("Projekt"), "Projekt Hirnfrei"); addRow(3, tr("Framework"), QString("Qt %1").arg(QT_VERSION_STR)); diff --git a/src/serialworker.cpp b/src/serialworker.cpp index 3ab4405..4cf4a18 100644 --- a/src/serialworker.cpp +++ b/src/serialworker.cpp @@ -5,6 +5,7 @@ SerialWorker::SerialWorker(QObject *parent) : QObject(parent) , m_port(new QSerialPort(this)) + , m_socket(new QTcpSocket(this)) , m_idleFlushTimer(new QTimer(this)) , m_reconnectTimer(new QTimer(this)) { @@ -16,6 +17,11 @@ SerialWorker::SerialWorker(QObject *parent) connect(m_port, &QSerialPort::readyRead, this, &SerialWorker::onReadyRead); connect(m_port, &QSerialPort::errorOccurred, this, &SerialWorker::onPortError); + + connect(m_socket, &QTcpSocket::readyRead, this, &SerialWorker::onReadyRead); + connect(m_socket, &QTcpSocket::connected, this, &SerialWorker::onSocketConnected); + connect(m_socket, &QTcpSocket::disconnected, this, &SerialWorker::onSocketDisconnected); + connect(m_socket, &QTcpSocket::errorOccurred, this, &SerialWorker::onSocketError); } SerialWorker::~SerialWorker() @@ -32,6 +38,7 @@ void SerialWorker::openPort(const QString &portName, qint32 baudRate, QSerialPort::StopBits stopBits, QSerialPort::FlowControl flowControl) { + m_mode = ConnectionMode::Serial; m_portName = portName; m_baudRate = baudRate; m_dataBits = dataBits; @@ -41,6 +48,10 @@ void SerialWorker::openPort(const QString &portName, qint32 baudRate, m_userDisconnected = false; m_reconnectAttempt = 0; + // Make sure any previous connection (of either transport) is torn down + // before switching to serial mode. + if (m_socket->state() != QAbstractSocket::UnconnectedState) + m_socket->abort(); if (m_port->isOpen()) m_port->close(); @@ -57,6 +68,7 @@ void SerialWorker::openPort(const QString &portName, qint32 baudRate, scheduleReconnect(); return; } + m_device = m_port; m_idleFlushTimer->stop(); m_buffer.clear(); m_scanTail.clear(); @@ -64,15 +76,54 @@ void SerialWorker::openPort(const QString &portName, qint32 baudRate, emit portOpened(); } +void SerialWorker::openNetwork(const QString &host, quint16 port) +{ + m_mode = ConnectionMode::Network; + m_networkHost = host; + m_networkPort = port; + m_userDisconnected = false; + m_reconnectAttempt = 0; + + // Make sure any previous connection (of either transport) is torn down + // before switching to network mode. + if (m_port->isOpen()) + m_port->close(); + if (m_socket->state() != QAbstractSocket::UnconnectedState) + m_socket->abort(); + + m_idleFlushTimer->stop(); + m_buffer.clear(); + m_scanTail.clear(); + + // connectToHost() is asynchronous - the outcome (success or failure) + // arrives later via the connected()/errorOccurred() signals, handled + // in onSocketConnected()/onSocketError() below. + m_socket->connectToHost(host, port); +} + void SerialWorker::closePort() { m_userDisconnected = true; m_reconnectTimer->stop(); m_idleFlushTimer->stop(); + + bool wasOpen = false; if (m_port && m_port->isOpen()) { m_port->close(); - emit portClosed(); + wasOpen = true; } + if (m_socket && m_socket->state() != QAbstractSocket::UnconnectedState) { + // abort() tears the connection down immediately (no graceful + // shutdown handshake needed for a debug/monitor connection like + // this one) and reliably triggers disconnected() right away. + m_socket->abort(); + wasOpen = true; + } + m_device = nullptr; + + if (wasOpen) + emit portClosed(); + stopLogging(); } @@ -117,11 +168,14 @@ void SerialWorker::stopLogging() void SerialWorker::onReadyRead() { - processRawData(m_port->readAll()); + if (m_device) + processRawData(m_device->readAll()); } void SerialWorker::onPortError(QSerialPort::SerialPortError err) { + if (m_mode != ConnectionMode::Serial) + return; if (err == QSerialPort::NoError) return; @@ -130,6 +184,7 @@ void SerialWorker::onPortError(QSerialPort::SerialPortError err) if (fatal) { m_port->close(); + m_device = nullptr; emit portClosed(); if (m_autoReconnect && !m_userDisconnected) { scheduleReconnect(); @@ -139,6 +194,52 @@ void SerialWorker::onPortError(QSerialPort::SerialPortError err) } } +void SerialWorker::onSocketConnected() +{ + if (m_mode != ConnectionMode::Network) + return; + + m_device = m_socket; + m_idleFlushTimer->stop(); + m_buffer.clear(); + m_scanTail.clear(); + m_reconnectAttempt = 0; + emit portOpened(); +} + +void SerialWorker::onSocketDisconnected() +{ + if (m_mode != ConnectionMode::Network) + return; + + m_device = nullptr; + + // If this disconnect was requested by us (closePort()), that function + // has already emitted portClosed() and handles all cleanup - nothing + // more to do here, and reconnecting would be wrong. + if (m_userDisconnected) + return; + + emit portClosed(); + if (m_autoReconnect) + scheduleReconnect(); +} + +void SerialWorker::onSocketError(QAbstractSocket::SocketError) +{ + if (m_mode != ConnectionMode::Network) + return; + + const QString msg = m_socket->errorString(); + m_device = nullptr; + + if (m_autoReconnect && !m_userDisconnected) { + scheduleReconnect(); + } else { + emit errorOccurred(msg); + } +} + void SerialWorker::tryReconnect() { if (m_userDisconnected) @@ -147,21 +248,30 @@ void SerialWorker::tryReconnect() ++m_reconnectAttempt; emit reconnecting(m_reconnectAttempt); - m_port->setPortName(m_portName); - m_port->setBaudRate(m_baudRate); - m_port->setDataBits(m_dataBits); - m_port->setParity(m_parity); - m_port->setStopBits(m_stopBits); - m_port->setFlowControl(m_flowControl); + if (m_mode == ConnectionMode::Serial) { + m_port->setPortName(m_portName); + m_port->setBaudRate(m_baudRate); + m_port->setDataBits(m_dataBits); + m_port->setParity(m_parity); + m_port->setStopBits(m_stopBits); + m_port->setFlowControl(m_flowControl); - if (m_port->open(QIODevice::ReadOnly)) { - m_idleFlushTimer->stop(); - m_buffer.clear(); - m_scanTail.clear(); - m_reconnectAttempt = 0; - emit portOpened(); + if (m_port->open(QIODevice::ReadOnly)) { + m_device = m_port; + m_idleFlushTimer->stop(); + m_buffer.clear(); + m_scanTail.clear(); + m_reconnectAttempt = 0; + emit portOpened(); + } else { + scheduleReconnect(); + } } else { - scheduleReconnect(); + // Network: connectToHost() is asynchronous. Success/failure is + // reported later via onSocketConnected()/onSocketError(), which + // either finish this attempt or schedule the next one. + m_socket->abort(); + m_socket->connectToHost(m_networkHost, m_networkPort); } } diff --git a/src/videowidget.cpp b/src/videowidget.cpp index e308b01..6f613f5 100644 --- a/src/videowidget.cpp +++ b/src/videowidget.cpp @@ -7,6 +7,7 @@ #include #include #include +#include static QStringList enumerateVideoDevices() { @@ -40,12 +41,16 @@ VideoWidget::VideoWidget(QWidget *parent) m_running = false; m_startBtn->setText(tr("▶ Start")); m_infoLabel->setText(tr("Stopped")); + if (m_recording) + stopRecording(); update(); }); connect(m_worker, &V4l2Worker::errorOccurred, this, [this](const QString &msg) { m_infoLabel->setText(tr("Error: %1").arg(msg)); m_running = false; m_startBtn->setText(tr("▶ Start")); + if (m_recording) + stopRecording(); }); m_thread->start(); @@ -57,6 +62,9 @@ void VideoWidget::shutdown() return; m_shutdownDone = true; + if (m_recording) + stopRecording(); + m_worker->stopCapture(); if (m_thread && m_thread->isRunning()) { @@ -104,11 +112,18 @@ void VideoWidget::setupUi() m_screenshotBtn->setMaximumWidth(32); connect(m_screenshotBtn, &QPushButton::clicked, this, &VideoWidget::onScreenshot); + m_recordBtn = new QPushButton(tr("⏺ Record"), this); + m_recordBtn->setCheckable(true); + m_recordBtn->setMaximumWidth(80); + m_recordBtn->setToolTip(tr("Record the live preview to an MP4 file (requires ffmpeg)")); + connect(m_recordBtn, &QPushButton::toggled, this, &VideoWidget::onRecordToggled); + ctrlRow->addWidget(m_deviceCombo, 1); ctrlRow->addWidget(refreshBtn); ctrlRow->addWidget(m_startBtn); ctrlRow->addWidget(m_freezeBtn); ctrlRow->addWidget(m_screenshotBtn); + ctrlRow->addWidget(m_recordBtn); layout->addLayout(ctrlRow); m_infoLabel = new QLabel(tr("No device started"), this); @@ -151,6 +166,14 @@ void VideoWidget::onScreenshot() void VideoWidget::onNewFrame(const QImage &frame) { + // Feed the recorder regardless of freeze state, so pausing the preview + // doesn't also pause/corrupt the recording - recording tracks the real + // incoming stream, not what's currently shown on screen. + if (m_recording && m_recordProcess && + m_recordProcess->state() == QProcess::Running) { + writeRecordingFrame(frame); + } + if (m_frozen) return; m_frame = frame; @@ -237,3 +260,134 @@ void VideoWidget::resizeEvent(QResizeEvent *event) QWidget::resizeEvent(event); updateScaled(); } + +// ── Recording (raw frames piped into ffmpeg, encoded to MP4) ────────────── + +void VideoWidget::onRecordToggled(bool checked) +{ + if (checked) + startRecording(); + else + stopRecording(); +} + +void VideoWidget::startRecording() +{ + if (m_frame.isNull()) { + QMessageBox::warning(this, tr("No signal"), + tr("Start the video capture first before recording.")); + m_recordBtn->setChecked(false); + return; + } + + const QString defaultName = + QStandardPaths::writableLocation(QStandardPaths::MoviesLocation) + + "/uartscope_" + + QDateTime::currentDateTime().toString("yyyyMMdd_hhmmss") + + ".mp4"; + + const QString path = QFileDialog::getSaveFileName( + this, tr("Save recording as"), defaultName, + tr("MP4 Video (*.mp4)")); + if (path.isEmpty()) { + m_recordBtn->setChecked(false); + return; + } + + // Frames are piped in as raw BGRA (matching QImage::Format_RGB32's + // in-memory byte layout on little-endian systems) at whatever + // resolution capture is currently running at; a resolution change + // mid-recording would corrupt ffmpeg's raw input stream, so + // writeRecordingFrame() watches for that and stops the recording if + // it happens (see there). + m_recordSize = m_frame.size(); + + m_recordProcess = new QProcess(this); + + connect(m_recordProcess, &QProcess::errorOccurred, this, [this](QProcess::ProcessError) { + m_infoLabel->setText(tr("Recording error: %1").arg(m_recordProcess->errorString())); + stopRecording(); + }); + connect(m_recordProcess, + QOverload::of(&QProcess::finished), + this, [this](int exitCode, QProcess::ExitStatus) { + if (exitCode != 0 && m_recordProcess) + m_infoLabel->setText(tr("ffmpeg exited with code %1").arg(exitCode)); + if (m_recordProcess) { + m_recordProcess->deleteLater(); + m_recordProcess = nullptr; + } + }); + + // -use_wallclock_as_timestamps: frames don't arrive at a strictly + // constant rate (V4L2 delivers whatever the device/driver produces), + // so we let ffmpeg timestamp each frame using the system clock at the + // moment it's read from the pipe rather than assuming a fixed + // framerate. That keeps the resulting MP4's real-time duration + // correct even if the capture rate varies or briefly stalls. + const QStringList args = { + "-y", + "-f", "rawvideo", + "-pixel_format", "bgra", + "-video_size", QStringLiteral("%1x%2").arg(m_recordSize.width()).arg(m_recordSize.height()), + "-use_wallclock_as_timestamps", "1", + "-i", "-", + "-c:v", "libx264", + "-pix_fmt", "yuv420p", + "-preset", "veryfast", + "-movflags", "+faststart", + path + }; + + m_recordProcess->start("ffmpeg", args); + if (!m_recordProcess->waitForStarted(3000)) { + QMessageBox::critical(this, tr("Recording failed"), + tr("Could not start ffmpeg. Is it installed and available on PATH?")); + m_recordProcess->deleteLater(); + m_recordProcess = nullptr; + m_recordBtn->setChecked(false); + return; + } + + m_recording = true; + m_recordBtn->setText(tr("⏹ Stop")); + m_infoLabel->setText(tr("Recording to %1").arg(path)); +} + +void VideoWidget::stopRecording() +{ + m_recording = false; + m_recordBtn->setChecked(false); + m_recordBtn->setText(tr("⏺ Record")); + + if (m_recordProcess) { + // Closing stdin signals ffmpeg there's no more input; it then + // finishes encoding/muxing and exits on its own. The finished() + // handler connected in startRecording() cleans the QProcess up + // once that happens. + m_recordProcess->closeWriteChannel(); + if (!m_recordProcess->waitForFinished(3000)) + m_recordProcess->terminate(); + } +} + +void VideoWidget::writeRecordingFrame(const QImage &frame) +{ + if (frame.size() != m_recordSize) { + // The capture device changed resolution mid-recording (shouldn't + // normally happen, but e.g. a device re-negotiating format could + // trigger it). Feeding ffmpeg mismatched frame sizes on a raw pipe + // would desync/corrupt the output, so stop cleanly instead. + stopRecording(); + m_infoLabel->setText(tr("Recording stopped: frame size changed")); + return; + } + + // Format_RGB32 stores each pixel as 0xffRRGGBB in host byte order, + // which on little-endian systems (the overwhelming majority of + // desktop/embedded targets) is byte-for-byte BGRA - matching the + // "-pixel_format bgra" we told ffmpeg to expect above. + const QImage bgra = frame.convertToFormat(QImage::Format_RGB32); + m_recordProcess->write(reinterpret_cast(bgra.constBits()), + static_cast(bgra.sizeInBytes())); +} diff --git a/uartscope-git/PKGBUILD b/uartscope-git/PKGBUILD index b8d872c..b3b860b 100644 --- a/uartscope-git/PKGBUILD +++ b/uartscope-git/PKGBUILD @@ -1,6 +1,6 @@ # Maintainer: diabolus pkgname=uartscope -pkgver=1.0.0.r5.g1422efd +pkgver=1.0.0.r6.ga942f83 pkgrel=1 pkgdesc="Qt6-based UART serial monitor with tag monitoring, table view and auto-reconnect" arch=('x86_64' 'aarch64') diff --git a/uartscope-git/pkg/uartscope/.BUILDINFO b/uartscope-git/pkg/uartscope/.BUILDINFO index c745e96..459019b 100644 --- a/uartscope-git/pkg/uartscope/.BUILDINFO +++ b/uartscope-git/pkg/uartscope/.BUILDINFO @@ -1,11 +1,11 @@ format = 2 pkgname = uartscope pkgbase = uartscope -pkgver = 1.0.0.r5.g1422efd-1 +pkgver = 1.0.0.r6.ga942f83-1 pkgarch = x86_64 -pkgbuild_sha256sum = 8242aa269f493268004722051e566533f096b179edde83066e021265ee1edd3e +pkgbuild_sha256sum = 838e01d91a8df5c30e4be619acfc3fe42d6b58ec89f227d9df94874ebfbed8c0 packager = Unknown Packager -builddate = 1786450603 +builddate = 1787005573 builddir = /home/diabolus/Arbeit/Projekt-Hirnfrei/uartscope/uartscope-git startdir = /home/diabolus/Arbeit/Projekt-Hirnfrei/uartscope/uartscope-git buildtool = makepkg @@ -72,7 +72,7 @@ installed = android-ndk-r29-3-x86_64 installed = android-pkg-config-3-1-any installed = android-sdk-26.1.1-2-x86_64 installed = android-sdk-build-tools-r37.0.0-2-x86_64 -installed = android-sdk-platform-tools-37.0.0-1-x86_64 +installed = android-sdk-platform-tools-37.0.1-1-x86_64 installed = android-sdk-platform-tools-debug-36.0.0-1-x86_64 installed = android-tools-37.0.0-2-x86_64 installed = android-udev-20260423-1-any @@ -82,11 +82,11 @@ installed = aom-3.14.1-1-x86_64 installed = apache-2.4.68-1-x86_64 installed = apache-orc-2.3.1-1-x86_64 installed = apparmor-4.1.7-1-x86_64 -installed = appstream-1.1.5-1-x86_64 +installed = appstream-1.1.6-1-x86_64 installed = appstream-glib-0.8.4-1-x86_64 -installed = appstream-qt-1.1.5-1-x86_64 +installed = appstream-qt-1.1.6-1-x86_64 installed = apr-1.7.6-1-x86_64 -installed = apr-util-1.6.4-1-x86_64 +installed = apr-util-1.6.5-1-x86_64 installed = arandr-0.1.11-6-any installed = arch-install-scripts-31-2-any installed = archlinux-appstream-data-20260722-1-any @@ -101,7 +101,7 @@ installed = aribb24-1.0.3-4-x86_64 installed = arm-linux-gnueabihf-binutils-2.45+r8+g09be88bfb653-1-x86_64 installed = arm-linux-gnueabihf-linux-api-headers-6.15.1-1-any installed = arm-none-eabi-binutils-2.47-1-x86_64 -installed = arm-none-eabi-gcc-16.1.0-1-x86_64 +installed = arm-none-eabi-gcc-16.2.0-1-x86_64 installed = arm-none-eabi-newlib-4.6.0.20260123-1-any installed = arrow-24.0.0-6-x86_64 installed = asar-4.2.1-1-any @@ -114,7 +114,7 @@ installed = atkmm-2.28.5-2-x86_64 installed = atril-1.28.3-1-x86_64 installed = attica-6.28.0-1-x86_64 installed = attr-2.6.0-1-x86_64 -installed = audacity-1:3.7.8-3-x86_64 +installed = audacity-1:3.7.8-4-x86_64 installed = audiofile-0.3.6-12-x86_64 installed = audit-4.2.1-1-x86_64 installed = aurorae-6.7.4-1-x86_64 @@ -149,7 +149,7 @@ installed = babl-0.1.128-1-x86_64 installed = baloo-6.28.0-1-x86_64 installed = baloo-widgets-26.04.3-1-x86_64 installed = baobab-50.0-1-x86_64 -installed = barecode-git-r5.cb66172-1-x86_64 +installed = barecode-1.1.0-1-x86_64 installed = base-3-3-any installed = base-devel-1-2-any installed = bash-5.3.15-1-x86_64 @@ -157,7 +157,7 @@ installed = bash-completion-2.18.0-1-any installed = bc-1.08.2-1-x86_64 installed = benchmark-1.9.5-2-x86_64 installed = bigsh0t-2.7-2-x86_64 -installed = binutils-2.47-1-x86_64 +installed = binutils-2.47-4-x86_64 installed = bison-3.8.2-8-x86_64 installed = blas-3.12.1-2-x86_64 installed = blender-bin-5.2.0-1-x86_64 @@ -169,11 +169,11 @@ installed = bluez-libs-5.87-2-x86_64 installed = bluez-obex-5.87-2-x86_64 installed = bluez-utils-5.87-2-x86_64 installed = bogofilter-db-1.2.5-12-x86_64 -installed = bolt-0.9.11-2-x86_64 +installed = bolt-0.9.11-3-x86_64 installed = boost-1.91.0-2-x86_64 installed = boost-libs-1.91.0-2-x86_64 installed = brasero-3.12.3+r44+gdea4990b-1-x86_64 -installed = brave-bin-1:1.93.129-1-x86_64 +installed = brave-bin-1:1.93.136-1-x86_64 installed = breeze-6.7.4-1-x86_64 installed = breeze-cursors-6.7.4-1-x86_64 installed = breeze-icons-6.28.0-1-x86_64 @@ -188,7 +188,7 @@ installed = bubblewrap-0.11.2-1-x86_64 installed = bzip2-1.0.8-6-x86_64 installed = c-ares-1.34.8-1-x86_64 installed = ca-certificates-20240618-1-any -installed = ca-certificates-mozilla-3.126-1-x86_64 +installed = ca-certificates-mozilla-3.127-1-x86_64 installed = ca-certificates-utils-20240618-1-any installed = cabextract-1.11-3-x86_64 installed = cairo-1.18.4-1-x86_64 @@ -199,7 +199,7 @@ installed = calendarsupport-26.04.3-1-x86_64 installed = cantarell-fonts-1:0.311-1-any installed = capstone-5.0.9-1-x86_64 installed = cargo-c-0.10.24-1-x86_64 -installed = cauchy-0.9.0-5-x86_64 +installed = cauchy-0.9.0-6-x86_64 installed = cblas-3.12.1-2-x86_64 installed = ccache-4.13.6-1-x86_64 installed = cccl-3.4.2-1-any @@ -208,10 +208,10 @@ installed = cdrdao-1.2.6-3-x86_64 installed = cdrtools-3.02a09-6-x86_64 installed = cef-minimal-obs-bin-2:127.3.4+ga0ca18e+chromium_127.0.6533.100_6-1-x86_64 installed = ceres-solver-2.2.0-5-x86_64 -installed = cfitsio-1:4.6.4-1-x86_64 +installed = cfitsio-1:4.7.0-1-x86_64 installed = chmlib-0.40-10-x86_64 installed = chromaprint-1.6.1-2-x86_64 -installed = chromium-151.0.7922.108-1-x86_64 +installed = chromium-151.0.7922.137-1-x86_64 installed = chrpath-0.18-1-x86_64 installed = cifs-utils-7.5-1-x86_64 installed = cinnamon-6.6.9-1-x86_64 @@ -243,8 +243,10 @@ installed = compiler-rt21-21.1.8-1-x86_64 installed = composefs-1.0.8-1-x86_64 installed = composer-2.10.2-1-any installed = confuse-3.3-5-x86_64 -installed = containerd-2.3.3-1-x86_64 +installed = containerd-2.3.4-1-x86_64 installed = convertlit-1.8-13-x86_64 +installed = coolercontrol-4.3.1-2-x86_64 +installed = coolercontrold-4.3.1-2-x86_64 installed = coqui-tts-0.27.5-2-any installed = coreutils-9.11-2-x86_64 installed = cpio-2.15-3-x86_64 @@ -262,7 +264,7 @@ installed = cura-bin-5.13.0-1-x86_64 installed = curl-8.21.0-1-x86_64 installed = curl-impersonate-2.1.0-1-x86_64 installed = curlftpfs-0.9.2-10-x86_64 -installed = curseforge-1.312.1_36055-1-x86_64 +installed = curseforge-1.316.0_37372-1-x86_64 installed = cutecom-0.60.0_RC1-2-x86_64 installed = cutecom-debug-0.60.0_RC1-1-x86_64 installed = cython-3.2.9-1-x86_64 @@ -278,10 +280,10 @@ installed = dconf-editor-49.0-1-x86_64 installed = ddcutil-2.2.7-1-x86_64 installed = debhelper-14.3-1-any installed = debtap-3.6.3-1-any -installed = debugedit-5.3-1-x86_64 -installed = debuginfod-0.195-2-x86_64 +installed = debugedit-5.3-2-x86_64 +installed = debuginfod-0.195-8-x86_64 installed = default-cursors-3-1-any -installed = dejagnu-1.6.3-19-any +installed = dejagnu-1.6.3-21-any installed = deno-2.9.5-1-x86_64 installed = desktop-file-utils-0.28-1-x86_64 installed = device-mapper-2.03.42-1-x86_64 @@ -290,7 +292,7 @@ installed = dhcpcd-10.5.0-1-x86_64 installed = dialog-1:1.3_20260721-1-x86_64 installed = diffutils-3.12-2-x86_64 installed = ding-libs-0.7.0-1-x86_64 -installed = discord-1:1.0.152-1-x86_64 +installed = discord-1:1.0.154-1-x86_64 installed = discount-3.0.1.3-1-x86_64 installed = djvulibre-3.5.30.1-1-x86_64 installed = dkms-3.4.2-1-any @@ -300,18 +302,18 @@ installed = dnsmasq-2.93-1-x86_64 installed = docbook-xml-4.5-11-any installed = docbook-xsl-1.79.2-9-any installed = docker-1:29.7.2-1-x86_64 -installed = docker-buildx-0.36.0-1-x86_64 +installed = docker-buildx-0.36.1-1-x86_64 installed = docker-compose-5.4.0-1-x86_64 installed = dolphin-26.04.3-1-x86_64 installed = dos2unix-7.5.6-1-x86_64 installed = dosbox-0.74.3-4-x86_64 installed = dosfstools-4.2-5-x86_64 installed = dotconf-1.4.1-1-x86_64 -installed = dotnet-host-10.0.10.sdk110-1-x86_64 -installed = dotnet-runtime-10.0-10.0.10.sdk110-1-x86_64 +installed = dotnet-host-10.0.11.sdk111-1-x86_64 +installed = dotnet-runtime-10.0-10.0.11.sdk111-1-x86_64 installed = dotnet-runtime-6.0-6.0.36.sdk136-2-x86_64 -installed = dotnet-sdk-10.0-10.0.10.sdk110-1-x86_64 -installed = dotnet-targeting-pack-10.0-10.0.10.sdk110-1-x86_64 +installed = dotnet-sdk-10.0-10.0.11.sdk111-1-x86_64 +installed = dotnet-targeting-pack-10.0-10.0.11.sdk111-1-x86_64 installed = double-conversion-3.4.0-1-x86_64 installed = doxygen-1.16.1-3-x86_64 installed = dpkg-1.23.7-1-x86_64 @@ -338,14 +340,14 @@ installed = egl-x11-1.0.5-1-x86_64 installed = eglexternalplatform-1.2.1-1-any installed = eigen-5.0.1-2-x86_64 installed = electron-1:43-1-any -installed = electron43-43.3.0-1-x86_64 +installed = electron43-43.4.0-1-x86_64 installed = elementary-icon-theme-8.2.0-2-any -installed = elfutils-0.195-2-x86_64 +installed = elfutils-0.195-8-x86_64 installed = embree-4.4.1-1-x86_64 installed = enca-1.22-1-x86_64 installed = enchant-2.8.15-2-x86_64 installed = engrampa-1.28.3-1-x86_64 -installed = epiphany-50.5-1-x86_64 +installed = epiphany-50.6-1-x86_64 installed = epson-inkjet-printer-escpr-1.8.8-1-x86_64 installed = espeak-ng-1.52.0-1-x86_64 installed = eventviews-26.04.3-1-x86_64 @@ -361,7 +363,7 @@ installed = exempi-2.6.6-3-x86_64 installed = exfat-utils-1.4.0-4-x86_64 installed = exiv2-0.28.8-2-x86_64 installed = exo-4.20.0-2-x86_64 -installed = expat-2.8.2-1-x86_64 +installed = expat-2.8.3-1-x86_64 installed = expect-5.45.4-5-x86_64 installed = extra-cmake-modules-6.28.0-1-any installed = eza-0.23.5-2-x86_64 @@ -372,7 +374,7 @@ installed = faad2-2.11.2-1-x86_64 installed = fakeroot-1:1.37.2-3-x86_64 installed = feather-wallet-bin-2.8.1-2-x86_64 installed = ffcall-2.5-1-x86_64 -installed = ffmpeg-2:9.0-5-x86_64 +installed = ffmpeg-2:9.0.1-1-x86_64 installed = ffmpeg4.4-4.4.8-3-x86_64 installed = ffmpegthumbs-26.04.3-3-x86_64 installed = ffnvcodec-headers-13.1.15.0-1-any @@ -383,17 +385,17 @@ installed = file-roller-44.7-1-x86_64 installed = filesystem-2025.10.12-1-any installed = findutils-4.11.0-1-x86_64 installed = fio-3.42-1-x86_64 -installed = firefox-153.0.3-2-x86_64 +installed = firefox-153.0.4-1-x86_64 installed = firestorm-bin-7.2.4.80712-1-x86_64 installed = flac-1.5.0-1-x86_64 installed = flameshot-14.0.0-1-x86_64 installed = flashrom-1.7.0-1-x86_64 installed = flat-remix-gnome-20250926-1-any -installed = flatpak-1:1.18.0-1-x86_64 +installed = flatpak-1:1.18.1-1-x86_64 installed = flex-2.6.4-6-x86_64 installed = fltk-1.4.5-1-x86_64 installed = fltk1.3-1.3.11-4-x86_64 -installed = fluidsynth-2.5.7-1-x86_64 +installed = fluidsynth-2.6.0-1-x86_64 installed = fmt-12.2.0-1-x86_64 installed = fontconfig-2:2.18.3-1-x86_64 installed = foomatic-db-engine-5:20200131-2-x86_64 @@ -406,13 +408,13 @@ installed = freeglut-3.8.0-1-x86_64 installed = freeoffice-1234-1-x86_64 installed = freerdp-2:3.30.0-2-x86_64 installed = freetype2-2.14.3-1-x86_64 -installed = frei0r-plugins-3.2.3-2-x86_64 +installed = frei0r-plugins-3.3.0-1-x86_64 installed = fribidi-1.0.16-2-x86_64 -installed = fritzing-1.0.7-3-x86_64 +installed = fritzing-1.0.8-1-x86_64 installed = fs-uae-3.2.35-2-x86_64 installed = fs-uae-launcher-3.2.35-2-any installed = ftgl-2.4.0-3-x86_64 -installed = ftxui-7.0.1-1-x86_64 +installed = ftxui-7.0.3-1-x86_64 installed = fuse-common-3.18.2-1-x86_64 installed = fuse2-2.9.9-5-x86_64 installed = fuse3-3.18.2-1-x86_64 @@ -425,11 +427,11 @@ installed = garcon-4.20.0-2-x86_64 installed = gavl-2.0.1-2-x86_64 installed = gawk-5.4.1-1-x86_64 installed = gc-8.2.12-1-x86_64 -installed = gcc-16.1.1+r595+g171d15ac6959-1-x86_64 -installed = gcc-ada-16.1.1+r595+g171d15ac6959-1-x86_64 -installed = gcc-d-16.1.1+r595+g171d15ac6959-1-x86_64 -installed = gcc-fortran-16.1.1+r595+g171d15ac6959-1-x86_64 -installed = gcc-libs-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = gcc-16.2.1+r23+gd564253eb6c8-1-x86_64 +installed = gcc-ada-16.2.1+r23+gd564253eb6c8-1-x86_64 +installed = gcc-d-16.2.1+r23+gd564253eb6c8-1-x86_64 +installed = gcc-fortran-16.2.1+r23+gd564253eb6c8-1-x86_64 +installed = gcc-libs-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = gcc14-14.3.1+r516+g5998566829ee-1-x86_64 installed = gcc14-libs-14.3.1+r516+g5998566829ee-1-x86_64 installed = gcc15-15.3.0+r0.g4db0e8df15be-2-x86_64 @@ -476,8 +478,8 @@ installed = glib-networking-1:2.80.1-1-x86_64 installed = glib2-2.88.3-1-x86_64 installed = glib2-devel-2.88.3-1-x86_64 installed = glib2-docs-2.88.3-1-x86_64 -installed = glibc-2.44+r5+g7cba77790f32-1-x86_64 -installed = glibmm-2.66.9-1-x86_64 +installed = glibc-2.44+r24+g16be1518495f-1-x86_64 +installed = glibmm-2.66.10-1-x86_64 installed = glibmm-2.68-2.88.1-1-x86_64 installed = glm-1.0.3-1-x86_64 installed = glslang-1:1.4.357.0-1-x86_64 @@ -514,8 +516,8 @@ installed = gnome-remote-desktop-50.2-1-x86_64 installed = gnome-session-50.1-1-x86_64 installed = gnome-settings-daemon-50.1-1-x86_64 installed = gnome-shell-1:50.4-1-x86_64 -installed = gnome-shell-extension-appindicator-1:64-1-any -installed = gnome-shell-extensions-50.2-1-any +installed = gnome-shell-extension-appindicator-1:65-1-any +installed = gnome-shell-extensions-50.3-1-any installed = gnome-software-50.3-1-x86_64 installed = gnome-system-monitor-50.0-1-x86_64 installed = gnome-text-editor-50.1-1-x86_64 @@ -526,14 +528,15 @@ installed = gnome-user-share-48.3-1-x86_64 installed = gnome-weather-50.0-1-any installed = gnu-free-fonts-20120503-9-any installed = gnulib-l10n-20241231-1-any -installed = gnupg-2.4.9-2-x86_64 +installed = gnupg-2.4.9-3-x86_64 installed = gnutls-3.8.13-2-x86_64 -installed = go-2:1.26.5-1-x86_64 +installed = go-2:1.26.6-1-x86_64 +installed = go-md2man-2.0.7-2-x86_64 installed = go-tools-4:0.48.0-1-x86_64 installed = gobject-introspection-1.86.0-2-x86_64 installed = gobject-introspection-runtime-1.86.0-2-x86_64 installed = gom-0.5.6-1-x86_64 -installed = google-chrome-151.0.7922.71-1-x86_64 +installed = google-chrome-151.0.7922.137-1-x86_64 installed = google-earth-pro-7.3.7.1155-1-x86_64 installed = google-glog-0.7.1-2-x86_64 installed = goverlay-1.8.11-1-x86_64 @@ -543,12 +546,12 @@ installed = gperftools-2.18.1-1-x86_64 installed = gpgme-2.1.2-1-x86_64 installed = gpgmepp-2.1.0-1-x86_64 installed = gpm-1.20.7.r38.ge82d1a6-6-x86_64 -installed = gradle-9.6.1-1-any +installed = gradle-9.7.0-1-any installed = grantleetheme-26.04.3-1-x86_64 installed = graphene-1.10.8-2-x86_64 installed = graphicsmagick-1.3.48-1-x86_64 installed = graphite-1:1.3.15-1-x86_64 -installed = graphviz-15.1.1-1-x86_64 +installed = graphviz-16.0.0-1-x86_64 installed = grep-3.12-2-x86_64 installed = grilo-0.3.19-2-x86_64 installed = grilo-plugins-1:0.3.18-3-x86_64 @@ -622,11 +625,11 @@ installed = gzip-1.14-2-x86_64 installed = handbrake-1.11.2-1-x86_64 installed = hardinfo2-2.2.16-2-x86_64 installed = hardinfo2-debug-2.2.13-1-x86_64 -installed = harfbuzz-14.3.0-1-x86_64 -installed = harfbuzz-icu-14.3.0-1-x86_64 +installed = harfbuzz-14.3.1-1-x86_64 +installed = harfbuzz-icu-14.3.1-1-x86_64 installed = haveged-1.9.26-1-x86_64 installed = hdf5-2.2.0-1-x86_64 -installed = heroic-games-launcher-bin-2.22.0-1-x86_64 +installed = heroic-games-launcher-bin-2.22.1-1-x86_64 installed = hicolor-icon-theme-0.18-1-any installed = hidapi-0.15.0-1-x86_64 installed = highway-1.4.0-1-x86_64 @@ -634,7 +637,7 @@ installed = hiredis-1.3.0-1-x86_64 installed = hplip-1:3.26.4-1-x86_64 installed = hspell-1.4-6-x86_64 installed = htdig-3.2.0b6-11.1-x86_64 -installed = htop-3.5.2-1-x86_64 +installed = htop-3.5.3-1-x86_64 installed = http-parser-2.9.4-2-x86_64 installed = hunspell-1.7.3-1-x86_64 installed = hwdata-0.410-1-any @@ -670,7 +673,8 @@ installed = intel-oneapi-openmp-2026.0.0_947-1-x86_64 installed = intel-oneapi-tbb-2023.0.0_724-1-x86_64 installed = intel-oneapi-tcm-1.5.0_489-1-x86_64 installed = intel-oneapi-umf-1.1.0_340-2-x86_64 -installed = intel-ucode-20260512-1-any +installed = intel-ucode-20260812-1-any +installed = intel-undervolt-1.7-3-x86_64 installed = intltool-0.51.0-6-any installed = intltool-debian-1:0.35.0+20060710.6-1-any installed = iperf3-3.21-1-x86_64 @@ -694,7 +698,7 @@ installed = jdk8-openjdk-8.502.u07-1-x86_64 installed = jemalloc-1:5.3.1-3-x86_64 installed = joyutils-1.8.1-4-x86_64 installed = jq-1.8.2-1-x86_64 -installed = jre-26.0.1-1-x86_64 +installed = jre-26.0.2-1-x86_64 installed = jre8-openjdk-8.502.u07-1-x86_64 installed = jre8-openjdk-headless-8.502.u07-1-x86_64 installed = js115-115.31.0-1-x86_64 @@ -834,7 +838,7 @@ installed = kwayland-6.7.4-1-x86_64 installed = kwayland5-5.116.0-2-x86_64 installed = kwidgetsaddons-6.28.0-1-x86_64 installed = kwidgetsaddons5-5.116.0-2-x86_64 -installed = kwin-6.7.4-3-x86_64 +installed = kwin-6.7.4-5-x86_64 installed = kwindowsystem-6.28.0-1-x86_64 installed = kwindowsystem5-5.116.0-2-x86_64 installed = kxmlgui-6.28.0-1-x86_64 @@ -847,7 +851,7 @@ installed = layer-shell-qt-6.7.4-1-x86_64 installed = lazarus-4.8-1-x86_64 installed = lcms-1.19-7.1-x86_64 installed = lcms2-2.19.1-1-x86_64 -installed = ldb-2:4.24.5-1-x86_64 +installed = ldb-2:4.24.6-1-x86_64 installed = ldc-3:1.42.0-1-x86_64 installed = leancrypto-1.8.0-1-x86_64 installed = lensfun-1:0.3.4-6-x86_64 @@ -871,25 +875,25 @@ installed = lib32-curl-8.21.0-1-x86_64 installed = lib32-dbus-1.16.2-1-x86_64 installed = lib32-duktape-2.7.0-7-x86_64 installed = lib32-e2fsprogs-1.47.4-1-x86_64 -installed = lib32-expat-2.8.2-1-x86_64 +installed = lib32-expat-2.8.3-1-x86_64 installed = lib32-flac-1.5.0-1-x86_64 installed = lib32-fontconfig-2:2.18.3-1-x86_64 installed = lib32-freetype2-2.14.3-1-x86_64 installed = lib32-fribidi-1.0.16-2-x86_64 -installed = lib32-gcc-libs-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = lib32-gcc-libs-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = lib32-gdk-pixbuf2-2.44.7-1-x86_64 installed = lib32-gettext-1.0-1-x86_64 installed = lib32-giflib-6.1.3-1-x86_64 installed = lib32-glib-networking-1:2.80.1-1-x86_64 installed = lib32-glib2-2.88.3-1-x86_64 -installed = lib32-glibc-2.44+r5+g7cba77790f32-1-x86_64 +installed = lib32-glibc-2.44+r24+g16be1518495f-1-x86_64 installed = lib32-gmp-6.3.0-2-x86_64 installed = lib32-gnutls-3.8.13-3-x86_64 installed = lib32-gpm-1.20.7.r38.ge82d1a6-2-x86_64 installed = lib32-gst-plugins-base-libs-1.28.5-1-x86_64 installed = lib32-gstreamer-1.28.5-1-x86_64 installed = lib32-gtk3-1:3.24.52-1-x86_64 -installed = lib32-harfbuzz-14.3.0-1-x86_64 +installed = lib32-harfbuzz-14.3.1-1-x86_64 installed = lib32-icu-78.3-1-x86_64 installed = lib32-imlib2-1.12.6-1-x86_64 installed = lib32-json-c-0.19-1-x86_64 @@ -961,27 +965,27 @@ installed = lib32-libxcursor-1.2.3-1-x86_64 installed = lib32-libxdamage-1.1.7-1-x86_64 installed = lib32-libxdmcp-1.1.5-1-x86_64 installed = lib32-libxext-1.3.7-1-x86_64 -installed = lib32-libxfixes-6.0.1-2-x86_64 +installed = lib32-libxfixes-6.0.2-1-x86_64 installed = lib32-libxft-2.3.9-1-x86_64 installed = lib32-libxi-1.8.3-1-x86_64 installed = lib32-libxinerama-1.1.6-1-x86_64 installed = lib32-libxkbcommon-1.13.2-1-x86_64 installed = lib32-libxml2-2.15.3-1-x86_64 installed = lib32-libxrandr-1.5.5-1-x86_64 -installed = lib32-libxrender-0.9.11-2-x86_64 +installed = lib32-libxrender-0.9.12-1-x86_64 installed = lib32-libxshmfence-1.3.3-1-x86_64 installed = lib32-libxss-1.2.5-1-x86_64 installed = lib32-libxtst-1.2.5-2-x86_64 -installed = lib32-libxv-1.0.12-2-x86_64 -installed = lib32-libxxf86vm-1.1.5-2-x86_64 +installed = lib32-libxv-1.0.13-1-x86_64 +installed = lib32-libxxf86vm-1.1.7-1-x86_64 installed = lib32-llvm-libs-1:22.1.8-1-x86_64 installed = lib32-lm_sensors-1:3.6.2-2-x86_64 -installed = lib32-mesa-1:26.1.6-1-x86_64 +installed = lib32-mesa-1:26.1.7-1-x86_64 installed = lib32-mpg123-1.33.7-1-x86_64 installed = lib32-ncurses-6.6-2-x86_64 installed = lib32-nettle-4.0-2-x86_64 installed = lib32-nspr-4.40-1-x86_64 -installed = lib32-nss-3.126-1-x86_64 +installed = lib32-nss-3.127-1-x86_64 installed = lib32-nvidia-utils-610.57.04-1-x86_64 installed = lib32-openal-1.25.2-1-x86_64 installed = lib32-openssl-1:3.6.3-1-x86_64 @@ -1026,12 +1030,12 @@ installed = libajantv2-debug-1:18.0.0-1-x86_64 installed = libao-1.2.2-7-x86_64 installed = libappindicator-12.10.1-1-x86_64 installed = libarchive-3.8.9-1-x86_64 -installed = libasan-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libasan-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libass-0.17.5-1-x86_64 installed = libassuan-3.0.0-1-x86_64 installed = libasyncns-1:0.8+r3+g68cd5af-3-x86_64 installed = libatasmart-0.19-8-x86_64 -installed = libatomic-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libatomic-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libavc1394-0.5.4-7-x86_64 installed = libavif-1.4.2-1-x86_64 installed = libavtp-0.2.0-3-x86_64 @@ -1100,7 +1104,7 @@ installed = libebml-1.4.5-3-x86_64 installed = libebur128-1.2.6-2-x86_64 installed = libedit-20260512_3.1-1-x86_64 installed = libei-1.6.0-1-x86_64 -installed = libelf-0.195-2-x86_64 +installed = libelf-0.195-8-x86_64 installed = libepoxy-1.5.10-3-x86_64 installed = libev-4.33-5-x86_64 installed = libevdev-1.13.6-1-x86_64 @@ -1121,16 +1125,16 @@ installed = libftdi-1.5-10-x86_64 installed = libfyaml-0.9.6-3-x86_64 installed = libgadu-1.12.2-14-x86_64 installed = libgbinder-1.1.52-1-x86_64 -installed = libgcc-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libgcc-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libgcrypt-1.12.2-1-x86_64 installed = libgdata-0.18.1-5-x86_64 installed = libgdiplus-6.2-1-x86_64 installed = libgdm-50.2-1-x86_64 installed = libgee-0.20.8-1-x86_64 installed = libgexiv2-0.14.7-1-x86_64 -installed = libgfortran-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libgfortran-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libgirepository-1.86.0-2-x86_64 -installed = libgit2-1:1.9.6-1-x86_64 +installed = libgit2-1:1.9.7-1-x86_64 installed = libglade-2.6.4-9-x86_64 installed = libglibutil-1.0.82-1-x86_64 installed = libglibutil-debug-1.0.80-1-x86_64 @@ -1139,10 +1143,10 @@ installed = libgme-0.6.5-1-x86_64 installed = libgnome-keyring-1:3.12.0+r14+g23438cc-1-x86_64 installed = libgnomekbd-1:3.28.1-2-x86_64 installed = libgoa-3.58.1-1-x86_64 -installed = libgomp-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libgomp-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libgovirt-2:0.3.11-1-x86_64 installed = libgpg-error-1.61-1-x86_64 -installed = libgphobos-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libgphobos-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libgphoto2-2.5.34-1-x86_64 installed = libgpod-0.8.3-20-x86_64 installed = libgravatar-26.04.3-1-x86_64 @@ -1155,9 +1159,9 @@ installed = libgxps-0.3.2-5-x86_64 installed = libhandy-1.8.3-2-x86_64 installed = libharu-2.4.6-1-x86_64 installed = libheif-1.23.1-4-x86_64 -installed = libhwasan-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libhwasan-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libibus-1.5.34-1-x86_64 -installed = libical-4.0.4-1-x86_64 +installed = libical-4.0.5-1-x86_64 installed = libice-1.1.2-1-x86_64 installed = libiconv-1.19-1-x86_64 installed = libid3tag-0.16.4-1-x86_64 @@ -1200,19 +1204,19 @@ installed = liblouis-3.38.0-1-x86_64 installed = liblphobos-3:1.42.0-1-x86_64 installed = liblqr-0.4.3-1-x86_64 installed = liblrdf-0.6.1-5-x86_64 -installed = liblsan-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = liblsan-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libltc-1.3.2-2-x86_64 installed = liblxqt-2.4.0-1-x86_64 installed = liblzf-3.6-5-x86_64 installed = libmad-0.15.1b-10-x86_64 -installed = libmakepkg-dropins-20-1-any +installed = libmakepkg-dropins-20-2-any installed = libmalcontent-0.14.0-4-x86_64 installed = libmanette-0.2.13-2-x86_64 installed = libmatroska-1.7.2-2-x86_64 installed = libmbim-1.34.0-1-x86_64 installed = libmd-1.2.0-1-x86_64 installed = libmediaart-1.9.7-2-x86_64 -installed = libmediainfo-26.05-1-x86_64 +installed = libmediainfo-26.05-2-x86_64 installed = libmfx-23.2.2-6-x86_64 installed = libmicrodns-0.2.0-2-x86_64 installed = libmicrohttpd-1.0.10-1-x86_64 @@ -1254,10 +1258,10 @@ installed = libnotify-0.8.8-1-x86_64 installed = libnsl-2.0.1-2-x86_64 installed = libnss_nis-3.4-1-x86_64 installed = libntfs-3g-2026.7.7-1-x86_64 -installed = libnvidia-container-1.19.1-1-x86_64 +installed = libnvidia-container-1.20.0-1-x86_64 installed = libnvme-1.16.2-2-x86_64 installed = liboauth-1:1.0.3+r16+gc26f038-2-x86_64 -installed = libobjc-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libobjc-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libodfgen-0.1.8-5-x86_64 installed = libofx-0.10.9-2-x86_64 installed = libogg-1.3.6-1-x86_64 @@ -1276,7 +1280,7 @@ installed = libpciaccess-0.19-1-x86_64 installed = libpeas-1.38.1-1-x86_64 installed = libpgm-5.3.128-4-x86_64 installed = libphobos-1:2.112.1-2-x86_64 -installed = libphonenumber-1:9.0.36-2-x86_64 +installed = libphonenumber-1:9.0.37-1-x86_64 installed = libpipeline-1.5.8-1-x86_64 installed = libpipewire-1:1.6.8-1-x86_64 installed = libplacebo-7.360.1-6-x86_64 @@ -1298,13 +1302,13 @@ installed = libqalculate-5.12.0-1-x86_64 installed = libqmi-1.38.0-1-x86_64 installed = libqrtr-glib-1.4.0-1-x86_64 installed = libqtxdg-4.4.0-2-x86_64 -installed = libquadmath-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libquadmath-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libraqm-0.11.0-1-x86_64 installed = libraw-0.22.2-1-x86_64 installed = libraw1394-2.1.2-4-x86_64 installed = librest-0.10.2-1-x86_64 installed = librevenge-0.0.6-1-x86_64 -installed = librist-0.2.17-1-x86_64 +installed = librist-0.2.20-1-x86_64 installed = librsvg-2:2.62.3-1-x86_64 installed = libsamplerate-0.2.2-3-x86_64 installed = libsasl-2.1.28-5-x86_64 @@ -1336,10 +1340,10 @@ installed = libssc-0.4.4-1-x86_64 installed = libssh-0.12.2-1-x86_64 installed = libssh2-1.11.1-7-x86_64 installed = libstarfish-0.0.6-2-x86_64 -installed = libstdc++-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libstdc++-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libstemmer-3.1.1-1-x86_64 installed = libsynctex-2026.0-2-x86_64 -installed = libsysprof-capture-50.0-4-x86_64 +installed = libsysprof-capture-50.0-6-x86_64 installed = libtar-1.2.20-8-x86_64 installed = libtasn1-4.21.0-1-x86_64 installed = libtatsu-1.0.5-1-x86_64 @@ -1350,12 +1354,12 @@ installed = libtiff-4.7.2-1-x86_64 installed = libtiff5-4.4.0-2-x86_64 installed = libtirpc-1.3.7-1-x86_64 installed = libtommath-1.3.0-2-x86_64 -installed = libtool-2.6.2-3-x86_64 +installed = libtool-2.6.2-5-x86_64 installed = libtpms-0.10.2-1-x86_64 installed = libtraceevent-1:1.9.0-1-x86_64 installed = libtracefs-1.8.3-1-x86_64 -installed = libtsan-16.1.1+r595+g171d15ac6959-1-x86_64 -installed = libubsan-16.1.1+r595+g171d15ac6959-1-x86_64 +installed = libtsan-16.2.1+r23+gd564253eb6c8-1-x86_64 +installed = libubsan-16.2.1+r23+gd564253eb6c8-1-x86_64 installed = libunibreak-7.0-1-x86_64 installed = libunistring-1.4.2-1-x86_64 installed = libunwind-1.8.2-1-x86_64 @@ -1384,7 +1388,7 @@ installed = libvorbis-1.3.7-4-x86_64 installed = libvpl-2.17.0-1-x86_64 installed = libvpx-1.16.0-3-x86_64 installed = libwacom-2.19.1-1-x86_64 -installed = libwbclient-2:4.24.5-1-x86_64 +installed = libwbclient-2:4.24.6-1-x86_64 installed = libwebp-1.6.0-2-x86_64 installed = libwireplumber-0.5.15-1-x86_64 installed = libwireplumber-4.0-compat-0.4.17-2-x86_64 @@ -1411,7 +1415,7 @@ installed = libxdp-1.6.3-2-x86_64 installed = libxext-1.3.7-1-x86_64 installed = libxfce4ui-4.20.2-1-x86_64 installed = libxfce4util-4.20.1-1-x86_64 -installed = libxfce4windowing-4.20.6-1-x86_64 +installed = libxfce4windowing-4.20.7-1-x86_64 installed = libxfixes-6.0.2-1-x86_64 installed = libxfont2-2.0.9-1-x86_64 installed = libxft-2.3.9-1-x86_64 @@ -1447,33 +1451,33 @@ installed = libyuv-r2426+464c51a03-1-x86_64 installed = libzen-0.4.41-3-x86_64 installed = libzip-1.11.4-1-x86_64 installed = licenses-20240728-1-any -installed = lightdm-1:1.32.0-9-x86_64 +installed = lightdm-1:1.33.0-1-x86_64 installed = lightdm-gtk-greeter-1:2.0.9-2-x86_64 installed = lightdm-gtk-greeter-settings-1.2.3-5-any installed = lightdm-settings-2.1.1-1-any installed = lightdm-slick-greeter-2.2.7-1-x86_64 installed = lilv-0.28.0-1-x86_64 installed = linphone-desktop-appimage-6.1.2-1-x86_64 -installed = linux-7.1.7.arch1-1-x86_64 +installed = linux-7.1.8.arch1-3-x86_64 installed = linux-api-headers-7.1-1-x86_64 -installed = linux-firmware-20260622-1-any -installed = linux-firmware-amdgpu-20260622-1-any -installed = linux-firmware-atheros-20260622-1-any -installed = linux-firmware-broadcom-20260622-1-any -installed = linux-firmware-cirrus-20260622-1-any -installed = linux-firmware-intel-20260622-1-any -installed = linux-firmware-mediatek-20260622-1-any -installed = linux-firmware-nvidia-20260622-1-any -installed = linux-firmware-other-20260622-1-any -installed = linux-firmware-radeon-20260622-1-any -installed = linux-firmware-realtek-20260622-1-any -installed = linux-firmware-whence-20260622-1-any -installed = linux-headers-7.1.7.arch1-1-x86_64 -installed = linux-zen-7.1.7.zen1-1-x86_64 -installed = linux-zen-headers-7.1.7.zen1-1-x86_64 +installed = linux-firmware-20260810-2-any +installed = linux-firmware-amdgpu-20260810-2-any +installed = linux-firmware-atheros-20260810-2-any +installed = linux-firmware-broadcom-20260810-2-any +installed = linux-firmware-cirrus-20260810-2-any +installed = linux-firmware-intel-20260810-2-any +installed = linux-firmware-mediatek-20260810-2-any +installed = linux-firmware-nvidia-20260810-2-any +installed = linux-firmware-other-20260810-2-any +installed = linux-firmware-radeon-20260810-2-any +installed = linux-firmware-realtek-20260810-2-any +installed = linux-firmware-whence-20260810-2-any +installed = linux-headers-7.1.8.arch1-3-x86_64 +installed = linux-zen-7.1.8.zen1-3-x86_64 +installed = linux-zen-headers-7.1.8.zen1-3-x86_64 installed = lirc-1:0.10.2-6-x86_64 installed = litehtml-0.10-1-x86_64 -installed = litehtml0.9-0.9-2-x86_64 +installed = litehtml0.9-0.9-3-x86_64 installed = lksctp-tools-1.0.21-1-x86_64 installed = lld-22.1.8-1-x86_64 installed = lld21-21.1.8-1-x86_64 @@ -1538,7 +1542,7 @@ installed = manifold-3.4.1-1-x86_64 installed = mariadb-12.3.2-4-x86_64 installed = mariadb-clients-12.3.2-4-x86_64 installed = mariadb-libs-12.3.2-4-x86_64 -installed = masterpdfeditor-5.9.98-2-x86_64 +installed = masterpdfeditor-5.9.99-3-x86_64 installed = masterpdfeditor-debug-5.9.94-1-x86_64 installed = masterpdfeditor-free-4.3.89-1-x86_64 installed = mate-desktop-1.28.2-2-x86_64 @@ -1546,19 +1550,20 @@ installed = mate-system-monitor-1.28.1-3-x86_64 installed = materialx-1.39.5-1-x86_64 installed = mathjax2-2.7.9-2-any installed = maturin-1.14.1-1-x86_64 -installed = mbedtls-3.6.5-1-x86_64 +installed = mbedtls-4.2.0-1-x86_64 installed = mbedtls2-2.28.10-1-x86_64 +installed = mbedtls3-3.6.7-1-x86_64 installed = md4c-0.5.3-1-x86_64 installed = mdadm-4.6-2-x86_64 installed = media-player-info-26-1-any installed = mediainfo-26.05-1-x86_64 installed = menu-cache-1.1.1-2-x86_64 -installed = mercurial-7.2.3-1-x86_64 -installed = mesa-1:26.1.6-1-x86_64 +installed = mercurial-7.2.4-1-x86_64 +installed = mesa-1:26.1.7-1-x86_64 installed = mesa-utils-9.0.0-7-x86_64 installed = meson-1.12.0-1-any installed = messagelib-26.04.3-1-x86_64 -installed = micromamba-bin-2.8.1.0-1-x86_64 +installed = micromamba-bin-2.9.0.0-1-x86_64 installed = micropolis-git-r113.f46cb0f-1-x86_64 installed = milou-6.7.4-1-x86_64 installed = mingw-w64-binutils-2.46.0-1-x86_64 @@ -1571,7 +1576,7 @@ installed = miniupnpc-2.3.3-3-x86_64 installed = minizip-1:1.3.2-3-x86_64 installed = minizip-ng-4.2.2-1-x86_64 installed = mjpegtools-2.2.1-4-x86_64 -installed = mkinitcpio-41-4-any +installed = mkinitcpio-41.1-1-any installed = mkinitcpio-busybox-1.36.1-1-x86_64 installed = mlt-7.40.0-3-x86_64 installed = mobile-broadband-provider-info-20251101-1-any @@ -1600,11 +1605,11 @@ installed = mutter-50.4-1-x86_64 installed = mypaint-brushes-2.0.2-2-any installed = mypaint-brushes1-1.3.1-2-any installed = namcap-3.6.0-3-any -installed = nanobind-2.14.0-1-any +installed = nanobind-2.15.0-1-any installed = nasm-3.02-1-x86_64 installed = nautilus-50.2.2-1-x86_64 installed = nautilus-python-4.1.0-3-x86_64 -installed = nccl-2.30.7-1-x86_64 +installed = nccl-2.31.2-1-x86_64 installed = ncurses-6.6-2-x86_64 installed = ndctl-85-1-x86_64 installed = nemo-6.6.4-1-x86_64 @@ -1623,7 +1628,7 @@ installed = networktablet-1.5-3-x86_64 installed = nextcloud-34.0.2-1-any installed = nextcloud-app-spreed-1:24.0.3-1-any installed = nextcloud-app-talk_matterbridge-1.33.1026000-1-any -installed = nextcloud-client-2:34.0.1-2-x86_64 +installed = nextcloud-client-2:34.0.1-3-x86_64 installed = nfs-utils-2.9.2-1-x86_64 installed = nfsidmap-2.9.2-1-x86_64 installed = nftables-1:1.1.6-3-x86_64 @@ -1644,19 +1649,19 @@ installed = npm-12.0.2-1-any installed = npth-1.8-1-x86_64 installed = nrg2iso-0.4.1-3-x86_64 installed = nspr-4.40-1-x86_64 -installed = nss-3.126-1-x86_64 +installed = nss-3.127-1-x86_64 installed = nss-mdns-0.15.1-2-x86_64 installed = ntfs-3g-2026.7.7-1-x86_64 installed = ntp-4.2.8.p18-6-x86_64 installed = ntsync-autoload-1-1-any installed = numactl-2.0.19-1-x86_64 -installed = nvidia-container-toolkit-1.19.1-1-x86_64 +installed = nvidia-container-toolkit-1.20.0-1-x86_64 installed = nvidia-open-dkms-610.57.04-1-x86_64 installed = nvidia-settings-610.57.04-1-x86_64 installed = nvidia-utils-610.57.04-1-x86_64 installed = nvm-0.40.5-1-any installed = obconf-qt-0.16.6-1-x86_64 -installed = obs-studio-git-32.1.2.r109.g84b8d16-1-x86_64 +installed = obs-studio-32.2.2-1-x86_64 installed = obs-teleport-debug-0.7.5-1-x86_64 installed = obs-vkcapture-1.5.6-1-x86_64 installed = obs-vkcapture-debug-1.5.3-1-x86_64 @@ -1693,7 +1698,7 @@ installed = opensc-0.27.1-2-x86_64 installed = openscad-2021.01-22-x86_64 installed = openshadinglanguage-1.15.3.0-1-x86_64 installed = opensp-1.5.2-11-x86_64 -installed = openssh-10.4p1-4-x86_64 +installed = openssh-10.5p1-1-x86_64 installed = openssl-3.6.3-1-x86_64 installed = openssl-1.1-1.1.1.w-11-x86_64 installed = opensubdiv-3.7.0-1-x86_64 @@ -1741,7 +1746,7 @@ installed = pcmanfm-qt-2.4.0-1-x86_64 installed = pcre-8.45-5-x86_64 installed = pcre2-10.47-1-x86_64 installed = pcsclite-2.5.1-1-x86_64 -installed = perl-5.42.2-1-x86_64 +installed = perl-5.42.2-2-x86_64 installed = perl-alien-build-2.84-5-any installed = perl-alien-libxml2-0.20-5-any installed = perl-archive-cpio-0.10-12-any @@ -1757,7 +1762,7 @@ installed = perl-crypt-random-seed-0.03-13-any installed = perl-crypt-ssleay-0.73_06-7-x86_64 installed = perl-cryptx-0.091-1-x86_64 installed = perl-data-optlist-0.114-7-any -installed = perl-dbi-1.651-1-x86_64 +installed = perl-dbi-1.652-1-x86_64 installed = perl-digest-hmac-1.05-3-any installed = perl-digest-sha1-2.13-22-x86_64 installed = perl-encode-locale-1.05-15-any @@ -1870,18 +1875,18 @@ installed = popt-1.19-2-x86_64 installed = portaudio-1:19.7.0-4-x86_64 installed = portmidi-1:2.0.8-1-x86_64 installed = portsmf-234-3-x86_64 -installed = postgresql-18.4-3-x86_64 -installed = postgresql-libs-18.4-3-x86_64 +installed = postgresql-18.6-1-x86_64 +installed = postgresql-libs-18.6-1-x86_64 installed = potrace-1.16-5-x86_64 installed = power-profiles-daemon-0.30-1-x86_64 installed = powerdevil-6.7.4-1-x86_64 installed = ppp-2.5.3-1-x86_64 installed = prison-6.28.0-1-x86_64 -installed = procps-ng-4.0.6-3-x86_64 +installed = procps-ng-4.0.7-1-x86_64 installed = projectm-3.1.12-5-x86_64 installed = protobuf-35.1-1-x86_64 installed = protobuf-c-1.5.2-12-x86_64 -installed = proton-ge-custom-bin-1:GE_Proton10_34-1-x86_64 +installed = proton-ge-custom-bin-1:GE_Proton11_5-1-x86_64 installed = protontricks-1.14.1-1-any installed = prrte-3.0.14-1-x86_64 installed = psensor-1.2.1-4-x86_64 @@ -1899,7 +1904,7 @@ installed = pyalpm-0.11.1-1-x86_64 installed = pybind11-3.1.0-1-any installed = pyside6-6.11.1-4-x86_64 installed = pystring-1.2.0-1-x86_64 -installed = python-3.14.6-1-x86_64 +installed = python-3.14.7-1-x86_64 installed = python-aaf2-1.7.1-4-any installed = python-aiohappyeyeballs-2.6.1-4-any installed = python-aiohttp-3.13.5-1-x86_64 @@ -1944,7 +1949,7 @@ installed = python-contourpy-1.3.3-4-x86_64 installed = python-coqpit-config-0.2.0-1-any installed = python-coqui-trainer-0.3.2-1-any installed = python-coverage-7.13.5-1-x86_64 -installed = python-cryptography-49.0.0-1-x86_64 +installed = python-cryptography-50.0.0-1-x86_64 installed = python-cssselect-1.5.0-1-any installed = python-curl-adapter-1.2.1-2-any installed = python-curl_cffi-0.16.0-2-x86_64 @@ -1996,7 +2001,7 @@ installed = python-html5lib-1.1-18-any installed = python-httpcore-1.0.9-3-any installed = python-httpx-0.28.1-7-any installed = python-huggingface-hub-1:1.27.0-1-any -installed = python-hypothesis-6.165.2-1-x86_64 +installed = python-hypothesis-6.165.3-1-x86_64 installed = python-idna-3.18-1-any installed = python-imagesize-2.0.0-1-any installed = python-importlib-metadata-9.0.0-1-any @@ -2022,9 +2027,9 @@ installed = python-lark-parser-1.3.1-2-any installed = python-lazy-loader-0.5-1-any installed = python-legacy-cgi-2.6.4-2-any installed = python-lhafile-0.3.1-2-x86_64 -installed = python-librosa-0.11.0-2-any +installed = python-librosa-1.0.0-1-any installed = python-license-expression-30.4.4-2-any -installed = python-llvmlite-0.48.0-1-x86_64 +installed = python-llvmlite-0.49.0-1-x86_64 installed = python-lockfile-0.12.2-15-any installed = python-lsp-jsonrpc-1.1.2-6-any installed = python-lsp-server-1.15.0-1-any @@ -2051,7 +2056,7 @@ installed = python-narwhals-2.24.0-1-any installed = python-networkx-3.6.1-1-any installed = python-nose-1.3.7-19-any installed = python-num2words-0.5.14-3-any -installed = python-numba-0.66.0-1-x86_64 +installed = python-numba-0.67.0-1-x86_64 installed = python-numpy-2.5.2-1-x86_64 installed = python-opencv-5.0.0-9-x86_64 installed = python-opengl-3.1.10-3-any @@ -2062,7 +2067,7 @@ installed = python-pandas-2.3.3-2-x86_64 installed = python-parso-1:0.8.6-1-any installed = python-pathspec-1.1.1-1-any installed = python-patiencediff-0.2.19-1-x86_64 -installed = python-pbr-7.0.3-3-any +installed = python-pbr-7.1.0-1-any installed = python-peewee-4.0.4-1-x86_64 installed = python-pexpect-4.9.0-7-any installed = python-pillow-12.3.0-1-x86_64 @@ -2131,7 +2136,7 @@ installed = python-scenedetect-0.6.5-1-any installed = python-scikit-learn-1.9.0-2-x86_64 installed = python-scipy-1.18.0-1-x86_64 installed = python-semantic-version-2.10.0-9-any -installed = python-sentry_sdk-2.66.1-1-any +installed = python-sentry_sdk-2.68.0-1-any installed = python-serpent-1.43-1-any installed = python-setproctitle-1.3.7-2-x86_64 installed = python-setuptools-1:84.0.0-1-any @@ -2172,7 +2177,7 @@ installed = python-tinycss2-1.5.1-2-any installed = python-tldextract-5.3.2-1-any installed = python-tokenizers-0.23.1-1-x86_64 installed = python-torchaudio-2.11.0-1-x86_64 -installed = python-torchcodec-0.15.0-3-x86_64 +installed = python-torchcodec-0.16.0-1-x86_64 installed = python-tqdm-4.70.0-1-any installed = python-transformers-5.12.1-1-any installed = python-trio-0.33.0-1-any @@ -2180,16 +2185,16 @@ installed = python-trio-websocket-0.12.2-4-any installed = python-trove-classifiers-2026.6.1.19-1-any installed = python-typeguard-4.6.0-1-any installed = python-typer-0.27.1-1-any -installed = python-typing-inspection-0.4.3-1-any +installed = python-typing-inspection-0.4.4-1-any installed = python-typing_extensions-4.16.0-1-any installed = python-typogrify-2.1.0-2-any installed = python-tzlocal-1:5.4.4-1-any installed = python-uc-micro-py-2.0.0-1-any installed = python-ujson-5.13.0-1-x86_64 installed = python-urllib3-2.7.0-1-any -installed = python-urwid-4.0.8-2-any +installed = python-urwid-4.0.9-1-any installed = python-userpath-1.9.2-4-any -installed = python-uv-build-0.12.3-1-x86_64 +installed = python-uv-build-0.12.5-1-x86_64 installed = python-vcs-versioning-2.2.4-1-any installed = python-vdf-4.0-5-any installed = python-virtualenv-21.7.4-1-any @@ -2198,11 +2203,11 @@ installed = python-webencodings-0.5.1-13-any installed = python-websocket-client-1.9.0-3-any installed = python-websockets-16.1.1-1-x86_64 installed = python-werkzeug-3.1.8-1-any -installed = python-wheel-0.47.0-1-any +installed = python-wheel-0.48.0-1-any installed = python-wsproto-1.3.2-1-any installed = python-wxpython-1:4.2.5-1-x86_64 installed = python-xapp-3.0.3-1-any -installed = python-xlib-0.33-6-any +installed = python-xlib-0.33-7-any installed = python-xmltodict-1.0.4-1-any installed = python-xxhash-3.8.1-1-x86_64 installed = python-yaml-6.0.3-2-x86_64 @@ -2211,92 +2216,91 @@ installed = python-zipp-3.21.0-4-any installed = python-zope-event-6.2-1-any installed = python-zope-interface-8.5-1-x86_64 installed = python-zstandard-0.25.0-3-x86_64 -installed = python310-3.10.19-1-x86_64 -installed = python311-3.11.14-1-x86_64 -installed = qca-qt5-2.3.10-7-x86_64 -installed = qca-qt6-2.3.10-7-x86_64 +installed = python310-3.10.21-1-x86_64 +installed = python311-3.11.16-1-x86_64 +installed = qca-qt5-2.3.10-8-x86_64 +installed = qca-qt6-2.3.10-8-x86_64 installed = qcoro-0.13.0-2-x86_64 installed = qcustomplot-2.1.1-2-x86_64 -installed = qemu-audio-alsa-11.0.3-1-x86_64 -installed = qemu-audio-dbus-11.0.3-1-x86_64 -installed = qemu-audio-jack-11.0.3-1-x86_64 -installed = qemu-audio-oss-11.0.3-1-x86_64 -installed = qemu-audio-pa-11.0.3-1-x86_64 -installed = qemu-audio-pipewire-11.0.3-1-x86_64 -installed = qemu-audio-sdl-11.0.3-1-x86_64 -installed = qemu-audio-spice-11.0.3-1-x86_64 -installed = qemu-base-11.0.3-1-x86_64 -installed = qemu-block-curl-11.0.3-1-x86_64 -installed = qemu-block-dmg-11.0.3-1-x86_64 -installed = qemu-block-gluster-11.0.3-1-x86_64 -installed = qemu-block-iscsi-11.0.3-1-x86_64 -installed = qemu-block-nfs-11.0.3-1-x86_64 -installed = qemu-block-ssh-11.0.3-1-x86_64 -installed = qemu-chardev-baum-11.0.3-1-x86_64 -installed = qemu-chardev-spice-11.0.3-1-x86_64 -installed = qemu-common-11.0.3-1-x86_64 -installed = qemu-desktop-11.0.3-1-x86_64 -installed = qemu-docs-11.0.3-1-x86_64 -installed = qemu-emulators-full-11.0.3-1-x86_64 -installed = qemu-full-11.0.3-1-x86_64 -installed = qemu-hw-display-qxl-11.0.3-1-x86_64 -installed = qemu-hw-display-virtio-gpu-11.0.3-1-x86_64 -installed = qemu-hw-display-virtio-gpu-gl-11.0.3-1-x86_64 -installed = qemu-hw-display-virtio-gpu-pci-11.0.3-1-x86_64 -installed = qemu-hw-display-virtio-gpu-pci-gl-11.0.3-1-x86_64 -installed = qemu-hw-display-virtio-gpu-pci-rutabaga-11.0.3-1-x86_64 -installed = qemu-hw-display-virtio-gpu-rutabaga-11.0.3-1-x86_64 -installed = qemu-hw-display-virtio-vga-11.0.3-1-x86_64 -installed = qemu-hw-display-virtio-vga-gl-11.0.3-1-x86_64 -installed = qemu-hw-display-virtio-vga-rutabaga-11.0.3-1-x86_64 -installed = qemu-hw-s390x-virtio-gpu-ccw-11.0.3-1-x86_64 -installed = qemu-hw-uefi-vars-11.0.3-1-x86_64 -installed = qemu-hw-usb-host-11.0.3-1-x86_64 -installed = qemu-hw-usb-redirect-11.0.3-1-x86_64 -installed = qemu-hw-usb-smartcard-11.0.3-1-x86_64 -installed = qemu-img-11.0.3-1-x86_64 -installed = qemu-pr-helper-11.0.3-1-x86_64 -installed = qemu-system-aarch64-11.0.3-1-x86_64 -installed = qemu-system-alpha-11.0.3-1-x86_64 -installed = qemu-system-alpha-firmware-11.0.3-1-x86_64 -installed = qemu-system-arm-11.0.3-1-x86_64 -installed = qemu-system-arm-firmware-11.0.3-1-x86_64 -installed = qemu-system-avr-11.0.3-1-x86_64 -installed = qemu-system-hppa-11.0.3-1-x86_64 -installed = qemu-system-hppa-firmware-11.0.3-1-x86_64 -installed = qemu-system-loongarch64-11.0.3-1-x86_64 -installed = qemu-system-m68k-11.0.3-1-x86_64 -installed = qemu-system-microblaze-11.0.3-1-x86_64 -installed = qemu-system-microblaze-firmware-11.0.3-1-x86_64 -installed = qemu-system-mips-11.0.3-1-x86_64 -installed = qemu-system-or1k-11.0.3-1-x86_64 -installed = qemu-system-ppc-11.0.3-1-x86_64 -installed = qemu-system-ppc-firmware-11.0.3-1-x86_64 -installed = qemu-system-riscv-11.0.3-1-x86_64 -installed = qemu-system-riscv-firmware-11.0.3-1-x86_64 -installed = qemu-system-rx-11.0.3-1-x86_64 -installed = qemu-system-s390x-11.0.3-1-x86_64 -installed = qemu-system-s390x-firmware-11.0.3-1-x86_64 -installed = qemu-system-sh4-11.0.3-1-x86_64 -installed = qemu-system-sparc-11.0.3-1-x86_64 -installed = qemu-system-sparc-firmware-11.0.3-1-x86_64 -installed = qemu-system-tricore-11.0.3-1-x86_64 -installed = qemu-system-x86-11.0.3-1-x86_64 -installed = qemu-system-x86-firmware-11.0.3-1-x86_64 -installed = qemu-system-xtensa-11.0.3-1-x86_64 -installed = qemu-tests-11.0.3-1-x86_64 -installed = qemu-tools-11.0.3-1-x86_64 -installed = qemu-ui-curses-11.0.3-1-x86_64 -installed = qemu-ui-dbus-11.0.3-1-x86_64 -installed = qemu-ui-egl-headless-11.0.3-1-x86_64 -installed = qemu-ui-gtk-11.0.3-1-x86_64 -installed = qemu-ui-opengl-11.0.3-1-x86_64 -installed = qemu-ui-sdl-11.0.3-1-x86_64 -installed = qemu-ui-spice-app-11.0.3-1-x86_64 -installed = qemu-ui-spice-core-11.0.3-1-x86_64 -installed = qemu-user-11.0.3-1-x86_64 -installed = qemu-vhost-user-gpu-11.0.3-1-x86_64 -installed = qemu-vmsr-helper-11.0.3-1-x86_64 +installed = qemu-audio-alsa-11.1.0-1-x86_64 +installed = qemu-audio-dbus-11.1.0-1-x86_64 +installed = qemu-audio-jack-11.1.0-1-x86_64 +installed = qemu-audio-oss-11.1.0-1-x86_64 +installed = qemu-audio-pa-11.1.0-1-x86_64 +installed = qemu-audio-pipewire-11.1.0-1-x86_64 +installed = qemu-audio-sdl-11.1.0-1-x86_64 +installed = qemu-audio-spice-11.1.0-1-x86_64 +installed = qemu-base-11.1.0-1-x86_64 +installed = qemu-block-curl-11.1.0-1-x86_64 +installed = qemu-block-dmg-11.1.0-1-x86_64 +installed = qemu-block-iscsi-11.1.0-1-x86_64 +installed = qemu-block-nfs-11.1.0-1-x86_64 +installed = qemu-block-ssh-11.1.0-1-x86_64 +installed = qemu-chardev-baum-11.1.0-1-x86_64 +installed = qemu-chardev-spice-11.1.0-1-x86_64 +installed = qemu-common-11.1.0-1-x86_64 +installed = qemu-desktop-11.1.0-1-x86_64 +installed = qemu-docs-11.1.0-1-x86_64 +installed = qemu-emulators-full-11.1.0-1-x86_64 +installed = qemu-full-11.1.0-1-x86_64 +installed = qemu-hw-display-qxl-11.1.0-1-x86_64 +installed = qemu-hw-display-virtio-gpu-11.1.0-1-x86_64 +installed = qemu-hw-display-virtio-gpu-gl-11.1.0-1-x86_64 +installed = qemu-hw-display-virtio-gpu-pci-11.1.0-1-x86_64 +installed = qemu-hw-display-virtio-gpu-pci-gl-11.1.0-1-x86_64 +installed = qemu-hw-display-virtio-gpu-pci-rutabaga-11.1.0-1-x86_64 +installed = qemu-hw-display-virtio-gpu-rutabaga-11.1.0-1-x86_64 +installed = qemu-hw-display-virtio-vga-11.1.0-1-x86_64 +installed = qemu-hw-display-virtio-vga-gl-11.1.0-1-x86_64 +installed = qemu-hw-display-virtio-vga-rutabaga-11.1.0-1-x86_64 +installed = qemu-hw-s390x-virtio-gpu-ccw-11.1.0-1-x86_64 +installed = qemu-hw-uefi-vars-11.1.0-1-x86_64 +installed = qemu-hw-usb-host-11.1.0-1-x86_64 +installed = qemu-hw-usb-redirect-11.1.0-1-x86_64 +installed = qemu-hw-usb-smartcard-11.1.0-1-x86_64 +installed = qemu-img-11.1.0-1-x86_64 +installed = qemu-pr-helper-11.1.0-1-x86_64 +installed = qemu-system-aarch64-11.1.0-1-x86_64 +installed = qemu-system-alpha-11.1.0-1-x86_64 +installed = qemu-system-alpha-firmware-11.1.0-1-x86_64 +installed = qemu-system-arm-11.1.0-1-x86_64 +installed = qemu-system-arm-firmware-11.1.0-1-x86_64 +installed = qemu-system-avr-11.1.0-1-x86_64 +installed = qemu-system-hppa-11.1.0-1-x86_64 +installed = qemu-system-hppa-firmware-11.1.0-1-x86_64 +installed = qemu-system-loongarch64-11.1.0-1-x86_64 +installed = qemu-system-m68k-11.1.0-1-x86_64 +installed = qemu-system-microblaze-11.1.0-1-x86_64 +installed = qemu-system-microblaze-firmware-11.1.0-1-x86_64 +installed = qemu-system-mips-11.1.0-1-x86_64 +installed = qemu-system-or1k-11.1.0-1-x86_64 +installed = qemu-system-ppc-11.1.0-1-x86_64 +installed = qemu-system-ppc-firmware-11.1.0-1-x86_64 +installed = qemu-system-riscv-11.1.0-1-x86_64 +installed = qemu-system-riscv-firmware-11.1.0-1-x86_64 +installed = qemu-system-rx-11.1.0-1-x86_64 +installed = qemu-system-s390x-11.1.0-1-x86_64 +installed = qemu-system-s390x-firmware-11.1.0-1-x86_64 +installed = qemu-system-sh4-11.1.0-1-x86_64 +installed = qemu-system-sparc-11.1.0-1-x86_64 +installed = qemu-system-sparc-firmware-11.1.0-1-x86_64 +installed = qemu-system-tricore-11.1.0-1-x86_64 +installed = qemu-system-x86-11.1.0-1-x86_64 +installed = qemu-system-x86-firmware-11.1.0-1-x86_64 +installed = qemu-system-xtensa-11.1.0-1-x86_64 +installed = qemu-tests-11.1.0-1-x86_64 +installed = qemu-tools-11.1.0-1-x86_64 +installed = qemu-ui-curses-11.1.0-1-x86_64 +installed = qemu-ui-dbus-11.1.0-1-x86_64 +installed = qemu-ui-egl-headless-11.1.0-1-x86_64 +installed = qemu-ui-gtk-11.1.0-1-x86_64 +installed = qemu-ui-opengl-11.1.0-1-x86_64 +installed = qemu-ui-sdl-11.1.0-1-x86_64 +installed = qemu-ui-spice-app-11.1.0-1-x86_64 +installed = qemu-ui-spice-core-11.1.0-1-x86_64 +installed = qemu-user-11.1.0-1-x86_64 +installed = qemu-vhost-user-gpu-11.1.0-1-x86_64 +installed = qemu-vmsr-helper-11.1.0-1-x86_64 installed = qgpgme-2.2.0-1-x86_64 installed = qhexedit2-0.8.9-2-x86_64 installed = qhull-2020.2-5-x86_64 @@ -2388,8 +2392,8 @@ installed = rmapi-0.0.34-2-x86_64 installed = rnnoise-1:0.2-1-x86_64 installed = robin-map-1.4.1-1-x86_64 installed = rpcbind-1.2.9-1-x86_64 -installed = rpi-imager-2.0.9-1-x86_64 -installed = rsync-3.4.4-1-x86_64 +installed = rpi-imager-2.0.11-2-x86_64 +installed = rsync-3.5.0-1-x86_64 installed = rtkit-0.14-1-x86_64 installed = rtmpdump-1:2.6-2-x86_64 installed = rubberband-4.0.0-2-x86_64 @@ -2447,7 +2451,7 @@ installed = rygel-1:45.2-1-x86_64 installed = s-tui-1.4.0-1-any installed = s2n-tls-1.7.2-1-x86_64 installed = safecopy-1.7-1-x86_64 -installed = samba-2:4.24.5-1-x86_64 +installed = samba-2:4.24.6-1-x86_64 installed = sane-1.4.0-4-x86_64 installed = sassc-3.6.2-5-x86_64 installed = sbc-2.2-1-x86_64 @@ -2478,24 +2482,24 @@ installed = sed-4.10-2-x86_64 installed = semver-7.8.5-1-any installed = serd-0.32.10-1-x86_64 installed = serf-1.3.10-2-x86_64 -installed = sg3_utils-1.48-1-x86_64 +installed = sg3_utils-1.49-1-x86_64 installed = sgml-common-0.6.3-9-any installed = shaderc-2026.3-1-x86_64 installed = shadow-4.20.0.arch1-1-x86_64 installed = shared-mime-info-2.5.1-2-x86_64 -installed = shelly-3.0.1+1-2-x86_64 +installed = shelly-3.0.6-1-x86_64 installed = shiboken6-6.11.1-4-x86_64 installed = signon-kwallet-extension-26.04.3-1-x86_64 installed = signon-plugin-oauth2-0.25-4-x86_64 installed = signon-ui-0.17+20231016-4-x86_64 installed = signond-8.61-4-x86_64 installed = simde-0.8.2-1-any -installed = simdjson-1:4.6.6-1-x86_64 +installed = simdjson-1:4.6.7-1-x86_64 installed = simple-scan-50.0-1-x86_64 installed = sip4-4.19.25-7-x86_64 installed = slang-2.3.3-4-x86_64 installed = smartmontools-7.5-1-x86_64 -installed = smbclient-2:4.24.5-1-x86_64 +installed = smbclient-2:4.24.6-1-x86_64 installed = snapd-glib-1.72-1-x86_64 installed = snapd-glib-debug-1.70-1-x86_64 installed = snappy-1.2.2-3-x86_64 @@ -2541,7 +2545,7 @@ installed = strip-nondeterminism-1.15.1-1-any installed = subversion-1.14.5-5-x86_64 installed = sudo-1.9.17.p2-6-x86_64 installed = suil-0.10.26-1-x86_64 -installed = suitesparse-7.13.0-1-x86_64 +installed = suitesparse-7.14.0-1-x86_64 installed = supertuxkart-1.5-1-x86_64 installed = sushi-50.0-1-x86_64 installed = svt-av1-4.2.0-1-x86_64 @@ -2750,7 +2754,7 @@ installed = tde-twin-style-suse2-14.1.6-1-x86_64 installed = tde-universal-indent-gui-tqt-14.1.6-1-x86_64 installed = tde-xdg-desktop-portal-tde-14.1.6-1-x86_64 installed = tde-yakuake-14.1.6-1-x86_64 -installed = teams-for-linux-2.13.0-1-x86_64 +installed = teams-for-linux-2.15.0-1-x86_64 installed = tecla-50.0-1-x86_64 installed = terminator-2.1.5-2-any installed = terminus-font-4.49.1-8-any @@ -2799,7 +2803,7 @@ installed = tor-0.4.9.11-1-x86_64 installed = torsocks-2.5.0-1-x86_64 installed = totem-43.2-5-x86_64 installed = totem-pl-parser-3.26.7-1-x86_64 -installed = tpm2-tss-4.1.3-1-x86_64 +installed = tpm2-tss-4.2.0-2-x86_64 installed = transmission-gtk-4.1.3-2-x86_64 installed = tree-2.3.2-1-x86_64 installed = tslib-1.24-1-x86_64 @@ -2816,7 +2820,7 @@ installed = ttf-ubuntu-font-family-1:0.83-2-any installed = tumbler-4.20.2-1-x86_64 installed = twolame-0.4.0-4-x86_64 installed = tzdata-2026c-1-x86_64 -installed = uartscope-1.0.0.r4.g72a2b7e-1-x86_64 +installed = uartscope-1.0.0.r5.g1422efd-1-x86_64 installed = uchardet-0.0.8-4-x86_64 installed = udisks2-2.11.2-1-x86_64 installed = unifdef-2.12-4-x86_64 @@ -2834,11 +2838,11 @@ installed = usd-26.05-4-x86_64 installed = uthash-2.3.0-3-any installed = util-linux-2.42.2-1-x86_64 installed = util-linux-libs-2.42.2-1-x86_64 -installed = uv-0.12.3-1-x86_64 +installed = uv-0.12.5-1-x86_64 installed = v4l-utils-1.32.0-2-x86_64 installed = v4l2loopback-dkms-0.15.4-2-any -installed = vala-0.56.19-1-x86_64 -installed = valgrind-3.25.1-7-x86_64 +installed = vala-0.56.19-2-x86_64 +installed = valgrind-3.25.1-9-x86_64 installed = vamp-plugin-sdk-1:2.10-1-x86_64 installed = vapoursynth-77-2-x86_64 installed = vde2-2.3.3-9-x86_64 @@ -2856,9 +2860,9 @@ installed = virtiofsd-1.14.0-1-x86_64 installed = virtualbox-7.2.14-1-x86_64 installed = virtualbox-guest-iso-7.2.14-1-any installed = virtualbox-host-dkms-7.2.14-1-x86_64 -installed = virtualgl-3.1.4-1-x86_64 -installed = visual-studio-code-bin-1.131.0-1-x86_64 -installed = vivaldi-8.1.4087.62-1-x86_64 +installed = virtualgl-3.1.5-1-x86_64 +installed = visual-studio-code-bin-1.133.0-1-x86_64 +installed = vivaldi-8.1.4087.66-1-x86_64 installed = vivaldi-ffmpeg-codecs-150.0.7871.120-1-x86_64 installed = vlc-3.0.23_2-10-x86_64 installed = vlc-cli-3.0.23_2-10-x86_64 @@ -2927,7 +2931,7 @@ installed = wireplumber-0.5.15-1-x86_64 installed = wmctrl-1.07-6-x86_64 installed = woff2-1.0.2-6-x86_64 installed = wolfssl-5.9.2-1-x86_64 -installed = wpa_supplicant-2:2.11-5-x86_64 +installed = wpa_supplicant-2:2.12-1-x86_64 installed = wps-office-all-dicts-win-languages-11.1.0.11704-0-any installed = wps-office-bin-12.1.2.22571-1-x86_64 installed = wps-office-mui-de-de-11.1.0.11704-1-any @@ -2937,7 +2941,7 @@ installed = wxwidgets-common-3.2.11-2-x86_64 installed = wxwidgets-gtk3-3.2.11-2-x86_64 installed = x264-3:0.165.r3222.b35605a-2-x86_64 installed = x265-4.3-1-x86_64 -installed = xapian-core-1:2.0.0-2-x86_64 +installed = xapian-core-1:2.1.0-1-x86_64 installed = xapp-3.2.2-1-x86_64 installed = xapp-symbolic-icons-1.1.0-1-any installed = xawtv-3.107-3-x86_64 @@ -2952,7 +2956,7 @@ installed = xcb-util-keysyms-0.4.1-5-x86_64 installed = xcb-util-renderutil-0.3.10-2-x86_64 installed = xcb-util-wm-0.4.2-2-x86_64 installed = xcb-util-xrm-1.3-4-x86_64 -installed = xdg-dbus-proxy-0.1.7-1-x86_64 +installed = xdg-dbus-proxy-0.1.8-1-x86_64 installed = xdg-desktop-portal-1.22.1-2-x86_64 installed = xdg-desktop-portal-gnome-50.0-1-x86_64 installed = xdg-desktop-portal-gtk-1.15.3-1-x86_64 @@ -3017,7 +3021,7 @@ installed = yakuake-26.04.3-1-x86_64 installed = yaml-cpp-0.9.0-1-x86_64 installed = yarn-1.22.22-2-any installed = yasm-1.3.0-9-x86_64 -installed = yay-git-13.0.1.r35.g2d52ad47-1-x86_64 +installed = yay-git-13.0.1.r37.g328f4b49-1-x86_64 installed = yaz-5.37.3-1-x86_64 installed = yelp-49.2-1-x86_64 installed = yelp-tools-42.1-2-any @@ -3033,7 +3037,7 @@ installed = zeromq-4.3.5-3-x86_64 installed = zig-0.16.0-1-x86_64 installed = zimg-3.0.6-2-x86_64 installed = zint-2.16.0-2-x86_64 -installed = zip-3.0-13-x86_64 +installed = zip-3.0-14-x86_64 installed = zita-convolver-4.0.3-5-x86_64 installed = zix-0.8.2-1-x86_64 installed = zlib-1:1.3.2-3-x86_64 diff --git a/uartscope-git/pkg/uartscope/.MTREE b/uartscope-git/pkg/uartscope/.MTREE index 4c46c3a..cf84c22 100644 Binary files a/uartscope-git/pkg/uartscope/.MTREE and b/uartscope-git/pkg/uartscope/.MTREE differ diff --git a/uartscope-git/pkg/uartscope/.PKGINFO b/uartscope-git/pkg/uartscope/.PKGINFO index 417c629..552012e 100644 --- a/uartscope-git/pkg/uartscope/.PKGINFO +++ b/uartscope-git/pkg/uartscope/.PKGINFO @@ -3,12 +3,12 @@ pkgname = uartscope pkgbase = uartscope xdata = pkgtype=pkg -pkgver = 1.0.0.r5.g1422efd-1 +pkgver = 1.0.0.r6.ga942f83-1 pkgdesc = Qt6-based UART serial monitor with tag monitoring, table view and auto-reconnect url = https://git.projekt-hirnfrei.de/diabolus/uartscope -builddate = 1786450603 +builddate = 1787005573 packager = Unknown Packager -size = 397937 +size = 406129 arch = x86_64 license = MIT conflict = uartscope diff --git a/uartscope-git/pkg/uartscope/usr/bin/uartscope b/uartscope-git/pkg/uartscope/usr/bin/uartscope index 13c160d..d4383c6 100755 Binary files a/uartscope-git/pkg/uartscope/usr/bin/uartscope and b/uartscope-git/pkg/uartscope/usr/bin/uartscope differ diff --git a/uartscope-git/src/uartscope b/uartscope-git/src/uartscope index 1422efd..a942f83 160000 --- a/uartscope-git/src/uartscope +++ b/uartscope-git/src/uartscope @@ -1 +1 @@ -Subproject commit 1422efdc2f14d71edf3c7accec15966f5aa81c07 +Subproject commit a942f8385b8b05f5ec9a097ebbb3ba61ad0690f6 diff --git a/uartscope-git/uartscope/FETCH_HEAD b/uartscope-git/uartscope/FETCH_HEAD index d7f4b72..2587804 100644 --- a/uartscope-git/uartscope/FETCH_HEAD +++ b/uartscope-git/uartscope/FETCH_HEAD @@ -1,2 +1,2 @@ -1422efdc2f14d71edf3c7accec15966f5aa81c07 not-for-merge branch 'main' of https://git.projekt-hirnfrei.de/diabolus/uartscope +a942f8385b8b05f5ec9a097ebbb3ba61ad0690f6 not-for-merge branch 'main' of https://git.projekt-hirnfrei.de/diabolus/uartscope cc102c93eb17f7b910d8e74c3505f198bed77f10 not-for-merge tag 'v1.0.0' of https://git.projekt-hirnfrei.de/diabolus/uartscope