Compare commits

..

16 Commits

Author SHA1 Message Date
Tobias Fella
7d51d43709 Test 2026-02-20 00:18:27 +01:00
Tobias Fella
ded0a8a74e update snap 2026-02-20 00:18:27 +01:00
Tobias Fella
2a2ee9adb7 Adapt to change 2026-02-20 00:18:27 +01:00
Tobias Fella
f696a0bb37 Add corrosion to snap 2026-02-20 00:18:27 +01:00
Tobias Fella
a351f988ed Fix flatpak 2026-02-20 00:18:27 +01:00
Tobias Fella
ce5b527be9 Add license to generated-sources 2026-02-20 00:18:27 +01:00
Tobias Fella
fbf39ffcf5 Use rust target of libquotient 2026-02-20 00:18:27 +01:00
Tobias Fella
9498f76bfb Port flatpak 2026-02-20 00:18:27 +01:00
Tobias Fella
c8eb62989c Adapt to libquotient changes for matrix-rust-sdk-crypto 2026-02-20 00:18:27 +01:00
Joshua Goins
4078d3f2dc Remove attach dialog
This was used when you pressed the "Attach file/image" button but had an
image copied to your clipboard - allowing you to select from either
source. This is a weird thing to ask, the button should always prompt
you with a file dialog.

It's still possible to paste an image from your clipboard with CTRL+V,
but there isn't a way to do it via right-click yet.

Fixes #712
2026-02-19 17:17:00 -05:00
Joshua Goins
53989ff4fe Improve messaging around various encryption key options
Element has landed on calling these "recovery keys" and we should do the
same. Since these have had various names throughout the years and in
previous versions of NeoChat, they are still mentioned.

I also renamed "Secret Backup" to "Key Storage" which is also Element
terminology.
2026-02-19 17:10:27 -05:00
Azhar Momin
2d33cbf6b1 Show thread root event instead of latest thread event 2026-02-19 16:34:33 -05:00
Azhar Momin
b42a82a455 Fix segfault in ContentProvider
QCache in ContentProvider handles cleanup for ThreadModel.
Setting NeoChatRoom as parent for ThreadModel caused it to
be deleted outside of QCache control leading to a double-free.
2026-02-19 16:34:33 -05:00
l10n daemon script
99aed0993e GIT_SILENT Sync po/docbooks with svn 2026-02-19 01:51:57 +00:00
l10n daemon script
7ede740aa8 GIT_SILENT made messages (after extraction) 2026-02-19 00:45:31 +00:00
Darshan Phaldesai
7137b60da9 compactLayout: add spacing around messages and chatbar 2026-02-18 12:08:05 -05:00
68 changed files with 4247 additions and 389 deletions

View File

@@ -4,3 +4,4 @@
[BlueprintSettings]
kde/applications/neochat.packageAppx=True
libs/qt.qtMajorVersion=6
qt-libs/libquotient.version=rust

View File

