Kaidan issueshttps://invent.kde.org/network/kaidan/-/issues2022-10-01T00:15:03Zhttps://invent.kde.org/network/kaidan/-/issues/413Stateless file sharing2022-10-01T00:15:03ZLinus JahnStateless file sharing[XEP-0447: Stateless file sharing](https://xmpp.org/extensions/xep-0447.html) with encryption.
QXmpp:
* [x] Parsing:
* [x] https://github.com/qxmpp-project/qxmpp/pull/447: Implement XEP-0300: Use of Cryptographic Hash Functions in X...[XEP-0447: Stateless file sharing](https://xmpp.org/extensions/xep-0447.html) with encryption.
QXmpp:
* [x] Parsing:
* [x] https://github.com/qxmpp-project/qxmpp/pull/447: Implement XEP-0300: Use of Cryptographic Hash Functions in XMPP
* [x] https://github.com/qxmpp-project/qxmpp/pull/451: Implement XEP-0264: Jingle Content Thumbnails
* [x] https://github.com/qxmpp-project/qxmpp/pull/449: Implement XEP-0446: File metadata element
* [x] https://github.com/qxmpp-project/qxmpp/pull/448: Implement XEP-0447: Stateless file sharing: File sharing element
* [x] https://github.com/qxmpp-project/qxmpp/pull/463: Implement XEP-0448: Encryption for stateless file sharing parsing
* [x] Make all source types public, because the user / Kaidan needs to be able to store them in the database.
* [x] https://github.com/qxmpp-project/qxmpp/pull/462: BitsOfBinaryData: Add fromByteArray() utility function
* [x] https://github.com/qxmpp-project/qxmpp/pull/476: Allow adding multiple oob urls and a description
* [x] https://github.com/qxmpp-project/qxmpp/pull/464: Async/Multithreaded hashing functions for file verifications
* [x] https://github.com/qxmpp-project/qxmpp/pull/452: HttpUploadManager for generic purposes
* **optional**: also output current upload speed in QXmppHttpUpload
* **optional**: support continuing partial downloads
* [x] SfsManager
* [x] https://github.com/qxmpp-project/qxmpp/pull/477
* [x] generic http upload/download
* [x] encrypted http upload/download
* [x] file encryption: https://github.com/qxmpp-project/qxmpp/pull/465
* **optional**: Use static (maybe timer bound) QMimeDatabase instead of creating a new for each task
Kaidan:
* [x] !849
* [x] improve progress reporting in qml by using QObject instead of signals
* [x] switch to FileSharingManager from QXmpp
* [x] generate file/media thumbnails using KIO
* **optional**: deduplication: check for existing downloaded files with identical hashes
Qt:
* https://codereview.qt-project.org/c/qt/qtbase/+/431863
* https://codereview.qt-project.org/c/qt/qtbase/+/431864
---
Metadata overview:
* user specified
* description
* file metadata
* filename
* file size
* last modified
* mime type
* hashes
* audio:
* length
* image:
* width, height
* thumbnail
* length
* video:
* width, height
* thumbnail
* length0.9: End-to-End Encryption (OMEMO)Linus JahnLinus Jahn2022-09-30https://invent.kde.org/network/kaidan/-/issues/411Add support for Jingle audio and video calls.2022-09-11T22:23:12ZIan SutterAdd support for Jingle audio and video calls.I noticed that there was another such feature request, but it was closed citing a merge request that has since been closed due to inactivity. It would be great if we could get support for the following call features that many other clien...I noticed that there was another such feature request, but it was closed citing a merge request that has since been closed due to inactivity. It would be great if we could get support for the following call features that many other clients implement:
* TURN server support
* WebRTC support since many clients seem to use it in their implementations
* Acoustic echo cancellation0.11 Audio and Video Calls (Jingle + WebRTC)https://invent.kde.org/network/kaidan/-/issues/393Kaidan 0.82021-05-29T11:31:55ZLinus JahnKaidan 0.8- [x] Create stable branch
- [x] Add translations from weblate & regenerate
- [x] Update changelog (!767)
- [x] Finish all release blocking tasks from the milestone (%"0.8: Message Archive Management (MAM)")
- [x] Create tag
- [x] Publis...- [x] Create stable branch
- [x] Add translations from weblate & regenerate
- [x] Update changelog (!767)
- [x] Finish all release blocking tasks from the milestone (%"0.8: Message Archive Management (MAM)")
- [x] Create tag
- [x] Publish on download.kde.org: https://download.kde.org/unstable/kaidan/0.8.0/kaidan-0.8.0.tar.xz.mirrorlist
- [x] Create release tarball
- [x] flatpak
- [x] Blog post (websites/kaidan-im!44)
- [x] Mastodon
- [x] XMPP Newsletter: https://yopad.eu/p/xmpp-newsletter-365days0.8: Message Archive Management (MAM)Linus JahnLinus Jahnhttps://invent.kde.org/network/kaidan/-/issues/387Kaidan 0.7.02021-05-28T21:42:09ZLinus JahnKaidan 0.7.0- [x] Add new translations
- [x] Update changelog
- [x] Finish all release blocking tasks from the milestone (%0.7)
- [x] Publish on download.kde.org
- [x] Create release tarball
- [x] Create release builds
- [x] ~~macOS~...- [x] Add new translations
- [x] Update changelog
- [x] Finish all release blocking tasks from the milestone (%0.7)
- [x] Publish on download.kde.org
- [x] Create release tarball
- [x] Create release builds
- [x] ~~macOS~~
- [x] Windows
- [x] ~~Android~~
- [x] Blog post (websites/kaidan-im!38)
- [x] Mastodon0.7Linus JahnLinus Jahnhttps://invent.kde.org/network/kaidan/-/issues/386XEP-0085: Chat State Notifications2021-05-28T21:40:38ZLinus JahnXEP-0085: Chat State Notificationshttps://xmpp.org/extensions/xep-0085.html
See !645https://xmpp.org/extensions/xep-0085.html
See !6450.8: Message Archive Management (MAM)Jonah BrĂ¼chertJonah BrĂ¼cherthttps://invent.kde.org/network/kaidan/-/issues/384Android build broken: problems with new icons2020-12-24T16:40:44ZLinus JahnAndroid build broken: problems with new icons```
make[2]: *** No rule to make target '/home/user/workspace/Kaidan_android/src/kaidan/3rdparty/breeze-icons/icons/status/symbolic/emblem-system-symbolic.svg', needed by 'kaidan_autogen/EWIEGA46WW/qrc_kirigami-icons.cpp'. Stop.
```
See...```
make[2]: *** No rule to make target '/home/user/workspace/Kaidan_android/src/kaidan/3rdparty/breeze-icons/icons/status/symbolic/emblem-system-symbolic.svg', needed by 'kaidan_autogen/EWIEGA46WW/qrc_kirigami-icons.cpp'. Stop.
```
See https://binary-factory.kde.org/job/Kaidan_android/338/console
I guess this was caused by https://invent.kde.org/network/kaidan/-/merge_requests/634.0.7Melvin Keskinmelvo@olomono.deMelvin Keskinmelvo@olomono.dehttps://invent.kde.org/network/kaidan/-/issues/383Make it possible to use Ctrl+V for pasting a file2021-01-15T17:18:42ZMelvin Keskinmelvo@olomono.deMake it possible to use Ctrl+V for pasting a fileThe following discussion from !613 should be addressed:
@jbbgameich started a [discussion](https://invent.kde.org/network/kaidan/-/merge_requests/613#note_155650): (+5 comments)
> The more important thing to fix would be the key combin...The following discussion from !613 should be addressed:
@jbbgameich started a [discussion](https://invent.kde.org/network/kaidan/-/merge_requests/613#note_155650): (+5 comments)
> The more important thing to fix would be the key combination, Ctrl + Shift + V, but according to other KDE People that needs some hacks in the TextField.1.0https://invent.kde.org/network/kaidan/-/issues/382Make connection settings available after login2021-01-02T22:42:36ZMelvin Keskinmelvo@olomono.deMake connection settings available after login@melvo started a [discussion](https://invent.kde.org/network/kaidan/-/merge_requests/602#note_106469) (!602):
> Those settings should also be available after the login. When something changes, Kaidan should try to reconnect with the ne...@melvo started a [discussion](https://invent.kde.org/network/kaidan/-/merge_requests/602#note_106469) (!602):
> Those settings should also be available after the login. When something changes, Kaidan should try to reconnect with the new settings. If it fails it should show an error message and connect with the old settings again.0.7Melvin Keskinmelvo@olomono.deMelvin Keskinmelvo@olomono.dehttps://invent.kde.org/network/kaidan/-/issues/381Improve design of connection settings on login2021-01-02T22:42:36ZMelvin Keskinmelvo@olomono.deImprove design of connection settings on login@melvo started a [discussion](https://invent.kde.org/network/kaidan/-/merge_requests/602#note_106467) (!602):
> The current flow should fit for a connection setting in the settings section after the login but to open an additional page ...@melvo started a [discussion](https://invent.kde.org/network/kaidan/-/merge_requests/602#note_106467) (!602):
> The current flow should fit for a connection setting in the settings section after the login but to open an additional page with a *Reset* and an *Apply* button during login does appear unhandy to me. Maybe directly embedding the port and host field in the *LoginPage* after enabling the custom settings mode would fit better.0.7Melvin Keskinmelvo@olomono.deMelvin Keskinmelvo@olomono.dehttps://invent.kde.org/network/kaidan/-/issues/380Messages to oneself should be deduplicated2022-12-15T12:44:42ZMelvin Keskinmelvo@olomono.deMessages to oneself should be deduplicatedIf you add yourself as a contact and send yourself a message, that message is displayed twice.
If you send a message to yourself (e.g. from `alice@example.org` to `alice@example.org`), that message should only be shown once and not twice.If you add yourself as a contact and send yourself a message, that message is displayed twice.
If you send a message to yourself (e.g. from `alice@example.org` to `alice@example.org`), that message should only be shown once and not twice.1.0https://invent.kde.org/network/kaidan/-/issues/379Kaidan 0.6.02020-08-26T21:56:47ZLinus JahnKaidan 0.6.0- [x] Finish milestone
- [x] !588
- [x] Fix build with Qt 5.12 for the appimage build (QColorConstants)
- [x] Fix flatpak build by removing the submodules
### Main Repository
* [x] Update translations
* [x] Update changelog content...- [x] Finish milestone
- [x] !588
- [x] Fix build with Qt 5.12 for the appimage build (QColorConstants)
- [x] Fix flatpak build by removing the submodules
### Main Repository
* [x] Update translations
* [x] Update changelog content
* [x] Update license information
* [x] Update version in *CMakeLists.txt*
* [x] Update changelog release date
* [x] Update appstream metadata
* [x] Archive release on *stable* branch
* [x] Add tag on *stable* branch
* [x] Publish release builds (waiting for sysadmin ticket to be completed)
* [x] Merge *stable* branch into *master* branch
* [x] Update version in *CMakeLists.txt* to new development version
.
* [x] Update flatpak on flathub
### Website Repository
* [x] ~~Update screenshot~~
* [x] Update version and date in *index.html* (websites/kaidan-im!32)
* [x] Publish blog post (websites/kaidan-im!32)
* [x] Update supported features in *supported-xeps.md*
### Mastodon
* [x] Create a toot0.6: Stability fixes, advanced message correctionLinus JahnLinus Jahnhttps://invent.kde.org/network/kaidan/-/issues/372Bluetooth Keyboard in registration wizard on Android2021-07-24T05:56:02ZOliver BormBluetooth Keyboard in registration wizard on AndroidDuring the registration wizard in Android the external Bluetooth keyboard is not working properly. The cursor always switches back to the beginning.
After registration, the BT keyboard works like expected in the normal messaging.
OT: t...During the registration wizard in Android the external Bluetooth keyboard is not working properly. The cursor always switches back to the beginning.
After registration, the BT keyboard works like expected in the normal messaging.
OT: the registration wizard is in my understanding to complicated, as it involves to much clicks to the right. Additionally, also the Nickname is asked first, while as the username comes last, but is more important. Hence, I suggest just to use one page, where a new user types in it's username and optes for a server. Once, the registration is successful, a nickname (as well as avatar) can still be chosen.1.0https://invent.kde.org/network/kaidan/-/issues/368android: Request permissions dynamically2020-09-20T15:08:17ZLinus Jahnandroid: Request permissions dynamicallyPermissions can be requested dynamically using `QtAndroid::requestPermissions()`. This behaviour is preferred for more transparency to the user and it will be required for `QStandardPaths` to work with API 23 or later (Android 6.0).
htt...Permissions can be requested dynamically using `QtAndroid::requestPermissions()`. This behaviour is preferred for more transparency to the user and it will be required for `QStandardPaths` to work with API 23 or later (Android 6.0).
https://doc.qt.io/qt-5/qtandroid.html#requestPermissions1.0https://invent.kde.org/network/kaidan/-/issues/367Notification is not closed when new message is read without clicking on notif...2022-09-11T17:15:14ZMelvin Keskinmelvo@olomono.deNotification is not closed when new message is read without clicking on notificationA notification for a new message is not closed when the message is read (i.e. the chat with the new message is opened) without clicking on the notification
Possible solution: Use a map (key: `chatPartnerJid`, value: list of notificatio...A notification for a new message is not closed when the message is read (i.e. the chat with the new message is opened) without clicking on the notification
Possible solution: Use a map (key: `chatPartnerJid`, value: list of notifications) and close all notifications from the same `chatPartnerJid`; Connect a signal from the normal notification closing by clicking on it to the closing via the map to clean the map.1.0https://invent.kde.org/network/kaidan/-/issues/366Fix contact search bar height2022-06-07T09:17:14ZRobert MaerkischFix contact search bar heightIn Android the search bar is to small to fit the characters in height.In Android the search bar is to small to fit the characters in height.1.0https://invent.kde.org/network/kaidan/-/issues/364Show avatars in notifications2020-09-20T14:54:06ZRobert MaerkischShow avatars in notifications2.0https://invent.kde.org/network/kaidan/-/issues/363Merge chat notifications2022-10-17T16:01:15ZRobert MaerkischMerge chat notificationsGroup notifications for the same chats.Group notifications for the same chats.0.9: End-to-End Encryption (OMEMO)https://invent.kde.org/network/kaidan/-/issues/362Token-based authentication2023-03-06T13:00:07ZLinus JahnToken-based authentication### The issues with password-based auth
Using a password is not that nice:
* You can't identify your devices -> you can't list logged in devices
* You can't kick/log out other devices
* The user needs to remember the password somehow...### The issues with password-based auth
Using a password is not that nice:
* You can't identify your devices -> you can't list logged in devices
* You can't kick/log out other devices
* The user needs to remember the password somehow or the password needs to be visible in the App.
* Remembering the password isn't always a good option: Many people forget the password and get locked out of their account.
* Making the password visible isn't a good idea either, others getting your phone in their hands can easily look at your password -- This is not very privacy-aware.
* -> You could use randomly generated passwords to avoid privacy-loss. However, you can never be sure that the password of an account is randomly generated.
* When the password is changed, all other devices need to log in again.
### Requirements for such a token-based auth
* Devices using password-based authentication and devices using token-based auth need to work in parallel with one account.
* All currently active tokens need to be visible to clients
* Maybe privileges for tokens
* A client only having access using token-based auth should be able to give access to another device.
* Generating a new temporary token for the device
* Changing the accounts password and transmitting that
* Time limitations
* devices that are offline for more than e.g. 90 days should be kicked
* devices renew or replace their token by logging in or a special command
### Solutions?
To solve this, we probably need changes to the standards / a new XEP. Possible solutions:
* OAUTH2?
* There's already something for OAUTH in XMPP
* Is listing devices/tokens possible? => Do we need a XEP for that?
* There was a proto XEP about tokens?
* Could that be an option?
---
UPDATE: Solution seems to be FAST with SASL 2 (https://xmpp.org/extensions/inbox/xep-fast.html, https://xmpp.org/extensions/xep-0388.html)2.0https://invent.kde.org/network/kaidan/-/issues/360Add section headers with the date for messages on the ChatPage2023-09-19T09:07:17ZLinus JahnAdd section headers with the date for messages on the ChatPageSomething like this:
![screenshot_20200129_195549](/uploads/63c2b7b7e4f29aacd25de8cdb48b4feb/screenshot_20200129_195549.png)Something like this:
![screenshot_20200129_195549](/uploads/63c2b7b7e4f29aacd25de8cdb48b4feb/screenshot_20200129_195549.png)1.0https://invent.kde.org/network/kaidan/-/issues/351Add function to clear history and delete single messages locally2023-08-20T15:54:59ZAl DeAdd function to clear history and delete single messages locallyAt a point you may want to get locally rid of your old messages. (For example, if you sent insane big messages to yourself and the UI does not respond very much any more. :) )
It would be convenient to clear the DB and optionally to als...At a point you may want to get locally rid of your old messages. (For example, if you sent insane big messages to yourself and the UI does not respond very much any more. :) )
It would be convenient to clear the DB and optionally to also remove the received and sent files.1.0