diff --git a/gui/ollie9pclient.cpp b/gui/ollie9pclient.cpp index 9bc6fe7..9ead609 100644 --- a/gui/ollie9pclient.cpp +++ b/gui/ollie9pclient.cpp @@ -87,23 +87,21 @@ void Ollie9pClient::setActiveSessionId(const QString &id) void Ollie9pClient::refreshSessions() { QByteArray out = run9p({"read", "session/idx"}); - // Don't trim the whole output — trailing tabs are significant fields + // Don't trim — trailing tabs are significant fields QString raw = QString::fromUtf8(out); m_sessions.clear(); if (!raw.isEmpty()) { for (const QString &line : raw.split('\n', Qt::SkipEmptyParts)) { - QString trimmed = line.trimmed(); - if (trimmed.isEmpty()) continue; - QStringList parts = trimmed.split('\t'); - if (parts.size() >= 2) { - QVariantMap session; - session["id"] = parts[0]; - session["state"] = parts[1]; - session["model"] = parts.size() > 2 ? parts[2] : ""; - session["agent"] = parts.size() > 3 ? parts[3] : ""; - m_sessions.append(session); - } + QStringList parts = line.split('\t'); + // Skip lines where the first field (session name) is empty + if (parts.isEmpty() || parts[0].isEmpty()) continue; + QVariantMap session; + session["id"] = parts[0]; + session["state"] = parts.size() > 1 ? parts[1] : ""; + session["model"] = parts.size() > 2 ? parts[2] : ""; + session["agent"] = parts.size() > 3 ? parts[3] : ""; + m_sessions.append(session); } } emit sessionsChanged(); @@ -541,23 +539,21 @@ void Ollie9pClient::onEventReadyRead() { // eventwait returned the full session index — use it directly QByteArray data = m_eventProc->readAllStandardOutput(); - // Don't trim the whole output — trailing tabs are significant fields + // Don't trim — trailing tabs are significant fields QString raw = QString::fromUtf8(data); m_sessions.clear(); if (!raw.isEmpty()) { for (const QString &line : raw.split('\n', Qt::SkipEmptyParts)) { - QString trimmed = line.trimmed(); - if (trimmed.isEmpty()) continue; - QStringList parts = trimmed.split('\t'); - if (parts.size() >= 2) { - QVariantMap session; - session["id"] = parts[0]; - session["state"] = parts[1]; - session["model"] = parts.size() > 2 ? parts[2] : ""; - session["agent"] = parts.size() > 3 ? parts[3] : ""; - m_sessions.append(session); - } + QStringList parts = line.split('\t'); + // Skip lines where the first field (session name) is empty + if (parts.isEmpty() || parts[0].isEmpty()) continue; + QVariantMap session; + session["id"] = parts[0]; + session["state"] = parts.size() > 1 ? parts[1] : ""; + session["model"] = parts.size() > 2 ? parts[2] : ""; + session["agent"] = parts.size() > 3 ? parts[3] : ""; + m_sessions.append(session); } } emit sessionsChanged();