briar issueshttps://code.briarproject.org/groups/briar/-/issues2023-04-19T14:32:15Zhttps://code.briarproject.org/briar/briar-desktop/-/issues/517Cannot write to /dev/urandom on macOS2023-04-19T14:32:15ZSebastianCannot write to /dev/urandom on macOSGetting this stacktrace on the log:
```
16:25:45.465 [main] INFO o.b.b.crypto.CryptoComponentImpl - Default SecureRandom: SUN NativePRNG
16:25:45.467 [main] WARN o.b.b.s.UnixSecureRandomProvider - java.io.IOException: Operation not pe...Getting this stacktrace on the log:
```
16:25:45.465 [main] INFO o.b.b.crypto.CryptoComponentImpl - Default SecureRandom: SUN NativePRNG
16:25:45.467 [main] WARN o.b.b.s.UnixSecureRandomProvider - java.io.IOException: Operation not permitted
java.io.IOException: Operation not permitted
at java.base/java.io.FileOutputStream.writeBytes(Native Method)
at java.base/java.io.FileOutputStream.write(FileOutputStream.java:349)
at java.base/java.io.DataOutputStream.writeLong(DataOutputStream.java:230)
at org.briarproject.bramble.system.AbstractSecureRandomProvider.writeToEntropyPool(AbstractSecureRandomProvider.java:24)
at org.briarproject.bramble.system.UnixSecureRandomProvider.writeSeed(UnixSecureRandomProvider.java:49)
at org.briarproject.bramble.system.UnixSecureRandomProvider.getProvider(UnixSecureRandomProvider.java:41)
at org.briarproject.bramble.crypto.CryptoComponentImpl.<init>(CryptoComponentImpl.java:85)
at org.briarproject.bramble.crypto.CryptoModule.provideCryptoComponent(CryptoModule.java:32)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.provideCryptoComponent(CryptoModule_ProvideCryptoComponentFactory.java:48)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.get(CryptoModule_ProvideCryptoComponentFactory.java:37)
at org.briarproject.bramble.crypto.CryptoModule_ProvideCryptoComponentFactory.get(CryptoModule_ProvideCryptoComponentFactory.java:13)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.sync.MessageFactoryImpl_Factory.get(MessageFactoryImpl_Factory.java:27)
at org.briarproject.bramble.sync.MessageFactoryImpl_Factory.get(MessageFactoryImpl_Factory.java:11)
at org.briarproject.bramble.sync.SyncModule_ProvideMessageFactoryFactory.get(SyncModule_ProvideMessageFactoryFactory.java:32)
at org.briarproject.bramble.sync.SyncModule_ProvideMessageFactoryFactory.get(SyncModule_ProvideMessageFactoryFactory.java:12)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseFactory.get(DatabaseModule_ProvideDatabaseFactory.java:42)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseFactory.get(DatabaseModule_ProvideDatabaseFactory.java:15)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseComponentFactory.get(DatabaseModule_ProvideDatabaseComponentFactory.java:46)
at org.briarproject.bramble.db.DatabaseModule_ProvideDatabaseComponentFactory.get(DatabaseModule_ProvideDatabaseComponentFactory.java:16)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl_Factory.get(LifecycleManagerImpl_Factory.java:36)
at org.briarproject.bramble.lifecycle.LifecycleManagerImpl_Factory.get(LifecycleManagerImpl_Factory.java:13)
at org.briarproject.bramble.lifecycle.LifecycleModule_ProvideLifecycleManagerFactory.get(LifecycleModule_ProvideLifecycleManagerFactory.java:32)
at org.briarproject.bramble.lifecycle.LifecycleModule_ProvideLifecycleManagerFactory.get(LifecycleModule_ProvideLifecycleManagerFactory.java:12)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.bramble.cleanup.CleanupModule_ProvideCleanupManagerFactory.get(CleanupModule_ProvideCleanupManagerFactory.java:41)
at org.briarproject.bramble.cleanup.CleanupModule_ProvideCleanupManagerFactory.get(CleanupModule_ProvideCleanupManagerFactory.java:14)
at dagger.internal.DoubleCheck.get(DoubleCheck.java:47)
at org.briarproject.briar.desktop.DaggerBriarDesktopTestApp.injectEagerSingletons(DaggerBriarDesktopTestApp.java:1943)
at org.briarproject.briar.desktop.DaggerBriarDesktopTestApp.inject(DaggerBriarDesktopTestApp.java:1751)
at org.briarproject.bramble.BrambleCoreEagerSingletons$Helper.injectEagerSingletons(BrambleCoreEagerSingletons.java:51)
at org.briarproject.briar.desktop.RunWithTemporaryAccount.run(RunWithTemporaryAccount.kt:77)
at org.briarproject.briar.desktop.TestDeterministicConversationsKt.main(TestDeterministicConversations.kt:25)
at org.briarproject.briar.desktop.TestDeterministicConversationsKt.main(TestDeterministicConversations.kt)
16:25:45.519 [main] INFO o.b.b.crypto.CryptoComponentImpl - Installed SecureRandom: UnixPRNG SHA1PRNG
```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-desktop/-/issues/515Mailbox Error Dialog: when unpairing is successful, don't show "error" as title2023-04-26T08:00:43ZSebastianMailbox Error Dialog: when unpairing is successful, don't show "error" as titleI think it is rather confusing when this says "error" in this case. It's actually rather a success dialog.I think it is rather confusing when this says "error" in this case. It's actually rather a success dialog.Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar-desktop/-/issues/513Private Groups: Show sidebar badge and notification on new message2023-04-15T18:37:59ZMikolai GütschowPrivate Groups: Show sidebar badge and notification on new messagepart of #12part of #12Desktop 0.5.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/512ThreadedGroupConversationHeader: shared with information hidden for long grou...2023-05-12T21:12:56ZMikolai GütschowThreadedGroupConversationHeader: shared with information hidden for long group namesas can be seen on the following screenshot:
![image](/uploads/6ecc0de4731a5cfe0393792b9123540e/image.png)as can be seen on the following screenshot:
![image](/uploads/6ecc0de4731a5cfe0393792b9123540e/image.png)Desktop 0.5.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/510sha256 of briar-desktop-debian-bullseye-0.4.1-beta.deb on website does not match2023-03-13T09:09:30Zmicressorsha256 of briar-desktop-debian-bullseye-0.4.1-beta.deb on website does not matchThe sha256 of sum of **briar-desktop-debian-bullseye-0.4.1-beta.deb** does not seem to be correct anymore.
https://briarproject.org/download-briar-desktop/
Last week this was still ok.The sha256 of sum of **briar-desktop-debian-bullseye-0.4.1-beta.deb** does not seem to be correct anymore.
https://briarproject.org/download-briar-desktop/
Last week this was still ok.https://code.briarproject.org/briar/briar-desktop/-/issues/509Deleting all private messages does not decrement the message counter2023-05-17T11:41:53ZSebastianDeleting all private messages does not decrement the message counterReproducible by deleting all messages from a contact if that contact is the only one still having unread messages that are not yet visible.Reproducible by deleting all messages from a contact if that contact is the only one still having unread messages that are not yet visible.Desktop 0.5.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/508Release 0.4.2-beta2023-08-29T13:34:52ZSebastianRelease 0.4.2-betasee #463 as reference
### Preparation
* [x] ~~String freeze (disable auto-pull) and announcement on Transifex at least a week before the release~~
* [x] ~~Update translations (MR)~~
- run `tx pull -a -f`, add new languages to `Une...see #463 as reference
### Preparation
* [x] ~~String freeze (disable auto-pull) and announcement on Transifex at least a week before the release~~
* [x] ~~Update translations (MR)~~
- run `tx pull -a -f`, add new languages to `UnencryptedSettings.kt` (see [java locale list](https://www.oracle.com/java/technologies/javase/jdk17-suported-locales.html)), create commit
- temporarily remove `minimum_perc = 50` from `.tx/config`
- run `tx pull -a -f && rm briar-desktop/src/main/resources/strings/* && git restore briar-desktop/src/main/resources/strings/*`
- re-add `minimum_perc = 50` to `.tx/config`, append changes to last commit
* [x] Extensive testing
* [x] Update [changelog](https://code.briarproject.org/briar/briar-desktop/-/wikis/Changelog)
### Version bump
* [x] Change version in build config and metainfo.xml (!325)
* [x] Tag in Git (use `git tag -a -s <version-name>-beta -m "Briar Desktop <version-name>-beta"`) (https://code.briarproject.org/briar/briar-desktop/-/tags/0.4.2-beta)
* [x] GitLab CI builds release files automatically (https://code.briarproject.org/briar/briar-desktop/-/pipelines/13935)
### Deployment
* [x] Copy release files to desktop.briarproject.org (using [`update-binaries.sh`](https://code.briarproject.org/briar/briar-desktop-servers/-/blob/main/root/update-binaries.sh) with updated version code)
* [x] Rewrite and check that permalink points to correct version (don't forget to test and reload web server)
* [x] Update version and checksums (calculated using [`verify_hashsums.sh`](https://code.briarproject.org/briar/briar-desktop-servers/-/blob/main/verify_hashsums.sh)) on website (https://code.briarproject.org/briar/website/-/merge_requests/108)
* [x] Publish website
### PR
* [x] Inform 3rd party maintainers about release
* [ ] Publish blog post
* [x] Post on social media ([Mastodon](), [Twitter](TWITTER)), useful [character counter](https://charactercounter.com/twitter)
* [x] ~~Update screenshot on website~~
### Backlog
* [x] Update description, milestone and due date of #337
* [x] ~~Re-enable auto-pull on Transifex under Resources > Auto update resources > add [url](https://code.briarproject.org/briar/briar-desktop/-/raw/main/briar-desktop/src/main/resources/strings/BriarDesktop.properties)~~Desktop 0.4.2https://code.briarproject.org/briar/briar-desktop/-/issues/507Crash when forum messages try to get marked as read2023-03-12T17:56:23ZSebastianCrash when forum messages try to get marked as readA user reported that opening an existing forum with unread messages crashes the app once the view tries to mark some of the messages as read. Either when there are some unread messages directly on the view when opened or once scrolling t...A user reported that opening an existing forum with unread messages crashes the app once the view tries to mark some of the messages as read. Either when there are some unread messages directly on the view when opened or once scrolling to a position where unread messages appear.
This is the stacktrace:
```
17:21:47.900 [main] INFO org.briarproject.briar.desktop.Main - This is briar-desktop version 0.4.1-beta
17:21:47.901 [main] INFO org.briarproject.briar.desktop.Main - Build info:
17:21:47.901 [main] INFO org.briarproject.briar.desktop.Main - Git hash 227dfcfa07b4da07b494209d2058434929ea9ce5
17:21:47.902 [main] INFO org.briarproject.briar.desktop.Main - Commit time 2023-03-10 11:20:52
17:21:47.902 [main] INFO org.briarproject.briar.desktop.Main - Tag 0.4.1-beta
17:21:48.963 [AWT-EventQueue-0] INFO o.b.b.d.n.l.LibnotifyNotificationProvider - Notification server capabilities: actions, body, body-hyperlinks, body-images, body-markup, persistence
17:22:05.608 [AWT-EventQueue-0] WARN org.briarproject.briar.desktop.Main - Uncaught exception in thread AWT-EventQueue-0
java.util.NoSuchElementException: null
at org.briarproject.bramble.api.Multiset.remove(Multiset.java:62)
at org.briarproject.briar.desktop.ui.MessageCounterImpl.removeCount(MessageCounterImpl.kt:113)
at org.briarproject.briar.desktop.ui.MessageCounterImpl._init_$lambda$0(MessageCounterImpl.kt:93)
at org.briarproject.bramble.event.EventBusImpl.lambda$broadcast$0(EventBusImpl.java:42)
at org.briarproject.briar.desktop.DesktopCoreModule.provideUiExecutor$lambda$0(DesktopCoreModule.kt:157)
at org.briarproject.bramble.event.EventBusImpl.broadcast(EventBusImpl.java:41)
at org.briarproject.briar.desktop.forums.ThreadedConversationViewModel.markPostsRead(ThreadedConversationViewModel.kt:186)
at org.briarproject.briar.desktop.forums.GroupConversationScreenKt$GroupConversationScreen$3$2.invoke(GroupConversationScreen.kt:84)
at org.briarproject.briar.desktop.forums.GroupConversationScreenKt$GroupConversationScreen$3$2.invoke(GroupConversationScreen.kt:84)
at org.briarproject.briar.desktop.forums.ThreadedConversationScreenKt$ThreadedConversationScreen$2$2$1.invokeSuspend(ThreadedConversationScreen.kt:90)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2$1.invoke(FlushCoroutineDispatcher.skiko.kt:62)
at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2$1.invoke(FlushCoroutineDispatcher.skiko.kt:57)
at androidx.compose.ui.platform.FlushCoroutineDispatcher.performRun(FlushCoroutineDispatcher.skiko.kt:91)
at androidx.compose.ui.platform.FlushCoroutineDispatcher.access$performRun(FlushCoroutineDispatcher.skiko.kt:37)
at androidx.compose.ui.platform.FlushCoroutineDispatcher$dispatch$2.invokeSuspend(FlushCoroutineDispatcher.skiko.kt:57)
at kotlin.coroutines.jvm.internal.BaseContinuationImpl.resumeWith(ContinuationImpl.kt:33)
at kotlinx.coroutines.DispatchedTask.run(DispatchedTask.kt:106)
at java.desktop/java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:318)
at java.desktop/java.awt.EventQueue.dispatchEventImpl(EventQueue.java:771)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:722)
at java.desktop/java.awt.EventQueue$4.run(EventQueue.java:716)
at java.base/java.security.AccessController.doPrivileged(AccessController.java:399)
at java.base/java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86)
at java.desktop/java.awt.EventQueue.dispatchEvent(EventQueue.java:741)
at java.desktop/java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:203)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:124)
at java.desktop/java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:113)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:109)
at java.desktop/java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.desktop/java.awt.EventDispatchThread.run(EventDispatchThread.java:90)
Suppressed: kotlinx.coroutines.DiagnosticCoroutineContextException: null
```
akwizgran was also able to reproduce it.Desktop 0.4.2SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/506Unsubscribing from forum with unread posts keeps the unread count in the mess...2023-03-12T17:00:30ZSebastianUnsubscribing from forum with unread posts keeps the unread count in the message counterThis can be observed when leaving the last forum that has unread message; the unread badge on the forum button stays there.This can be observed when leaving the last forum that has unread message; the unread badge on the forum button stays there.Desktop 0.4.2SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/505AddContact dialog: Bug in TextField2023-03-10T11:41:01ZMikolai GütschowAddContact dialog: Bug in TextFieldAfter entering the first character into the nickname field, the cursor gets reset to position 0 (the start of the string). Later keystrokes are processed correctly.
Only observed in this text field, not in the AddForum dialog, neither i...After entering the first character into the nickname field, the cursor gets reset to position 0 (the start of the string). Later keystrokes are processed correctly.
Only observed in this text field, not in the AddForum dialog, neither in the message compose field nor in the introduction/forum invitation message field.Desktop 0.4.1Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/504Tor not working on current main2023-03-10T08:50:20ZSebastianTor not working on current mainI'm getting this kind of error in the log on current main:
```
15:41:43.928 [pool-1-thread-1] INFO o.b.b.plugin.tor.TorPluginFactory - System's os.arch is amd64
15:41:43.928 [pool-1-thread-1] INFO o.b.b.plugin.tor.TorPluginFactory - T...I'm getting this kind of error in the log on current main:
```
15:41:43.928 [pool-1-thread-1] INFO o.b.b.plugin.tor.TorPluginFactory - System's os.arch is amd64
15:41:43.928 [pool-1-thread-1] INFO o.b.b.plugin.tor.TorPluginFactory - The selected architecture for Tor is x86_64
15:41:43.932 [pool-1-thread-4] INFO o.b.bramble.plugin.tor.TorPlugin - Installing Tor binary for x86_64
15:41:43.933 [pool-1-thread-4] WARN org.briarproject.briar.desktop.Main - Uncaught exception in thread pool-1-thread-4
java.lang.NullPointerException: null
at org.briarproject.nullsafety.NullSafety.requireNonNull(NullSafety.java:17)
at org.briarproject.bramble.system.JavaResourceProvider.getResourceInputStream(JavaResourceProvider.java:22)
at org.briarproject.bramble.plugin.tor.TorPlugin.getExecutableInputStream(TorPlugin.java:374)
at org.briarproject.bramble.plugin.tor.TorPlugin.installTorExecutable(TorPlugin.java:351)
at org.briarproject.bramble.plugin.tor.TorPlugin.installAssets(TorPlugin.java:335)
at org.briarproject.bramble.plugin.tor.TorPlugin.start(TorPlugin.java:247)
at org.briarproject.bramble.plugin.PluginManagerImpl$PluginStarter.run(PluginManagerImpl.java:232)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
at java.base/java.lang.Thread.run(Thread.java:833)
```
I think it's probably due to the changes in https://code.briarproject.org/briar/briar/-/merge_requests/1775Desktop 0.4.1SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/503Release 0.4.1-beta2023-03-12T16:52:48ZSebastianRelease 0.4.1-betasee #463 as reference
### Preparation
* [x] ~~String freeze (disable auto-pull) and announcement on Transifex at least a week before the release~~
* [x] Update translations (https://code.briarproject.org/briar/briar-desktop/-/merge_req...see #463 as reference
### Preparation
* [x] ~~String freeze (disable auto-pull) and announcement on Transifex at least a week before the release~~
* [x] Update translations (https://code.briarproject.org/briar/briar-desktop/-/merge_requests/318)
- run `tx pull -a -f`, add new languages to `UnencryptedSettings.kt` (see [java locale list](https://www.oracle.com/java/technologies/javase/jdk17-suported-locales.html)), create commit
- temporarily remove `minimum_perc = 50` from `.tx/config`
- run `tx pull -a -f && rm briar-desktop/src/main/resources/strings/* && git restore briar-desktop/src/main/resources/strings/*`
- re-add `minimum_perc = 50` to `.tx/config`, append changes to last commit
* [x] Extensive testing
* [x] Update [changelog](https://code.briarproject.org/briar/briar-desktop/-/wikis/Changelog)
### Version bump
* [x] Change version in build config and metainfo.xml (https://code.briarproject.org/briar/briar-desktop/-/merge_requests/320)
* [x] Tag in Git (use `git tag -a -s <version-name>-beta -m "Briar Desktop <version-name>-beta"`) (https://code.briarproject.org/briar/briar-desktop/-/tags/0.4.1-beta)
* [x] GitLab CI builds release files automatically (https://code.briarproject.org/briar/briar-desktop/-/pipelines/13913)
### Deployment
* [x] Copy release files to desktop.briarproject.org (using [`update-binaries.sh`](https://code.briarproject.org/briar/briar-desktop-servers/-/blob/main/root/update-binaries.sh) with updated version code)
* [x] Rewrite and check that permalink points to correct version (don't forget to test and reload web server)
* [x] Update version and checksums (calculated using [`verify_hashsums.sh`](https://code.briarproject.org/briar/briar-desktop-servers/-/blob/main/verify_hashsums.sh)) on website (website!107)
* [x] Publish website
### PR
_skipped due to critical bug detected with #507_
* [ ] ~~Inform 3rd party maintainers about release~~
* [ ] ~~Publish blog post~~
* [ ] ~~Post on social media ([Mastodon](), [Twitter](TWITTER)), useful [character counter](https://charactercounter.com/twitter)~~
* [x] ~~Update screenshot on website~~
### Backlog
* [x] Update description, milestone and due date of #337
* [x] ~~Re-enable auto-pull on Transifex under Resources > Auto update resources > add [url](https://code.briarproject.org/briar/briar-desktop/-/raw/main/briar-desktop/src/main/resources/strings/BriarDesktop.properties)~~Desktop 0.4.1https://code.briarproject.org/briar/briar/-/issues/2420SecurityException when requesting Bluetooth discoverability2024-03-19T11:28:53ZakwizgranSecurityException when requesting Bluetooth discoverability* Android version: 12
* Phone model: Nubia NX679J (NX679J-UN)
* Briar version: 1.4.22 (f02bbeb)
* User feedback: "Attempting to add contact."
Stacktrace:
```
java.lang.SecurityException: Permission Denial: starting Intent { act=android....* Android version: 12
* Phone model: Nubia NX679J (NX679J-UN)
* Briar version: 1.4.22 (f02bbeb)
* User feedback: "Attempting to add contact."
Stacktrace:
```
java.lang.SecurityException: Permission Denial: starting Intent { act=android.bluetooth.adapter.action.REQUEST_DISCOVERABLE cmp=com.android.settings/.bluetooth.RequestPermissionActivity (has extras) } from ProcessRecord{708319 15100:org.b
riarproject.briar.android/u0a226} (pid=15100, uid=10226) requires android.permission.BLUETOOTH
at android.os.Parcel.createExceptionOrNull(Parcel.java:2426)
at android.os.Parcel.createException(Parcel.java:2410)
at android.os.Parcel.readException(Parcel.java:2393)
at android.os.Parcel.readException(Parcel.java:2335)
at android.app.IActivityTaskManager$Stub$Proxy.startActivity(IActivityTaskManager.java:2559)
at android.app.Instrumentation.execStartActivity(Instrumentation.java:2071)
at android.app.Activity.startActivityForResult(Activity.java:5574)
at androidx.activity.ComponentActivity.startActivityForResult(ComponentActivity.java:574)
at androidx.core.app.ActivityCompat.startActivityForResult(ActivityCompat.java:234)
at androidx.activity.ComponentActivity$2.onLaunch(ComponentActivity.java:208)
at androidx.activity.result.ActivityResultRegistry$2.launch(ActivityResultRegistry.java:166)
at androidx.activity.result.ActivityResultLauncher.launch(ActivityResultLauncher.java:47)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactActivity.requestBluetoothDiscoverable(AddNearbyContactActivity.java:125)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactActivity.lambda$onCreate$0(AddNearbyContactActivity.java:78)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactActivity.$r8$lambda$AaDmrglLROf2UvjD046fjtdaWVs(Unknown Source:0)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactActivity$$ExternalSyntheticLambda2.onEvent(Unknown Source:4)
at org.briarproject.briar.android.viewmodel.LiveEvent$LiveEventObserver.onChanged(LiveEvent.java:84)
at org.briarproject.briar.android.viewmodel.LiveEvent$LiveEventObserver.onChanged(LiveEvent.java:70)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:133)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:151)
at androidx.lifecycle.LiveData.setValue(LiveData.java:309)
at org.briarproject.briar.android.viewmodel.MutableLiveEvent.setEvent(MutableLiveEvent.java:29)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactViewModel.showQrCodeFragmentIfAllowed(AddNearbyContactViewModel.java:410)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactIntroFragment.lambda$new$0(AddNearbyContactIntroFragment.java:38)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactIntroFragment.$r8$lambda$O-WIAJRYMQrkvddeOqSFkFHjtQ0(Unknown Source:0)
at org.briarproject.briar.android.contact.add.nearby.AddNearbyContactIntroFragment$$ExternalSyntheticLambda1.onActivityResult(Unknown Source:4)
at androidx.activity.result.ActivityResultRegistry.dispatchResult(ActivityResultRegistry.java:367)
at androidx.activity.ComponentActivity$2$1.run(ComponentActivity.java:159)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:242)
at android.os.Looper.loop(Looper.java:374)
at android.app.ActivityThread.main(ActivityThread.java:9333)
at java.lang.reflect.Method.invoke(Native Method)
```
Last line of log:
```
03-03 00:28:17.358 I/AddNearbyContactActivity: Asking for Bluetooth discoverability
```
Looks like another manufacturer that didn't completely remove the old Bluetooth permission checks when migrating to the new Android 12 permissions.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar-desktop/-/issues/501Private groups: Handle incoming messages2023-05-06T10:38:40ZMikolai GütschowPrivate groups: Handle incoming messagesin `eventOccured`
part of #12in `eventOccured`
part of #12Desktop 0.5.0https://code.briarproject.org/briar/briar-mailbox/-/issues/191Dependency verification is brittle2023-03-13T14:20:53ZSebastianDependency verification is brittleFollow-up on #23
There's an upstream Gradle issue (https://github.com/gradle/gradle/issues/19228) that prevents us from just deleting the dependency verification metadata and recreating it using our script `update-dependency-verificatio...Follow-up on #23
There's an upstream Gradle issue (https://github.com/gradle/gradle/issues/19228) that prevents us from just deleting the dependency verification metadata and recreating it using our script `update-dependency-verification.sh`.
A possible workaround is to set `GRADLE_USER_HOME` to a temporary directory while executing the commands in the script.SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/498Private groups: special handling for join messages2023-04-15T18:26:14ZMikolai GütschowPrivate groups: special handling for join messages- show italicized text describing join action instead of empty message
- don't allow selecting/replying to join message
part of #12- show italicized text describing join action instead of empty message
- don't allow selecting/replying to join message
part of #12Desktop 0.5.0https://code.briarproject.org/briar/briar-desktop/-/issues/497Private groups: Leave group vs. Dissolve group logic2023-05-09T13:36:15ZMikolai GütschowPrivate groups: Leave group vs. Dissolve group logicCreator "leaving" the group means dissolving the group
Part of #12Creator "leaving" the group means dissolving the group
Part of #12Desktop 0.5.0https://code.briarproject.org/briar/briar-desktop/-/issues/496Private groups: Invite members logic2023-05-12T21:09:46ZMikolai GütschowPrivate groups: Invite members logiconly possible for group creator
part of #12only possible for group creator
part of #12Desktop 0.5.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/495Private groups: Member list2023-04-15T18:17:53ZMikolai GütschowPrivate groups: Member listPart of #12Part of #12Desktop 0.5.0