briar issueshttps://code.briarproject.org/briar/briar/-/issues2019-11-20T13:08:01Zhttps://code.briarproject.org/briar/briar/-/issues/1443Flat conversation view for private groups2019-11-20T13:08:01ZakwizgranFlat conversation view for private groupsA user asked for private groups to be shown in a flat (unthreaded) view.
We've had requests for this before and never opened a ticket because a simple flat view based on message creation time or arrival time wouldn't work well with Bria...A user asked for private groups to be shown in a flat (unthreaded) view.
We've had requests for this before and never opened a ticket because a simple flat view based on message creation time or arrival time wouldn't work well with Briar's asynchronous message delivery. But apps like Slack and Mattermost have experimented with new ways to show asynchronous replies in a flat view, so perhaps the request should be considered.https://code.briarproject.org/briar/briar/-/issues/1442Use v3 hidden service for crash reports and feedback2021-11-17T13:38:12ZakwizgranUse v3 hidden service for crash reports and feedbackVersions of Briar that support v3 hidden services should use a v3 service for crash reports and feedback. The old service can be retired eventually when most users have upgraded.
Creating this here rather than in https://code.briarproje...Versions of Briar that support v3 hidden services should use a v3 service for crash reports and feedback. The old service can be retired eventually when most users have upgraded.
Creating this here rather than in https://code.briarproject.org/briar/admin because it requires some small code changes.https://code.briarproject.org/briar/briar/-/issues/1441Expel members from forums2020-11-15T19:47:45ZakwizgranExpel members from forumsA user asked for the ability to expel members from forums.
This is less likely to be feasible than #1440, but I'm recording the request anyway.
Related to #512.A user asked for the ability to expel members from forums.
This is less likely to be feasible than #1440, but I'm recording the request anyway.
Related to #512.https://code.briarproject.org/briar/briar/-/issues/1440Expel members from private groups2021-10-21T15:47:37ZakwizgranExpel members from private groupsA user asked for the ability to expel members from private groups.A user asked for the ability to expel members from private groups.https://code.briarproject.org/briar/briar/-/issues/1439Notification light no longer shows when lockscreen notifications are disabled2020-11-15T19:49:18ZakwizgranNotification light no longer shows when lockscreen notifications are disabled* Android version: 6.0.1
* Phone model: Samsung SM-G900F (kltexx)
* Briar version: 1.1.3 (779d873)
* User feedback: "It was well before the update, ie if I turned off the notification on the lock screen, only the notification LED flashed...* Android version: 6.0.1
* Phone model: Samsung SM-G900F (kltexx)
* Briar version: 1.1.3 (779d873)
* User feedback: "It was well before the update, ie if I turned off the notification on the lock screen, only the notification LED flashed but no one knew because there was no information about where it came from but I knew that I had info from someone. Now how do I turn off I have no information about whether I have a message. Why you removed it?"
Presumably this is related to !925, which was released in version 1.1.2. (If I remember right, 1.1.2 was a beta-only release, so this user may have upgraded from 1.1.1 to 1.1.3, the version reported above.)https://code.briarproject.org/briar/briar/-/issues/1438Implement UX for sending image attachments2020-11-16T10:11:30ZTorsten GroteImplement UX for sending image attachmentsWhen the message field is empty, there's an image icon to attach an image:
![Image_Attachment_Preselection](/uploads/cfaa2500f2d39f3b4e9c540d8ce46b88/Image_Attachment_Preselection.png)
Clicking it opens the system file selector:
![Ima...When the message field is empty, there's an image icon to attach an image:
![Image_Attachment_Preselection](/uploads/cfaa2500f2d39f3b4e9c540d8ce46b88/Image_Attachment_Preselection.png)
Clicking it opens the system file selector:
![Image_Attachment_Selection__System_](/uploads/97ad63158569fd22d7dc35b28453e6e4/Image_Attachment_Selection__System_.png)
If chosen image is shown as a preview, with an option to cancel the operation and to add an image caption:
![Confirmation](/uploads/621ca864593e0670f654ebdc832fbf48/Confirmation.png)
A seascape image shows a black/grey or color picked from the image on the sides:
![Confirmation_Tall_Image](/uploads/9ca88cffecbed1ee167835ba5efdd167/Confirmation_Tall_Image.png)
Subtask of #1237.Android 1.3Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1437List of recently used emoji is reversed2018-12-19T12:27:05ZTorsten GroteList of recently used emoji is reversedSo I've been eating my own dog food and always had issues finding my emoji until I realized that the emoji I had used last is always at the *end* of the list instead of at the *beginning* where I would expected it.So I've been eating my own dog food and always had issues finding my emoji until I realized that the emoji I had used last is always at the *end* of the list instead of at the *beginning* where I would expected it.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1436AndroidLanTcpPlugin not picking up non-wifi connections2020-11-15T19:52:56ZJulian DehmAndroidLanTcpPlugin not picking up non-wifi connectionsWhen running Briar in Anbox the wifi icon never turns green and lan is not working because it's using `eth0` as interface. We currently only check if we are connected via Wi-Fi or run an AP. The plugin should pick up "wired" connections ...When running Briar in Anbox the wifi icon never turns green and lan is not working because it's using `eth0` as interface. We currently only check if we are connected via Wi-Fi or run an AP. The plugin should pick up "wired" connections if there's no wifi access.
> we just need to make sure it doesn't cause other android devices to treat the mobile data interface as a lan interface (it often gets assigned a lan address due to nat).https://code.briarproject.org/briar/briar/-/issues/1435[android] Migrate to HtmlCompat2020-08-14T11:32:43ZTorsten Grote[android] Migrate to HtmlCompat`UiUtils#getSpanned()` should use the new HtmlCompat.
https://commonsware.com/blog/2018/05/29/at-last-htmlcompat.html`UiUtils#getSpanned()` should use the new HtmlCompat.
https://commonsware.com/blog/2018/05/29/at-last-htmlcompat.htmlAndroid 1.2https://code.briarproject.org/briar/briar/-/issues/1434Implement backend for sending and receiving image attachments2019-11-12T13:45:59ZTorsten GroteImplement backend for sending and receiving image attachments### Receiving Image Attachments
Private message headers will include a list of attachments, and there will be a `MessagingManager` method for loading an attachment, which will include the attachment data as a `ByteBuffer`, later to be c...### Receiving Image Attachments
Private message headers will include a list of attachments, and there will be a `MessagingManager` method for loading an attachment, which will include the attachment data as a `ByteBuffer`, later to be converted to an `InputStream` if we find that loading images into ByteBuffers won't scale.
This implies that private message headers (in the sense of headers belonging to the private messaging client) will no longer correspond to the root class `PrivateMessageHeader` (from which all one-to-one headers currently inherit). The root class may need to be renamed, and some refactoring of the code that handles that hierarchy will be needed.
### Sending Image Attachments
*TODO*: MessagingManager API for creating local messages with optional attachmentsAndroid 1.3Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1433BdfReaderImpl has undefined behaviour for strings with illegal byte sequences2018-10-30T13:58:53ZakwizgranBdfReaderImpl has undefined behaviour for strings with illegal byte sequencesBdfReaderImpl uses the `String(byte[] bytes, int offset, int length, String charsetName)` constructor to convert UTF-8 byte arrays into strings. The [javadoc](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#String-byte:A-...BdfReaderImpl uses the `String(byte[] bytes, int offset, int length, String charsetName)` constructor to convert UTF-8 byte arrays into strings. The [javadoc](https://docs.oracle.com/javase/8/docs/api/java/lang/String.html#String-byte:A-int-int-java.lang.String-) says "The behavior of this constructor when the given bytes are not valid in the given charset is unspecified. The CharsetDecoder class should be used when more control over the decoding process is required."
We have a `StringUtils.toUtf8(byte[] bytes)` method with well-defined behaviour for this situation (illegal byte sequences are ignored), which we should probably be using here (and fuzz-testing).Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1432Headless integration tests2020-11-18T17:04:10ZTorsten GroteHeadless integration testsWe should add some integration tests for the REST API endpoints to catch breakage.We should add some integration tests for the REST API endpoints to catch breakage.Headless MVPhttps://code.briarproject.org/briar/briar/-/issues/1431Try not to show languages with unsupported scripts2020-11-15T19:55:56ZakwizgranTry not to show languages with unsupported scriptsThe language selector should try to exclude languages with scripts that aren't supported by the device.
We still want to offer languages that aren't supported by the device, as long as the script is supported (e.g. Occitan, Asturian).
...The language selector should try to exclude languages with scripts that aren't supported by the device.
We still want to offer languages that aren't supported by the device, as long as the script is supported (e.g. Occitan, Asturian).
One possibility would be to have a list of exceptions, containing languages with scripts that are likely to be supported on all devices. Only languages that are supported by the device or included in the list of exceptions should be shown in the language selector.https://code.briarproject.org/briar/briar/-/issues/1430Restrict access to Tor's SOCKS port2023-10-23T14:08:41ZakwizgranRestrict access to Tor's SOCKS portAny process on localhost can connect to the SOCKS port of our Tor process and use it to make connections via Tor. Without having any specific attack in mind, I guess malicious apps running on localhost (which are within our threat model ...Any process on localhost can connect to the SOCKS port of our Tor process and use it to make connections via Tor. Without having any specific attack in mind, I guess malicious apps running on localhost (which are within our threat model on Android) might be able to use this to undermine the user's anonymity.
Tor uses the SOCKS username and password for circuit isolation, so if we wanted to password-protect the SOCKS port we'd have to add a config option to treat the password as a credential, perhaps keeping the username for circuit isolation.
Tor already has password-hashing code for the control port, which we might be able to reuse for the SOCKS port.
If this feature request passes the smell test let's open a ticket upstream.https://code.briarproject.org/briar/briar/-/issues/1429Configure Animal Sniffer to allow try-with-resources2021-08-09T12:30:08ZakwizgranConfigure Animal Sniffer to allow try-with-resourcesThe Animal Sniffer plugin, which we use to check that our code is compatible with the Java 6 API provided by older Android devices, rejects the try-with-resources statement added in Java 7. This is unfortunate, as Android's desugar prepr...The Animal Sniffer plugin, which we use to check that our code is compatible with the Java 6 API provided by older Android devices, rejects the try-with-resources statement added in Java 7. This is unfortunate, as Android's desugar preprocessor converts the statement to Java 6-compatible bytecode, so it's usable on older devices.
We should look for a way to configure Animal Sniffer so the statement isn't rejected.https://code.briarproject.org/briar/briar/-/issues/1428Log messages with level FINE aren't recorded in Android's system log2019-10-09T12:17:59ZakwizgranLog messages with level FINE aren't recorded in Android's system logLog messages with level FINE (such as timing measurements) aren't being recorded in Android's system log. These messages should be recorded on debug and beta builds, where the root logger's log level is set to FINE.
The messages are rec...Log messages with level FINE (such as timing measurements) aren't being recorded in Android's system log. These messages should be recorded on debug and beta builds, where the root logger's log level is set to FINE.
The messages are recorded in our own internal log, as expected, so they're included in crash reports and feedback from debug and beta builds.Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1427Keep a changelog2018-11-22T11:35:24ZRobert PollakKeep a changelogPlease keep a changelog, to make it easier for users to see what notable changes have been made, before installing a new Briar version.
F-Droid can then link to this changelog on the app page.Please keep a changelog, to make it easier for users to see what notable changes have been made, before installing a new Briar version.
F-Droid can then link to this changelog on the app page.Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1426Feedback data is hard to read in preview screen2019-06-18T16:52:08ZakwizgranFeedback data is hard to read in preview screenSince [upgrading ACRA](https://code.briarproject.org/briar/briar/commit/b972d1fc13570fa6258048d5e8a429f9882b8ef6) the contents of crash reports and feedback are shown in the preview as blobs of JSON rather than key-value pairs, which mak...Since [upgrading ACRA](https://code.briarproject.org/briar/briar/commit/b972d1fc13570fa6258048d5e8a429f9882b8ef6) the contents of crash reports and feedback are shown in the preview as blobs of JSON rather than key-value pairs, which makes them harder to read.
There also seems to be an issue with the scroll view cutting off the bottom of the content.Android 1.1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1424Prompted to 'allow unknown sources' when trying to install briar via its f-dr...2020-11-15T19:59:13ZlazzPrompted to 'allow unknown sources' when trying to install briar via its f-droid repository despite the privileged extension being installedWhen trying to install briar through its third party f-droid repository I get prompted to 'allow unknown sources' by android despite f-droid's privileged extension being installed and working with the main repo as well as other third par...When trying to install briar through its third party f-droid repository I get prompted to 'allow unknown sources' by android despite f-droid's privileged extension being installed and working with the main repo as well as other third party repos.
It has been hinted that this might be due to the briar project not using the current master of fdroid, where issues of that kind have been solved.
It was suggested that you look at https://gitlab.com/fdroid/admin/issues/65 for reference and check whether some of the problematic setup sounds familiar to you and applies to your setup.
Using the latest fdroid tools should solve this issue.https://code.briarproject.org/briar/briar/-/issues/1423IllegalStateException when key agreement fails2021-01-13T16:12:06ZakwizgranIllegalStateException when key agreement fails* Android version: 5.1.1
* Briar version: 1.1.1 (9476782)
* Phone model: Samsung SM-J200G (j2ltedd)
Stacktrace:
```
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app...* Android version: 5.1.1
* Briar version: 1.1.1 (9476782)
* Phone model: Samsung SM-J200G (j2ltedd)
Stacktrace:
```
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:2053)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:2079)
at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:678)
at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:632)
at org.briarproject.briar.android.activity.BaseActivity.showNextFragment(BaseActivity.java:147)
at org.briarproject.briar.android.keyagreement.KeyAgreementActivity.showErrorFragment(KeyAgreementActivity.java:193)
at org.briarproject.briar.android.keyagreement.ContactExchangeActivity.keyAgreementFailed(ContactExchangeActivity.java:107)
at org.briarproject.briar.android.keyagreement.KeyAgreementFragment.lambda$keyAgreementFailed$2$KeyAgreementFragment(KeyAgreementFragment.java:283)
at org.briarproject.briar.android.keyagreement.KeyAgreementFragment$$Lambda$2.run(Unknown Source)
at org.briarproject.briar.android.fragment.BaseFragment.lambda$runOnUiThreadUnlessDestroyed$0$BaseFragment(BaseFragment.java:90)
at org.briarproject.briar.android.fragment.BaseFragment$$Lambda$0.run(Unknown Source)
at android.os.Handler.handleCallback(Handler.java:739)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:145)
at android.app.ActivityThread.main(ActivityThread.java:6946)
at java.lang.reflect.Method.invoke(Native Method)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
```
Looks like we should check the lifecycle state in `BaseActivity#showNextFragment()` or `KeyAgreementActivity#showErrorFragment()`.Android 1.1Torsten GroteTorsten Grote