QuasselDroid-ng issueshttps://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues2022-01-10T05:15:04Zhttps://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/185Add "search buffers" icon/button/toggle to chat list menu2022-01-10T05:15:04ZShane SynanAdd "search buffers" icon/button/toggle to chat list menu## Idea
Add a :mag\_right: ("search") icon to the chat list menu, before the overflow menu, or put a `Search buffers` menu inside the overflow menu.
When pressed, this would activate the buffer filter list until a buffer is selected (ta...## Idea
Add a :mag\_right: ("search") icon to the chat list menu, before the overflow menu, or put a `Search buffers` menu inside the overflow menu.
When pressed, this would activate the buffer filter list until a buffer is selected (tapping, or for keyboard, via <kbd>Enter</kbd>).
## Additional
This would mimic the desktop version's quick filtering method, accessible by pressing the <kbd>Ctrl</kbd>+<kbd>S</kbd> shortcut.
It'd be nice to have a way to access buffer filtering on mobile without needing the search to always be visible.https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/181Setup Network window should sort networks alphabetically2022-01-10T05:15:04ZShane SynanSetup Network window should sort networks alphabetically## Test case
### Steps
1. Open a ircs://irc.freenode.net/#quassel-test link
2. Expand the `Network` dropdown
### Expected
Network list is sorted alphabetically, matching elsewhere in Quasseldroid (and Quassel).
### Actual
Network lis...## Test case
### Steps
1. Open a ircs://irc.freenode.net/#quassel-test link
2. Expand the `Network` dropdown
### Expected
Network list is sorted alphabetically, matching elsewhere in Quasseldroid (and Quassel).
### Actual
Network list is sorted by reverse ID order (or otherwise random).https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/186buffer filtering: alpha-prioritize exact match, then startsWith (as per upstr...2022-01-10T05:15:04ZShane Synanbuffer filtering: alpha-prioritize exact match, then startsWith (as per upstream)## In short
* When filtering buffers by string, prioritize relevant results first
* Priorize by exact matches, then matches that start with the string, then all else
* Within these priorities, everything's sorted as before
* Makes ...## In short
* When filtering buffers by string, prioritize relevant results first
* Priorize by exact matches, then matches that start with the string, then all else
* Within these priorities, everything's sorted as before
* Makes it easier to search by exact/starting string
## Rationale
It seems more likely to search for a channel/nickname with the starting letters rather than filtering by the middle, as that's how the channel/nickname list is sorted (*when alphabetical sorting is enabled*). Similarly, an exact match should emphasize that over any substring matches.
As per upstream, Quasseldroid should prioritize results that exactly match, then start with, over the rest of the results that merely contain the filter string.
*This is personal opinion, feel free to disagree!*
See the merged upstream pull request: [[quassel/quassel/pr #438] client: For filtering, prioritize exact, startsWith](https://github.com/quassel/quassel/pull/438 ).
## Examples
### Setup
1. Add six PMs, `acar`, `bcar`, `car`, `careful`, `caring`, `racecar`
* E.g. `/query [name]`
2. Temporarily hide `car`
3. Search for `car` with buffer filter, e.g. <kbd>Ctrl</kbd>+<kbd>S</kbd>
### Before
*Screenshot from Quassel desktop*
![Screenshot of Quassel before these changes showing the All Chats buffer list, filtering on 'car', with the PMs created as per the example setup](https://zorro.casa/sync/Hosting/Utilities/Quassel/Development/pr/ft-filter-prioritize-matches/Before%20-%20buffer%20filter%20always%20alphabetical.png#v1 )
> * Normal
> * acar
> * bcar
> * careful
> * caring
> * racecar
> * Temporarily hidden
> * car
### After
*Screenshot from Quassel desktop*
![Screenshot of Quassel after these changes showing the All Chats buffer list, filtering on 'car', with the PMs created as per the example setup](https://zorro.casa/sync/Hosting/Utilities/Quassel/Development/pr/ft-filter-prioritize-matches/After%20-%20buffer%20filter%20prioritizes%20exact%2C%20then%20starts%20with.png#v1 )
> * Exact match
> * car (*still temporarily hidden*)
> * Starts with match
> * careful
> * caring
> * Normal
> * acar
> * bcar
> * racecarhttps://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/182Setup Network window should suggest any matching existing networks2022-01-10T05:15:04ZShane SynanSetup Network window should suggest any matching existing networks## Test case
### Steps
1. Connect to a network `Freenode` with server `irc.freenode.net`, port `6697`
2. Join `#quassel-test`
3. Open a ircs://irc.freenode.net/#quassel-test link
### Expected
Network list suggests the already existin...## Test case
### Steps
1. Connect to a network `Freenode` with server `irc.freenode.net`, port `6697`
2. Join `#quassel-test`
3. Open a ircs://irc.freenode.net/#quassel-test link
### Expected
Network list suggests the already existing `Freenode` network, as it matches in port/server. It should still be possible to choose a different network to create a new one instead.
### Actual
`Setup Network` defaults to creating a new network.https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/183Setup Network window "All Networks" unclear in purpose, rename "New Network…"?2022-01-10T05:15:04ZShane SynanSetup Network window "All Networks" unclear in purpose, rename "New Network…"?## Test case
### Steps
1. Connect to core
2. Open a ircs://irc.example.net/#quassel-test link
### Expected
Network list shows `New Network…`, `Create network…`, or something to that effect, to indicate it's creating a new network.
##...## Test case
### Steps
1. Connect to core
2. Open a ircs://irc.example.net/#quassel-test link
### Expected
Network list shows `New Network…`, `Create network…`, or something to that effect, to indicate it's creating a new network.
### Actual
`All Networks` is shown, without it being clear what will happen. Joining the channel on every network? Adding the IRC server to every network?
(I haven't yet tried this on a scratch core.)https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/167Buffer Search/Filter2022-01-10T05:15:04ZZauberfischBuffer Search/FilterJust like on the desktop version a user should be able to filter/search for buffer namesJust like on the desktop version a user should be able to filter/search for buffer nameshttps://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/170Crash with some network-specific ignore lists2022-01-10T05:15:01ZkarlyeurlCrash with some network-specific ignore lists## Issue
On my local QuasselClient, I have a bunch of ignore list entries that look like this:
```
{
"Strictness": "Dynamic",
"Rule Type": "Sender",
"Ignore Rule": "username!.+",
"Regular expression": true,
"Scope": {
...## Issue
On my local QuasselClient, I have a bunch of ignore list entries that look like this:
```
{
"Strictness": "Dynamic",
"Rule Type": "Sender",
"Ignore Rule": "username!.+",
"Regular expression": true,
"Scope": {
"Type": "Network",
"Rule": "*network-name"
}
}
```
[(screenshot from the interface)](/uploads/c23e9c1cc8203b9359d306dffd328de8/2018-12-27-191412_389x369_scrot.png)
What causes QuasselDroid-ng to fail, where there are no issues that I know of with Quasselclient, Quasselweb or QuasselDroid (legacy) is the `*` before `network-name`. [(crash report)](/uploads/c306c26ffa5eaa10a7edb8240381a876/crash.json)
This happens even when the rule is not enabled.
(note: the rule was written as such because my networks are actually called `[x] network-name` to have them well-organized. I am aware it's pretty crude, but it worked.)
## Steps to reproduce
1. Use a quasselclient that supports ignore list rules editing
2. Add a new dynamic entry with a scope that is Network-wide, not Global
3. Set the Scope rule as a network name starting with a wildcard
4. Try to initialize a connection to the core from a quasseldroid-ng client
* **Expected outcome:** the client connects and the rule is effective
* **Actual outcome:** the client crashes because the regex does not compile
## Conclusion
I don't know if that's actually a bug, or if QuasselDroid-ng is actually behaving properly and the other clients are just too lax.https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/178Sort Missing Feature list by most important2022-01-10T05:15:01ZShane SynanSort Missing Feature list by most important## Idea
Rearrange the Missing Features list so the most important/impactful items are listed first.
One **possible** example:
### New
*Priority 1: in order*
* `BufferActivitySync`
* `Required for seeing activity of chats in the cha...## Idea
Rearrange the Missing Features list so the most important/impactful items are listed first.
One **possible** example:
### New
*Priority 1: in order*
* `BufferActivitySync`
* `Required for seeing activity of chats in the chat list`
* `CoreSideHighlights`
* `Required for highlights`
* `BacklogFilterType`
* `Required for receiving past notifications after connecting`
*Priority 2: in order*
* `RichMessages`
* `Required for seeing real names or IRCv3 or Gravatar avatars in messages`
* `SenderPrefixes`
* `Required for seeing prefix modes (+, @) of users in messages`
* `RemoteDisconnect`
* `Required for remote disconnects of your own clients`
* `SynchronizedMarkerLine`
* `Required for synchronizing the last position in channels`
*Priority 3: alphabetical, can be rearranged*
* `AwayFormatTimestamp`
* `Required for custom formatted timestamps in away messages`
* `PasswordChange`
* `Required for changing passwords from the client`
* `CapNegotiation`
* `Required for IRCv3 capabilities`
* `CustomRateLimits`
* `Required for custom rate limits for IRC networks`
* `HideInactiveNetworks`
* `Required for hiding inactive networks from chat lists`
* `SaslAuthentication`
* `Required for SASL`
* `SaslExternal`
* `Required for SASL with certificates`
* `VerifyServerSSL`
* `Required for verifying the SSL certificate of IRC networks you connect to`
### Old
**Order found in code, dialog shows differently**
* `SynchronizedMarkerLine`
* `Required for synchronizing the last position in channels`
* `SaslAuthentication`
* `Required for SASL`
* `SaslExternal`
* `Required for SASL with certificates`
* `HideInactiveNetworks`
* `Required for hiding inactive networks from chat lists`
* `PasswordChange`
* `Required for changing passwords from the client`
* `CapNegotiation`
* `Required for IRCv3 capabilities`
* `VerifyServerSSL`
* `Required for verifying the SSL certificate of IRC networks you connect to`
* `CustomRateLimits`
* `Required for custom rate limits for IRC networks`
* `AwayFormatTimestamp`
* `Required for custom formatted timestamps in away messages`
* `BufferActivitySync`
* `Required for seeing activity of chats in the chat list`
* `CoreSideHighlights`
* `Required for highlights`
* `SenderPrefixes`
* `Required for seeing prefix modes (+, @) of users in messages`
* `RemoteDisconnect`
* `Required for remote disconnects of your own clients`
* `RichMessages`
* `Required for seeing real names or IRCv3 or Gravatar avatars in messages`
* `BacklogFilterType`
* `Required for receiving past notifications after connecting`
## Additional
Showing the most important items first should help convey why this matters without requiring as much dedication to reading. Contextual reminders reduce the need, but it's still nice to clean up the list.
This order will need reconsidered when Quassel 0.14 introduces other new features.https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/179Missing Features dialog scrolled down on activity create, hiding upgrade expl...2022-01-10T05:15:01ZShane SynanMissing Features dialog scrolled down on activity create, hiding upgrade explanation## Test case
### Steps
1. Connect to a Quassel core `0.12.5`
2. Open the `Missing Features` warning dialog if not already shown
2. Put the device in portrait orientation
3. Put the device in landscape orientation
### Expected
The `...## Test case
### Steps
1. Connect to a Quassel core `0.12.5`
2. Open the `Missing Features` warning dialog if not already shown
2. Put the device in portrait orientation
3. Put the device in landscape orientation
### Expected
The `Your core is missing features… You should upgrade your Quassel core…` text shows at the top, while allowing scrolling down to see the full list.
### Actual
The dialog opens scrolled down to `BufferActivitySync`, hiding the existence of the `Your core is missing features…` text. Though you can scroll up to see it, it's not immediately obvious.
## Additional
Nexus 6, LineageOS 15.1, with Expanded Desktop enabled (hidden status bar and navigation buttons). Perhaps something to do with overflow handling?https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/177Missing Features dialog doesn't show all missing features2022-01-10T05:15:01ZShane SynanMissing Features dialog doesn't show all missing features## Test case
### Steps
1. Connect to a Quassel core `0.12.5`
2. View the `Missing Features` warning dialog in portrait
3. Try to scroll
4. View the `Missing Features` warning dialog in landscape
5. Try to scroll
### Expected
The f...## Test case
### Steps
1. Connect to a Quassel core `0.12.5`
2. View the `Missing Features` warning dialog in portrait
3. Try to scroll
4. View the `Missing Features` warning dialog in landscape
5. Try to scroll
### Expected
The full list of missing features is accessible via scrolling.
### Actual
The list of missing features cuts off several features depending on the height of the dialog. Scrolling does not reveal all of them.
## Additional
Nexus 6, LineageOS 15.1, with Expanded Desktop enabled (hidden status bar and navigation buttons). Perhaps something to do with overflow handling?
### Screenshots of the issue
**Landscape**
*Notice the scroll bar. Only the two visible items could be seen.*
![Screenshot of Missing Features dialog in landscape, scrolled down to reveal only "CapNegotiation" and "VerifyServerSSL" as listed, despite many other features missing from a 0.12.5 core](https://zorro.casa/sync/Hosting/Utilities/Quassel/QuasselDroid/Development/issues/missing-features-cut-off/Screenshot%20of%20Missing%20Features%20dialog%20-%20landscape.png#v1 )
**Portrait**
*Scrolled down all the way. Only the visible items could be seen.*
![Screenshot of Missing Features dialog in portrait, scrolled down to reveal only "CapNegotiation", "VerifyServerSSL", "CustomRateLimits", "AwayFormatTimestamp", and "BufferActivitySync" as listed, despite many other features missing from a 0.12.5 core](https://zorro.casa/sync/Hosting/Utilities/Quassel/QuasselDroid/Development/issues/missing-features-cut-off/Screenshot%20of%20Missing%20Features%20dialog%20-%20portrait.png#v1 )https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/173Sort network names case-insensitively2022-01-10T05:15:01ZShane SynanSort network names case-insensitively## In brief
To match [a recent upstream Quassel change](https://github.com/quassel/quassel/pull/437 ), Quasseldroid should sort networks case-insensitively.
Quassel sorts most things alphabetically in a case-insensitive manner, includi...## In brief
To match [a recent upstream Quassel change](https://github.com/quassel/quassel/pull/437 ), Quasseldroid should sort networks case-insensitively.
Quassel sorts most things alphabetically in a case-insensitive manner, including the nickname list. The network name list should also be sorted case-insensitively to match.
## Test case
### Setup
Add three networks, `Alpha`, `beta`, and `Freenode`.
### Before
* Alpha
* Freenode
* beta
### After
* Alpha
* beta
* Freenodehttps://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/171Ignore rule Scope should always be MultiWildcard2022-01-10T05:15:01ZShane SynanIgnore rule Scope should always be MultiWildcardUpstream Quassel always uses the `MultiWildcard` mode for matching `Ignore Rule` `Scope`. This is for [backwards-compatibility with Quassel 0.12.x and lower](https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Ignore...Upstream Quassel always uses the `MultiWildcard` mode for matching `Ignore Rule` `Scope`. This is for [backwards-compatibility with Quassel 0.12.x and lower](https://bugs.quassel-irc.org/projects/quassel-irc/wiki/Pattern_matching#Ignore-Rules ), where the `Regular expression` checkbox only applied to the rule itself, not the scope.
Quasseldroid should follow this. [In `IgnoreListManager.kt`](https://git.kuschku.de/justJanne/QuasselDroid-ng/blob/6010a1ec43a95f4cb3c537f3dbb41aad9d92d079/lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IgnoreListManager.kt#L192-193 ), it should be changed so…
```diff
--- lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IgnoreListManager.kt
+++ lib/src/main/java/de/kuschku/libquassel/quassel/syncables/IgnoreListManager.kt.new
@@ -189,8 +189,7 @@
),
ExpressionMatch(
scopeRule,
- if (isRegEx) ExpressionMatch.MatchMode.MatchRegEx
- else ExpressionMatch.MatchMode.MatchMultiWildcard,
+ ExpressionMatch.MatchMode.MatchMultiWildcard,
true
)
)
```
`Regular expression` should continue to affect `ignoreRule` itself, as before.
*Thanks to #170 for bringing this issue to attention.*https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/99Indicate inside client UI when offline2022-01-10T05:15:01ZShane SynanIndicate inside client UI when offline### Steps
1. Connect to core
2. Open buffer
3. Enable airplane mode
### Expected
Some form of indication inside the client that one is offline, avoiding confusion as to why no new messages arrive.
This might take the form of an info...### Steps
1. Connect to core
2. Open buffer
3. Enable airplane mode
### Expected
Some form of indication inside the client that one is offline, avoiding confusion as to why no new messages arrive.
This might take the form of an info bar below the top bar or near the bottom, akin to the `Offline Mode` message in YouTube/Google Maps/Google Play Music.
### Actual
No in-client indication that connection's lost. Only the notification, failure of actions, and missing buffer/nick list show the offline state.
### Additional
Though viewing messages while offline is a new feature, QuasselDroid classic always made it (*far too disruptively*) obvious when you got disconnected, hence feature parity.
**Example cropped screenshot of YouTube offline**
![YouTube showing offline mode, with a black bar at the bottom that says No connection](https://zorro.casa/sync/Hosting/Utilities/Quassel/QuasselDroid/Development/issues/show-offline-in-ui/Example%20-%20YouTube%20offline%20trimmed.png#v1 )
**Example cropped screenshot of Maps Wi-Fi only**
![Google Maps showing offline mode, with a blue bar at the top that says Wi-Fi Only](https://zorro.casa/sync/Hosting/Utilities/Quassel/QuasselDroid/Development/issues/show-offline-in-ui/Example%20-%20Maps%20offline%20trimmed%20smaller.png#v1 )
**Example cropped screenshot of Play Music offline**
![Google Play Music showing offline mode, with an orange bar at the top that says Downloaded Only](https://zorro.casa/sync/Hosting/Utilities/Quassel/QuasselDroid/Development/issues/show-offline-in-ui/Example%20-%20Play%20Music%20offline%20trimmed%20smaller.png#v1 )https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/100Input history doesn't scroll to top after new message sent2022-01-10T05:15:01ZShane SynanInput history doesn't scroll to top after new message sent### Steps
1. Connect to core
2. Send enough messages that input history begins scrolling
3. Open input history, scroll to top
4. Send another message
5. Open input history
### Expected
Input history scrolls to top, showing most rec...### Steps
1. Connect to core
2. Send enough messages that input history begins scrolling
3. Open input history, scroll to top
4. Send another message
5. Open input history
### Expected
Input history scrolls to top, showing most recent message.
### Actual
Input history remains at the former position. This can cause confusion if the previous message aligns with the top edge, as there won't appear to be more at the top if the fading scrollbar is missed.https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/172Show a missing features info-banner in Core Settings2022-01-10T05:15:01ZShane SynanShow a missing features info-banner in Core Settings## Idea
As a shorter-term stop-gap to #93, the `Core Settings` menu could have a missing features warning banner at the top, akin to the Patreon donation banner in `Client Settings`. This would be a much more prominent reminder than ha...## Idea
As a shorter-term stop-gap to #93, the `Core Settings` menu could have a missing features warning banner at the top, akin to the Patreon donation banner in `Client Settings`. This would be a much more prominent reminder than having to go to `Core Settings` → `Core Info` to see a small button.
> `Your core is missing features that are required for Quasseldroid to work correctly.`
>
> \[right-aligned\] `Details`
And tapping anywhere on it pulls up the `Missing Features` dialog, similar to the donation banner.
When no features are missing, the banner is hidden.
## Additional
Given this is *always* visible in `Core Settings`, I don't think we should make the text as long as it is in the dialog. I'm unsure if people will ignore it due to the similarities to banner advertisements; it should at least be more easily noticed than what we have at the moment.https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/153Clarify highlight list item summary (icons, matching all)2022-01-10T05:15:01ZShane SynanClarify highlight list item summary (icons, matching all)## Test case
### Steps
1. Open overflow menu → `Core Settings` → `Highlights`
2. Add a new highlight rule
* `Name` set to an empty string
* `Sender` to `test`
* `Channel` to `#test` (or the name of a buffer)
3. Tap `Save`...## Test case
### Steps
1. Open overflow menu → `Core Settings` → `Highlights`
2. Add a new highlight rule
* `Name` set to an empty string
* `Sender` to `test`
* `Channel` to `#test` (or the name of a buffer)
3. Tap `Save`
### Expected
`Highlight Rules` list indicates in some way that the highlight rule matches all text, e.g. a placeholder in italics. Sender and channel are distinguished.
Example:
> ### *Any message content*
>
> \[person icon\] test
>
> #test
This may make it more obvious when hunting down a rogue highlight/highlight ignore rule that matches everything, as well as clarifying between sender and channel matching.
### Actual
`Highlight Rules` list shows a blank subject message.
Example:
> ###
>
> test
>
> #test
## Additional
This is a subjective change; leaving it blank works for glance-ability, too.
Quassel itself doesn't provide a placeholder message, mostly since I didn't know how to do that in Qt's list view at the time. The tooltip text does mention "leave blank to match any phrase" (though I'm not sure who reads the tooltips).https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/184Crash handler crashes on new crash/viewing crashes2022-01-10T05:15:01ZShane SynanCrash handler crashes on new crash/viewing crashes### In brief
Quasseldroid crashes on adding a new crash report/viewing existing crashes.
### Additional
I'm not entirely sure what causes this. It might be due to having old error reports saved from before the "share as file" crash han...### In brief
Quasseldroid crashes on adding a new crash report/viewing existing crashes.
### Additional
I'm not entirely sure what causes this. It might be due to having old error reports saved from before the "share as file" crash handler rework..?
Snippet of ADB `logcat` when going to view crashes on commit https://git.kuschku.de/justJanne/QuasselDroid-ng/commit/5a359fac6e9e68b7b744144b1e47ff85d8f119ed (the desktop CoreInfo dialog makes that easy to copy):
```
01-11 02:10:26.946 3686 3960 E AndroidRuntime: FATAL EXCEPTION: Crash
01-11 02:10:26.946 3686 3960 E AndroidRuntime: Process: com.iskrembilen.quasseldroid, PID: 3686
01-11 02:10:26.946 3686 3960 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'android.content.res.XmlResourceParser android.content.pm.ProviderInfo.loadXmlMetaData(android.content.pm.PackageManager, java.lang.String)' on a null object reference
01-11 02:10:26.946 3686 3960 E AndroidRuntime: at androidx.core.content.FileProvider.parsePathStrategy(FileProvider.java:605)
01-11 02:10:26.946 3686 3960 E AndroidRuntime: at androidx.core.content.FileProvider.getPathStrategy(FileProvider.java:579)
01-11 02:10:26.946 3686 3960 E AndroidRuntime: at androidx.core.content.FileProvider.getUriForFile(FileProvider.java:417)
01-11 02:10:26.946 3686 3960 E AndroidRuntime: at de.kuschku.quasseldroid.ui.clientsettings.crash.CrashFragment$onCreateView$1.run(CrashFragment.kt:94)
01-11 02:10:26.946 3686 3960 E AndroidRuntime: at android.os.Handler.handleCallback(Handler.java:790)
01-11 02:10:26.946 3686 3960 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:99)
01-11 02:10:26.946 3686 3960 E AndroidRuntime: at android.os.Looper.loop(Looper.java:164)
01-11 02:10:26.946 3686 3960 E AndroidRuntime: at android.os.HandlerThread.run(HandlerThread.java:65)
01-11 02:10:26.949 3686 3960 E Malheur : Creating crash report
01-11 02:10:26.956 2224 2256 W ActivityManager: Force finishing activity com.iskrembilen.quasseldroid/de.kuschku.quasseldroid.ui.clientsettings.crash.CrashActivity
01-11 02:10:26.969 2224 2256 W ActivityManager: Force finishing activity com.iskrembilen.quasseldroid/de.kuschku.quasseldroid.ui.clientsettings.client.ClientSettingsActivity
01-11 02:10:27.048 2224 2307 I ActivityManager: Showing crash dialog for package com.iskrembilen.quasseldroid u0
```https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/158Toggling "Use SSL" should change default IRC server port2022-01-10T05:15:00ZShane SynanToggling "Use SSL" should change default IRC server port## Test case
### Steps
1. Connect to core
2. Go to overflow menu → `Core Settings`
3. Edit an existing network, or add a new one
4. Add a `New Server`
5. Toggle the `Use SSL` checkbox twice
6. Change the `Port` to a non-standard v...## Test case
### Steps
1. Connect to core
2. Go to overflow menu → `Core Settings`
3. Edit an existing network, or add a new one
4. Add a `New Server`
5. Toggle the `Use SSL` checkbox twice
6. Change the `Port` to a non-standard value, e.g. `7000`
7. Toggle the `Use SSL` checkbox twice
### Expected
When the default ports of `6667` for non-SSL and `6697` for SSL are used, toggling `Use SSL` should change the port number.
When a non-default port is used, toggling `Use SSL` should *not* change the port number.
**Example animated screenshot of behavior on Quassel desktop**
*Port only modified when it's at the expected default of ```6667``` for non-SSL, or ```6697``` for SSL*
![Add network dialog - toggling Use encrypted connection and effects on chosen port](https://zorro.casa/sync/Hosting/Utilities/Quassel/Development/pr/ft-require-server-ssl/Add%20network%20dialog%20-%20toggle%20Use%20secure%20connection.gif#v2 )
### Actual
Port number doesn't change, requiring someone to know the default SSL port.
## Additional
This [matches upstream Quassel behavior](https://github.com/quassel/quassel/pull/217 ), as [per `networksettingspage.cpp`](https://github.com/quassel/quassel/blob/0.13.0/src/qtui/settingspages/networkssettingspage.cpp#L1107-L1117 ).
```cpp
void NetworkAddDlg::updateSslPort(bool isChecked)
{
// "Use encrypted connection" was toggled, check the state...
if (isChecked && ui.port->value() == Network::PORT_PLAINTEXT) {
// Had been using the plain-text port, use the SSL default
ui.port->setValue(Network::PORT_SSL);
} else if (!isChecked && ui.port->value() == Network::PORT_SSL) {
// Had been using the SSL port, use the plain-text default
ui.port->setValue(Network::PORT_PLAINTEXT);
}
}
```https://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/19irc:// link support with Dialog2022-01-10T05:15:00ZJanne Mareike Koschinskiirc:// link support with Dialoghttps://git.kuschku.de/justJanne/QuasselDroid-ng/-/issues/174Add contextual reminder for Core Settings → Highlights2022-01-10T05:15:00ZShane SynanAdd contextual reminder for Core Settings → Highlights## Test case
### Steps
1. Connect to a Quassel core `0.12.5`
2. Dismiss the warning dialog
3. Open `...` menu → `Core Settings` → `Highlights`
### Expected
Some warning about missing support for core-side highlights.
Example based ...## Test case
### Steps
1. Connect to a Quassel core `0.12.5`
2. Dismiss the warning dialog
3. Open `...` menu → `Core Settings` → `Highlights`
### Expected
Some warning about missing support for core-side highlights.
Example based on the buffer activity warning:
> `Quasseldroid cannot configure highlights. Upgrade your core to Quassel v0.13 to resolve this.`
### Actual
No message about missing features, no sign that it doesn't work, except for changes not saving.
## Additional
This is part of the [work on contextual feature reminders, #93](https://git.kuschku.de/justJanne/QuasselDroid-ng/issues/93 ), prioritized based on how often highlighting on nicknames is a requested feature.
It probably would still complement [a missing features banner in Core Info, #172](https://git.kuschku.de/justJanne/QuasselDroid-ng/issues/172 ).