briar issueshttps://code.briarproject.org/briar/briar/-/issues2023-08-24T15:00:04Zhttps://code.briarproject.org/briar/briar/-/issues/2442ArrayIndexOutOfBoundsException in Editor#onDraw()2023-08-24T15:00:04ZakwizgranArrayIndexOutOfBoundsException in Editor#onDraw()This looks like it's most likely a platform bug.
* Android version: 8.1.0
* Phone model: Samsung SM-A260F (a2coreltejx)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.ArrayIndexOutOfBoundsException: length=3; index=-1
...This looks like it's most likely a platform bug.
* Android version: 8.1.0
* Phone model: Samsung SM-A260F (a2coreltejx)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.ArrayIndexOutOfBoundsException: length=3; index=-1
at android.text.DynamicLayout.getBlockIndex(DynamicLayout.java:648)
at android.widget.Editor.drawHardwareAccelerated(Editor.java:1729)
at android.widget.Editor.onDraw(Editor.java:1698)
at android.widget.TextView.onDraw(TextView.java:6973)
at android.view.View.draw(View.java:19215)
at android.view.View.updateDisplayListIfDirty(View.java:18162)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ViewGroup.recreateChildDisplayList(ViewGroup.java:4231)
at android.view.ViewGroup.dispatchGetDisplayList(ViewGroup.java:4211)
at android.view.View.updateDisplayListIfDirty(View.java:18121)
at android.view.ThreadedRenderer.updateViewTreeDisplayList(ThreadedRenderer.java:669)
at android.view.ThreadedRenderer.updateRootDisplayList(ThreadedRenderer.java:675)
at android.view.ThreadedRenderer.draw(ThreadedRenderer.java:783)
at android.view.ViewRootImpl.draw(ViewRootImpl.java:3050)
at android.view.ViewRootImpl.performDraw(ViewRootImpl.java:2864)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2417)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1429)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:6823)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:911)
at android.view.Choreographer.doCallbacks(Choreographer.java:723)
at android.view.Choreographer.doFrame(Choreographer.java:658)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:897)
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:6543)
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:810)
```https://code.briarproject.org/briar/briar/-/issues/2441Feature request: Acoustic channel2023-11-16T17:29:50ZAlex TimofeevFeature request: Acoustic channel**Overview**
Along with BT, WiFi, Internet and file exchange channels, I propose implementing an acoustic channel, based on already existing FLOSS library.
**Pros of the feature**
- Landline and cell phone lines may remain intact duri...**Overview**
Along with BT, WiFi, Internet and file exchange channels, I propose implementing an acoustic channel, based on already existing FLOSS library.
**Pros of the feature**
- Landline and cell phone lines may remain intact during the internet outages, as they usually raise way less concern of censorship authorities. Acoustic channel can be employed for long distance messaging if there is a working phone nearby. _Note: while I didn't test this use case myself, I can predict no technical challenges here._
- Acoustic channel can be run over any kind of two-way radio. While BT and Wi-Fi have a range limit of hundred meters, cheap license-free VHF/UHF radios can make up to 10 km link, 27MHz CB radio up to 100km. HF ham radios, as well as Satcom/Meridian satellites, used by some anarchic hams, both provide a worldwide link. _Note: recently I tested the library suggested below over a UHF radio with a fellow ham and it works. We used simple mic-to-speaker coupling, the connection can be more stable if you make a special cable (our test will follow)_
- Acoustic channel can be used per se, as a super-close-range wireless channel, despite I can't imagine a probable use case. _Note: of course, I tested that way of operation for the library proposed and it works._
**Cons of the feature**
- Use of acoustic channel required the microphone active for data reception. Despite Briar being FLOSS, some users surely will have a privacy concern. _Solution:_ Make the acoustic channel to be optional, disabled by default, and showing a warning before the first activation. Only if user consent is obtained we will ask for mic access permission.
- Accidental transmission of a large file can congest the channel for a long time, but it must not be absolutely forbidden as the file may have life-critical value (e.g. ID papers of a war journalist). _Solution:_ by default we display a warning on the both sides, stating that transmitting that file via audio will be at least xx:xx long (algorithmic estimation for the best luck). Though, if both conversation sides insist on transmitting and both click their warnings, Briar will proceed. This will protect from accidental channel congestion, but as well obey operators' will.
**Backend technology**
There are a library and some impelementation examples at https://github.com/aicodix. All code there is licensed under 0BSD, making it perfectly legal to include into any FLOSS project.
The library acts as a software modem. It can transmit and receive any digital data using COFDM modulation of a sound carrier, and have buult-in error correction capabilities.
A notable implementation example is Android software named Rattlegram, avialable in the same repo and in Google Play. You can play around the technology without need to write code. My aforementioned tests of direct and radio-borne transmissions were performed using Rattlegram.
**Promises**
- I have a bit of Android development skills myself and can contribute to the implementation if approved.
- Feel free requesting me to conduct any other tests, I will be glad to help.https://code.briarproject.org/briar/briar/-/issues/2440Biometric login as an additional authentication method2023-07-31T16:12:24ZPatrick MaydellBiometric login as an additional authentication methodSometimes the briar app logs out and I have to enter the password again to unlock the database. Therefore it would be nice to have an additional authentication method like the biometric fingerprint to unlock briar's database by using And...Sometimes the briar app logs out and I have to enter the password again to unlock the database. Therefore it would be nice to have an additional authentication method like the biometric fingerprint to unlock briar's database by using Android's Biometric library.
https://developer.android.com/codelabs/biometric-login
I would like to try to commit this functionality to briar if you generally think this feature would be nice to have.https://code.briarproject.org/briar/briar/-/issues/2439Live Location Share with Duration2024-01-23T11:39:23ZVladislavLive Location Share with DurationWith this functionality, users will be able to share their real-time location with friends, family, or contacts in a secure and privacy-conscious manner.
Key Features:
1. Real-Time Location Sharing: Users should have the ability to ini...With this functionality, users will be able to share their real-time location with friends, family, or contacts in a secure and privacy-conscious manner.
Key Features:
1. Real-Time Location Sharing: Users should have the ability to initiate live location sharing, which enables their contacts to view their current location on a map for the duration of the sharing session.
2. Customizable Sharing Duration: The feature should allow users to set a specific duration for which they wish to share their live location. After the duration expires, the location sharing should automatically stop, ensuring users have complete control over their shared information.
3. Granular Control: Users should have the flexibility to choose whom they wish to share their live location with on a case-by-case basis, or to revoke location sharing at any time during an active session.
Benefits:
The addition of live location sharing with duration would offer several benefits to the Briar Messenger community:
1. Enhanced Safety: Users will have a practical tool for sharing their real-time location during critical situations, providing an extra layer of safety and reassurance.
2. Seamless Coordination: Friends and family can coordinate meet-ups more efficiently, as they'll be able to see each other's locations in real-time.
3. Increased User Engagement: The introduction of such a feature could attract new users to the platform and increase overall user engagement.
4. Comprehensive Application: By incorporating live location sharing, Briar Messenger can become a more comprehensive communication tool for both everyday use and emergency situationshttps://code.briarproject.org/briar/briar/-/issues/2438Incognito keyboard disables voice typing in Gboard2023-07-04T15:12:34ZakwizgranIncognito keyboard disables voice typing in GboardBriar uses the "no personalized learning" flag (incognito keyboard) for all text input. A user reported that this prevents them from using voice typing with Gboard.
We should probably provide a setting for this, as some users need voice...Briar uses the "no personalized learning" flag (incognito keyboard) for all text input. A user reported that this prevents them from using voice typing with Gboard.
We should probably provide a setting for this, as some users need voice typing for accessibility.https://code.briarproject.org/briar/briar/-/issues/2437Use `SystemClock#currentNetworkTimeClock()` to diagnose clock sync isses2023-06-28T13:56:25ZTorsten GroteUse `SystemClock#currentNetworkTimeClock()` to diagnose clock sync isses`SystemClock#currentNetworkTimeClock()` may be useful for diagnosing whether clock sync issues are due to misconfiguration or NTP tampering.`SystemClock#currentNetworkTimeClock()` may be useful for diagnosing whether clock sync issues are due to misconfiguration or NTP tampering.https://code.briarproject.org/briar/briar/-/issues/2436Explain signing of briar-headless on macOS2023-06-15T16:19:44ZSebastianExplain signing of briar-headless on macOSExplain how to sign using an Apple developer certificate and also how to sign using a certificate that has been created locally for debugging etc.Explain how to sign using an Apple developer certificate and also how to sign using a certificate that has been created locally for debugging etc.https://code.briarproject.org/briar/briar/-/issues/2435Camera can't focus on QR code in continuous-picture mode2023-06-08T12:13:45ZakwizgranCamera can't focus on QR code in continuous-picture modeA user reported that their camera can't focus on a QR code. The log shows that the camera's focus mode is continuous-picture (unlike #346 which concerns fixed-focus cameras).
* Android version: 10
* Phone model: Doogee S59 (S59_EEA)
* B...A user reported that their camera can't focus on a QR code. The log shows that the camera's focus mode is continuous-picture (unlike #346 which concerns fixed-focus cameras).
* Android version: 10
* Phone model: Doogee S59 (S59_EEA)
* Briar version: 1.5.3 (1f1a97f)
* User feedback: "I am writing again about the camera focus issue when adding a contact. It does not indicate the focus of the camera at all. Only with Briar do I have this problem."
Edited log:
```
05-26 10:17:14.255 I/CameraView: Opening camera
05-26 10:17:14.258 I/CameraView: Using back-facing camera
05-26 10:17:14.301 I/CameraView: Screen rotation 0 degrees, camera orientation 90 degrees
05-26 10:17:14.305 I/CameraView: Scene modes: [auto, action, portrait, landscape, night, night-portrait, theatre, beach, snow, sunset, steadyphoto, fireworks, sports, party, candlelight, barcode, hdr]
05-26 10:17:14.309 I/CameraView: Focus modes: [auto, macro, continuous-video, continuous-picture]
05-26 10:17:14.312 I/CameraView: Video stabilisation enabled: true
05-26 10:17:14.312 I/CameraView: Scene mode: barcode
05-26 10:17:14.312 I/CameraView: Focus mode: continuous-picture
05-26 10:17:14.312 I/CameraView: Flash mode: off
05-26 10:17:14.313 I/CameraView: Preview size: 1920x1080
05-26 10:17:14.368 I/CameraView: Surface created
05-26 10:17:14.368 I/CameraView: Surface changed: 720x1340
05-26 10:17:14.370 I/CameraView: Size 1920x1440, stretch 1.3958333, zoom 5.5296, score 0.12956055
05-26 10:17:14.370 I/CameraView: Size 1920x1088, stretch 1.0546296, zoom 4.17792, score 0.2269551
05-26 10:17:14.370 I/CameraView: Size 1920x1080, stretch 1.046875, zoom 4.1472, score 0.23032984
05-26 10:17:14.370 I/CameraView: Size 1600x1200, stretch 1.3958333, zoom 3.84, score 0.18656717
05-26 10:17:14.370 I/CameraView: Size 1440x1080, stretch 1.3958333, zoom 3.1104, score 0.23032986
05-26 10:17:14.370 I/CameraView: Size 1440x720, stretch 1.0746269, zoom 2.0736, score 0.44876328
05-26 10:17:14.370 I/CameraView: Size 1280x960, stretch 1.3958333, zoom 2.4576, score 0.2915112
05-26 10:17:14.370 I/CameraView: Size 1280x720, stretch 1.046875, zoom 1.8432, score 0.5182421
05-26 10:17:14.370 I/CameraView: Size 960x960, stretch 1.861111, zoom 1.8432, score 0.2915112
05-26 10:17:14.370 I/CameraView: Size 960x720, stretch 1.3958333, zoom 1.3824, score 0.5182422
05-26 10:17:14.370 I/CameraView: Size 960x540, stretch 1.046875, zoom 1.0368, score 0.92131937
05-26 10:17:14.370 I/CameraView: Size 960x480, stretch 1.0746269, zoom 1.0850694, score 0.8576
05-26 10:17:14.370 I/CameraView: Size 800x600, stretch 1.3958333, zoom 1.0416666, score 0.68776125
05-26 10:17:14.370 I/CameraView: Size 720x720, stretch 1.861111, zoom 1.0368, score 0.5182421
05-26 10:17:14.370 I/CameraView: Size 720x480, stretch 1.2407407, zoom 1.4467592, score 0.5570866
05-26 10:17:14.370 I/CameraView: Size 640x480, stretch 1.3958333, zoom 1.6276041, score 0.44016722
05-26 10:17:14.370 I/CameraView: Size 352x288, stretch 1.5227271, zoom 4.9321337, score 0.13315058
05-26 10:17:14.370 I/CameraView: Size 320x240, stretch 1.3958333, zoom 6.5104165, score 0.110041805
05-26 10:17:14.370 I/CameraView: Size 192x144, stretch 1.3958333, zoom 18.08449, score 0.03961505
05-26 10:17:14.370 I/CameraView: Size 192x108, stretch 1.046875, zoom 24.112654, score 0.039615046
05-26 10:17:14.371 I/CameraView: Size 176x144, stretch 1.5227271, zoom 19.728535, score 0.033287644
05-26 10:17:14.371 I/CameraView: Size 160x96, stretch 1.1166667, zoom 32.552082, score 0.027510447
05-26 10:17:14.371 I/CameraView: Best size 960x540
05-26 10:17:14.373 I/CameraView: Video stabilisation enabled: true
05-26 10:17:14.373 I/CameraView: Scene mode: barcode
05-26 10:17:14.373 I/CameraView: Focus mode: continuous-picture
05-26 10:17:14.373 I/CameraView: Flash mode: off
05-26 10:17:14.373 I/CameraView: Preview size: 960x540
05-26 10:17:14.373 I/CameraView: Starting preview
```https://code.briarproject.org/briar/briar/-/issues/2431MailboxIntegrationTest sometimes fails in CI pipelines2023-08-28T16:03:06ZakwizgranMailboxIntegrationTest sometimes fails in CI pipelineshttps://code.briarproject.org/briar/briar/-/issues/2430Icons are missing from our F-Droid repo2023-04-28T17:31:20ZakwizgranIcons are missing from our F-Droid repoOur F-Droid repo doesn't appear to have up-to-date icons for Briar or Mailbox. The newest icons for Briar are for the long-obsolete 1.1.6 release.Our F-Droid repo doesn't appear to have up-to-date icons for Briar or Mailbox. The newest icons for Briar are for the long-obsolete 1.1.6 release.https://code.briarproject.org/briar/briar/-/issues/2429SecurityException: Permission Denial for CLOSE_SYSTEM_DIALOGS2023-04-18T15:39:33ZakwizgranSecurityException: Permission Denial for CLOSE_SYSTEM_DIALOGS* Android version: 12
* Phone model: Google Pixel 3 XL (crosshatch)
* Briar version: 1.4.23 (070165f)
* User feedback: "I wrote a message, then Briar shut down. This also happens frequently to other apps."
Stacktrace:
```
java.lang.Secu...* Android version: 12
* Phone model: Google Pixel 3 XL (crosshatch)
* Briar version: 1.4.23 (070165f)
* User feedback: "I wrote a message, then Briar shut down. This also happens frequently to other apps."
Stacktrace:
```
java.lang.SecurityException: Permission Denial: android.intent.action.CLOSE_SYSTEM_DIALOGS broadcast from org.briarproject.briar.android (pid=24174, uid=10004) requires android.permission.BROADCAST_CLOSE_SYSTEM_DIALOGS.
at android.os.Parcel.createExceptionOrNull(Parcel.java:2425)
at android.os.Parcel.createException(Parcel.java:2409)
at android.os.Parcel.readException(Parcel.java:2392)
at android.os.Parcel.readException(Parcel.java:2334)
at android.app.IActivityManager$Stub$Proxy.closeSystemDialogs(IActivityManager.java:7614)
at com.android.internal.policy.PhoneWindow.sendCloseSystemWindows(PhoneWindow.java:3791)
at com.android.internal.policy.PhoneFallbackEventHandler.sendCloseSystemWindows(PhoneFallbackEventHandler.java:323)
at com.android.internal.policy.PhoneFallbackEventHandler.startCallActivity(PhoneFallbackEventHandler.java:275)
at com.android.internal.policy.PhoneFallbackEventHandler.onKeyUp(PhoneFallbackEventHandler.java:261)
at com.android.internal.policy.PhoneFallbackEventHandler.dispatchKeyEvent(PhoneFallbackEventHandler.java:76)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:6317)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:6141)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5623)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5680)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5646)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5811)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5654)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:5868)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5627)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5680)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5646)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:5654)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:5627)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:5680)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:5646)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:5844)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:6002)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:3158)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:2722)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:2713)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:3135)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:154)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:335)
at android.os.Looper.loopOnce(Looper.java:161)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7842)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1003)
Caused by: android.os.RemoteException: Remote stack trace:
at com.android.server.wm.ActivityTaskManagerService.checkCanCloseSystemDialogs(ActivityTaskManagerService.java:2955)
at com.android.server.wm.ActivityTaskManagerService.access$900(ActivityTaskManagerService.java:294)
at com.android.server.wm.ActivityTaskManagerService$LocalService.checkCanCloseSystemDialogs(ActivityTaskManagerService.java:5309)
at com.android.server.wm.ActivityTaskManagerService$LocalService.closeSystemDialogs(ActivityTaskManagerService.java:5783)
at com.android.server.am.ActivityManagerService.closeSystemDialogs(ActivityManagerService.java:3800)
```
Edited log:
```
04-02 10:16:30.039 I/BaseActivity: Starting ConversationActivity
04-02 10:16:30.041 I/BaseActivity: Resuming ConversationActivity
04-02 10:16:32.999 I/AutoDeleteManagerImpl: Sending message with auto-delete timer 604800000
04-02 10:16:33.045 I/DuplexOutgoingSession: Next send time decreased
04-02 10:16:33.052 I/DuplexOutgoingSession: Generated offer: true
04-02 10:16:33.052 I/DuplexOutgoingSession: Sent offer
04-02 10:16:33.061 I/DuplexOutgoingSession: Generated offer: false
04-02 10:16:33.495 I/DuplexOutgoingSession: Generated batch: true
04-02 10:16:33.495 I/ConversationActivity: Messages sent
04-02 10:16:33.495 I/DuplexOutgoingSession: Sent batch
04-02 10:16:33.504 I/DuplexOutgoingSession: Generated batch: false
04-02 10:16:34.069 I/ConversationActivity: Messages acked
04-02 10:16:42.127 I/DuplexOutgoingSession: Generated request: true
04-02 10:16:42.127 I/DuplexOutgoingSession: Sent request
04-02 10:16:42.128 I/DuplexOutgoingSession: Generated request: false
04-02 10:16:42.743 I/ValidationManagerImpl: Validating message for org.briarproject.briar.messaging
04-02 10:16:42.761 I/DuplexOutgoingSession: Generated ack: true
04-02 10:16:42.762 I/DuplexOutgoingSession: Sent ack
04-02 10:16:42.768 I/ValidationManagerImpl: Delivering message for org.briarproject.briar.messaging
04-02 10:16:42.770 I/AutoDeleteManagerImpl: Mirroring auto-delete timer 604800000
04-02 10:16:42.786 I/ConversationActivity: Message received, adding
04-02 10:16:42.791 I/DuplexOutgoingSession: Generated ack: false
04-02 10:17:12.763 I/DuplexOutgoingSession: Sending keepalive
04-02 10:17:33.484 I/DuplexOutgoingSession: Checking for retransmittable messages
04-02 10:17:33.514 I/DuplexOutgoingSession: Generated batch: false
04-02 10:17:33.520 I/DuplexOutgoingSession: Generated offer: false
```
As far as I can tell, the crash happens because `PhoneFallbackEventHandler` is being called to [handle a key event](https://cs.android.com/android/platform/superproject/+/master:frameworks/base/core/java/com/android/internal/policy/PhoneFallbackEventHandler.java;drc=95c1165bb895dd844e1793460710f7163dd330a3;l=250) for `KEYCODE_CALL`. The handler tries to start a call activity for the current app, which fails because Briar doesn't have permission to close system dialogs (which I guess is part of the process of launching the call activity).
So perhaps this is happening just because the user hits the call button on their device/keyboard, or perhaps it also requires some other circumstances, like an unusual device/keyboard config. Either way, it looks like a problem that's specific to this user and (based on their comment) not specific to Briar.https://code.briarproject.org/briar/briar/-/issues/2427Don't scroll to bottom when accepting invitations2023-04-09T01:16:48Zre tiolusDon't scroll to bottom when accepting invitationsIt's quite annoying, when accepting a lot of invites that UI scroll back to the bottom of the conversation. Would be also cool that the "UP" arrow goes to the first unread message of the chat.It's quite annoying, when accepting a lot of invites that UI scroll back to the bottom of the conversation. Would be also cool that the "UP" arrow goes to the first unread message of the chat.https://code.briarproject.org/briar/briar/-/issues/2425List of RSS feeds doesn't update when feed is removed2023-03-27T11:11:22ZakwizgranList of RSS feeds doesn't update when feed is removedThe list of RSS feeds doesn't update when the feed is removed by unsubscribing via the feed's overflow menu, rather than using the delete button in the list of RSS feeds.
Steps to reproduce:
* Add an RSS feed
* Tap the entry in the list...The list of RSS feeds doesn't update when the feed is removed by unsubscribing via the feed's overflow menu, rather than using the delete button in the list of RSS feeds.
Steps to reproduce:
* Add an RSS feed
* Tap the entry in the list of RSS feeds to open the feed
* Unsubscribe via the overflow menu ("Remove blog")
* Expected: The list of RSS feeds is shown, it's now empty
* Actual: The list of RSS feeds is show, it still contains the removed feed. Tapping the feed again causes a NoSuchGroupException (error toast, no crash)https://code.briarproject.org/briar/briar/-/issues/2424[Feature] Add the ability to visualise the use of storage2023-03-30T08:54:30Zre tiolus[Feature] Add the ability to visualise the use of storageIt would be interesting, especially on the desktop client, to be able to easily consult the storage that Briar uses, especially when you start adding a lot of contacts and entering many groups/forumsIt would be interesting, especially on the desktop client, to be able to easily consult the storage that Briar uses, especially when you start adding a lot of contacts and entering many groups/forumshttps://code.briarproject.org/briar/briar/-/issues/2423Adding contact at a distance - Tapping the 'Add contact' button before the ni...2023-03-16T16:09:15ZIvanaAdding contact at a distance - Tapping the 'Add contact' button before the nickname is typed in, leaves the screen 'in progress'...**Steps to reproduce:**
- tap the 'add contact at a distance' button
- past the contact's link into the appropriate field and tap Continue
- On the screen that follows, user needs to type in the nickname for their contact.
- Once the k...**Steps to reproduce:**
- tap the 'add contact at a distance' button
- past the contact's link into the appropriate field and tap Continue
- On the screen that follows, user needs to type in the nickname for their contact.
- Once the keyboard opens, the button Add contact and the line where the nickname needs to be typed in are quite close on the screen
![Screenshot_20230316_154402](/uploads/c72e004ce6af6af07b20d356e7f64d1f/Screenshot_20230316_154402.png)
- This means that it could happen that the user accidentally taps on the Add contact button before they type in the nickname
- if that happens, then the user sees this
![Screenshot_20230316_154221](/uploads/3d580b498a2a2a337e8fa89d9c3c818d/Screenshot_20230316_154221.png)
- the user is still able to type the nicknam in, but tapping the enter button on the keyboard doesn't do anything other than closing the keyboard.
- once the keyboard is closed, then the user sees this
![Screenshot_20230316_155028](/uploads/cee861c9ecd822405197fcc626fc769f/Screenshot_20230316_155028.png)
The screen keeps showing the small 'inprogress' circle...
it happens inMaster and in the MR 1770 ( build hash 1627f4f )
Tested onHTC Android 7, Nokia Android 10
Workaround is to navigate one screen back and tap on Continue button again...https://code.briarproject.org/briar/briar/-/issues/2422OutOfMemoryError: Could not allocate JNI Env2024-03-18T18:05:12ZakwizgranOutOfMemoryError: Could not allocate JNI Env* Android version: 7.1.2
* Phone model: UHANS A6
* Briar version: 1.4.22 (f02bbeb)
Stacktrace:
```
java.lang.OutOfMemoryError: Could not allocate JNI Env
at java.lang.Thread.nativeCreate(Native Method)
at java.lang.Threa...* Android version: 7.1.2
* Phone model: UHANS A6
* Briar version: 1.4.22 (f02bbeb)
Stacktrace:
```
java.lang.OutOfMemoryError: Could not allocate JNI Env
at java.lang.Thread.nativeCreate(Native Method)
at java.lang.Thread.start(Thread.java:730)
at java.util.concurrent.ThreadPoolExecutor.addWorker(ThreadPoolExecutor.java:941)
at java.util.concurrent.ThreadPoolExecutor.execute(ThreadPoolExecutor.java:1359)
at org.briarproject.bramble.system.AndroidWakeLockManagerImpl.executeWakefully(AndroidWakeLockManagerImpl.java:71)
at org.briarproject.bramble.system.AndroidWakefulIoExecutorModule.lambda$provideWakefulIoExecutor$0(AndroidWakefulIoExecutorModule.java:20)
at org.briarproject.bramble.system.AndroidWakefulIoExecutorModule.$r8$lambda$tnFm9U65p91JUPzzmM4twddDl7M(AndroidWakefulIoExecutorModule.java)
at org.briarproject.bramble.system.AndroidWakefulIoExecutorModule$$ExternalSyntheticLambda0.execute(R8$$SyntheticClass)
at org.briarproject.bramble.plugin.tor.TorPlugin.connect(TorPlugin.java:638)
at org.briarproject.bramble.plugin.tor.TorPlugin.poll(TorPlugin.java:633)
at org.briarproject.bramble.plugin.PollerImpl.poll(PollerImpl.java:231)
at org.briarproject.bramble.plugin.PollerImpl.access$1000(PollerImpl.java:57)
at org.briarproject.bramble.plugin.PollerImpl$PollTask.run(PollerImpl.java:277)
at org.briarproject.bramble.system.AndroidWakeLockManagerImpl.lambda$executeWakefully$0(AndroidWakeLockManagerImpl.java:73)
at org.briarproject.bramble.system.AndroidWakeLockManagerImpl.$r8$lambda$P0v7ccI1GqbvGyqUJX4idUffuJI(AndroidWakeLockManagerImpl.java)
at org.briarproject.bramble.system.AndroidWakeLockManagerImpl$$ExternalSyntheticLambda1.run(R8$$SyntheticClass)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
```
Last lines of log:
```
03-13 04:15:57.257 I/PollerImpl: Polling plugin org.briarproject.bramble.tor
03-13 04:15:57.394 I/ConnectionRegistryImpl: 5 contacts connected or better: org.briarproject.bramble.tor
03-13 04:15:57.395 I/TorPlugin: Connecting to v3 tj2[scrubbed]
03-13 04:15:57.395 I/TorPlugin: Connecting to v3 nix[scrubbed]
03-13 04:15:57.396 I/TorPlugin: Connecting to v3 ela[scrubbed]
03-13 04:15:57.396 I/TorPlugin: Connecting to v3 jvx[scrubbed]
03-13 04:15:57.396 I/TorPlugin: Connecting to v3 72z[scrubbed]
03-13 04:15:57.397 I/TorPlugin: Connecting to v3 msd[scrubbed]
03-13 04:15:57.395 I/TorPlugin: Connecting to v3 37p[scrubbed]
03-13 04:15:57.397 I/TorPlugin: Connecting to v3 lp6[scrubbed]
03-13 04:15:57.400 I/TorPlugin: Connecting to v3 uqp[scrubbed]
03-13 04:15:57.400 I/TorPlugin: Connecting to v3 jqf[scrubbed]
03-13 04:15:57.400 I/TorPlugin: Connecting to v3 ihj[scrubbed]
03-13 04:15:57.401 I/TorPlugin: Connecting to v3 vux[scrubbed]
03-13 04:15:57.401 I/TorPlugin: Connecting to v3 ick[scrubbed]
03-13 04:15:57.402 I/TorPlugin: Connecting to v3 e2v[scrubbed]
03-13 04:15:57.402 I/TorPlugin: Connecting to v3 beq[scrubbed]
03-13 04:15:57.402 I/TorPlugin: Connecting to v3 s74[scrubbed]
03-13 04:15:57.402 I/TorPlugin: Connecting to v3 2qq[scrubbed]
03-13 04:15:57.403 I/TorPlugin: Connecting to v3 fvs[scrubbed]
03-13 04:15:57.403 I/TorPlugin: Connecting to v3 hbd[scrubbed]
03-13 04:15:57.404 I/TorPlugin: Connecting to v3 cvj[scrubbed]
03-13 04:15:57.404 I/TorPlugin: Connecting to v3 btz[scrubbed]
03-13 04:15:57.404 I/TorPlugin: Connecting to v3 e6y[scrubbed]
03-13 04:15:57.404 I/TorPlugin: Connecting to v3 d5z[scrubbed]
03-13 04:15:57.408 I/TorPlugin: Could not connect to v3 fvs[scrubbed]: java.net.ConnectException: Too many open files
03-13 04:15:57.408 I/DuplexOutgoingSession: Sending keepalive
03-13 04:15:57.416 I/TorPlugin: Could not connect to v3 jqf[scrubbed]: java.net.SocketException: Too many open files
03-13 04:15:57.416 I/TorPlugin: Could not connect to v3 ick[scrubbed]: java.net.ConnectException: Too many open files
03-13 04:15:57.418 I/TorPlugin: Connecting to v3 z7i[scrubbed]
03-13 04:15:57.420 I/TorPlugin: Connecting to v3 o2j[scrubbed]
03-13 04:15:57.420 I/TorPlugin: Could not connect to v3 o2j[scrubbed]: java.net.SocketException: Too many open files
```
* NativeHeapAllocated: 16,363,552
* NativeHeapFree: 4,607,968
* NativeHeapTotal: 20,971,520
* SystemMemoryFree: 228,368,384
* SystemMemoryLow: false
* SystemMemoryThreshold: 150,994,944
* SystemMemoryTotal: 994,488,320
* VirtualMachineMemoryFree: 323,760
* VirtualMachineMemoryMaximum: 201,326,592
* VirtualMachineMemoryTotal: 44,992,648https://code.briarproject.org/briar/briar/-/issues/2421Link to original post is lost when RSS post is very long2023-03-06T16:08:14ZakwizgranLink to original post is lost when RSS post is very longWhen an RSS post is long enough that it needs to be truncated to fit into a Briar blog post, the link to the original post is lost.
This can currently be seen with the feed https://dynomight.net/feed.xml, where the post https://dynomigh...When an RSS post is long enough that it needs to be truncated to fit into a Briar blog post, the link to the original post is lost.
This can currently be seen with the feed https://dynomight.net/feed.xml, where the post https://dynomight.net/scaling/ gets truncated.https://code.briarproject.org/briar/briar/-/issues/2419Adding Slovak to language menu2023-03-15T12:28:47ZJozef GaalAdding Slovak to language menuI have completed the translation for the Slovak language.
Can you please add Slovak to the language menu for Android app?I have completed the translation for the Slovak language.
Can you please add Slovak to the language menu for Android app?https://code.briarproject.org/briar/briar/-/issues/2418"Signing out" progress screen is no longer shown when relaunching quickly aft...2023-08-08T01:50:09Zakwizgran"Signing out" progress screen is no longer shown when relaunching quickly after signing outWhen the app was relaunched quickly after signing out, we used to show a progress screen with a "signing out" message to make it clear that the user's previous action was still being processed. But now when I relaunch the app after signi...When the app was relaunched quickly after signing out, we used to show a progress screen with a "signing out" message to make it clear that the user's previous action was still being processed. But now when I relaunch the app after signing out, the UI immediately closes again without letting me see the progress screen. This can happen several times before shutdown completes, so it's not just a race between relaunching the app and shutdown completing.
Tested on Android 13 (CalyxOS 4.6.1).https://code.briarproject.org/briar/briar/-/issues/2417Add ability to mark private message / groups / forums as read2023-11-06T19:49:17Zre tiolusAdd ability to mark private message / groups / forums as readEx: When joining a forum with over 1000 posts, it is horrible to have to manually scroll to the last post. It would be necessary to add an option to mark conversations as read.Ex: When joining a forum with over 1000 posts, it is horrible to have to manually scroll to the last post. It would be necessary to add an option to mark conversations as read.