@@ -4,6 +4,17 @@
"runtime": "org.kde.Platform",
"runtime-version": "6.10",
"sdk": "org.kde.Sdk",
"sdk-extensions" : [
"org.freedesktop.Sdk.Extension.rust-stable"
],
"build-options": {
"append-path": "/usr/lib/sdk/rust-stable/bin",
"env": {
"RUST_BACKTRACE": "1",
"CARGO_NET_OFFLINE": "true",
"RUSTFLAGS": "--remap-path-prefix =../"
}
},
"command": "neochat",
"tags": [
"nightly"
@@ -61,26 +72,6 @@
}
]
},
{
"name": "olm",
"buildsystem": "cmake-ninja",
"config-opts": [
"-DCMAKE_POLICY_VERSION_MINIMUM=3.5",
"-DOLM_TESTS=OFF"
],
"sources": [
{
"type": "git",
"url": "https://gitlab.matrix.org/matrix-org/olm.git",
"tag": "3.2.16",
"x-checker-data": {
"type": "git",
"tag-pattern": "^([\\d.]+)$"
},
"commit": "7e0c8277032e40308987257b711b38af8d77cc69"
}
]
},
{
"name": "libsecret",
"buildsystem": "meson",
@@ -129,21 +120,37 @@
]
},
{
"name": "libQuotient",
"name": "corrosion",
"buildsystem": "cmake-ninja",
"sources": [
{
"type": "git",
"url": "https://github.com/quotient-im/libQuotient.git",
"branch": "dev",
"disable-submodules": true
"url": "https://github.com/corrosion-rs/corrosion",
"tag": "v0.6.0"
}
]
},
{
"name": "libQuotient",
"buildsystem": "cmake-ninja",
"sources": [
"flatpak/generated-sources.json",
{
"type": "git",
"url": "https://github.com/quotient-im/libquotient",
"branch": "tobias/rust-sdk-crypto"
}
],
"config-opts": [
"-DBUILD_WITH_QT6=ON",
"-DQuotient_ENABLE_E2EE=ON",
"-DBUILD_TESTING=OFF"
]
],
"build-options": {
"env": {
"CARGO_HOME": "/run/build/libQuotient/cargo"
}
}
},
{
"name": "cmark",

View File

@@ -194,21 +194,23 @@ void ModelTest::testEventMessageContentModel()
void ModelTest::testThreadModel()
{
auto model = new ThreadModel(eventId, room);
auto tester = new QAbstractItemModelTester(model, model);
auto model = std::make_unique<ThreadModel>(eventId, room);
auto tester = new QAbstractItemModelTester(model.get(), model.get());
tester->setUseFetchMore(true);
}
void ModelTest::testThreadFetchModel()
{
auto model = new ThreadFetchModel(new ThreadModel(eventId, room));
auto threadModel = std::make_unique<ThreadModel>(eventId, room);
auto model = new ThreadFetchModel(threadModel.get());
auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true);
}
void ModelTest::testThreadChatBarModel()
{
auto model = new ThreadChatBarModel(new ThreadModel(eventId, room), room);
auto threadModel = std::make_unique<ThreadModel>(eventId, room);
auto model = new ThreadChatBarModel(threadModel.get(), room);
auto tester = new QAbstractItemModelTester(model, model);
tester->setUseFetchMore(true);
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,2 @@
SPDX-FileCopyrightText: none
SPDX-License-Identifier: CC0-1.0

View File

@@ -553,6 +553,7 @@
<p xml:lang="ca">Més millores del NeoChat</p>
<p xml:lang="ca-valencia">Més millores de NeoChat</p>
<p xml:lang="ka">NeoChat-ის მეტი სიკეთე</p>
<p xml:lang="nl">Meer NeoChat-goodies</p>
<p xml:lang="pt-BR">Mais novidades do NeoChat</p>
<p xml:lang="ru">Дополнительные возможности NeoChat</p>
<p xml:lang="sl">Več dobrot NeoChata</p>
@@ -562,7 +563,9 @@
<li xml:lang="ca">Codis QR per a compartir contactes</li>
<li xml:lang="ca-valencia">Codis QR per a compartir contactes</li>
<li xml:lang="es">Códigos QR para compartir contactos</li>
<li xml:lang="ia">Codices QR per compartir contactos</li>
<li xml:lang="ka">QR კოდები კონტაქტების გასაზიარებლად</li>
<li xml:lang="nl">QR-codes om contactpersonen te delen</li>
<li xml:lang="pt-BR">Códigos QR para compartilhar contatos</li>
<li xml:lang="ru">QR-коды для обмена контактами;</li>
<li xml:lang="sl">QR kode za deljenje stikov</li>
@@ -570,7 +573,9 @@
<li xml:lang="ar">ترقيات محسّنة للغرف</li>
<li xml:lang="ca">Actualitzacions millorades de les sales</li>
<li xml:lang="ca-valencia">Actualitzacions millorades de les sales</li>
<li xml:lang="ia">Meliorate actualisationes de sala</li>
<li xml:lang="ka">გაუმჯობესდა ოთახის განახლებები</li>
<li xml:lang="nl">Opwaarderen van room verbeterd</li>
<li xml:lang="pt-BR">Melhorias nas salas</li>
<li xml:lang="ru">Улучшены процедуры обновления комнат;</li>
<li xml:lang="sl">Izboljšane nadgradnje sob</li>
@@ -578,7 +583,9 @@
<li xml:lang="ar">أُضيف زر لرفض الدعوة وتجاهل المستخدم</li>
<li xml:lang="ca">S'ha afegit un botó per a rebutjar una invitació i ignorar l'usuari</li>
<li xml:lang="ca-valencia">S'ha afegit un botó per a rebutjar una invitació i ignorar l'usuari</li>
<li xml:lang="ia">Addite button per refusar invitation e ignorar usator</li>
<li xml:lang="ka">დაემატა ღილაკი მოსაწვევის უარყოფისთვის და მომხმარებლის დასაიგნორებლად</li>
<li xml:lang="nl">Toegevoegde knop om uitnodiging af te wijzen en gebruiker te negeren</li>
<li xml:lang="pt-BR">Adicionado botão para rejeitar convite e ignorar usuário</li>
<li xml:lang="ru">Добавлена кнопка для отклонения приглашения и игнорирования пользователя;</li>
<li xml:lang="sl">Dodan gumb za zavrnitev povabila in ignoriranje uporabnika</li>
@@ -587,7 +594,9 @@
<li xml:lang="ca">Mostra els detalls de seguretat del dispositiu</li>
<li xml:lang="ca-valencia">Mostra els detalls de seguretat del dispositiu</li>
<li xml:lang="es">Mostrar detalles de la seguridad del dispositivo</li>
<li xml:lang="ia">Monstra detalios de securitate de dispositivo</li>
<li xml:lang="ka">მოწყობილობის უსაფრთხოების დეტალების ჩვენება</li>
<li xml:lang="nl">Details van apparaatbeveiliging tonen</li>
<li xml:lang="pt-BR">Exibir detalhes de segurança do dispositivo</li>
<li xml:lang="ru">Просмотр подробных сведений о безопасности устройства;</li>
<li xml:lang="sl">Prikaži varnostne podrobnosti naprave</li>
@@ -596,7 +605,9 @@
<li xml:lang="ca">S'ha afegit la configuració de seguretat de la sala</li>
<li xml:lang="ca-valencia">S'ha afegit la configuració de seguretat de la sala</li>
<li xml:lang="es">Se han añadido ajustes de la seguridad de las salas</li>
<li xml:lang="ia">Addite preferentias de securitate de sala</li>
<li xml:lang="ka">დაემატა ოთახის უსაფრთხოების პარამეტრები</li>
<li xml:lang="nl">Beveiligingsinstelling voor room toegevoegd</li>
<li xml:lang="pt-BR">Adicionadas configurações de segurança da sala</li>
<li xml:lang="ru">Добавлены параметры безопасности комнат;</li>
<li xml:lang="sl">Dodane varnostne nastavitve sobe</li>
@@ -615,6 +626,7 @@
<p xml:lang="ca">A part d'una revisió visual, ara el NeoChat pot mostrar esdeveniments d'ubicació i també un mapa amb la ubicació de tots els usuaris que actualment emeten la seva ubicació utilitzant la integració de Matrix de l'Itineray. És genial per a localitzar on són els vostres amics.</p>
<p xml:lang="ca-valencia">A part d'una revisió visual, ara NeoChat pot mostrar esdeveniments d'ubicació i també un mapa amb la ubicació de tots els usuaris que actualment emeten la seua ubicació utilitzant la integració de Matrix de l'Itineray. És genial per a localitzar on són els vostres amics.</p>
<p xml:lang="ka">ვიზუალური მხრის განახლებასთან ერთად NeoChat-ს ახლა შეუძლია მდებარეობის მოვლენების ჩვენება და ასევე შეუძლია ყველა მომხმარებელი, რომელიც გადმოსცემს თავის მდებარეობას, Itinerary-ის მატრიცის ინტეგრაციით გაჩვენოთ. ეს კარგია იმისთვის, რომ გაიგოთ, სად არიან თქვენი მეგობრები.</p>
<p xml:lang="nl">Naast een visuele herziening kan NeoChat nu locatiegebeurtenissen tonen en ook een kaart met de locatie van alle gebruikers die nu hun locatie uitzenden met de Matrix-integratie van Itineray. Geweldig voor lokaliseren waar uw vrienden zijn.</p>
<p xml:lang="pt-BR">Além de uma reformulação visual, o NeoChat agora pode exibir eventos de localização e também um mapa com a localização de todos os usuários que estão transmitindo sua localização usando a integração Matrix do Itineray. Ótimo para localizar seus amigos.</p>
<p xml:lang="ru">Помимо визуального обновления, в NeoChat добавлена возможность отображения событий местоположения, а также карты с местоположением всех пользователей, которые в данный момент транслируют свои геоданные через интеграцию с Itineray в Matrix. Это удобно для того, чтобы узнать, где находятся ваши друзья.</p>
<p xml:lang="sl">Poleg vizualne prenove lahko NeoChat zdaj prikazuje lokacijske dogodke in tudi zemljevid z lokacijo vseh uporabnikov, ki trenutno oddajajo svojo lokacijo, z uporabo integracije Itineray Matrix. Odlično za iskanje lokacij vaših prijateljev.</p>
@@ -667,6 +679,7 @@
<p xml:lang="ca">Característiques noves i correccions d'errors:</p>
<p xml:lang="ca-valencia">Característiques noves i esmenes d'errors:</p>
<p xml:lang="es">Nuevas funciones y corrección de fallos:</p>
<p xml:lang="ia">Nove characteristicas e correctiones de faltas:</p>
<p xml:lang="ka">ახალი ფუნქციები და შეცდომების გასწორებები:</p>
<p xml:lang="pt-BR">Novas funcionalidades e correções de bugs:</p>
<p xml:lang="ru">Новые возможности и исправления ошибок:</p>
@@ -677,6 +690,7 @@
<li xml:lang="ca">Ara es mostraran les notificacions per a tots els comptes, no només l'actiu</li>
<li xml:lang="ca-valencia">Ara es mostraran les notificacions per a tots els comptes, no només l'actiu</li>
<li xml:lang="es">Se muestran notificaciones de todas las cuentas, no solo de la activa</li>
<li xml:lang="ia">Notificationes nunc essera monstrate per tote le contos,non solmente perlo que es active</li>
<li xml:lang="ka">გაფრთხილებები ნაჩვენები იქნება ყველა ანგარიშისთვის და არა, მხოლოდ, აქტიურისთვის</li>
<li xml:lang="pt-BR">Agora, as notificações serão exibidas para todas as contas, não apenas para a conta ativa</li>
<li xml:lang="ru">Уведомления будут выводиться для всех учётных записей, а не только для активной;</li>
@@ -686,6 +700,7 @@
<li xml:lang="ca">Hi ha un mode «compacte» nou per a la llista de sales</li>
<li xml:lang="ca-valencia">Hi ha un mode «compacte» nou per a la llista de sales</li>
<li xml:lang="es">Nuevo modo «compacto» para la lista de salas</li>
<li xml:lang="ia">Il ha un nove modo 'compacte' per le lista de sala</li>
<li xml:lang="ka">ოთახების სიისთვის არსებობს ახალი "კომპაქტური" რეჟიმი</li>
<li xml:lang="pt-BR">Existe um novo modo "compacto" para a lista de salas</li>
<li xml:lang="ru">Добавлен новый компактный режим списка комнат;</li>
@@ -695,6 +710,7 @@
<li xml:lang="ca">Ara podeu cercar a l'historial de sales</li>
<li xml:lang="ca-valencia">Ara podeu buscar en l'historial de sales</li>
<li xml:lang="es">Ahora se puede buscar en el historial de salas</li>
<li xml:lang="ia">Tu pote nunc cercar in lechronologia de sala</li>
<li xml:lang="ka">ახლა ოთახის ისტორიაში ძებნა შეგიძლიათ</li>
<li xml:lang="pt-BR">Agora você pode pesquisar no histórico da sala</li>
<li xml:lang="ru">Добавлен поиск по истории комнат;</li>
@@ -704,6 +720,7 @@
<li xml:lang="ca">Els emojis i les reaccions s'han millorat significativament</li>
<li xml:lang="ca-valencia">Els emoji i les reaccions s'han millorat significativament</li>
<li xml:lang="es">Los emojis y las reacciones se han mejorado significativamente</li>
<li xml:lang="ia">Emojis e Reactiones ha essite meliorate significativemente</li>
<li xml:lang="ka">ემოჯიები და რეაქციები საგრძნობლად გაუმჯობესდა</li>
<li xml:lang="pt-BR">Os emojis e as reações foram significativamente aprimorados</li>
<li xml:lang="ru">Эмодзи и реакции были значительно улучшены;</li>
@@ -713,6 +730,7 @@
<li xml:lang="ca">S'han corregit diverses fallades respecte les invitacions d'usuari</li>
<li xml:lang="ca-valencia">S'han corregit diverses fallades respecte les invitacions d'usuari</li>
<li xml:lang="es">Se han corregido varios fallos relacionados con las invitaciones de los usuarios</li>
<li xml:lang="ia">Corrigite multe fracassos circa invitationes de usator</li>
<li xml:lang="ka">გასწორდა რამდენიმე შეცდომა მომხმარებლის მოწვევის ფუნქციის გარშემო</li>
<li xml:lang="pt-BR">Corrigidas várias falhas relacionadas a convites de usuários</li>
<li xml:lang="ru">Исправлено несколько аварийных завершений, связанных с приглашениями пользователей;</li>
@@ -722,6 +740,7 @@
<li xml:lang="ca">Ara es pot configurar les opcions dels permisos de sala</li>
<li xml:lang="ca-valencia">Ara es pot configurar les opcions dels permisos de sala</li>
<li xml:lang="es">Ahora se pueden configurar los ajustes de los permisos de las salas</li>
<li xml:lang="ia">Preferentias depermission de sala nun pote esser configurate</li>
<li xml:lang="ka">ახლა შეგიძლიათ ოთახზე წვდომების მორგება</li>
<li xml:lang="pt-BR">Agora é possível configurar as permissões da sala</li>
<li xml:lang="ru">Добавлена возможность настраивать разрешения для комнат;</li>
@@ -743,6 +762,7 @@
<p xml:lang="ca">Aquesta versió us ofereix diverses correccions d'errors i millores petites:</p>
<p xml:lang="ca-valencia">Esta versió vos oferix diverses esmenes d'errors i millores xicotetes:</p>
<p xml:lang="es">Esta versión proporciona diversas mejoras menores y correcciones de fallos:</p>
<p xml:lang="ia">Iste version te porta varie parve correctiones de faltas e melioramentos:</p>
<p xml:lang="ka">ეს ვერსია შეიცავს რამდენიმე პატარა შეცდომის გასწორებას და გაუმჯობესებას:</p>
<p xml:lang="pt-BR">Esta versão traz diversas pequenas correções de bugs e melhorias:</p>
<p xml:lang="ru">В этом выпуске исправлены различные ошибки и внесены улучшения:</p>
@@ -801,6 +821,7 @@
<li xml:lang="ca">S'ha corregit la creació d'emojis personalitzats.</li>
<li xml:lang="ca-valencia">S'ha corregit la creació d'emoji personalitzats.</li>
<li xml:lang="es">Se ha corregido la creación de emojis personalizados.</li>
<li xml:lang="ia">Creation de emojis personalisate ha essite corrigite.</li>
<li xml:lang="ka">გასწორდა მომხმარებლის ემოჯიების შექმნა.</li>
<li xml:lang="pt-BR">A criação de emojis personalizados foi corrigida.</li>
<li xml:lang="ru">Исправлено создание пользовательских эмодзи;</li>

View File

@@ -6,8 +6,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"PO-Revision-Date: 2026-02-15 21:02+0400\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-18 17:52+0400\n"
"Last-Translator: Zayed Al-Saidi <zayed.alsaidi@gmail.com>\n"
"Language-Team: ar\n"
"Language: ar\n"
@@ -372,11 +372,10 @@ msgid "Do you really want to leave %1?"
msgstr "أتريد حقًّا مغادرة %1؟"
#: src/app/qml/ConfirmLeaveDialog.qml:25
#, fuzzy, kde-format
#| msgid "Leave room"
#, kde-format
msgctxt "@action:button Leave this room/space"
msgid "Leave"
msgstr "اترك الغرفة"
msgstr "غادر"
#: src/app/qml/ConfirmLogoutDialog.qml:15
#, kde-format
@@ -747,9 +746,7 @@ msgid "The input is not a valid room ID or alias"
msgstr "ليس النص المُدخَل ليس معرف غرفة صالح أو معرف بديل"
#: src/app/qml/ManualRoomDialog.qml:110
#, fuzzy, kde-format
#| msgctxt "@action:button Join the Jitsi meeting"
#| msgid "Join"
#, kde-format
msgctxt "@action:button Join this room/space"
msgid "Join"
msgstr "انضم"
@@ -776,9 +773,7 @@ msgid "The input is not a valid user ID"
msgstr "ليس النص المُدخَل ليس رقم مستخدم صالح"
#: src/app/qml/ManualUserDialog.qml:76
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Ok"
#, kde-format
msgctxt "@action:button Perform an action with this user ID"
msgid "Ok"
msgstr "حسنًا"
@@ -1976,12 +1971,10 @@ msgstr ""
"ستُزال منها"
#: src/chatbar/SendBar.qml:102
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Send message"
#, kde-format
msgctxt "@action:button"
msgid "Add to message"
msgstr "أرسل رسالة"
msgstr "أضف إلى الرسالة"
#: src/chatbar/SendBar.qml:132 src/chatbar/SendBar.qml:163
#, kde-format
@@ -7542,13 +7535,13 @@ msgstr "تفاعل"
msgid "Message menu"
msgstr "قائمة الرّسالة"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "آخر قراءة: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2023-12-12 01:02+0100\n"
"Last-Translator: Enol P. <enolp@softastur.org>\n"
"Language-Team: Asturian <alministradores@softastur.org>\n"
@@ -7433,13 +7433,13 @@ msgstr ""
msgid "Message menu"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2022-07-22 12:13+0400\n"
"Last-Translator: Kheyyam <xxmn77@gmail.com>\n"
"Language-Team: Azerbaijani <kde-i18n-doc@kde.org>\n"
@@ -8370,13 +8370,13 @@ msgstr "Reaksiya"
msgid "Message menu"
msgstr "İsmarıc mənbəyi"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Sonuncu oxuma: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-17 09:47+0100\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
@@ -7596,13 +7596,13 @@ msgstr "Reacciona"
msgid "Message menu"
msgstr "Menú de missatge"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última lectura: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -9,8 +9,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"PO-Revision-Date: 2026-02-15 10:07+0100\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-17 09:47+0100\n"
"Last-Translator: Josep M. Ferrer <txemaq@gmail.com>\n"
"Language-Team: Catalan <kde-i18n-ca@kde.org>\n"
"Language: ca@valencia\n"
@@ -376,12 +376,10 @@ msgid "Do you really want to leave %1?"
msgstr "Voleu eixir de %1?"
#: src/app/qml/ConfirmLeaveDialog.qml:25
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Leave Room"
#, kde-format
msgctxt "@action:button Leave this room/space"
msgid "Leave"
msgstr "Ix de la sala"
msgstr "Ix"
#: src/app/qml/ConfirmLogoutDialog.qml:15
#, kde-format
@@ -756,9 +754,7 @@ msgid "The input is not a valid room ID or alias"
msgstr "L'entrada no és un ID de sala o àlies vàlid"
#: src/app/qml/ManualRoomDialog.qml:110
#, fuzzy, kde-format
#| msgctxt "@action:button Join the Jitsi meeting"
#| msgid "Join"
#, kde-format
msgctxt "@action:button Join this room/space"
msgid "Join"
msgstr "Unix-te"
@@ -788,7 +784,7 @@ msgstr "L'entrada no és un ID d'usuari vàlid"
#, kde-format
msgctxt "@action:button Perform an action with this user ID"
msgid "Ok"
msgstr ""
msgstr "D'acord"
#: src/app/qml/MeetingDialog.qml:16
#, kde-format
@@ -2020,12 +2016,10 @@ msgstr ""
"formats enriquits"
#: src/chatbar/SendBar.qml:102
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Send message"
#, kde-format
msgctxt "@action:button"
msgid "Add to message"
msgstr "Envia un missatge"
msgstr "Afig al missatge"
#: src/chatbar/SendBar.qml:132 src/chatbar/SendBar.qml:163
#, kde-format
@@ -7062,7 +7056,7 @@ msgstr "Fes que este espai siga el pare canònic"
#, kde-format
msgctxt "@action:button"
msgid "Ok"
msgstr ""
msgstr "D'acord"
#: src/settings/SelectSpacesDialog.qml:37
#, kde-format
@@ -7605,13 +7599,13 @@ msgstr "Reacciona"
msgid "Message menu"
msgstr "Menú de missatge"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última lectura: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"
@@ -7673,10 +7667,3 @@ msgid "%2 is typing"
msgid_plural "%2 are typing"
msgstr[0] "%2 està escrivint"
msgstr[1] "%2 estan escrivint"
#~ msgid "OK"
#~ msgstr "D'acord"
#~ msgctxt "@option:check Enable the matrix 'threads' feature"
#~ msgid "Threads"
#~ msgstr "Fils"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2024-09-17 15:24+0200\n"
"Last-Translator: Vit Pelcak <vit@pelcak.org>\n"
"Language-Team: Czech <kde-i18n-doc@kde.org>\n"
@@ -7565,13 +7565,13 @@ msgstr "Zareagovat"
msgid "Message menu"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Poslední přístup ke čtení: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2020-12-13 17:28+0100\n"
"Last-Translator: Martin Schlander <mschlander@opensuse.org>\n"
"Language-Team: Danish <kde-i18n-doc@kde.org>\n"
@@ -7932,13 +7932,13 @@ msgstr ""
msgid "Message menu"
msgstr "Kopiér"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-01-20 00:32+0100\n"
"Last-Translator: Philipp Kiemle <l10n.daphipz@fastmail.de>\n"
"Language-Team: German <kde-i18n-de@kde.org>\n"
@@ -7836,13 +7836,13 @@ msgstr "Reagieren"
msgid "Message menu"
msgstr "Nachrichten-Quelltext"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Zuletzt gelesen: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2024-09-20 13:25+0300\n"
"Last-Translator: Antonis Geralis <capoiosct@gmail.com>\n"
"Language-Team: Greek <kde-i18n-el@kde.org>\n"
@@ -8256,13 +8256,13 @@ msgstr "Αντίδραση"
msgid "Message menu"
msgstr "Πηγή μηνύματος"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Τελευταία ανάγνωση: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2024-11-23 12:05+0000\n"
"Last-Translator: Steve Allewell <steve.allewell@gmail.com>\n"
"Language-Team: British English\n"
@@ -8155,13 +8155,13 @@ msgstr "React"
msgid "Message menu"
msgstr "Message Source"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Last read: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2025-03-23 07:29+0100\n"
"Last-Translator: Oliver Kellogg <olivermkellogg@gmail.com>\n"
"Language-Team: Esperanto <kde-i18n-eo@kde.org>\n"
@@ -8049,13 +8049,13 @@ msgstr "Reagi"
msgid "Message menu"
msgstr "Mesaĝfonto"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Lasta legado: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-17 14:00+0100\n"
"Last-Translator: Eloy Cuadra <ecuadra@eloihr.net>\n"
"Language-Team: Spanish <kde-l10n-es@kde.org>\n"
@@ -7584,13 +7584,13 @@ msgstr "Reaccionar"
msgid "Message menu"
msgstr "Menú del mensaje"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última lectura: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-01-06 10:39+0100\n"
"Last-Translator: Iñigo Salvador Azurmendi <xalba@ni.eus>\n"
"Language-Team: Basque <kde-i18n-eu@kde.org>\n"
@@ -7721,13 +7721,13 @@ msgstr "Erreakzioa"
msgid "Message menu"
msgstr "Mezuaren menua"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Azken irakurketa: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-01-12 14:31+0200\n"
"Last-Translator: Tommi Nieminen <translator@legisign.org>\n"
"Language-Team: Finnish <kde-i18n-doc@kde.org>\n"
@@ -7734,13 +7734,13 @@ msgstr "Reagoi"
msgid "Message menu"
msgstr "Viestivalikko"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Viimeksi luettu: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -4,7 +4,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-12 21:23+0100\n"
"Last-Translator: Xavier Besnard <xavier.besnard@kde.org>\n"
"Language-Team: \n"
@@ -7679,13 +7679,13 @@ msgstr "Réaction"
msgid "Message menu"
msgstr "Menu du message"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Dernier lu : %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <kde-i18n-doc@kde.org>\n"
@@ -7438,13 +7438,13 @@ msgstr ""
msgid "Message menu"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2025-06-22 12:13+0200\n"
"Last-Translator: Adrián Chaves (Gallaecio) <adrian@chaves.gal>\n"
"Language-Team: Proxecto Trasno (proxecto@trasno.gal)\n"
@@ -8015,13 +8015,13 @@ msgstr "Reaccionar"
msgid "Message menu"
msgstr "Menú de mensaxes"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última lectura: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-13 09:48+0200\n"
"Last-Translator: Yaron Shahrabani <sh.yaron@gmail.com>\n"
"Language-Team: צוות התרגום של KDE ישראל\n"
@@ -7537,13 +7537,13 @@ msgstr "רגש בתגובה"
msgid "Message menu"
msgstr "תפריט הודעה"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "נקרא לאחרונה: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2024-12-15 19:31+0530\n"
"Last-Translator: kali <skkalwar999@gmail.com>\n"
"Language-Team: Hindi <kde-i18n-doc@kde.org>\n"
@@ -8058,13 +8058,13 @@ msgstr "प्रतिक्रिया"
msgid "Message menu"
msgstr "संदेश स्रोत"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "अंतिम बार पढ़ा गया: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-01-03 22:36+0100\n"
"Last-Translator: Kristof Kiszel <ulysses@fsf.hu>\n"
"Language-Team: Hungarian <kde-l10n-hu@kde.org>\n"
@@ -7922,13 +7922,13 @@ msgstr "Reagálás"
msgid "Message menu"
msgstr "Üzenetmenü"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Utoljára olvasva: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-17 17:34+0100\n"
"Last-Translator: giovanni <g.sora@tiscali.it>\n"
"Language-Team: Interlingua <kde-i18n-doc@kde.org>\n"
@@ -7582,13 +7582,13 @@ msgstr "Reage"
msgid "Message menu"
msgstr "Menu de message"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Ultime legite: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2023-06-16 19:31+0700\n"
"Last-Translator: Linerly <linerly@protonmail.com>\n"
"Language-Team: Indonesian <kde-i18n-doc@kde.org>\n"
@@ -8360,13 +8360,13 @@ msgstr "Reaksi"
msgid "Message menu"
msgstr "Sumber Pesan"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Terakhir dibaca: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2022-10-28 19:18+0700\n"
"Last-Translator: OIS <mistresssilvara@hotmail.com>\n"
"Language-Team: kde-i18n-doc@kde.org\n"
@@ -8055,13 +8055,13 @@ msgstr "Reacter"
msgid "Message menu"
msgstr "_Missage..."
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Leet ultimmen: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-07 08:52+0100\n"
"Last-Translator: Vincenzo Reale <smart2128vr@gmail.com>\n"
"Language-Team: Italian <kde-i18n-it@kde.org>\n"
@@ -7646,13 +7646,13 @@ msgstr "Reagisci"
msgid "Message menu"
msgstr "Il menu Messaggio"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Ultima lettura: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2020-11-05 23:50-0800\n"
"Last-Translator: Japanese KDE translation team <kde-jp@kde.org>\n"
"Language-Team: Japanese <kde-jp@kde.org>\n"
@@ -7418,13 +7418,13 @@ msgstr ""
msgid "Message menu"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-17 04:12+0100\n"
"Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n"
"Language-Team: Georgian <kde-i18n-doc@kde.org>\n"
@@ -7546,13 +7546,13 @@ msgstr "რეაქცია"
msgid "Message menu"
msgstr "შეტყობინების მენიუ"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "ბოლოს წაიკითხა: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2025-10-12 12:43+0200\n"
"Last-Translator: Shinjo Park <kde@peremen.name>\n"
"Language-Team: Korean <kde-kr@kde.org>\n"
@@ -7797,13 +7797,13 @@ msgstr "반응"
msgid "Message menu"
msgstr "메시지 메뉴"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "마지막 읽음: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2025-12-29 16:49+0200\n"
"Last-Translator: Automatically generated\n"
"Language-Team: none\n"
@@ -7586,13 +7586,13 @@ msgstr ""
msgid "Message menu"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2025-11-11 19:11+0200\n"
"Last-Translator: Toms Trasuns <toms.trasuns@posteo.net>\n"
"Language-Team: Latvian <kde-i18n-doc@kde.org>\n"
@@ -7778,13 +7778,13 @@ msgstr "Reaģēt"
msgid "Message menu"
msgstr "Ziņas izvēlne"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Pēdējo reizi lasīta: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-17 12:32+0100\n"
"Last-Translator: Freek de Kruijf <freekdekruijf@kde.nl>\n"
"Language-Team: \n"
@@ -7586,13 +7586,13 @@ msgstr "Reageer"
msgid "Message menu"
msgstr "Berichtmenu"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Laatst gelezen: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2024-10-27 15:01+0100\n"
"Last-Translator: Karl Ove Hufthammer <karl@huftis.org>\n"
"Language-Team: Norwegian Nynorsk <l10n-no@lister.huftis.org>\n"
@@ -7962,13 +7962,13 @@ msgstr "Reager"
msgid "Message menu"
msgstr "Meldingskjelde"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Sist lese: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2021-12-31 11:06-0800\n"
"Last-Translator: A S Alam <aalam@satluj.org>\n"
"Language-Team: Punjabi <punjabi-users@lists.sf.net>\n"
@@ -8293,13 +8293,13 @@ msgstr "ਅਸਰ"
msgid "Message menu"
msgstr "ਸੁਨੇਹੇ ਦਾ ਸਰੋਤ"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "ਆਖਰੀ ਪੜ੍ਹੇ: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-01-24 11:07+0100\n"
"Last-Translator: Łukasz Wojniłowicz <lukasz.wojnilowicz@gmail.com>\n"
"Language-Team: pl\n"
@@ -7644,13 +7644,13 @@ msgstr "Dodaj reakcję"
msgid "Message menu"
msgstr "Menu wiadomości"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Ostatnio odczytywany: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2023-06-24 10:17+0100\n"
"Last-Translator: José Nuno Coelho Pires <zepires@gmail.com>\n"
"Language-Team: Portuguese <kde-i18n-pt@kde.org>\n"
@@ -8372,13 +8372,13 @@ msgstr "Reagir"
msgid "Message menu"
msgstr "Código da Mensagem"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última leitura: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -10,7 +10,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-17 08:20-0300\n"
"Last-Translator: Marcus Gama <marcus.gama@gmail.com>\n"
"Language-Team: Brazilian Portuguese <kde-i18n-pt_BR@kde.org>\n"
@@ -7580,13 +7580,13 @@ msgstr "Reagir"
msgid "Message menu"
msgstr "Menu de mensagem"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Última lida: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2025-10-20 11:56+0100\n"
"Last-Translator: Sergiu Bivol <sergiu@cip.md>\n"
"Language-Team: Romanian <kde-i18n-ro@kde.org>\n"
@@ -7654,13 +7654,13 @@ msgstr ""
msgid "Message menu"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -7,8 +7,8 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"PO-Revision-Date: 2026-02-15 19:31+0200\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-17 20:36+0200\n"
"Last-Translator: Alexander Yavorskiy <kekcuha@gmail.com>\n"
"Language-Team: Russian <kde-russian@lists.kde.ru>\n"
"Language: ru\n"
@@ -375,10 +375,10 @@ msgid "Do you really want to leave %1?"
msgstr "Покинуть %1?"
#: src/app/qml/ConfirmLeaveDialog.qml:25
#, fuzzy, kde-format
#, kde-format
msgctxt "@action:button Leave this room/space"
msgid "Leave"
msgstr "Пок&инуть групповой разговор"
msgstr "Покинуть"
#: src/app/qml/ConfirmLogoutDialog.qml:15
#, kde-format
@@ -755,12 +755,10 @@ msgstr ""
"комнаты"
#: src/app/qml/ManualRoomDialog.qml:110
#, fuzzy, kde-format
#| msgctxt "@action:button Join the Jitsi meeting"
#| msgid "Join"
#, kde-format
msgctxt "@action:button Join this room/space"
msgid "Join"
msgstr "Присоединиться"
msgstr "Войти"
#: src/app/qml/ManualUserDialog.qml:26
#, kde-format
@@ -784,9 +782,7 @@ msgid "The input is not a valid user ID"
msgstr "Введённый текст не является допустимым идентификатором пользователя"
#: src/app/qml/ManualUserDialog.qml:76
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Ok"
#, kde-format
msgctxt "@action:button Perform an action with this user ID"
msgid "Ok"
msgstr "ОК"
@@ -1993,12 +1989,10 @@ msgstr ""
"будет удалено."
#: src/chatbar/SendBar.qml:102
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Send message"
#, kde-format
msgctxt "@action:button"
msgid "Add to message"
msgstr "Отправить сообщение"
msgstr "Добавить в сообщение"
#: src/chatbar/SendBar.qml:132 src/chatbar/SendBar.qml:163
#, kde-format
@@ -7604,13 +7598,13 @@ msgstr "Реакция"
msgid "Message menu"
msgstr "Меню сообщения"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Последнее сообщение прочитано: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2024-12-29 23:07+0530\n"
"Last-Translator: kali <shreekantkalwar@gmail.com>\n"
"Language-Team: Sanskrit <kde-i18n-doc@kde.org>\n"
@@ -8031,13 +8031,13 @@ msgstr "प्रतिक्रियां कुरुत"
msgid "Message menu"
msgstr "सन्देशस्य स्रोतः"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "अन्तिमपठनं: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -5,7 +5,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2024-11-10 11:41+0100\n"
"Last-Translator: Roman Paholík <wizzardsk@gmail.com>\n"
"Language-Team: KDE-SK\n"
@@ -8279,13 +8279,13 @@ msgstr "Reagovať"
msgid "Message menu"
msgstr "Zdroj správy"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Naposledy prečítané: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgid "Mark as Read"
msgctxt "@action:button Mark all messages up to now as read"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-17 05:50+0100\n"
"Last-Translator: Matjaž Jeran <matjaz.jeran@amis.net>\n"
"Language-Team: Slovenian <lugos-slo@lugos.si>\n"
@@ -7571,13 +7571,13 @@ msgstr "Odzovi se"
msgid "Message menu"
msgstr "Meni sporočila"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Nazadnje prebrano: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2025-10-22 20:19+0200\n"
"Last-Translator: Stefan Asserhäll <stefan.asserhall@gmail.com>\n"
"Language-Team: Swedish <kde-i18n-doc@kde.org>\n"
@@ -7834,13 +7834,13 @@ msgstr "Reagera"
msgid "Message menu"
msgstr "Meddelandemeny"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Senast läst: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -6,7 +6,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2025-11-29 21:52+0530\n"
"Last-Translator: Kishore G <kishore96@gmail.com>\n"
"Language-Team: Tamil <kde-l10n-ta@kde.org>\n"
@@ -7884,13 +7884,13 @@ msgstr "எதிர்வினையிடு"
msgid "Message menu"
msgstr "செய்தியின் மூலம்"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "கடைசியாக படித்தது: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -7,7 +7,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2024-01-08 19:47-0500\n"
"Last-Translator: Weblate Admin <admin@example.com>\n"
"Language-Team: Toki Pona <http://weblate.blackquill.cc/projects/ante-toki-pi-"
@@ -7947,13 +7947,13 @@ msgstr ""
msgid "Message menu"
msgstr "o tu e lipu tawa lipu jo"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -8,16 +8,16 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"PO-Revision-Date: 2026-02-16 16:32+0300\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-18 16:50+0300\n"
"Last-Translator: Emir SARI <emir_sari@icloud.com>\n"
"Language-Team: Turkish <kde-i18n-doc@kde.org>\n"
"Language-Team: Turkish <kde-l10n-tr@kde.org>\n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"X-Generator: Lokalize 25.07.70\n"
"X-Generator: Lokalize 25.12.2\n"
#: src/app/controller.cpp:172
#, kde-format
@@ -373,12 +373,10 @@ msgid "Do you really want to leave %1?"
msgstr "%1 odasından ayrılmayı gerçekten istiyor musunuz?"
#: src/app/qml/ConfirmLeaveDialog.qml:25
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Leave Room"
#, kde-format
msgctxt "@action:button Leave this room/space"
msgid "Leave"
msgstr "Odadan Ayrıl"
msgstr "Ayrıl"
#: src/app/qml/ConfirmLogoutDialog.qml:15
#, kde-format
@@ -751,9 +749,7 @@ msgid "The input is not a valid room ID or alias"
msgstr "Girdi, geçerli bir oda kimliği veya arma değil"
#: src/app/qml/ManualRoomDialog.qml:110
#, fuzzy, kde-format
#| msgctxt "@action:button Join the Jitsi meeting"
#| msgid "Join"
#, kde-format
msgctxt "@action:button Join this room/space"
msgid "Join"
msgstr "Katıl"
@@ -780,9 +776,7 @@ msgid "The input is not a valid user ID"
msgstr "Girdi, geçerli bir kullanıcı kimliği değil"
#: src/app/qml/ManualUserDialog.qml:76
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Ok"
#, kde-format
msgctxt "@action:button Perform an action with this user ID"
msgid "Ok"
msgstr "Tamam"
@@ -2001,12 +1995,10 @@ msgstr ""
"biçimlendirmesi kaldırılacaktır!"
#: src/chatbar/SendBar.qml:102
#, fuzzy, kde-format
#| msgctxt "@action:button"
#| msgid "Send message"
#, kde-format
msgctxt "@action:button"
msgid "Add to message"
msgstr "İleti gönder"
msgstr "İletiye Ekle"
#: src/chatbar/SendBar.qml:132 src/chatbar/SendBar.qml:163
#, kde-format
@@ -7555,13 +7547,13 @@ msgstr "Tepki"
msgid "Message menu"
msgstr "İleti menüsü"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Son okunma: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-02-17 08:15+0200\n"
"Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
"Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n"
@@ -7614,13 +7614,13 @@ msgstr "Реагувати"
msgid "Message menu"
msgstr "Меню повідомлення"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "Востаннє прочитано: %1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -2,7 +2,7 @@ msgid ""
msgstr ""
"Project-Id-Version: kdeorg\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2024-04-23 19:24\n"
"Last-Translator: \n"
"Language-Team: Chinese Simplified\n"
@@ -7442,13 +7442,13 @@ msgstr "回应"
msgid "Message menu"
msgstr ""
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "上次查看:%1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, kde-format
msgctxt "@action:button Mark all messages up to now as read"
msgid "Mark as Read"

View File

@@ -9,7 +9,7 @@ msgid ""
msgstr ""
"Project-Id-Version: neochat\n"
"Report-Msgid-Bugs-To: https://bugs.kde.org\n"
"POT-Creation-Date: 2026-02-18 00:45+0000\n"
"POT-Creation-Date: 2026-02-19 00:45+0000\n"
"PO-Revision-Date: 2026-01-15 01:13+0900\n"
"Last-Translator: Kisaragi Hiu <mail@kisaragi-hiu.com>\n"
"Language-Team: Traditional Chinese <zh-l10n@lists.slat.org>\n"
@@ -7565,13 +7565,13 @@ msgstr "反應"
msgid "Message menu"
msgstr "訊息選單"
#: src/timeline/ReadMarkerDelegate.qml:66
#: src/timeline/ReadMarkerDelegate.qml:67
#, kde-format
msgctxt "Relative time since the room was last read"
msgid "Last read: %1"
msgstr "最後閱讀:%1"
#: src/timeline/ReadMarkerDelegate.qml:72
#: src/timeline/ReadMarkerDelegate.qml:73
#, fuzzy, kde-format
#| msgctxt "@action:inmenu"
#| msgid "Mark as Read"

View File

@@ -41,10 +41,18 @@ slots:
bus: session
parts:
olm:
source: https://gitlab.matrix.org/matrix-org/olm.git
rustup:
plugin: rust
source: .
rust-channel: "1.76"
override-build: ""
override-prime: ""
corrosion:
after: [rustup]
source: https://github.com/corrosion-rs/corrosion.git
source-depth: 1
source-tag: '3.2.16'
source-tag: 'v0.6.0'
plugin: cmake
cmake-parameters:
- -DCMAKE_BUILD_TYPE=Release
@@ -98,7 +106,7 @@ parts:
libquotient:
after:
- olm
- corrosion
- qtkeychain
source: https://github.com/quotient-im/libQuotient.git
source-tag: 0.9.2
@@ -114,8 +122,6 @@ parts:
- -DCMAKE_INSTALL_PREFIX=/usr
- -DCMAKE_BUILD_TYPE=Release
- -DBUILD_TESTING=OFF
- -DQuotient_ENABLE_E2EE=ON
- -DBUILD_WITH_QT6=ON
prime:
- -usr/include
- -usr/lib/*/pkgconfig

View File

@@ -29,7 +29,7 @@ Kirigami.Page {
},
State {
name: "waitingForVerification"
when: root.session.state === KeyVerificationSession.WAITINGFORVERIFICATION
when: root.session.state === KeyVerificationSession.TRANSITIONED && root.session.sasState === KeyVerificationSession.SASKEYSEXCHANGED
PropertyChanges {
stateLoader.sourceComponent: emojiSas
}
@@ -78,7 +78,15 @@ Kirigami.Page {
},
State {
name: "done"
when: root.session.state === KeyVerificationSession.DONE
when: root.session.sasState === KeyVerificationSession.SASDONE
PropertyChanges {
target: stateLoader
sourceComponent: message
}
},
State {
name: "confirmed"
when: root.session.state === KeyVerificationSession.TRANSITIONED && root.session.sasState === KeyVerificationSession.SASCONFIRMED
PropertyChanges {
stateLoader.sourceComponent: message
}
@@ -141,6 +149,14 @@ Kirigami.Page {
return "security-medium-symbolic";
case KeyVerificationSession.DONE:
return "security-high";
case KeyVerificationSession.TRANSITIONED: {
if (root.session.sasState === KeyVerificationSession.SASCONFIRMED) {
return "security-high";
}
if (root.session.sasState === KeyVerificationSession.SASDONE) {
return "security-high";
}
}
default:
return "";
}
@@ -149,16 +165,38 @@ Kirigami.Page {
switch (root.session.state) {
case KeyVerificationSession.WAITINGFORREADY:
return i18n("Waiting for device to accept verification.");
case KeyVerificationSession.INCOMING:
return i18n("Incoming key verification request from device **%1**", root.session.remoteDeviceId);
case KeyVerificationSession.INCOMING: {
if (root.session.remoteDeviceId.length > 0) {
return i18n("Incoming key verification request from device **%1**", root.session.remoteDeviceId);
} else {
return i18n("Incoming key verification request from **%1**", root.session.remoteUserId);
}
}
case KeyVerificationSession.WAITINGFORMAC:
return i18n("Waiting for other party to send us keys.");
case KeyVerificationSession.WAITINGFORKEY:
return i18n("Waiting for other party to confirm our keys.");
case KeyVerificationSession.WAITINGFORACCEPT:
return i18n("Waiting for other party to verify.");
case KeyVerificationSession.DONE:
return i18n("Successfully verified device **%1**", root.session.remoteDeviceId);
case KeyVerificationSession.DONE: {
if (root.session.remoteDeviceId.length > 0) {
return i18n("Successfully verified device **%1**", root.session.remoteDeviceId)
} else {
return i18nc("@info", "Successfully verified **%1**", root.session.remoteUserId)
}
}
case KeyVerificationSession.TRANSITIONED: {
if (root.session.sasState === KeyVerificationSession.SASCONFIRMED) {
return i18nc("@info", "Waiting for remote party to confirm verification");
}
if (root.session.sasState === KeyVerificationSession.SASDONE) {
if (root.session.remoteDeviceId.length > 0) {
return i18n("Successfully verified device **%1**", root.session.remoteDeviceId)
} else {
return i18nc("@info", "Successfully verified **%1**", root.session.remoteUserId)
}
}
}
default:
return "";
}

View File

@@ -13,7 +13,7 @@ FormCard.FormCardPage {
property bool processing: false
title: i18nc("@title:window", "Manage Secret Backup")
title: i18nc("@title:window", "Manage Key Storage")
topPadding: Kirigami.Units.gridUnit
leftPadding: 0
@@ -32,7 +32,7 @@ FormCard.FormCardPage {
function onKeyBackupError(): void {
securityKeyField.clear()
root.processing = false
banner.text = i18nc("@info:status", "The security key or backup passphrase was not correct.")
banner.text = i18nc("@info:status", "The recovery key was not correct.")
banner.visible = true
}
@@ -45,20 +45,20 @@ FormCard.FormCardPage {
}
FormCard.FormHeader {
title: i18nc("@title", "Unlock using Security Key or Backup Passphrase")
title: i18nc("@title", "Unlock using Recovery Key")
}
FormCard.FormCard {
FormCard.FormTextDelegate {
description: i18nc("@info", "If you have a security key or backup passphrase for this account, enter it below or upload it as a file.")
description: i18nc("@info", "If you have a recovery key (also known as a “security key or backup passphrase”), enter it below or upload it as a file.")
}
FormCard.FormTextFieldDelegate {
id: securityKeyField
label: i18nc("@label:textbox", "Security Key or Backup Passphrase:")
label: i18nc("@label:textbox", "Recovery Key:")
echoMode: TextInput.Password
}
FormCard.FormButtonDelegate {
id: uploadSecurityKeyButton
text: i18nc("@action:button", "Upload from File")
text: i18nc("@action:button", "Upload From File")
icon.name: "cloud-upload"
enabled: !root.processing
onClicked: {
@@ -83,12 +83,12 @@ FormCard.FormCardPage {
}
FormCard.FormCard {
FormCard.FormTextDelegate {
description: i18nc("@info", "If you have previously verified this device, you can try loading the backup key from other devices by clicking the button below.")
description: i18nc("@info", "If you have previously verified this device, you request encryption keys from other verified devices.")
}
FormCard.FormButtonDelegate {
id: unlockCrossSigningButton
icon.name: "emblem-shared-symbolic"
text: i18nc("@action:button", "Request from other Devices")
text: i18nc("@action:button", "Request From Other Devices")
enabled: !root.processing
onClicked: {
root.processing = true

View File

@@ -1,64 +0,0 @@
// SPDX-FileCopyrightText: 2020 Carl Schwan <carl@carlschwan.de>
// SPDX-License-Identifier: GPL-2.0-or-later
import QtCore
import QtQuick
import QtQuick.Controls as QQC2
import QtQuick.Layouts
import org.kde.kirigami as Kirigami
import org.kde.neochat
QQC2.Popup {
id: root
padding: Kirigami.Units.largeSpacing
signal chosen(string path)
contentItem: RowLayout {
spacing: Kirigami.Units.smallSpacing
QQC2.ToolButton {
Layout.fillHeight: true
icon.name: 'mail-attachment'
text: i18nc("@action:button", "Choose local file")
onClicked: {
root.close();
var fileDialog = openFileDialog.createObject(QQC2.Overlay.overlay) as OpenFileDialog;
fileDialog.chosen.connect(path => root.chosen(path));
fileDialog.open();
}
}
Kirigami.Separator {}
QQC2.ToolButton {
Layout.fillHeight: true
icon.name: 'insert-image'
text: i18nc("@action:button", "Clipboard image")
onClicked: {
const path = StandardPaths.standardLocations(StandardPaths.CacheLocation)[0] + "/screenshots/" + (new Date()).getTime() + ".png";
if (!Clipboard.saveImage(path)) {
return;
}
root.chosen(path);
root.close();
}
}
}
Component {
id: openFileDialog
OpenFileDialog {
parentWindow: Window.window
currentFolder: StandardPaths.standardLocations(StandardPaths.HomeLocation)[0]
}
}
}

View File

@@ -6,7 +6,6 @@ ecm_add_qml_module(Chatbar GENERATE_PLUGIN_SOURCE
URI org.kde.neochat.chatbar
OUTPUT_DIRECTORY ${CMAKE_BINARY_DIR}/src/org/kde/neochat/chatbar
QML_FILES
AttachDialog.qml
ChatBar.qml
ChatBarCore.qml
RichEditBar.qml

View File

@@ -120,6 +120,8 @@ Item {
endBreakpoint: Kirigami.Units.gridUnit * 66
startPercentWidth: 100
endPercentWidth: NeoChatConfig.compactLayout ? 100 : 85
leftPadding: NeoChatConfig.compactLayout ? Kirigami.Units.largeSpacing * 2 : 0
rightPadding: NeoChatConfig.compactLayout ? Kirigami.Units.largeSpacing * 2 : 0
maxWidth: NeoChatConfig.compactLayout ? root.width - Kirigami.Units.largeSpacing * 2 : Kirigami.Units.gridUnit * 60
}
}

View File

@@ -43,11 +43,7 @@ RowLayout {
function addAttachment(): void {
if (!root.contentModel.hasRichFormatting) {
if (LibNeoChat.Clipboard.hasImage) {
attachDialog();
} else {
fileDialog();
}
fileDialog();
return;
}
@@ -58,22 +54,11 @@ RowLayout {
standardButtons: Kirigami.Dialog.Ok | Kirigami.Dialog.Cancel
});
warningDialog.onAccepted.connect(() => {
if (LibNeoChat.Clipboard.hasImage) {
attachmentButton.attachDialog();
} else {
attachmentButton.fileDialog();
}
attachmentButton.fileDialog();
});
warningDialog.open();
}
function attachDialog(): void {
let dialog = Qt.createComponent('org.kde.neochat.chatbar', 'AttachDialog').createObject(QQC2.Overlay.overlay) as AttachDialog;
dialog.anchors.centerIn = QQC2.Overlay.overlay;
dialog.chosen.connect(path => root.contentModel.addAttachment(path));
dialog.open();
}
function fileDialog(): void {
let dialog = Qt.createComponent('org.kde.neochat.libneochat', 'OpenFileDialog').createObject(QQC2.Overlay.overlay, {
parentWindow: Window.window,

View File

@@ -36,25 +36,10 @@ ColumnLayout {
dialog.chosen.connect(id => root.room = root.connection.room(id))
}
}
FormCard.FormDelegateSeparator {}
FormCard.FormTextDelegate {
visible: root.room
text: i18n("Room Id: %1", root.room.id)
}
FormCard.FormDelegateSeparator {}
FormCard.FormCheckDelegate {
visible: root.room
text: i18nc("@option:check Toggle for whether this room is considered a direct chat or not", "Direct Chat")
checked: root.room.isDirectChat()
enabled: root.room.totalMemberCount === 2
onCheckedChanged: {
if (checked) {
root.room.markAsDirectChat();
} else {
root.connection.removeFromDirectChats(root.room.id);
}
}
}
}
FormCard.FormHeader {
title: i18n("Room Account Data")

View File

@@ -15,7 +15,8 @@
#include "neochatroom.h"
ThreadModel::ThreadModel(const QString &threadRootId, NeoChatRoom *room)
: QConcatenateTablesProxyModel(room)
: QConcatenateTablesProxyModel()
, m_room(room)
, m_threadRootId(threadRootId)
, m_threadFetchModel(new ThreadFetchModel(this))
, m_threadChatBarModel(new ThreadChatBarModel(this, room))
@@ -51,12 +52,7 @@ ThreadModel::ThreadModel(const QString &threadRootId, NeoChatRoom *room)
void ThreadModel::checkPending()
{
const auto room = dynamic_cast<NeoChatRoom *>(QObject::parent());
if (room == nullptr) {
return;
}
for (auto i = room->pendingEvents().rbegin(); i != room->pendingEvents().rend(); i++) {
for (auto i = m_room->pendingEvents().rbegin(); i != m_room->pendingEvents().rend(); i++) {
if (const auto roomMessageEvent = eventCast<const Quotient::RoomMessageEvent>(i->event());
roomMessageEvent->isThreaded() && roomMessageEvent->threadRootEventId() == m_threadRootId) {
addNewEvent(roomMessageEvent);
@@ -83,9 +79,8 @@ bool ThreadModel::moreEventsAvailable(const QModelIndex &parent) const
void ThreadModel::fetchMoreEvents(int max)
{
if (!m_currentJob && m_nextBatch.has_value()) {
const auto room = dynamic_cast<NeoChatRoom *>(QObject::parent());
const auto connection = room->connection();
m_currentJob = connection->callApi<Quotient::GetRelatingEventsWithRelTypeJob>(room->id(), m_threadRootId, u"m.thread"_s, *m_nextBatch, QString(), max);
m_currentJob =
m_room->connection()->callApi<Quotient::GetRelatingEventsWithRelTypeJob>(m_room->id(), m_threadRootId, u"m.thread"_s, *m_nextBatch, QString(), max);
Q_EMIT moreEventsAvailableChanged();
connect(m_currentJob, &Quotient::BaseJob::success, this, [this]() {
auto newEvents = m_currentJob->chunk();
@@ -130,15 +125,11 @@ void ThreadModel::addModels()
clearModels();
}
const auto room = dynamic_cast<NeoChatRoom *>(QObject::parent());
if (room == nullptr) {
return;
}
addSourceModel(m_threadFetchModel);
for (auto it = m_events.crbegin(); it != m_events.crend(); ++it) {
const auto contentModel = ContentProvider::self().contentModelForEvent(room, *it);
const auto contentModel = ContentProvider::self().contentModelForEvent(m_room, *it);
if (contentModel != nullptr) {
addSourceModel(ContentProvider::self().contentModelForEvent(room, *it));
addSourceModel(contentModel);
}
}
addSourceModel(m_threadChatBarModel);
@@ -149,13 +140,9 @@ void ThreadModel::addModels()
void ThreadModel::clearModels()
{
const auto room = dynamic_cast<NeoChatRoom *>(QObject::parent());
if (room == nullptr) {
return;
}
removeSourceModel(m_threadFetchModel);
for (const auto &model : m_events) {
const auto contentModel = ContentProvider::self().contentModelForEvent(room, model);
const auto contentModel = ContentProvider::self().contentModelForEvent(m_room, model);
if (sourceModels().contains(contentModel)) {
removeSourceModel(contentModel);
}

View File

@@ -164,6 +164,8 @@ Q_SIGNALS:
void moreEventsAvailableChanged();
private:
QPointer<NeoChatRoom> m_room;
QString m_threadRootId;
QPointer<MessageContentModel> m_threadRootContentModel;

View File

@@ -89,7 +89,7 @@ FormCard.FormCardPage {
FormCard.FormCard {
FormCard.FormButtonDelegate {
id: secretBackupDelegate
text: i18nc("@action:inmenu", "Manage Secret Backup")
text: i18nc("@action:inmenu", "Manage Key Storage")
description: i18nc("@info", "Import or unlock encryption keys from other devices.")
icon.name: "unlock"
onClicked: root.QQC2.ApplicationWindow.window.pageStack.pushDialogLayer(Qt.createComponent('org.kde.neochat', 'UnlockSSSSDialog'), {}, {
@@ -103,7 +103,7 @@ FormCard.FormCardPage {
FormCard.FormButtonDelegate {
id: importKeysDelegate
text: i18nc("@action:button", "Import Keys")
description: i18nc("@info", "Import encryption keys from a backup.")
description: i18nc("@info", "Import encryption keys from a backup file.")
icon.name: "document-import"
onClicked: {
let dialog = root.QQC2.ApplicationWindow.window.pageStack.pushDialogLayer(Qt.createComponent("org.kde.neochat.settings", "ImportKeysDialog"), {
@@ -126,7 +126,7 @@ FormCard.FormCardPage {
FormCard.FormButtonDelegate {
id: exportKeysDelegate
text: i18nc("@action:button", "Export Keys")
description: i18nc("@info", "Export this device's encryption keys.")
description: i18nc("@info", "Export this device's encryption keys to a file.")
icon.name: "document-export"
onClicked: {
root.QQC2.ApplicationWindow.window.pageStack.pushDialogLayer(Qt.createComponent("org.kde.neochat.settings", "ExportKeysDialog"), {

View File

@@ -127,6 +127,8 @@ MessageDelegateBase {
Message.maxContentWidth: maxContentWidth - bubble.leftPadding - bubble.rightPadding
width: parent?.width
leftPadding: NeoChatConfig.compactLayout ? Kirigami.Units.largeSpacing * 2 : Kirigami.Units.largeSpacing
rightPadding: NeoChatConfig.compactLayout ? Kirigami.Units.largeSpacing * 2 : Kirigami.Units.largeSpacing
enableAvatars: NeoChatConfig?.showAvatarInTimeline ?? false
compactMode: NeoChatConfig?.compactLayout ?? false
@@ -135,9 +137,9 @@ MessageDelegateBase {
contentItem: Bubble {
id: bubble
topPadding: NeoChatConfig.compactLayout ? Kirigami.Units.smallSpacing / 2 : Kirigami.Units.largeSpacing
bottomPadding: NeoChatConfig.compactLayout ? Kirigami.Units.mediumSpacing / 2 : Kirigami.Units.largeSpacing
leftPadding: NeoChatConfig.compactLayout ? 0 : Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
topPadding: NeoChatConfig.compactLayout ? 0 : Kirigami.Units.largeSpacing
bottomPadding: NeoChatConfig.compactLayout ? 0 : Kirigami.Units.largeSpacing
leftPadding: NeoChatConfig.compactLayout ? Kirigami.Units.mediumSpacing : Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
rightPadding: Kirigami.Units.largeSpacing + Kirigami.Units.smallSpacing
author: root.author

View File

@@ -29,7 +29,8 @@ TimelineDelegate {
}
width: parent?.width
rightPadding: NeoChatConfig.compactLayout && root.ListView.view.width >= Kirigami.Units.gridUnit * 20 ? Kirigami.Units.gridUnit * 2 + Kirigami.Units.largeSpacing : Kirigami.Units.largeSpacing
leftPadding: NeoChatConfig.compactLayout && root.ListView.view.width >= Kirigami.Units.gridUnit * 20 ? Kirigami.Units.largeSpacing * 2 : Kirigami.Units.largeSpacing
rightPadding: NeoChatConfig.compactLayout && root.ListView.view.width >= Kirigami.Units.gridUnit * 20 ? Kirigami.Units.largeSpacing * 2 : Kirigami.Units.largeSpacing
alwaysFillWidth: NeoChatConfig.compactLayout
@@ -42,7 +43,7 @@ TimelineDelegate {
topInset: Kirigami.Units.largeSpacing + Kirigami.Units.mediumSpacing
bottomInset: Kirigami.Units.mediumSpacing
rightInset: Kirigami.Units.largeSpacing
rightInset: 0
leftInset: 0
Timer {

View File

@@ -183,6 +183,12 @@ QVariant MessageModel::data(const QModelIndex &idx, int role) const
if (event.value().get().contentJson().contains("m.new_content"_L1)) {
return EventStatus::Hidden;
}
// A threaded event will be merged into the thread root event so
// also don't show.
const auto roomMessageEvent = eventCast<const RoomMessageEvent>(&event.value().get());
if (roomMessageEvent && roomMessageEvent->relatesTo() && roomMessageEvent->relatesTo()->type == EventRelation::ThreadType) {
return EventStatus::Hidden;
}
const auto pendingIt = eventRoom->findPendingEvent(event->get().transactionId());
if (pendingIt == eventRoom->pendingEvents().end()) {
return EventStatus::Hidden;
@@ -194,12 +200,9 @@ QVariant MessageModel::data(const QModelIndex &idx, int role) const
return EventStatus::Hidden;
}
auto roomMessageEvent = eventCast<const RoomMessageEvent>(&event.value().get());
if (roomMessageEvent && (roomMessageEvent->isThreaded() || eventRoom->threads().contains(event.value().get().id()))) {
const auto &thread = eventRoom->threads().value(roomMessageEvent->isThreaded() ? roomMessageEvent->threadRootEventId() : event.value().get().id());
if (thread.latestEventId != event.value().get().id()) {
return EventStatus::Hidden;
}
const auto roomMessageEvent = eventCast<const RoomMessageEvent>(&event.value().get());
if (roomMessageEvent && roomMessageEvent->relatesTo() && roomMessageEvent->relatesTo()->type == EventRelation::ThreadType) {
return EventStatus::Hidden;
}
return EventStatus::Normal;
}
@@ -227,7 +230,7 @@ QVariant MessageModel::data(const QModelIndex &idx, int role) const
if (role == IsThreadedRole) {
if (auto roomMessageEvent = eventCast<const RoomMessageEvent>(&event.value().get())) {
return roomMessageEvent->isThreaded();
return roomMessageEvent->isThreaded() || eventRoom->threads().contains(event->get().id());
}
return {};
}
@@ -236,6 +239,8 @@ QVariant MessageModel::data(const QModelIndex &idx, int role) const
auto roomMessageEvent = eventCast<const RoomMessageEvent>(&event.value().get());
if (roomMessageEvent && roomMessageEvent->isThreaded()) {
return roomMessageEvent->threadRootEventId();
} else if (eventRoom->threads().contains(event->get().id())) {
return event->get().id();
}
return {};
}

View File

@@ -6,6 +6,7 @@
#include "messagemodel_logging.h"
#include <Quotient/events/reactionevent.h>
#include <Quotient/thread.h>
using namespace Quotient;
@@ -125,6 +126,21 @@ void TimelineMessageModel::connectNewRoom()
}
}
});
#if Quotient_VERSION_MINOR > 9
connect(m_room, &Room::newThread, this, [this](const QString &threadRootId) {
if (threadRootId.isEmpty()) {
return;
}
refreshEventRoles(threadRootId, {IsThreadedRole, ThreadRootRole});
});
#elif Quotient_VERSION_MINOR == 9 && Quotient_VERSION_PATCH >= 4
connect(m_room, &Room::newThread, this, [this](const Thread &newThread) {
if (newThread.threadRootId.isEmpty()) {
return;
}
refreshEventRoles(newThread.threadRootId, {IsThreadedRole, ThreadRootRole});
});
#endif
connect(m_room->connection(), &Connection::ignoredUsersListChanged, this, [this] {
beginResetModel();
endResetModel();