briar issueshttps://code.briarproject.org/briar/briar/-/issues2020-11-18T22:34:04Zhttps://code.briarproject.org/briar/briar/-/issues/1200Menu options to jump to start/end of conversation2020-11-18T22:34:04ZakwizgranMenu options to jump to start/end of conversationUser feedback: "We should be able to go to the start or end of the chat."User feedback: "We should be able to go to the start or end of the chat."https://code.briarproject.org/briar/briar/-/issues/1201Trust indicator in conversation view2022-11-18T16:46:06ZakwizgranTrust indicator in conversation viewA user asked for trust indicators to be shown in the conversation view.
"It might also be useful to show some sort of security information to be able to check that we are talking directly to who we think we are without a man in the midd...A user asked for trust indicators to be shown in the conversation view.
"It might also be useful to show some sort of security information to be able to check that we are talking directly to who we think we are without a man in the middle."https://code.briarproject.org/briar/briar/-/issues/1202Minimise long messages in UI2020-11-18T22:32:22ZakwizgranMinimise long messages in UIUser feedback: "It would be nice to be able to minimize very long text bubbles. This is a standard feature on many computer notebook environments."User feedback: "It would be nice to be able to minimize very long text bubbles. This is a standard feature on many computer notebook environments."https://code.briarproject.org/briar/briar/-/issues/1203Attractive backgrounds2020-11-18T22:31:55ZPratiwirAttractive backgroundsI would like to suggest more personalised user features.
Change colors of bubbles and backgrounds. Be able to shift the overall displayed emoticon colors to personal taste. Add backgrounds for other users of a group chat or forum to ac...I would like to suggest more personalised user features.
Change colors of bubbles and backgrounds. Be able to shift the overall displayed emoticon colors to personal taste. Add backgrounds for other users of a group chat or forum to access.
If possible allow for development of scripts to animate dynamic backgrounds, but strictly limited to the background area of the chat and bubble boundary outlines, up to the user to invoke. If this were possible it could add features that other messaging services don't have.https://code.briarproject.org/briar/briar/-/issues/1204Device pipes2020-11-18T22:31:15ZPratiwirDevice pipesI would like a feature where it is possible to send a data stream from one device to another. This would be useful for relaying local internet of things data, current ip address, etc. Perhaps briar could receive and send data between oth...I would like a feature where it is possible to send a data stream from one device to another. This would be useful for relaying local internet of things data, current ip address, etc. Perhaps briar could receive and send data between other programs running on each device, to a particular pipe session that could be set up between users. The linux pipe system might be possible to use.
https://unix.stackexchange.com/questions/342787/how-to-use-pipe-to-apply-a-text-to-a-program
Tor has the unique ability to be immune to dynamic ip address changes, set up vpn etc, but it may be possible to extend briar to enable easily set up data links, if so then it would be easier for the end user and attractive for geeks.https://code.briarproject.org/briar/briar/-/issues/1205Check that registration methods aren't called after startup2020-11-18T22:30:29ZakwizgranCheck that registration methods aren't called after startupVarious registration methods are meant to be called at injection time, before `LifecycleManager#startServices()` is called. Add checks to ensure they aren't called later in the lifecycle (e.g. due to a singleton being created lazily).Various registration methods are meant to be called at injection time, before `LifecycleManager#startServices()` is called. Add checks to ensure they aren't called later in the lifecycle (e.g. due to a singleton being created lazily).https://code.briarproject.org/briar/briar/-/issues/1206Install validation2020-11-18T22:29:19ZPratiwirInstall validationThere have been discussions about hardware db keys but these security features of course assume that users have the correct original software on their devices. If this isn't the case then messages could be leaking.
Some general backgrou...There have been discussions about hardware db keys but these security features of course assume that users have the correct original software on their devices. If this isn't the case then messages could be leaking.
Some general background.
Play store, so far as I know, isn't solely located in jurisdictions free of secret court orders, although there are servers for different regions. Distributed software sometimes does vary, depending on the ip address from which it is requested. I have experienced this when doing md5 checks myself.
Play store also has a serious weakness, it works by using google account login, so even if you download over tor you can't be completely anonymous and you will have difficulty creating any google account using tor.
So Play Store might not be advisable if you think you may have been adversely profiled.
In addition there is also the possibility that https can be intercepted and compromised.
https://www.eff.org/deeplinks/2011/10/how-secure-https-today
Either issue might affect users targeted by ip address and not using tor.
Downloading as an apk file at least gives the possibility to check the hash sum. Also downloading over tor will make it difficult for individual users to be targeted.
So, given these considerations, and that apk files may be used frequently I think it is probably important to have file hashes readily available on a website. Will this be the case?
I am also wondering if there is a way to do an application integrity check from a console as root? Perhaps a small script could be available for this purpose? System file checks can be a good added level of security. I would like to think the application could do this automatically for all users, but it seems this might be difficult to guarantee, and the only really secure way would be via the console. Has anyone any ideas on this?https://code.briarproject.org/briar/briar/-/issues/1208Explain what the clock icon means2022-11-29T14:31:01ZPratiwirExplain what the clock icon meansI am getting a clock symbol for each new chat bubble. I switched to tor, the connection is working. 3 days of trial left. I go to the main contacts screen and select the top left three bars menu, at the bottom left both internet and wifi...I am getting a clock symbol for each new chat bubble. I switched to tor, the connection is working. 3 days of trial left. I go to the main contacts screen and select the top left three bars menu, at the bottom left both internet and wifi symbols are green.
Each contact displays how long ago I typed a message.
I'd like to see some way to get the server status if possible, ideally the response time could be translated to a color with a note of the last round trip time.
I don't know the server ip, in fact multiping on android seems to be working fine over tor.
Just don't know if the server is down or it is some other problem.https://code.briarproject.org/briar/briar/-/issues/1209Unable to add users with Samsung galaxy S8 as contacts2020-11-18T22:17:31ZJoshUnable to add users with Samsung galaxy S8 as contactsI have a OnePlus 3 and I am able to add anyone as contact unless they have a galaxy S8. I have tried pairing via Bluetooth, rebooting both phones, nothing gets the process to work.
Both people can be added as contacts if the invite feat...I have a OnePlus 3 and I am able to add anyone as contact unless they have a galaxy S8. I have tried pairing via Bluetooth, rebooting both phones, nothing gets the process to work.
Both people can be added as contacts if the invite feature is used, but then messages can only be sent when we are both online, never in offline mode.https://code.briarproject.org/briar/briar/-/issues/1214Don't allow introductions if introducee doesn't support introduction client2022-01-06T14:43:23ZakwizgranDon't allow introductions if introducee doesn't support introduction clientIf the ClientVersioningManager says a contact doesn't support the same major version of the introduction client as us, don't allow an introduction request to be sent.If the ClientVersioningManager says a contact doesn't support the same major version of the introduction client as us, don't allow an introduction request to be sent.https://code.briarproject.org/briar/briar/-/issues/1215Low memory shutdowns2021-04-26T14:04:39ZakwizgranLow memory shutdownsThe low memory shutdown seems to be triggered more easily than expected.
May be related to #1198.The low memory shutdown seems to be triggered more easily than expected.
May be related to #1198.https://code.briarproject.org/briar/briar/-/issues/1220Notification when messages are shown on the display (read receipts)2022-11-18T17:24:07ZmicressorNotification when messages are shown on the display (read receipts)I have
* [X] I have searched open and closed issues for duplicates
There is a read confirmation in the Signal messenger. As soon as the message is shown on the display, the colour of the good signs changes.
Is something like this alre...I have
* [X] I have searched open and closed issues for duplicates
There is a read confirmation in the Signal messenger. As soon as the message is shown on the display, the colour of the good signs changes.
Is something like this already implemented in briar? I didn't find a hint in the wiki and the manual.https://code.briarproject.org/briar/briar/-/issues/1223Detect whether contact being added is on same wifi network2020-11-18T22:05:45ZakwizgranDetect whether contact being added is on same wifi networkWhen adding a contact in person, it would be useful to be able to detect whether the contact is on the same wifi network. We could do this by including a short hash of the SSID in the QR code.When adding a contact in person, it would be useful to be able to detect whether the contact is on the same wifi network. We could do this by including a short hash of the SSID in the QR code.https://code.briarproject.org/briar/briar/-/issues/1224Explain when no transports can be used for adding a contact2020-08-12T16:23:17ZakwizgranExplain when no transports can be used for adding a contactWhen adding a contact in person, there are various circumstances where we can tell as soon as we've scanned the contact's QR code that we won't be able to communicate. For example:
* Both devices support Bluetooth, but neither device kno...When adding a contact in person, there are various circumstances where we can tell as soon as we've scanned the contact's QR code that we won't be able to communicate. For example:
* Both devices support Bluetooth, but neither device knows its own Bluetooth address (Android 8, see #1147)
* Both devices support wifi but they're on different networks (see #1223, #1178)
* One device only supports Bluetooth, the other only supports wifi
If the user declines to activate Bluetooth and there's no wifi connection, we can tell even sooner that we won't be able to communicate.
We should detect these situations and explain the problem to the user in an actionable way.https://code.briarproject.org/briar/briar/-/issues/1226### after a contact's name are confusing2022-10-10T18:35:57ZAndres### after a contact's name are confusingThere are ### after contacts' names in the list of members of a group. These are different for different contacts? What do they mean? Why are they there?There are ### after contacts' names in the list of members of a group. These are different for different contacts? What do they mean? Why are they there?https://code.briarproject.org/briar/briar/-/issues/1231Design protocol for adding contacts remotely2023-02-22T18:15:44ZakwizgranDesign protocol for adding contacts remotelySubtask of #1230.Subtask of #1230.akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1235User testing for adding contacts remotely2022-11-18T17:24:07ZakwizgranUser testing for adding contacts remotely### Workflow Prototype Testing
Briar wants to add support for adding contacts remotely without them having to meet face to face. Before implementing this feature entirely, Briar wants to test an early design prototype to see if users wo...### Workflow Prototype Testing
Briar wants to add support for adding contacts remotely without them having to meet face to face. Before implementing this feature entirely, Briar wants to test an early design prototype to see if users would understand the workflow.
An APKs for testing (which can be installed along-side the official Briar) is available here:
* https://grobox.de/tmp/briar-add-contacts-remotely-user-test.apk
Test Setup: Two testers both install the same test APK on their Android phone. Without being in the same room, they try to add each other as contacts in Briar. The test finishes and succeeds when a new contact was added on both phones. Note that the contact that will be added is fake and purely for testing. While it will appear to be online, you will never be able to exchange messages until the feature is fully implemented.
Please finish the test **before** reading and answering the questions below!
---
### Questions (for after the test!)
1. Did you understand the difference between the two options for adding a contact and which one to choose?
1. When seeing the 'Add a Contact' screen, did you know what to do?
1. How did you exchange the links?
1. Were there any issues when exchanging the links?
1. After entering your contact's link, did you understand what happened?
1. When testing the full version, did you understand the QR code button? Did it confuse? Did you use it?
1. Were you confused about the delay before the contact was added?
1. Is there anything that would have helped you to understand the process better?
Subtask of #1230.Android 1.4Renata GegajRenata Gegajhttps://code.briarproject.org/briar/briar/-/issues/1238Design changes to sync protocol to support multi-block messages2022-06-15T12:02:16ZakwizgranDesign changes to sync protocol to support multi-block messagesSubtask of #1237.Subtask of #1237.Multi-block messageshttps://code.briarproject.org/briar/briar/-/issues/1239Implement changes to sync protocol to support multi-block messages2022-06-15T12:02:16ZakwizgranImplement changes to sync protocol to support multi-block messagesSubtask of #1237.Subtask of #1237.Multi-block messageshttps://code.briarproject.org/briar/briar/-/issues/1240Update database and sync API to support large messages2022-06-15T12:02:16ZakwizgranUpdate database and sync API to support large messagesSubtask of #1237.Subtask of #1237.Multi-block messageshttps://code.briarproject.org/briar/briar/-/issues/1244Update manual for image attachments2021-11-04T11:04:01ZakwizgranUpdate manual for image attachmentsSubtask of #1237.Subtask of #1237.Android 1.4CleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/1259User testing for headless desktop/server app2021-01-21T13:24:56ZakwizgranUser testing for headless desktop/server appSubtask of #1254.Subtask of #1254.Headless MVPhttps://code.briarproject.org/briar/briar/-/issues/1266Use OONI data to identify locations where Tor bridges should be used2020-11-18T21:47:03ZakwizgranUse OONI data to identify locations where Tor bridges should be usedThis should be done in a scriptable way so the list can be updated regularly.
Subtask of #647.This should be done in a scriptable way so the list can be updated regularly.
Subtask of #647.https://code.briarproject.org/briar/briar/-/issues/1278Use split APKs to make app available for Android Go2020-11-18T02:38:55ZakwizgranUse split APKs to make app available for Android GoApparently the Play Store doesn't offer APKs larger than 10 MB to Android Go devices. We should provide architecture-specific (ARM and x86) APKs to keep the size below 10 MB.
Idea stolen from Orbot. :-)
https://developer.android.com/st...Apparently the Play Store doesn't offer APKs larger than 10 MB to Android Go devices. We should provide architecture-specific (ARM and x86) APKs to keep the size below 10 MB.
Idea stolen from Orbot. :-)
https://developer.android.com/studio/build/configure-apk-splitshttps://code.briarproject.org/briar/briar/-/issues/1282Briar loses Tor connectivity when Orbot's VPN mode is activated2023-02-07T15:11:21ZakwizgranBriar loses Tor connectivity when Orbot's VPN mode is activatedTurning on Orbot's VPN mode causes Briar to lose Tor connections to contacts, but the Tor transport is still shown as active. When VPN mode is turned off, connections to contacts are re-established.Turning on Orbot's VPN mode causes Briar to lose Tor connections to contacts, but the Tor transport is still shown as active. When VPN mode is turned off, connections to contacts are re-established.https://code.briarproject.org/briar/briar/-/issues/1283improve password strenght indicator2020-11-18T02:34:08Zwugacohaimprove password strenght indicatorright now if you insert 1234567890 as your password the stenght indicator shows a long green bar, which reassures the user that the password is not weak..which is not the point. The indicator should be improved (KeepassX shows such stren...right now if you insert 1234567890 as your password the stenght indicator shows a long green bar, which reassures the user that the password is not weak..which is not the point. The indicator should be improved (KeepassX shows such strength if you add symbols and letters).https://code.briarproject.org/briar/briar/-/issues/267Touching persistent notification doesn't bring app to foreground2020-11-21T19:28:40ZakwizgranTouching persistent notification doesn't bring app to foregroundThe persistent notification says 'Touch to show the dashboard' but touching it has no effect.The persistent notification says 'Touch to show the dashboard' but touching it has no effect.https://code.briarproject.org/briar/briar/-/issues/22Build external dependencies from source2020-11-21T20:31:32ZakwizgranBuild external dependencies from sourceCreate a build script for building the external dependencies from source. Code should be cloned from git rather than bundled - create a repo on code.briarproject.org if no suitable upstream repo is available.
For Java libraries, ensure ...Create a build script for building the external dependencies from source. Code should be cloned from git rather than bundled - create a repo on code.briarproject.org if no suitable upstream repo is available.
For Java libraries, ensure the target version is set to 6 for Android compatibility.https://code.briarproject.org/briar/briar/-/issues/21Unit tests for encryption using test vectors2020-11-21T20:32:16ZakwizgranUnit tests for encryption using test vectorshttps://code.briarproject.org/briar/briar/-/issues/20Make messages searchable2020-11-21T20:32:52ZakwizgranMake messages searchableWhen a message is fully reassembled, extract a list of words from the message body and place them in a separate DB column, which can be full-text indexed.When a message is fully reassembled, extract a list of words from the message body and place them in a separate DB column, which can be full-text indexed.https://code.briarproject.org/briar/briar/-/issues/18Contacts can't communicate if clock difference is too large2021-07-28T10:11:31ZakwizgranContacts can't communicate if clock difference is too largeIf a device's clock is very inaccurate (e.g. because the user has adjusted the clock when travelling, rather than changing the timezone) then it's possible to add a contact, but not possible to communicate with the contact subsequently b...If a device's clock is very inaccurate (e.g. because the user has adjusted the clock when travelling, rather than changing the timezone) then it's possible to add a contact, but not possible to communicate with the contact subsequently because the devices disagree about which rotation period they're in.
We should check the clock difference when adding a contact and if the difference is excessive, display the time and timezone and warn the users to check that they're using the same timezone. We may also need to make the maximum expected clock difference much larger (on the order of 24 hours rather than an hour), as contacts may change their clocks after adding each other.https://code.briarproject.org/briar/briar/-/issues/16Pairing confirmation pops up when first connecting via Bluetooth2020-11-21T20:34:00ZakwizgranPairing confirmation pops up when first connecting via BluetoothWhen the HTC Wildfire S first connects to another device via Bluetooth (while adding a contact), a dialog pops up asking the user to confirm pairing with the other device. If the user refuses the pairing, the devices fail to connect.
Th...When the HTC Wildfire S first connects to another device via Bluetooth (while adding a contact), a dialog pops up asking the user to confirm pairing with the other device. If the user refuses the pairing, the devices fail to connect.
This device uses the new API -- `BluetoothAdapter.listenUsingInsecureRfcommWithServiceRecord()` and `BluetoothDevice.createInsecureRfcommSocketToServiceRecord()` -- which should not require confirmation.https://code.briarproject.org/briar/briar/-/issues/1285Support OPML feeds2020-11-18T02:31:16ZakwizgranSupport OPML feedsA user asked for the ability to import OPML feeds as well as RSS. It looks like ROME has a module for OPML: http://rometools.github.io/rome-opml/A user asked for the ability to import OPML feeds as well as RSS. It looks like ROME has a module for OPML: http://rometools.github.io/rome-opml/https://code.briarproject.org/briar/briar/-/issues/1287Design update2020-11-18T02:29:31ZAllan NordhøyDesign updateSaw the interest in having some design done on OSD, couldn't make screenshots, so in writing for the time being.
Made a little list of my thoughts on getting things up and running.
Would be really nice to have one screenshot of everythi...Saw the interest in having some design done on OSD, couldn't make screenshots, so in writing for the time being.
Made a little list of my thoughts on getting things up and running.
Would be really nice to have one screenshot of everything to work with,then i could make a big image of it showing how different tasks are pieced together.
This is setting up stuff:
---
**Screen 1**
s/Welcome to Briar/Welcome/
! Put small logo top center
! Remove infotag
Username (in gray)
> ______________________ x ← red underline, turns green whenever the required amount of char has been entered
"Shown next to any content you post. Can not be changed."
// throw error message if illegal chars are entered
Password (in gray)
> ______________________ x
Can be changed from settings.
---
**Screen 2**
s/Choose a password/Password/
* Pick a secure password you remember (in gray)
> ______________________ ← starts out as a red line, progresses through the security stages, checkmark
* Confirm (in gray)
> ______________________ ← red line that turns green once matching checkmark
Press Next and passwords aren't matching, get error message
---
**Screen 3**
s/Background connections/Permissions
Access BT settings
> ______________________ ✓
Control vibration
> ______________________ ✓
Full network access
> ______________________ ✓
Pair with BT devices
> ______________________ ✓
Prevent phone from sleeping
> ______________________ ✓
View network connections
> ______________________ ✓
View Wi-Fi connections
> ______________________ ✓
Take pictures and video (moved here instead of being in the add contact dialog) (F-droid does not say "record" video.)
> ______________________ x s/Allow connections/Grant/
battery optimization exception.
> ______________________ x [Grant]
Needed to stay connected in the background
Same green underline when OK, red when not. checkmark
s/CREATE ACCOUNT/Create account/
--
**Screen 4**
s/add a contanct/Adding contacts/
This should be the landing page when having done the setup. (?)
--
Add "about" field in settings with license, contributors, where to find code, and translation platform.
There is a huge amount of polishing that can be done in other areas, and I thought this was a good start.https://code.briarproject.org/briar/briar/-/issues/1290Replying in ThreadListActivity does not highlight post when using hardware ke...2020-11-18T02:25:34ZTorsten GroteReplying in ThreadListActivity does not highlight post when using hardware keyboardI noticed this in an API 15 Android emulator which uses the hosts' hardware keyboard. Steps to reproduce:
1) Open a forum or private group thread
2) Add a message
3) Click the reply button on that message
Expected behavior: Message tha...I noticed this in an API 15 Android emulator which uses the hosts' hardware keyboard. Steps to reproduce:
1) Open a forum or private group thread
2) Add a message
3) Click the reply button on that message
Expected behavior: Message that is being replied to is scrolled up and highlighted. EditText hint changes to reply.
Observed behavior: Only EditText hint changes to reply.
This is because the code uses `OnKeyboardShownListener` to highlight the message. But this isn't called when using a hardware keyboard.https://code.briarproject.org/briar/briar/-/issues/1292Test Briar with power management apps2020-11-16T11:01:17ZakwizgranTest Briar with power management appsTest whether Briar is killed, loses connectivity, or is listed as power-intensive by power management apps such as the following:
https://play.google.com/store/apps/details?id=com.oasisfeng.greenify
https://play.google.com/store/apps/d...Test whether Briar is killed, loses connectivity, or is listed as power-intensive by power management apps such as the following:
https://play.google.com/store/apps/details?id=com.oasisfeng.greenify
https://play.google.com/store/apps/details?id=com.avast.android.batterysaver
https://play.google.com/store/apps/details?id=com.battery.power.batterysaverhttps://code.briarproject.org/briar/briar/-/issues/1296Feature request: Use SMS as data channel for selected users2019-09-30T11:05:39ZJens KorteFeature request: Use SMS as data channel for selected usersSMS could be used as an additional data channel beside bluetooth, WLAN and internet. Briar would become a replacement for an encrypting SMS app then. Even if the signal strength is weak, SMS will be send if signal is acceptable for a sho...SMS could be used as an additional data channel beside bluetooth, WLAN and internet. Briar would become a replacement for an encrypting SMS app then. Even if the signal strength is weak, SMS will be send if signal is acceptable for a short time.https://code.briarproject.org/briar/briar/-/issues/1299Unable to add contacts: IP address is not in LAN2020-11-18T02:17:29ZakwizgranUnable to add contacts: IP address is not in LAN* Android version: 5.1.1
* Phone model: Nubia NX512J
* Briar version: 1.0.3 (e83d8bb)
* User feedback: "Add contacts does not work."
```
"Bluetooth address" : "90:[scrubbed]:1D",
"Bluetooth address from settings" : "90:[scru...* Android version: 5.1.1
* Phone model: Nubia NX512J
* Briar version: 1.0.3 (e83d8bb)
* User feedback: "Add contacts does not work."
```
"Bluetooth address" : "90:[scrubbed]:1D",
"Bluetooth address from settings" : "90:[scrubbed]:1D",
"Bluetooth status" : "Available, enabled, connectable, not discoverable",
"Mobile data status" : "Available, enabled, not connected",
"Wi-Fi Direct" : "Supported",
"Wi-Fi address" : "37.[scrubbed].223",
"Wi-Fi status" : "Available, enabled, connected"
```
The phone is connected to wifi, but the IP address is not a LAN address.
Possibly related to #699, #1209.https://code.briarproject.org/briar/briar/-/issues/1300Share button for RSS articles2020-11-18T02:15:37ZakwizgranShare button for RSS articlesUser feedback: "Nice RSS-Feature! I miss the "share"-button though. It is not very convenient to only share the link without the title of the article."User feedback: "Nice RSS-Feature! I miss the "share"-button though. It is not very convenient to only share the link without the title of the article."https://code.briarproject.org/briar/briar/-/issues/1302Connection chooser rejects connection when retrying adding a contact2021-04-07T16:57:57ZakwizgranConnection chooser rejects connection when retrying adding a contact* Android version: 8.0.0
* Phone model: Samsung SM-G950F (dreamltexx)
* Briar version: 1.0.5 (183f0c5)
* User feedback: "Add contacts did not work. Devices were in the same WLAN."
Log:
```
05-28 10:31:56.933 I/KeyAgreementConnector: org...* Android version: 8.0.0
* Phone model: Samsung SM-G950F (dreamltexx)
* Briar version: 1.0.5 (183f0c5)
* User feedback: "Add contacts did not work. Devices were in the same WLAN."
Log:
```
05-28 10:31:56.933 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:31:57.434 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:31:57.935 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:31:58.435 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:31:58.936 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:31:59.437 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:31:59.938 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:32:00.197 I/TorPlugin: OR connection CLOSED
05-28 10:32:00.208 I/TorPlugin: Online: true, wifi: true
05-28 10:32:00.208 I/TorPlugin: Country code: DE
05-28 10:32:00.208 I/TorPlugin: Enabling network
05-28 10:32:00.440 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:32:00.940 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:32:01.441 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:32:01.941 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:32:02.442 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:32:02.943 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:32:03.443 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:32:03.944 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:32:04.445 I/KeyAgreementConnector: org.briarproject.bramble.lan: Waiting for data
05-28 10:32:04.528 I/KeyAgreementConnector: Stopping BQP listeners
05-28 10:32:04.530 I/ConnectionChooserImpl: Closing 0 unused connections
05-28 10:32:04.531 I/ConnectionChooserImpl: java.net.SocketException: Socket closed
05-28 10:32:04.533 I/CameraView: Opening camera
05-28 10:32:04.539 I/CameraView: Using back-facing camera
05-28 10:32:04.602 I/CameraView: Screen rotation 0 degrees, camera orientation 90 degrees
05-28 10:32:04.605 I/CameraView: Scene modes: [auto, hdr]
05-28 10:32:04.606 I/CameraView: Focus modes: [auto, infinity, macro, continuous-video, continuous-picture]
05-28 10:32:04.606 I/CameraView: Size 1920x1080, stretch 1.03125, zoom 4.1472, score 0.23381966
05-28 10:32:04.606 I/CameraView: Size 1440x1080, stretch 1.375, zoom 3.1104, score 0.23381966
05-28 10:32:04.606 I/CameraView: Size 1088x1088, stretch 1.8333333, zoom 2.367488, score 0.2303938
05-28 10:32:04.606 I/CameraView: Size 1280x720, stretch 1.03125, zoom 1.8432, score 0.52609426
05-28 10:32:04.606 I/CameraView: Size 1056x704, stretch 1.2222222, zoom 1.486848, score 0.55027944
05-28 10:32:04.606 I/CameraView: Size 1024x768, stretch 1.375, zoom 1.572864, score 0.46238753
05-28 10:32:04.606 I/CameraView: Size 960x720, stretch 1.375, zoom 1.3824, score 0.52609426
05-28 10:32:04.606 I/CameraView: Size 800x450, stretch 1.03125, zoom 1.3888888, score 0.6981818
05-28 10:32:04.606 I/CameraView: Size 720x720, stretch 1.8333333, zoom 1.0368, score 0.52609426
05-28 10:32:04.606 I/CameraView: Size 720x480, stretch 1.2222222, zoom 1.4467592, score 0.56552726
05-28 10:32:04.606 I/CameraView: Size 640x480, stretch 1.375, zoom 1.6276041, score 0.44683638
05-28 10:32:04.606 I/CameraView: Size 352x288, stretch 1.5, zoom 4.9321337, score 0.135168
05-28 10:32:04.606 I/CameraView: Size 320x240, stretch 1.375, zoom 6.5104165, score 0.111709096
05-28 10:32:04.606 I/CameraView: Size 256x144, stretch 1.03125, zoom 13.563368, score 0.07149382
05-28 10:32:04.607 I/CameraView: Size 176x144, stretch 1.5, zoom 19.728535, score 0.033792
05-28 10:32:04.607 I/CameraView: Best size 800x450
05-28 10:32:04.619 I/CameraView: Video stabilisation enabled: false
05-28 10:32:04.619 I/CameraView: Scene mode: auto
05-28 10:32:04.619 I/CameraView: Focus mode: continuous-picture
05-28 10:32:04.619 I/CameraView: Flash mode: off
05-28 10:32:04.619 I/CameraView: Preview size: 800x450
05-28 10:32:04.647 I/KeyAgreementConnector: Starting BQP listeners
05-28 10:32:04.650 I/BluetoothConnectionLimiterImpl: Key agreement ended
05-28 10:32:04.678 I/KeyAgreementConnector: Listening via org.briarproject.bramble.lan
05-28 10:32:04.681 I/BluetoothConnectionLimiterImpl: Key agreement started, closing 0 connections
05-28 10:32:04.704 I/CameraView: Surface created
05-28 10:32:04.704 I/CameraView: Surface changed: 1080x1980
05-28 10:32:04.708 I/CameraView: Size 1920x1080, stretch 1.03125, zoom 4.1472, score 0.23381966
05-28 10:32:04.708 I/CameraView: Size 1440x1080, stretch 1.375, zoom 3.1104, score 0.23381966
05-28 10:32:04.708 I/CameraView: Size 1088x1088, stretch 1.8333333, zoom 2.367488, score 0.2303938
05-28 10:32:04.708 I/CameraView: Size 1280x720, stretch 1.03125, zoom 1.8432, score 0.52609426
05-28 10:32:04.708 I/CameraView: Size 1056x704, stretch 1.2222222, zoom 1.486848, score 0.55027944
05-28 10:32:04.708 I/CameraView: Size 1024x768, stretch 1.375, zoom 1.572864, score 0.46238753
05-28 10:32:04.708 I/CameraView: Size 960x720, stretch 1.375, zoom 1.3824, score 0.52609426
05-28 10:32:04.708 I/CameraView: Size 800x450, stretch 1.03125, zoom 1.3888888, score 0.6981818
05-28 10:32:04.708 I/CameraView: Size 720x720, stretch 1.8333333, zoom 1.0368, score 0.52609426
05-28 10:32:04.708 I/CameraView: Size 720x480, stretch 1.2222222, zoom 1.4467592, score 0.56552726
05-28 10:32:04.708 I/CameraView: Size 640x480, stretch 1.375, zoom 1.6276041, score 0.44683638
05-28 10:32:04.708 I/CameraView: Size 352x288, stretch 1.5, zoom 4.9321337, score 0.135168
05-28 10:32:04.708 I/CameraView: Size 320x240, stretch 1.375, zoom 6.5104165, score 0.111709096
05-28 10:32:04.708 I/CameraView: Size 256x144, stretch 1.03125, zoom 13.563368, score 0.07149382
05-28 10:32:04.708 I/CameraView: Size 176x144, stretch 1.5, zoom 19.728535, score 0.033792
05-28 10:32:04.708 I/CameraView: Best size 800x450
05-28 10:32:04.718 I/CameraView: Video stabilisation enabled: false
05-28 10:32:04.719 I/CameraView: Scene mode: auto
05-28 10:32:04.719 I/CameraView: Focus mode: continuous-picture
05-28 10:32:04.719 I/CameraView: Flash mode: off
05-28 10:32:04.719 I/CameraView: Preview size: 800x450
05-28 10:32:04.719 I/CameraView: Starting preview
05-28 10:32:04.946 I/ConnectionChooserImpl: Got connection for org.briarproject.bramble.lan
05-28 10:32:04.946 I/ConnectionChooserImpl: Already stopped
05-28 10:32:05.046 I/ShowQrCodeFragment: Local payload is 36 bytes
05-28 10:32:06.819 I/Poller: Polling plugin org.briarproject.bramble.lan
05-28 10:32:07.890 I/CameraView: Stopping preview
05-28 10:32:07.890 I/KeyAgreementConnector: Stopping BQP listeners
05-28 10:32:07.891 I/ConnectionChooserImpl: Closing 0 unused connections
05-28 10:32:07.891 I/BluetoothConnectionLimiterImpl: Key agreement ended
05-28 10:32:07.891 I/ConnectionChooserImpl: java.net.SocketException: Socket closed
05-28 10:32:08.068 I/CameraView: Releasing camera
05-28 10:32:08.182 I/QrCodeDecoder: Camera has changed, ignoring preview frame
05-28 10:32:08.192 I/CameraView: Surface destroyed
```
Notes:
* 10:31:56.933 - At the start of the log the device has made a connection via wifi and it's waiting for data - this might be because the other device hasn't scanned this device's QR code yet.
* 10:32:04.528 - The connection attempt is cancelled and the ConnectionChooserImpl is stopped.
* 10:32:04.533 - The camera is reopened. This is too soon after the previous event to be the result of a manual action.
* 10:32:04.647 - A new connection attempt starts. The BluetoothConnectionLimiter gets a KeyAgreementStoppedListeningEvent when the old key agreement task is stopped, then a KeyAgreementListeningEvent when the new task is started.
* 10:32:04.946 - A connection is made via wifi, but the ConnectionChooserImpl rejects it because it's already been stopped
It looks like the ConnectionChooserImpl instance is being reused, which shouldn't happen. This may mean the KeyAgreementTaskImpl instance is also being reused.https://code.briarproject.org/briar/briar/-/issues/1303IllegalArgumentException: parameter must be a descendant of this view2021-11-04T11:04:02ZakwizgranIllegalArgumentException: parameter must be a descendant of this viewTwo crash reports from the same user:
* Android version: 7.1.2
* Phone model: Samsung GT-I9100
* Briar version:
* 1.0.4 (f31219d)
* 1.0.5 (183f0c5)
* User feedback:
* "Sending message to contact. (Message contains \" and ' charact...Two crash reports from the same user:
* Android version: 7.1.2
* Phone model: Samsung GT-I9100
* Briar version:
* 1.0.4 (f31219d)
* 1.0.5 (183f0c5)
* User feedback:
* "Sending message to contact. (Message contains \" and ' characters.)"
* "Briar in foreground, no user action."
First log:
```
05-18 13:22:51.117 I/EmojiProvider: Loaded page emoji_smiley_people.png
05-18 13:22:55.909 I/KeyboardAwareLinearLayout: onKeyboardOpen(282)
05-18 13:23:47.110 I/ConversationActivity: Storing message took 298 ms
05-18 13:23:49.311 I/ConversationActivity: Messages sent
05-18 13:23:49.598 I/BriarRecyclerView: Updating Content...
05-18 13:23:49.630 I/ConversationActivity: Marking read took 2 ms
05-18 13:23:51.009 I/ConversationActivity: Messages acked
05-18 13:23:52.434 I/BriarRecyclerView: Adding Handler Callback
05-18 13:23:52.435 I/AndroidDatabaseConfig: Database key has been set: true
05-18 13:23:52.634 I/ContactListFragment: Full load took 192 ms
```
Crashed at 13:23:53.397
Second log:
```
05-25 09:06:43.627 I/EmojiProvider: Loading page emoji_smiley_people.png
05-25 09:06:43.836 I/ConversationActivity: Marking read took 207 ms
05-25 09:06:44.282 I/EmojiProvider: Loaded page emoji_smiley_people.png
05-25 09:06:48.501 I/ConversationActivity: Storing message took 366 ms
05-25 09:06:48.710 I/BriarRecyclerView: Adding Handler Callback
05-25 09:06:48.711 I/AndroidDatabaseConfig: Database key has been set: true
```
Crashed at 09:06:49.050
Stacktrace:
```
java.lang.IllegalArgumentException: parameter must be a descendant of this view
at android.view.ViewGroup.offsetRectBetweenParentAndChild(ViewGroup.java:5459)
at android.view.ViewGroup.offsetDescendantRectToMyCoords(ViewGroup.java:5388)
at android.view.ViewRootImpl.scrollToRectOrFocus(ViewRootImpl.java:3073)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:2683)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2608)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2215)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6344)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
at android.view.Choreographer.doCallbacks(Choreographer.java:686)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
```
It looks like both crashes happened after sending and receiving private messages containing emoji, then switching away from the private conversation. In the first crash the switch was to the contact list - in the second crash it's not clear.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1308Configurable colours for text balloons2020-11-18T02:03:46ZakwizgranConfigurable colours for text balloonsA user asked for the ability to change the colours of text balloons.A user asked for the ability to change the colours of text balloons.https://code.briarproject.org/briar/briar/-/issues/1310NPE during enter transition2021-11-04T11:03:44ZakwizgranNPE during enter transition* Android version: 7.1.2
* Phone model: Samsung GT-I9100
* Briar version: 1.0.4 (f31219d)
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.Window.getAllowReturnTransitionOverlap()' o...* Android version: 7.1.2
* Phone model: Samsung GT-I9100
* Briar version: 1.0.4 (f31219d)
Stacktrace:
```
java.lang.NullPointerException: Attempt to invoke virtual method 'boolean android.view.Window.getAllowReturnTransitionOverlap()' on a null object reference
at android.app.EnterTransitionCoordinator.allowOverlappingTransitions(EnterTransitionCoordinator.java:676)
at android.app.EnterTransitionCoordinator.sendSharedElementDestination(EnterTransitionCoordinator.java:188)
at android.app.EnterTransitionCoordinator.viewsReady(EnterTransitionCoordinator.java:129)
at android.app.EnterTransitionCoordinator$2.onPreDraw(EnterTransitionCoordinator.java:154)
at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:944)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2205)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1254)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6344)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:874)
at android.view.Choreographer.doCallbacks(Choreographer.java:686)
at android.view.Choreographer.doFrame(Choreographer.java:621)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:860)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6186)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:889)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:779)
```
Unfortunately there's no clue in the stacktrace about where this crash happens. Might have been fixed by !821 if we're lucky.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1311Secure Scuttlebutt plugin2020-11-17T18:26:34ZakwizgranSecure Scuttlebutt pluginA user asked for the ability to use Secure Scuttlebutt as a transport.A user asked for the ability to use Secure Scuttlebutt as a transport.https://code.briarproject.org/briar/briar/-/issues/1312Include user manual in app2022-11-18T17:32:16ZakwizgranInclude user manual in appA user asked for the manual to be included in the app. This was always the plan but it doesn't look like we had a ticket for it.
Related to #94, #315.A user asked for the manual to be included in the app. This was always the plan but it doesn't look like we had a ticket for it.
Related to #94, #315.CleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/1313Tor fails to start if previous Tor instance is still running2023-03-15T12:55:10ZakwizgranTor fails to start if previous Tor instance is still runningI ran into this issue a couple of times while debugging #1293, and now I've seen it in a user feedback log (also affected by #1293, as far as I can tell).
```
05-25 14:25:08.926 I/TorPlugin: May 25 16:25:08.926 [notice] Tor 0.2.9.14 (gi...I ran into this issue a couple of times while debugging #1293, and now I've seen it in a user feedback log (also affected by #1293, as far as I can tell).
```
05-25 14:25:08.926 I/TorPlugin: May 25 16:25:08.926 [notice] Tor 0.2.9.14 (git-73e1a45b461ab669) running on Linux with Libevent 2.0.22-stable, OpenSSL 1.0.2n and Zlib 1.2.8.
05-25 14:25:08.939 I/TorPlugin: May 25 16:25:08.927 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
05-25 14:25:08.939 I/TorPlugin: May 25 16:25:08.927 [notice] Read configuration file "/data/data/org.briarproject.briar.android/app_tor/torrc".
05-25 14:25:08.939 I/TorPlugin: May 25 16:25:08.935 [notice] Opening Control listener on 127.0.0.1:59051
05-25 14:25:08.939 I/TorPlugin: May 25 16:25:08.935 [warn] Could not bind to 127.0.0.1:59051: Address already in use. Is Tor already running?
05-25 14:25:08.940 I/TorPlugin: May 25 16:25:08.935 [warn] Failed to parse/validate config: Failed to bind one of the listener ports.
05-25 14:25:08.940 I/TorPlugin: May 25 16:25:08.935 [err] Reading config failed--see warnings above.
05-25 14:25:08.940 W/TorPlugin: Tor exited with value 1
```
The problem occurs because the previous Tor instance is still using the control port. This is unlikely to happen if Tor starts and stops normally, because the shutdown command takes effect very quickly. But if Briar fails to open the control connection (e.g. due to #1293 or similar bugs), Tor won't exit until a short time after Briar exits, during which time Briar may have been relaunched. I think this could also happen if Briar crashes and is immediately relaunched.https://code.briarproject.org/briar/briar/-/issues/1315Wifi icon is sometimes green when not connected to wifi2020-11-17T18:29:53ZakwizgranWifi icon is sometimes green when not connected to wifi* Android version: 7.1.2
* Phone model: Samsung GT-I9195 (lineage_serranoltexx)
* Briar version: 1.0.8 (a44a68f)
* User feedback: "Sometimes (also while writing this) the Wifi icon is green even when Wifi is turned off."
The log doesn't...* Android version: 7.1.2
* Phone model: Samsung GT-I9195 (lineage_serranoltexx)
* Briar version: 1.0.8 (a44a68f)
* User feedback: "Sometimes (also while writing this) the Wifi icon is green even when Wifi is turned off."
The log doesn't show any sign of connectivity changes, so this may be a UI issue.https://code.briarproject.org/briar/briar/-/issues/1320Add backpressure to incoming sync sessions2020-11-18T01:34:09ZakwizgranAdd backpressure to incoming sync sessionsIncomingSession reads records from the transport as quickly as possible and queues them to be added to the DB. If the transport is faster than the DB, this will result in an unbounded number of records being queued. This uses an unbounde...IncomingSession reads records from the transport as quickly as possible and queues them to be added to the DB. If the transport is faster than the DB, this will result in an unbounded number of records being queued. This uses an unbounded amount of memory, which is a DoS risk.
Add a backpressure mechanism that limits the amount of queued data and delays reading from the connection when the queue is full.https://code.briarproject.org/briar/briar/-/issues/1321Add backpressure to outgoing duplex sync sessions2020-11-18T01:37:42ZakwizgranAdd backpressure to outgoing duplex sync sessionsDuplexOutgoingSession reads records from the database as quickly as possible and queues them for transmission. If the DB is faster than the transport, this will result in all sendable records being queued. This uses an unbounded amount o...DuplexOutgoingSession reads records from the database as quickly as possible and queues them for transmission. If the DB is faster than the transport, this will result in all sendable records being queued. This uses an unbounded amount of memory and increases the risk of records being lost before they're transmitted, leading to unnecessary retransmissions.
Add a backpressure mechanism that limits the amount of queued data and delays DB reads when the queue is full.
This will be a bit more complex than #1319 because DuplexOutgoingSession can start DB queries in response to events.https://code.briarproject.org/briar/briar/-/issues/1325Use Psiphon when Tor bridges are not reachable2020-11-18T01:38:59ZTorsten GroteUse Psiphon when Tor bridges are not reachableWe have been encouraged to use [Psiphon](https://www.psiphon.ca/) as a circumvention technology.
Here's how to add it:
> - Start the [Psiphon Library](https://github.com/Psiphon-Labs/psiphon-tunnel-core/tree/master/MobileLibrary/Androi...We have been encouraged to use [Psiphon](https://www.psiphon.ca/) as a circumvention technology.
Here's how to add it:
> - Start the [Psiphon Library](https://github.com/Psiphon-Labs/psiphon-tunnel-core/tree/master/MobileLibrary/Android) and get its SOCKS proxy port
> - Configure the Tor client run by Briar to proxy through Psiphon using the "Socks5Proxy" config setting (https://www.torproject.org/docs/tor-manual.html.en)
> - The Tor client traffic egresses from the Psiphon server, connects to a Tor node, and gets to hidden services from there. Psiphon doesn't need to know about the hidden service part.https://code.briarproject.org/briar/briar/-/issues/1326Prevent old messages from aborting client protocols2020-11-18T01:39:44ZakwizgranPrevent old messages from aborting client protocolsSome client protocols that use an abort message to reset the state machine are vulnerable to a race condition where incoming messages that were already in flight when the abort message was sent are received after resetting, causing furth...Some client protocols that use an abort message to reset the state machine are vulnerable to a race condition where incoming messages that were already in flight when the abort message was sent are received after resetting, causing further aborts. This is harmless if the state machine is still in the start state when the messages are received, but it may cause problems if the state machine has moved out of the start state.
The problem can be avoided by using an abort counter:
* Each party keeps a counter for each other party they sync with
* The counter is part of the session state
* The counter is initialised to zero
* The counter is reset to zero if the other party is removed as a contact
* The counter is included in every outgoing message
* Incoming messages with counters lower than the local counter are ignored
* The counter is incremented after sending or receiving an abort message
If two parties concurrently abort the protocol they may ignore each other's abort messages, but this appears to be harmless: either both will increment their counters once, or both twice.
Client protocols that use abort messages without counters will need to be upgraded to accommodate counters. It may be possible to do this with a minor version upgrade.https://code.briarproject.org/briar/briar/-/issues/1330Can't click "got it" during password setup2019-02-28T19:44:25ZShannon StorkCan't click "got it" during password setupWhen a tester set up a password and clicked the (i) on the top right, he couldn't click "got it" and had to tap out of the box. Device: Samsung s8+ (Android 8.x)When a tester set up a password and clicked the (i) on the top right, he couldn't click "got it" and had to tap out of the box. Device: Samsung s8+ (Android 8.x)https://code.briarproject.org/briar/briar/-/issues/1331Tor warns about unused DT entry2020-11-16T11:01:26ZakwizgranTor warns about unused DT entryTor prints the following warning on the Moto G 4G (Android 5.1):
```
06-23 11:36:49.198 I/TorPlugin(13958): Jun 23 11:36:49.196 [notice] Tor 0.2.9.15 (git-4e6ac9830840448e) running on Linux with Libevent 2.0.22-stable, OpenSSL 1.0.2o an...Tor prints the following warning on the Moto G 4G (Android 5.1):
```
06-23 11:36:49.198 I/TorPlugin(13958): Jun 23 11:36:49.196 [notice] Tor 0.2.9.15 (git-4e6ac9830840448e) running on Linux with Libevent 2.0.22-stable, OpenSSL 1.0.2o and Zlib 1.2.8.
06-23 11:36:49.198 I/TorPlugin(13958): WARNING: linker: /data/data/org.briarproject.briar.android.debug/app_tor/tor: unused DT entry: type 0x6ffffffe arg 0x5347c
06-23 11:36:49.200 I/TorPlugin(13958): Jun 23 11:36:49.199 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
06-23 11:36:49.200 I/TorPlugin(13958): WARNING: linker: /data/data/org.briarproject.briar.android.debug/app_tor/tor: unused DT entry: type 0x6fffffff arg 0x3
06-23 11:36:49.202 I/TorPlugin(13958): Jun 23 11:36:49.201 [notice] Read configuration file "/data/data/org.briarproject.briar.android.debug/app_tor/torrc".
06-23 11:36:49.246 I/TorPlugin(13958): Jun 23 11:36:49.226 [notice] Opening Control listener on 127.0.0.1:59051
06-23 11:36:49.247 I/TorPlugin(13958): Jun 23 11:36:49.226 [notice] DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections.
```
[This StackOverflow answer](https://stackoverflow.com/questions/33206409/unused-dt-entry-type-0x1d-arg/41900551#41900551) suggests the warning is caused by using the wrong NDK compiler flags, and may be upgraded to an error in future Android versions.https://code.briarproject.org/briar/briar/-/issues/1333Screen overlay warning is shown when dismissing dialog2020-11-18T01:44:17ZakwizgranScreen overlay warning is shown when dismissing dialogWhile smoke testing the 1.0.11 release on the Galaxy Nexus (Android 4.3), I saw the screen overlay warning after dismissing the error dialog and tapping the URL text field in the RSS import screen. Perhaps an overlay is used to animate t...While smoke testing the 1.0.11 release on the Galaxy Nexus (Android 4.3), I saw the screen overlay warning after dismissing the error dialog and tapping the URL text field in the RSS import screen. Perhaps an overlay is used to animate the dismissal of the dialog? I wasn't able to reproduce the issue.https://code.briarproject.org/briar/briar/-/issues/1335Delete account without signing out2023-07-11T10:11:01ZakwizgranDelete account without signing outA user asked for the ability to delete their account in an emergency without signing out and using the "forgot password" button.A user asked for the ability to delete their account in an emergency without signing out and using the "forgot password" button.https://code.briarproject.org/briar/briar/-/issues/1337Scroll to bottom when writing new post in private group2020-11-18T01:46:13ZakwizgranScroll to bottom when writing new post in private groupUser feedback: "In private conversations, when you tap the text bar to begin typing and it expands, the message history lifts up as well so that you are still seeing the most recent message above what you are typing. In groups, that is n...User feedback: "In private conversations, when you tap the text bar to begin typing and it expands, the message history lifts up as well so that you are still seeing the most recent message above what you are typing. In groups, that is not the case. When the typing bar expands, it covers the most recent messages and you have to scroll down to see them. I find the behavior in the private conversations more convenient."https://code.briarproject.org/briar/briar/-/issues/1342BriarService dies, but retains database key2020-11-17T16:11:35ZTorsten GroteBriarService dies, but retains database keySome time ago, I opened Briar and the app was starting the `NavDrawerActivity` strangely slow. When it came up, all contacts were offline and all plugins in the NavDrawer were also offline. They came online slowly afterwards, but the app...Some time ago, I opened Briar and the app was starting the `NavDrawerActivity` strangely slow. When it came up, all contacts were offline and all plugins in the NavDrawer were also offline. They came online slowly afterwards, but the app seemed to have been dead. The first time, I couldn't get useful logs, but just now it happened again and I could retrieve the following log.
It looks like the app was kind of restarting at 13:42 but without creating/starting `BriarService`. When I opened the app at 15:40 the service got finally started and still found the key in `AndroidDatabaseConfig`.
```
07-12 13:42:38.551 org.briarproject.briar.android I/BriarApplicationImpl: Created
07-12 13:42:38.699 org.briarproject.briar.android I/AndroidDatabaseConfig: Database directory: /data/user/0/org.briarproject.briar.android/app_db
07-12 13:42:38.721 org.briarproject.briar.android I/CryptoComponentImpl: Default SecureRandom: AndroidOpenSSL SHA1PRNG
07-12 13:42:38.827 org.briarproject.briar.android I/zygote64: Do partial code cache collection, code=29KB, data=20KB
07-12 13:42:38.828 org.briarproject.briar.android I/zygote64: After code cache collection, code=29KB, data=20KB
Increasing code cache capacity to 128KB
07-12 13:42:38.927 org.briarproject.briar.android I/zygote64: Do partial code cache collection, code=61KB, data=40KB
After code cache collection, code=59KB, data=40KB
Increasing code cache capacity to 256KB
07-12 13:42:38.932 org.briarproject.briar.android I/CryptoComponentImpl: Installed SecureRandom: LinuxPRNG SHA1PRNG
07-12 13:42:39.970 org.briarproject.briar.android I/LifecycleManagerImpl: Registering executor TimeLoggingExecutor
07-12 13:42:39.971 org.briarproject.briar.android I/LifecycleManagerImpl: Registering executor ThreadPoolExecutor
Registering executor ScheduledThreadPoolExecutor
07-12 13:42:39.981 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service KeyManagerImpl
Registering executor TimeLoggingExecutor
07-12 13:42:39.999 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service ValidationManagerImpl
07-12 13:42:40.015 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client ClientVersioningManagerImpl
Registering service ClientVersioningManagerImpl
07-12 13:42:40.020 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client TransportPropertyManagerImpl
07-12 13:42:40.021 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service PluginManagerImpl
07-12 13:42:40.034 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client BlogManagerImpl
07-12 13:42:40.041 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client FeedManagerImpl
07-12 13:42:40.069 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client GroupInvitationManagerImpl
07-12 13:42:40.072 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client MessagingManagerImpl
07-12 13:42:40.090 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client ForumSharingManagerImpl
07-12 13:42:40.094 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client BlogSharingManagerImpl
07-12 13:42:40.116 org.briarproject.briar.android I/LifecycleManagerImpl: Registering client IntroductionManagerImpl
07-12 13:42:40.129 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service AndroidNotificationManagerImpl
07-12 13:42:40.130 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service NetworkUsageLogger
07-12 13:42:40.131 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service DozeWatchdogImpl
07-12 13:42:40.132 org.briarproject.briar.android D/StrictMode: StrictMode policy violation; ~duration=1347 ms: android.os.StrictMode$StrictModeUnbufferedIOViolation: policy=65596 violation=32
at android.os.StrictMode$AndroidBlockGuardPolicy.onUnbufferedIO(StrictMode.java:1427)
at libcore.io.IoTracker.trackIo(IoTracker.java:35)
at java.io.FileOutputStream.write(FileOutputStream.java:325)
at java.io.DataOutputStream.write(DataOutputStream.java:107)
at java.io.FilterOutputStream.write(FilterOutputStream.java:97)
at org.briarproject.bramble.system.AbstractSecureRandomProvider.writeToEntropyPool(AbstractSecureRandomProvider.java:30)
at org.briarproject.bramble.system.AndroidSecureRandomProvider.writeToEntropyPool(AndroidSecureRandomProvider.java:42)
at org.briarproject.bramble.system.LinuxSecureRandomProvider.writeSeed(LinuxSecureRandomProvider.java:48)
at org.briarproject.bramble.system.AndroidSecureRandomProvider.writeSeed(AndroidSecureRandomProvider.java:72)
at org.briarproject.bramble.system.LinuxSecureRandomProvider.getProvider(LinuxSecureRandomProvider.java:40)
at org.briarproject.bramble.crypto.CryptoComponentImpl.<init>(CryptoComponentImpl.java:65)
at org.briarproject.bramble.crypto.CryptoModule.provideCryptoComponent(CryptoModule.java:32)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.get(CryptoModule_ProvideCryptoComponentFactory.java:26)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.get(CryptoModule_ProvideCryptoComponentFactory.java:9)
at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
at org.briarproject.bramble.lifecycle.LifecycleModule_ProvideLifecycleManagerFactory.get(LifecycleModule_ProvideLifecycleManagerFactory.java:39)
at org.briarproject.bramble.lifecycle.LifecycleModule_ProvideLifecycleManagerFactory.get(LifecycleModule_ProvideLifecycleManagerFactory.java:13)
at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
at org.briarproject.bramble.transport.TransportModule_ProvideKeyManagerFactory.get(TransportModule_ProvideKeyManagerFactory.java:30)
at org.briarproject.bramble.transport.TransportModule_ProvideKeyManagerFactory.get(TransportModule_ProvideKeyManagerFactory.java:10)
at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
at org.briarproject.bramble.contact.ContactManagerImpl_Factory.get(ContactManagerImpl_Factory.java:23)
at org.briarproject.bramble.contact.ContactManagerImpl_Factory.get(ContactManagerImpl_Factory.java:9)
at org.briarproject.bramble.contact.ContactModule_GetContactManagerFactory.get(ContactModule_GetContactManagerFactory.java:22)
at org.briarproject.bramble.contact.ContactModule_GetContactManagerFactory.get(ContactModule_GetContactManagerFactory.java:8)
at dagger.internal.ScopedProvider.get(ScopedProvider.java:46)
at org.briarproject.bramble.contact.ContactModule$EagerSingletons_MembersInjector.injectMembers(ContactModule$EagerSingletons_MembersInjector.java:23)
at org.briarproject.bramble.contact.ContactModule$EagerSingletons_MembersInjector.injectMembers(ContactModule$EagerSingletons_MembersInjector.java:9)
at org.briarproject.briar.android.DaggerAndroidComponent.inject(DaggerAndroidComponent.java:698)
at org.briarproject.bramble.BrambleCoreModule.initEagerSingletons(BrambleCoreModule.java:55)
at org.briarproject.briar.android.BriarApplicationImpl.onCreate(BriarApplicationImpl.java:117)
at android.app.Instrumentation.callApplicationOnCreate(Instrumentation.java:1119)
at android.app.ActivityThread.handleBindApplication(ActivityThread.java:5740)
at android.app.ActivityThread.-wrap1(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1656)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6494)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:440)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
07-12 13:42:40.337 org.briarproject.briar.android I/LifecycleManagerImpl: Registering service ScreenFilterMonitorImpl
07-12 13:42:40.343 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: false
07-12 13:42:40.740 org.briarproject.briar.android I/BriarRecyclerView: Adding Handler Callback
07-12 13:42:40.744 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: false
07-12 13:42:40.801 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key directory: /data/user/0/org.briarproject.briar.android/app_key
07-12 13:42:40.802 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: false
07-12 13:42:40.803 org.briarproject.briar.android I/ConfigControllerImpl: No database key in preferences
07-12 13:42:40.807 org.briarproject.briar.android I/ConfigControllerImpl: Found database key in primary file
07-12 13:42:40.808 org.briarproject.briar.android I/AndroidDatabaseConfig: Files in /data/user/0/org.briarproject.briar.android/app_db:
db.mv.db
Database exists: true
07-12 13:42:40.911 org.briarproject.briar.android I/TextInputLayout: EditText added is not a TextInputEditText. Please switch to using that class instead.
07-12 13:42:41.072 org.briarproject.briar.android I/zygote64: Do full code cache collection, code=124KB, data=90KB
07-12 13:42:41.073 org.briarproject.briar.android I/zygote64: After code cache collection, code=90KB, data=45KB
07-12 13:42:41.137 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: false
07-12 13:42:41.243 org.briarproject.briar.android I/Adreno: QUALCOMM build : 8c8f5af, Ic7262d4df1
Build Date : 10/28/17
OpenGL ES Shader Compiler Version: EV031.20.00.04
Local Branch :
Remote Branch : quic/gfx-adreno.lnx.1.9.r3-rel
Remote Branch : NONE
Reconstruct Branch : NOTHING
07-12 13:42:41.249 org.briarproject.briar.android I/Adreno: PFP: 0x005ff087, ME: 0x005ff063
07-12 13:42:41.406 org.briarproject.briar.android I/BriarRecyclerView: Removing Handler Callback
07-12 13:42:43.020 org.briarproject.briar.android I/zygote64: Do partial code cache collection, code=123KB, data=76KB
After code cache collection, code=123KB, data=76KB
Increasing code cache capacity to 512KB
07-12 13:42:44.903 org.briarproject.briar.android I/ConfigControllerImpl: No database key in preferences
07-12 13:42:44.907 org.briarproject.briar.android I/ConfigControllerImpl: Found database key in primary file
07-12 13:42:45.758 org.briarproject.briar.android I/AndroidDatabaseConfig: Setting database key
07-12 15:40:21.565 org.briarproject.briar.android I/BriarRecyclerView: Adding Handler Callback
07-12 15:40:21.567 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: true
07-12 15:40:21.589 org.briarproject.briar.android I/BriarService: Created
07-12 15:40:21.589 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: true
07-12 15:40:21.611 org.briarproject.briar.android I/AndroidDatabaseConfig: Local author name has been set: false
07-12 15:40:21.615 org.briarproject.briar.android I/LifecycleManagerImpl: Starting services
07-12 15:40:21.617 org.briarproject.briar.android I/AndroidDatabaseConfig: Files in /data/user/0/org.briarproject.briar.android/app_db:
07-12 15:40:21.618 org.briarproject.briar.android I/AndroidDatabaseConfig: db.mv.db
Database exists: true
07-12 15:40:21.763 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: true
07-12 15:40:22.086 org.briarproject.briar.android I/zygote64: Do full code cache collection, code=237KB, data=201KB
07-12 15:40:22.087 org.briarproject.briar.android I/zygote64: After code cache collection, code=205KB, data=138KB
07-12 15:40:25.581 org.briarproject.briar.android I/zygote64: Do partial code cache collection, code=250KB, data=146KB
After code cache collection, code=249KB, data=146KB
Increasing code cache capacity to 1024KB
07-12 15:40:27.227 org.briarproject.briar.android I/IdentityManagerImpl: Local author loaded
07-12 15:40:28.027 org.briarproject.briar.android I/PluginManagerImpl: Starting poller
07-12 15:40:28.030 org.briarproject.briar.android I/PluginManagerImpl: Starting simplex plugins
Starting duplex plugins
07-12 15:40:28.044 org.briarproject.briar.android I/AndroidDatabaseConfig: Database key has been set: true
07-12 15:40:28.056 org.briarproject.briar.android I/TorPlugin: Starting Tor
```https://code.briarproject.org/briar/briar/-/issues/1345Add panic button response that locks app2020-11-16T15:35:41ZakwizgranAdd panic button response that locks appWhen the PIN lock has been implemented (#1247), we could provide the option to lock the app instead of signing out when a panic button's pressed. This would make it possible to send panic messages via Briar (#212).When the PIN lock has been implemented (#1247), we could provide the option to lock the app instead of signing out when a panic button's pressed. This would make it possible to send panic messages via Briar (#212).https://code.briarproject.org/briar/briar/-/issues/1346Add LaTeX support for messages.2020-11-16T15:38:15ZIdRather NotAdd LaTeX support for messages.Just as the title says, LaTeX support(or something like it) for Mathematical and Chemical formulas and equations would be a really nice thing to have and a feature that would be a reason for academic people (at least those in science cou...Just as the title says, LaTeX support(or something like it) for Mathematical and Chemical formulas and equations would be a really nice thing to have and a feature that would be a reason for academic people (at least those in science courses) to switch to Briar or use it to discuss assignments/research.https://code.briarproject.org/briar/briar/-/issues/1347Annotate UI methods that run on background threads2020-11-17T16:09:10ZakwizgranAnnotate UI methods that run on background threadsWe tend to assume that UI components are only accessed on the UI thread and don't need to be thread-safe, but sometimes this isn't true. Create an annotation for UI methods that run on background threads. (Methods that run on particular ...We tend to assume that UI components are only accessed on the UI thread and don't need to be thread-safe, but sometimes this isn't true. Create an annotation for UI methods that run on background threads. (Methods that run on particular executors can use the existing executor annotations.)https://code.briarproject.org/briar/briar/-/issues/1353Create fake data for automated screenshots2020-11-17T16:08:47ZakwizgranCreate fake data for automated screenshotsCreate fake data that can be inserted into the app by an Espresso test when taking screenshots for the manual or app store.Create fake data that can be inserted into the app by an Espresso test when taking screenshots for the manual or app store.https://code.briarproject.org/briar/briar/-/issues/1359ConversationView shows progress wheel over messages on Nexus 5X2020-11-17T16:08:14ZakwizgranConversationView shows progress wheel over messages on Nexus 5XI noticed this on the Nexus 5X (Android 8.1) with current master (25b8932cde226b75bcf92bdeeaa450e030f23cd6) and can reliably reproduce it there, but I can't reproduce it on the Moto G 4G running the same code.
Steps to reproduce:
* Sign...I noticed this on the Nexus 5X (Android 8.1) with current master (25b8932cde226b75bcf92bdeeaa450e030f23cd6) and can reliably reproduce it there, but I can't reproduce it on the Moto G 4G running the same code.
Steps to reproduce:
* Sign into Briar
* Open a private conversation containing some messages
* Turn the screen off and on again, or press the home button and then resume Briar from recent apps
* The progress wheel appears over the top of the messages and doesn't disappear
![device-2018-08-03-174457](/uploads/6336724b37de55a224e83643276936da/device-2018-08-03-174457.png)https://code.briarproject.org/briar/briar/-/issues/1361Long blog post scrolls to top while reading2020-11-17T16:07:38ZakwizgranLong blog post scrolls to top while reading* Android version: 7.1.2
* Briar version: 1.0.11
* User feedback: "When reading RSS posts on the blogs page, often as I'm scrolling down through a long article the screen jumps back up and displays sections of the article I've already re...* Android version: 7.1.2
* Briar version: 1.0.11
* User feedback: "When reading RSS posts on the blogs page, often as I'm scrolling down through a long article the screen jumps back up and displays sections of the article I've already read. Not a critical issue, but it makes it hard to read long articles in the app since it causes me to lose my place every few paragraphs."
Since the article is long enough to scroll through, I'm assuming this refers to the single post ("read more") view.https://code.briarproject.org/briar/briar/-/issues/1362LAN plugin fails to bind socket on Chrome OS2022-10-10T10:46:20ZakwizgranLAN plugin fails to bind socket on Chrome OS```
08-10 13:58:10.945 2013-2045/org.briarproject.briar.android.debug I/AndroidLanTcpPlugin: Connected to wifi
08-10 13:58:10.969 2013-2036/org.briarproject.briar.android.debug I/TcpPlugin: Failed to bind /192.168.0.4
08-10 13:58:10.970 ...```
08-10 13:58:10.945 2013-2045/org.briarproject.briar.android.debug I/AndroidLanTcpPlugin: Connected to wifi
08-10 13:58:10.969 2013-2036/org.briarproject.briar.android.debug I/TcpPlugin: Failed to bind /192.168.0.4
08-10 13:58:10.970 2013-2036/org.briarproject.briar.android.debug I/TcpPlugin: Could not bind server socket
```
Android's WifiManager reports the device as connected to wifi with IP address 192.168.0.4, but the LAN plugin can't bind a socket to that address.
Probably due to container restrictions: https://developer.android.com/topic/arc/#check_for_networking_requirementshttps://code.briarproject.org/briar/briar/-/issues/1363IllegalArgumentException: Scrapped or attached views may not be recycled2021-11-04T11:03:42ZakwizgranIllegalArgumentException: Scrapped or attached views may not be recycled* Android version: 8.1.0
* Phone model: OnePlus A5000 (OnePlus5)
* Briar version: 1.0.13 (55d8f85)
Stacktrace:
```
java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true android...* Android version: 8.1.0
* Phone model: OnePlus A5000 (OnePlus5)
* Briar version: 1.0.13 (55d8f85)
Stacktrace:
```
java.lang.IllegalArgumentException: Scrapped or attached views may not be recycled. isScrap:false isAttached:true android.support.v7.widget.RecyclerView{bb19834 VFED.V... ........ 0,0-1080,1599 #7f09012b app:id/recyclerView}, adapter:org.briarproject.briar.android.contact.ConversationAdapter@40dedd1, layout:android.support.v7.widget.LinearLayoutManager@90a2036, context:org.briarproject.briar.android.contact.ConversationActivity@b8d5bc6
at android.support.v7.widget.RecyclerView$Recycler.recycleViewHolderInternal(RecyclerView.java:6053)
at android.support.v7.widget.RecyclerView$Recycler.recycleView(RecyclerView.java:5997)
at android.support.v7.widget.GapWorker.prefetchPositionWithDeadline(GapWorker.java:292)
at android.support.v7.widget.GapWorker.flushTaskWithDeadline(GapWorker.java:342)
at android.support.v7.widget.GapWorker.flushTasksWithDeadline(GapWorker.java:358)
at android.support.v7.widget.GapWorker.prefetch(GapWorker.java:365)
at android.support.v7.widget.GapWorker.run(GapWorker.java:396)
at android.os.Handler.handleCallback(Handler.java:790)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6753)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:482)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
```
Log:
```
08-08 21:39:57.411 I/ConnectionRegistryImpl: Outgoing connection registered: org.briarproject.bramble.tor
08-08 21:39:57.412 I/ConnectionRegistryImpl: Contact connected
08-08 21:39:57.412 I/ConversationActivity: Contact connected
08-08 21:39:57.615 I/Poller: Polling plugin org.briarproject.bramble.tor
08-08 21:39:57.621 I/ConnectionRegistryImpl: 1 contacts connected: org.briarproject.bramble.tor
08-08 21:39:57.621 I/TorPlugin: Connecting to ojd[scrubbed]
08-08 21:40:03.376 I/BriarRecyclerView: Adding Handler Callback
08-08 21:40:03.376 I/AndroidDatabaseConfig: Database key has been set: true
```
The last two log lines suggest an activity had just started. The previous log lines show that ConversationActivity was recently active, and that's reported as the context of the crash in the stacktrace. So the crash may have occurred while navigating away from ConversationActivity.Android 1.4https://code.briarproject.org/briar/briar/-/issues/1364EOFException when adding contact2020-11-17T15:59:15ZakwizgranEOFException when adding contactSteps to reproduce:
* Device A scans device B, connects via LAN (Bluetooth would also work AFAICT)
* Wait for device A to time out
* Device A closes the connection
* Device B scans device A
* Device B tries to read from the closed conne...Steps to reproduce:
* Device A scans device B, connects via LAN (Bluetooth would also work AFAICT)
* Wait for device A to time out
* Device A closes the connection
* Device B scans device A
* Device B tries to read from the closed connection, throws EOFException
* Device B shows "Connection aborted" toast
* Adding contact failshttps://code.briarproject.org/briar/briar/-/issues/1365Camera error and connection aborted when screen turns off while adding contact2020-11-17T16:07:23ZakwizgranCamera error and connection aborted when screen turns off while adding contactSteps to reproduce:
* Ensure that device A's screen timeout is set to the default (30 seconds)
* Connect devices A and B to the same LAN
* Navigate to the QR code screen on both devices
* Wait 10 seconds without touching the screen on d...Steps to reproduce:
* Ensure that device A's screen timeout is set to the default (30 seconds)
* Connect devices A and B to the same LAN
* Navigate to the QR code screen on both devices
* Wait 10 seconds without touching the screen on device A
* Use device A to scan device B's QR code
* Device A should connect and show "Waiting for contact to scan and connect"
* Device A's screen should turn off before the connection times out
* Turn device A's screen back on
* Device A is still showing "Waiting for contact to scan and connect" although the original timeout has passed
* Device A exits the QR code screen with a "Camera error" toast
* Device A shows a "Connection aborted" toast
Possibly related to #1302, #1364.https://code.briarproject.org/briar/briar/-/issues/1366Segmentation fault while signing out2021-11-04T11:03:42ZakwizgranSegmentation fault while signing out* Android version: 8.1.0
* Phone model: Nexus 5X
* Briar version: 1.0.13 debug build (21f95ed)
The device showed "Briar Debug has stopped" while signing out of the app.
Log:
```
08-16 16:41:38.445 24298-28941/? I/BriarControllerImpl: S...* Android version: 8.1.0
* Phone model: Nexus 5X
* Briar version: 1.0.13 debug build (21f95ed)
The device showed "Briar Debug has stopped" while signing out of the app.
Log:
```
08-16 16:41:38.445 24298-28941/? I/BriarControllerImpl: Shutting down service
08-16 16:41:38.529 24298-24298/? I/BriarService: Destroyed
08-16 16:41:38.540 24298-28944/? I/LifecycleManagerImpl: Stopping services
08-16 16:41:38.542 24298-24591/? I/DuplexOutgoingSession: Closed
08-16 16:41:38.542 24298-25132/? I/DuplexOutgoingSession: Closed
08-16 16:41:38.543 24298-25136/? I/DuplexOutgoingSession: Closed
08-16 16:41:38.543 24298-25134/? I/DuplexOutgoingSession: Closed
08-16 16:41:38.543 24298-25148/? I/DuplexOutgoingSession: Closed
08-16 16:41:38.554 24298-28944/? I/PluginManagerImpl: Stopping simplex plugins
Stopping duplex plugins
08-16 16:41:38.556 24298-28944/? I/PluginManagerImpl: Waiting for all the plugins to stop
08-16 16:41:38.556 24298-25132/? I/PluginManagerImpl: Trying to stop plugin org.briarproject.bramble.bluetooth
08-16 16:41:38.556 24298-25136/? I/PluginManagerImpl: Trying to stop plugin org.briarproject.bramble.tor
08-16 16:41:38.557 24298-25134/? I/PluginManagerImpl: Trying to stop plugin org.briarproject.bramble.lan
08-16 16:41:38.558 24298-25132/? I/NavDrawerControllerImpl: TransportDisabledEvent: org.briarproject.bramble.bluetooth
08-16 16:41:38.559 24298-25136/? I/NavDrawerControllerImpl: TransportDisabledEvent: org.briarproject.bramble.tor
08-16 16:41:38.559 24298-25134/? I/NavDrawerControllerImpl: TransportDisabledEvent: org.briarproject.bramble.lan
08-16 16:41:38.560 24298-24392/? I/TorPlugin: java.net.SocketException: Socket closed
08-16 16:41:38.560 24298-24391/? I/TcpPlugin: java.net.SocketException: Socket closed
--------- beginning of crash
08-16 16:41:38.564 24298-25136/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x18 in tid 25136 (pool-3-thread-2), pid 24298 (r.android.debug)
08-16 16:41:38.632 28948-28948/? W/crash_dump64: type=1400 audit(0.0:112): avc: denied { search } for name="org.briarproject.briar.android.debug" dev="dm-2" ino=262990 scontext=u:r:crash_dump:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
08-16 16:41:38.700 28948-28948/? I/crash_dump64: obtaining output fd from tombstoned, type: kDebuggerdTombstone
08-16 16:41:38.702 28948-28948/? W/crash_dump64: type=1400 audit(0.0:113): avc: denied { search } for name="org.briarproject.briar.android.debug" dev="dm-2" ino=262990 scontext=u:r:crash_dump:s0:c512,c768 tcontext=u:object_r:app_data_file:s0:c512,c768 tclass=dir permissive=0
08-16 16:41:38.703 590-590/? I//system/bin/tombstoned: received crash request for pid 24298
08-16 16:41:38.705 28948-28948/? I/crash_dump64: performing dump of process 24298 (target tid = 25136)
08-16 16:41:38.705 28948-28948/? A/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/bullhead/bullhead:8.1.0/OPM6.171019.030.E1/4805388:user/release-keys'
Revision: 'rev_1.0'
ABI: 'arm64'
pid: 24298, tid: 25136, name: pool-3-thread-2 >>> org.briarproject.briar.android.debug <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x18
Cause: null pointer dereference
x0 00000076a216c300 x1 0000000000000000 x2 4e0dc4b73a8d37a4 x3 0000000000000061
x4 00000000ffffffff x5 c6a4a7935bd1e995 x6 c6a4a7935bd1e995 x7 f8e1bfbf4251583c
x8 c5e8c0e242c67c71 x9 c5e8c0e242c67c71 x10 0000000000000008 x11 00000000ffffffff
x12 00000076a461c000 x13 ffffffffa48aa59c x14 00029088e2000000 x15 003b9aca00000000
x16 000000773ee1bca8 x17 000000773edb84b8 x18 0000000000000008 x19 0000000000000015
x20 00000076a215aa40 x21 00000076b0844fa0 x22 0000000000000018 x23 0000000000000000
x24 00000076a216c300 x25 000000769fe88c40 x26 000000769fe81000 x27 00000000000808de
x28 00000076a472b1d0 x29 00000076a1be8ab0 x30 000000769fc1b600
sp 00000076a1be8a00 pc 000000769fc1b60c pstate 0000000060000000
08-16 16:41:38.716 28948-28948/? A/DEBUG: backtrace:
#00 pc 000000000005160c /data/data/org.briarproject.briar.android.debug/libperfa_arm64.so
#01 pc 00000000000163fc /system/lib64/libopenjdkjvmti.so (openjdkjvmti::JvmtiAllocationListener::ObjectAllocated(art::Thread*, art::ObjPtr<art::mirror::Object>*, unsigned long)+320)
#02 pc 000000000014df4c /system/lib64/libart.so (_ZN3art2gc4Heap24AllocObjectWithAllocatorILb1ELb0ENS_11VoidFunctorEEEPNS_6mirror6ObjectEPNS_6ThreadENS_6ObjPtrINS4_5ClassEEEmNS0_13AllocatorTypeERKT1_+1172)
#03 pc 0000000000536aa4 /system/lib64/libart.so (MterpNewInstance+832)
#04 pc 000000000053a310 /system/lib64/libart.so (ExecuteMterpImpl+4496)
#05 pc 0000000000275c00 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue, bool)+444)
#06 pc 000000000027b7cc /system/lib64/libart.so (art::interpreter::ArtInterpreterToInterpreterBridge(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame*, art::JValue*)+216)
#07 pc 0000000000295a70 /system/lib64/libart.so (_ZN3art11interpreter6DoCallILb0ELb0EEEbPNS_9ArtMethodEPNS_6ThreadERNS_11ShadowFrameEPKNS_11InstructionEtPNS_6JValueE+668)
#08 pc 0000000000533d68 /system/lib64/libart.so (MterpInvokeDirect+356)
#09 pc 000000000053ca14 /system/lib64/libart.so (ExecuteMterpImpl+14484)
#10 pc 0000000000275c00 /system/lib64/libart.so (art::interpreter::Execute(art::Thread*, art::DexFile::CodeItem const*, art::ShadowFrame&, art::JValue, bool)+444)
#11 pc 0000000000525450 /system/lib64/libart.so (artQuickToInterpreterBridge+1052)
#12 pc 0000000000553d0c /system/lib64/libart.so (art_quick_to_interpreter_bridge+92)
#13 pc 00000000001e2b08 /dev/ashmem/dalvik-jit-code-cache (deleted)
08-16 16:41:41.108 766-782/? W/zygote64: kill(-24298, 9) failed: No such process
08-16 16:41:41.110 766-5198/? I/ActivityManager: Process org.briarproject.briar.android.debug (pid 24298) has died: cch CEM
08-16 16:41:41.129 766-789/? W/ActivityManager: setHasOverlayUi called on unknown pid: 24298
08-16 16:41:41.129 561-561/? I/Zygote: Process 24298 exited due to signal (11)
08-16 16:41:41.152 766-782/? W/zygote64: kill(-24298, 9) failed: No such process
08-16 16:41:41.152 766-782/? I/zygote64: Successfully killed process cgroup uid 10101 pid 24298 in 44ms
```
Looks like a crash within ART. Not our bug, but possibly related to @ski's [problems with the same phone model](https://code.briarproject.org/briar/briar/issues/992#note_29767)?Android 1.4https://code.briarproject.org/briar/briar/-/issues/1387Keep persistent log messages2020-11-17T15:47:48ZTorsten GroteKeep persistent log messagesIt might be useful to have logs that persist across restarts (e.g. to find out why users get signed out). But that would require one of the following solutions:
* write logs to an encrypted file that we can read back after restarting...It might be useful to have logs that persist across restarts (e.g. to find out why users get signed out). But that would require one of the following solutions:
* write logs to an encrypted file that we can read back after restarting
* write logs to the system log, use the `READ_LOGS` permission to read them back after restarting - this results in a scary permission warning at installation time on API < 23
* write logs to the system log, read them back without the `READ_LOGS` permission - this only works on API >= 16, but that's nearly all our users, so we could just live without this feature on API 15. the bigger issue with using the system log is that the logs are stored in plaintexthttps://code.briarproject.org/briar/briar/-/issues/1388Discussion: Only poll contacts if necessary2021-12-13T14:13:45ZBen WieDiscussion: Only poll contacts if necessaryFor some transports we could reduce the polling effort if we only poll contacts that we want to sent messages/ACKs to. This works for transports where both peers are able to connect to each other if one is able to.For some transports we could reduce the polling effort if we only poll contacts that we want to sent messages/ACKs to. This works for transports where both peers are able to connect to each other if one is able to.https://code.briarproject.org/briar/briar/-/issues/1394Confirmation dialog isn't shown when connecting panic button app2020-11-17T16:07:07ZakwizgranConfirmation dialog isn't shown when connecting panic button appSteps to reproduce:
* Uninstall and reinstall Briar and Ripple so they're definitely not connected
* Start Briar, create an account, go to "Settings > Panic button setup > Panic Button App"
* Choose Ripple as the panic button app
* Expe...Steps to reproduce:
* Uninstall and reinstall Briar and Ripple so they're definitely not connected
* Start Briar, create an account, go to "Settings > Panic button setup > Panic Button App"
* Choose Ripple as the panic button app
* Expected: A dialog is shown to confirm that Ripple is allowed to trigger destructive actions
* Action: No dialog is shown, Ripple can trigger destructive actionshttps://code.briarproject.org/briar/briar/-/issues/1397Quote private message when replying2022-09-30T11:22:02ZakwizgranQuote private message when replyingUser feedback: "Please add the ability to quote the messages of the interlocutor."
Related to #81.User feedback: "Please add the ability to quote the messages of the interlocutor."
Related to #81.https://code.briarproject.org/briar/briar/-/issues/1398IndexOutOfBoundsException in contact list2021-11-04T11:03:43ZakwizgranIndexOutOfBoundsException in contact list* Android version: 7.0
* Briar version: 1.1.1 (9476782)
* Phone model: AGM A8 (T88Q_14)
* User feedback: "Spontaneously crashes by itself. The impact of any third-party applications is not noticed. I cannot name any apparent reasons."
S...* Android version: 7.0
* Briar version: 1.1.1 (9476782)
* Phone model: AGM A8 (T88Q_14)
* User feedback: "Spontaneously crashes by itself. The impact of any third-party applications is not noticed. I cannot name any apparent reasons."
Stacktrace:
```
java.lang.IndexOutOfBoundsException: Inconsistency detected. Invalid view holder adapter positionViewHolder{91bdea4 position=3 id=-1, old Pos=3, pLpos:-1 scrap [attachedScrap] tmpDetached no parent} android.support.v7.widget.RecyclerView{63190e8 VFED.V... .F....I. 0,0-720,1120 #7f09012d app:id/recyclerView}, adapter:org.briarproject.briar.android.contact.ContactListAdapter@cb5480b, layout:android.support.v7.widget.LinearLayoutManager@8a536e8, context:org.briarproject.briar.android.navdrawer.NavDrawerActivity@679576e
at android.support.v7.widget.RecyclerView$Recycler.validateViewHolderForOffsetPosition(RecyclerView.java:5610)
at android.support.v7.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:5792)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5752)
at android.support.v7.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:5748)
at android.support.v7.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2232)
at android.support.v7.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1559)
at android.support.v7.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1519)
at android.support.v7.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:614)
at android.support.v7.widget.RecyclerView.dispatchLayoutStep1(RecyclerView.java:3763)
at android.support.v7.widget.RecyclerView.dispatchLayout(RecyclerView.java:3527)
at android.support.v7.widget.RecyclerView.onLayout(RecyclerView.java:4082)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.support.constraint.ConstraintLayout.onLayout(ConstraintLayout.java:1855)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.support.v4.widget.DrawerLayout.onLayout(DrawerLayout.java:1171)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.LinearLayout.setChildFrame(LinearLayout.java:1741)
at android.widget.LinearLayout.layoutVertical(LinearLayout.java:1585)
at android.widget.LinearLayout.onLayout(LinearLayout.java:1494)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.widget.FrameLayout.layoutChildren(FrameLayout.java:323)
at android.widget.FrameLayout.onLayout(FrameLayout.java:261)
at com.android.internal.policy.DecorView.onLayout(DecorView.java:724)
at android.view.View.layout(View.java:17523)
at android.view.ViewGroup.layout(ViewGroup.java:5612)
at android.view.ViewRootImpl.performLayout(ViewRootImpl.java:2342)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2069)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1246)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6307)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:871)
at android.view.Choreographer.doCallbacks(Choreographer.java:683)
at android.view.Choreographer.doFrame(Choreographer.java:619)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:857)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6086)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
```Android 1.4https://code.briarproject.org/briar/briar/-/issues/1400Explain that if Tor is turned off, nothing will be sent via the internet2020-11-15T20:11:59ZakwizgranExplain that if Tor is turned off, nothing will be sent via the internetUser feedback: "Settings should indicate that if Tor is turned off, messages will not be sent via the internet (there is no non-Tor P2P WAN option)."User feedback: "Settings should indicate that if Tor is turned off, messages will not be sent via the internet (there is no non-Tor P2P WAN option)."CleopatraCleopatrahttps://code.briarproject.org/briar/briar/-/issues/1401Make transport indicators usable by colourblind users2020-11-15T20:10:45ZakwizgranMake transport indicators usable by colourblind usersUser feedback: "For productivity purposes I use my phone in greyscale mode, it's at the same time a simulation of color blindness. I've noticed that it's hard to distinguish the internet/WiFi/Bluetooth indicators' active green from the i...User feedback: "For productivity purposes I use my phone in greyscale mode, it's at the same time a simulation of color blindness. I've noticed that it's hard to distinguish the internet/WiFi/Bluetooth indicators' active green from the inactive grey. The solution could be putting a dot/underscore to indicate WiFi is enabled."https://code.briarproject.org/briar/briar/-/issues/1402Green send button might be mistaken for online indicator2020-11-15T20:10:14ZakwizgranGreen send button might be mistaken for online indicatorUser feedback: "#1252 I think green color of the send button is a mistake, because it can indicate contact is online. Maybe blue, like outgoing message bubbles."User feedback: "#1252 I think green color of the send button is a mistake, because it can indicate contact is online. Maybe blue, like outgoing message bubbles."https://code.briarproject.org/briar/briar/-/issues/1404Phone resets when Briar is running in background2019-03-01T14:22:33ZakwizgranPhone resets when Briar is running in background* Android version: 7.1.2
* Briar version: 1.0.13
User feedback: "I am not so sure that this a bug in briar, but since last update my phone is often resetting when briar is signed in. What i have noticed is that briar cannot negotiate a ...* Android version: 7.1.2
* Briar version: 1.0.13
User feedback: "I am not so sure that this a bug in briar, but since last update my phone is often resetting when briar is signed in. What i have noticed is that briar cannot negotiate a new connection when app is in background or when screen is locked. Example is i am signing in and switch to browser app - ten minutes later i will look back and app is still signing in. When sign in finished i return to browser, look back in ten minutes and only then it finds contacts online (while i an looking at the app) and receives messages. Once it is signed in and connection is found then it works in background fine and will receive messages. If i am not checking briar while signing in and making connection though, phone will sooner or later reset. Same if i am changing type of internet connection, like i am going from WiFi to data. I must keep app open and active until it finds contacts again or else phone will reset. As i say, i am not sure this is caused by briar, but it started near time of last update and by keeping app open during such times i have almost stopped sudden resets which before were happening many times each day."
Unfortunately the user didn't include a log, details of the phone or an email address.https://code.briarproject.org/briar/briar/-/issues/1406User feedback screen: Possibility to share/save device data2020-11-15T20:08:27ZmicressorUser feedback screen: Possibility to share/save device dataIt would be helpful if it could also be possible to edit the data via a different channel (Email / Save as...). This would make it easier to create a dedicated bug report.It would be helpful if it could also be possible to edit the data via a different channel (Email / Save as...). This would make it easier to create a dedicated bug report.https://code.briarproject.org/briar/briar/-/issues/1407Allow conversation view to be more compact2020-11-15T20:07:49ZakwizgranAllow conversation view to be more compactUser feedback: "Please add an option to make the chat message view more compact. I do not like the whitespace between two messages. I have a small device with bad resolution and would like to use every pixel for information."User feedback: "Please add an option to make the chat message view more compact. I do not like the whitespace between two messages. I have a small device with bad resolution and would like to use every pixel for information."https://code.briarproject.org/briar/briar/-/issues/1408Reduce memory usage2020-11-15T20:07:02ZakwizgranReduce memory usageA user asked for Briar to use less memory.A user asked for Briar to use less memory.https://code.briarproject.org/briar/briar/-/issues/1410Share content from another app as a Briar message2020-11-15T20:06:29ZmicressorShare content from another app as a Briar message### Steps to reproduce
1. For example: open a RSS or podcast app.
2. Select an article/podcast
3. Select share button
### Actual behaviour
It is not possible to select briar as a target.
### Expected behaviour
It should be possible to ...### Steps to reproduce
1. For example: open a RSS or podcast app.
2. Select an article/podcast
3. Select share button
### Actual behaviour
It is not possible to select briar as a target.
### Expected behaviour
It should be possible to select briar for sharing.https://code.briarproject.org/briar/briar/-/issues/1411RSS/ATOM: Name of the menus2020-11-15T20:05:22ZmicressorRSS/ATOM: Name of the menusIt seems like Briar understands RSS and ATOM feeds.
Ideally, the description of the menus would be general. For example "Manage Feeds", "Import Feed", "Enter the URL of the RSS/ATOM feed".It seems like Briar understands RSS and ATOM feeds.
Ideally, the description of the menus would be general. For example "Manage Feeds", "Import Feed", "Enter the URL of the RSS/ATOM feed".https://code.briarproject.org/briar/briar/-/issues/1412Briar's liberapay account is not configured to accept new payments2020-11-15T20:04:24ZmicressorBriar's liberapay account is not configured to accept new paymentsTried to setup from my side, but got an error.Tried to setup from my side, but got an error.https://code.briarproject.org/briar/briar/-/issues/1414Work with Briar users to set up OONI tests in censored locations2020-11-15T20:03:14ZTorsten GroteWork with Briar users to set up OONI tests in censored locationsThis is so we can find out where bridges are needed, so we can enable them automatically.This is so we can find out where bridges are needed, so we can enable them automatically.https://code.briarproject.org/briar/briar/-/issues/1415Develop scripts to use the OONI API to find locations where pluggable transpo...2020-11-15T20:02:27ZTorsten GroteDevelop scripts to use the OONI API to find locations where pluggable transports are neededhttps://code.briarproject.org/briar/briar/-/issues/1419Online status in contact list can be confused with radio button2020-11-16T10:31:13ZTorsten GroteOnline status in contact list can be confused with radio buttonThe circle on the right of the avatar gives you an impression of a select radio button instead of online status.
![Online_1](/uploads/05ec34f3580ae8f05846fd807b516e9f/Online_1.png)
Placing the green circle on the corner of the avatar m...The circle on the right of the avatar gives you an impression of a select radio button instead of online status.
![Online_1](/uploads/05ec34f3580ae8f05846fd807b516e9f/Online_1.png)
Placing the green circle on the corner of the avatar might be more understandable:
![online](/uploads/055feea1e3c6de24587eb05c75b10f78/online.png)https://code.briarproject.org/briar/briar/-/issues/1422ActivityRecord not found for ConversationActivity2022-06-13T15:11:23ZakwizgranActivityRecord not found for ConversationActivity* Android version: 8.1.0
* Briar version: 1.1.1 (9476782)
* Phone model: Samsung SM-J727A (j7popelteuc)
* User feedback: "It would not open any more."
Stacktrace:
```
java.lang.IllegalArgumentException: reportSizeConfigurations: Activit...* Android version: 8.1.0
* Briar version: 1.1.1 (9476782)
* Phone model: Samsung SM-J727A (j7popelteuc)
* User feedback: "It would not open any more."
Stacktrace:
```
java.lang.IllegalArgumentException: reportSizeConfigurations: ActivityRecord not found for: Token{72da83 ActivityRecord{c281601 u0 org.briarproject.briar.android/.contact.ConversationActivity t-1 f}}
at android.os.Parcel.readException(Parcel.java:2025)
at android.os.Parcel.readException(Parcel.java:1967)
at android.app.IActivityManager$Stub$Proxy.reportSizeConfigurations(IActivityManager.java:9838)
at android.app.ActivityThread.reportSizeConfigurations(ActivityThread.java:3102)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3045)
at android.app.ActivityThread.-wrap11(Unknown Source:0)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1711)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6958)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:441)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1408)
```
Log:
```
10-08 10:37:18.003 I/AndroidAccountManager: No database key in preferences
10-08 10:37:18.005 I/AccountManagerImpl: Found database key in primary file
10-08 10:37:18.005 I/SplashScreenActivity: Account exists
10-08 10:37:18.403 I/AndroidAccountManager: No database key in preferences
10-08 10:37:18.403 I/AccountManagerImpl: Found database key in primary file
10-08 10:37:28.469 I/AndroidAccountManager: No database key in preferences
10-08 10:37:28.470 I/AccountManagerImpl: Found database key in primary file
10-08 10:37:29.093 I/BriarService: Created
10-08 10:37:29.114 I/LifecycleManagerImpl: Starting services
10-08 10:37:49.668 I/IdentityManagerImpl: No local author to store
10-08 10:37:49.671 I/IdentityManagerImpl: Local author loaded
10-08 10:37:49.679 I/AndroidNetworkManager: Received broadcast android.net.conn.CONNECTIVITY_CHANGE
10-08 10:37:55.291 I/PluginManagerImpl: Starting poller
10-08 10:37:55.292 I/PluginManagerImpl: Starting simplex plugins
10-08 10:37:55.292 I/PluginManagerImpl: Starting duplex plugins
10-08 10:37:55.308 I/AndroidLanTcpPlugin: Not connected to wifi
10-08 10:37:55.309 I/TorPlugin: Starting Tor
10-08 10:37:55.401 I/BluetoothPlugin: Local address null
10-08 10:37:55.452 I/BriarRecyclerView: Adding Handler Callback
10-08 10:37:57.166 I/TorPlugin: Oct 08 06:37:57.161 [notice] Tor 0.2.9.16 (git-645ef2e2854b2225) running on Linux with Libevent 2.0.22-stable, OpenSSL 1.0.2o and Zlib 1.2.8.
10-08 10:37:57.213 I/TorPlugin: Oct 08 06:37:57.165 [notice] Tor can't help you if you use it wrong! Learn how to be safe at https://www.torproject.org/download/download#warning
10-08 10:37:57.214 I/TorPlugin: Oct 08 06:37:57.167 [notice] Read configuration file \"/data/user/0/org.briarproject.briar.android/app_tor/torrc\".
10-08 10:37:57.214 I/TorPlugin: Oct 08 06:37:57.191 [notice] Opening Control listener on 127.0.0.1:59051
10-08 10:37:57.214 I/TorPlugin: Oct 08 06:37:57.191 [notice] DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections.
10-08 10:37:57.216 I/TorPlugin: Auth cookie created
10-08 10:37:58.718 I/BriarRecyclerView: Adding Handler Callback
10-08 10:37:59.346 I/BriarRecyclerView: Removing Handler Callback
10-08 10:38:00.017 I/KeyboardAwareLinearLayout: onKeyboardOpen(542)
10-08 10:38:00.628 I/TorPlugin: Online: true, wifi: false
10-08 10:38:00.628 I/TorPlugin: Country code: US
10-08 10:38:00.628 I/TorPlugin: Enabling network, not using bridges
10-08 10:38:00.646 I/TorPlugin: NOTICE DisableNetwork is set. Tor will not make or accept non-control network connections. Shutting down all existing connections.
10-08 10:38:00.646 I/RenewableWakeLock: Acquiring wake lock LocationManagerService
10-08 10:38:00.667 I/TorPlugin: NOTICE Opening Socks listener on 127.0.0.1:59050
10-08 10:38:01.703 I/TorPlugin: NOTICE Bootstrapped 80%: Connecting to the Tor network
10-08 10:38:01.704 I/TorPlugin: OR connection LAUNCHED $7AA7FC80E3E0D32E929D2CC094EACF529C95264C~steinpilz
10-08 10:38:01.705 I/TorPlugin: OR connection LAUNCHED $1E17564CDD5A6B70A6F73C053A479BC5EE2D0A89~Unnamed
10-08 10:38:01.930 I/TorPlugin: NOTICE Bootstrapped 85%: Finishing handshake with first hop
10-08 10:38:02.641 I/TorPlugin: OR connection CONNECTED $1E17564CDD5A6B70A6F73C053A479BC5EE2D0A89~Unnamed
10-08 10:38:02.660 I/TorPlugin: NOTICE Bootstrapped 90%: Establishing a Tor circuit
10-08 10:38:02.660 I/TorPlugin: OR connection CONNECTED $7AA7FC80E3E0D32E929D2CC094EACF529C95264C~steinpilz
10-08 10:38:02.934 I/TorPlugin: First circuit built
10-08 10:38:03.696 I/TorPlugin: NOTICE Tor has successfully opened a circuit. Looks like client functionality is working.
10-08 10:38:03.696 I/TorPlugin: NOTICE Bootstrapped 100%: Done
10-08 10:38:03.697 I/FeedManagerImpl: Tor started, scheduling RSS feed fetcher
10-08 10:38:03.698 I/Poller: Polling plugin org.briarproject.bramble.tor
10-08 10:38:24.455 I/BriarRecyclerView: Removing Handler Callback
10-08 10:38:25.001 I/TorPlugin: Creating hidden service
10-08 10:38:25.028 I/TorPlugin: Hidden service tsb[scrubbed]
10-08 10:38:25.078 I/TorPlugin: Connecting to vye[scrubbed]
10-08 10:38:34.140 I/TorPlugin: Connected to vye[scrubbed]
10-08 10:38:35.400 I/DuplexOutgoingSession: Generated ack: false
10-08 10:38:35.446 I/DuplexOutgoingSession: Next send time decreased
10-08 10:38:35.446 I/DuplexOutgoingSession: Checking for retransmittable messages
10-08 10:38:35.446 I/DuplexOutgoingSession: Generated batch: false
10-08 10:38:35.485 I/ConnectionRegistryImpl: Outgoing connection registered: org.briarproject.bramble.tor
10-08 10:38:35.485 I/ConnectionRegistryImpl: Contact connected
10-08 10:38:35.533 I/DuplexOutgoingSession: Next send time decreased
10-08 10:38:35.591 I/DuplexOutgoingSession: Generated offer: true
10-08 10:38:35.592 I/DuplexOutgoingSession: Sent offer
10-08 10:38:35.592 I/DuplexOutgoingSession: Generated request: false
10-08 10:38:35.634 I/DuplexOutgoingSession: Generated batch: false
10-08 10:38:35.684 I/DuplexOutgoingSession: Generated offer: false
10-08 10:38:35.962 I/DuplexOutgoingSession: Generated request: true
10-08 10:38:35.962 I/DuplexOutgoingSession: Sent request
10-08 10:38:35.963 I/DuplexOutgoingSession: Generated request: false
10-08 10:38:37.048 I/DuplexOutgoingSession: Generated batch: true
10-08 10:38:37.048 I/DuplexOutgoingSession: Sent batch
10-08 10:38:37.091 I/DuplexOutgoingSession: Generated batch: false
10-08 10:38:37.619 I/DuplexOutgoingSession: Generated ack: true
10-08 10:38:37.619 I/DuplexOutgoingSession: Sent ack
10-08 10:38:37.786 I/DuplexOutgoingSession: Generated ack: false
10-08 10:38:45.493 I/Poller: Polling plugin org.briarproject.bramble.tor
10-08 10:38:45.496 I/ConnectionRegistryImpl: 1 contacts connected: org.briarproject.bramble.tor
10-08 10:38:50.421 I/BriarRecyclerView: Adding Handler Callback
10-08 10:39:00.649 I/RenewableWakeLock: Renewing wake lock LocationManagerService
10-08 10:39:03.698 I/FeedManagerImpl: Updating RSS feeds...
10-08 10:39:03.785 I/FeedManagerImpl: Done updating RSS feeds
10-08 10:39:05.679 I/TorPlugin: Descriptor uploaded
10-08 10:39:05.849 I/TorPlugin: Descriptor uploaded
10-08 10:39:07.478 I/TorPlugin: Descriptor uploaded
10-08 10:39:07.619 I/DuplexOutgoingSession: Sending keepalive
10-08 10:39:07.738 I/TorPlugin: Descriptor uploaded
10-08 10:39:08.159 I/TorPlugin: Descriptor uploaded
10-08 10:39:10.053 I/TorPlugin: Descriptor uploaded
10-08 10:39:11.885 I/DuplexOutgoingSession: Generated request: true
10-08 10:39:11.886 I/DuplexOutgoingSession: Sent request
10-08 10:39:11.886 I/DuplexOutgoingSession: Generated request: false
10-08 10:39:13.477 I/DuplexOutgoingSession: Generated ack: true
10-08 10:39:13.477 I/DuplexOutgoingSession: Sent ack
10-08 10:39:13.638 I/ConversationActivity: Message received, adding
10-08 10:39:13.660 I/DuplexOutgoingSession: Generated ack: false
10-08 10:39:36.968 I/DuplexOutgoingSession: Checking for retransmittable messages
10-08 10:39:37.036 I/DuplexOutgoingSession: Generated batch: false
10-08 10:39:37.081 I/DuplexOutgoingSession: Generated offer: false
10-08 10:39:43.478 I/DuplexOutgoingSession: Sending keepalive
10-08 10:39:45.494 I/Poller: Polling plugin org.briarproject.bramble.tor
10-08 10:39:45.498 I/ConnectionRegistryImpl: 1 contacts connected: org.briarproject.bramble.tor
10-08 10:40:00.651 I/RenewableWakeLock: Renewing wake lock LocationManagerService
10-08 10:40:08.417 I/BriarRecyclerView: Adding Handler Callback
```
From the log, it looks like the crash happened soon after startup, after sending and receiving private messages. The last line of the log suggests a transition between activities was in progress.
(Incidentally, when reading logs I often rely on the BriarRecyclerView's messages about its handler callback to make guesses about what's happening to the UI. Maybe we should just log the name of each activity when it starts and stops?)Android 1.4https://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/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/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/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/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/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/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/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/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/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/1444Show large emoji when no other text is included2020-11-15T19:46:01ZakwizgranShow large emoji when no other text is includedA user asked for emoji to be enlarged when the message contains no other text.A user asked for emoji to be enlarged when the message contains no other text.https://code.briarproject.org/briar/briar/-/issues/1447Core API for observing a message graph2020-12-08T12:17:23ZakwizgranCore API for observing a message graphThe core API exposes methods for getting a snapshot of the message graph in a group, such as `DatabaseComponent#getMessageIds()` and `DatabaseComponent#getDependencies()`, and events for learning about changes to the message graph, such ...The core API exposes methods for getting a snapshot of the message graph in a group, such as `DatabaseComponent#getMessageIds()` and `DatabaseComponent#getDependencies()`, and events for learning about changes to the message graph, such as `MessageAddedEvent` and `MessageStateChangedEvent` at the sync layer, or `PrivateMessageReceivedEvent` at the client layer.
The UI uses a combination of asynchronous DB queries and events to maintain a view of the message graph. Using the data attached to events to update the UI is more efficient than triggering a DB query for every event, but it causes a lot of complexity in the UI code because updates may happen concurrently with asynchronous loads (see #705).
All interactions between the UI and the DB are funnelled through the single-threaded DatabaseExecutor, mainly to ensure that queries return their results to the UI in the same order as the queries were started. The database allows read-only transactions to run concurrently, but queries running on the DatabaseExecutor can't take advantage of this because the executor is single-threaded.
If we could provide a better API for observing a message graph then we might be able to simplify the UI code and perhaps even improve DB performance by allowing more queries to run concurrently.
The new API should allow an observer to register an interest in a group's message graph and receive an initial snapshot of the graph, followed by an ordered series of updates when the graph changes. An observer registered from the UI will need to process the observations on the UI thread. As long as the core delivers the observations in order it should be easy to move them onto the UI thread in the same order.
We also need a way to register multiple observers that are ordered with respect to each other, so that we can create UI components that represent multiple groups, such as a conversation containing private messages, invitations, etc.
To ensure ordering, the DB will need to register any changes made by a transaction before releasing the DB lock. Events attached to transactions aren't currently suitable for communicating ordered changes because they're broadcast after releasing the DB lock, so two transactions that commit their changes in the order A, B may broadcast their events in the order B, A. But communicating changes to other components while holding the DB lock would have the potential to cause deadlock.
It might be possible to modify the event broadcasting logic so that events are registered before releasing the lock and broadcast afterwards, ensuring the broadcast order is consistent with the commit order. Alternatively we could create a separate mechanism for registering and communicating ordered changes.https://code.briarproject.org/briar/briar/-/issues/1448Core API for observing group metadata2020-11-15T19:37:03ZakwizgranCore API for observing group metadataSimilarly to #1447, it would be useful if the core allowed an observer to register an interest in a group's metadata and receive an initial snapshot followed by an ordered series of updates. It should be possible to register multiple obs...Similarly to #1447, it would be useful if the core allowed an observer to register an interest in a group's metadata and receive an initial snapshot followed by an ordered series of updates. It should be possible to register multiple observers that are ordered with respect to each other, or alternatively a single observer that specifies multiple groups to watch. This would make it easier to maintain views like the contact list, which is based on metadata from multiple groups per contact.