briar issueshttps://code.briarproject.org/groups/briar/-/issues2023-06-17T20:28:59Zhttps://code.briarproject.org/briar/briar-desktop/-/issues/523Feature request: mark as un/read button2023-06-17T20:28:59ZAminda SuomalainenFeature request: mark as un/read buttonCurrently the only way to mark something as read is to stare for it for a moment and then scroll down and wait a moment again. This takes a long time especially when there are many unreads in a forum and feels annoying when I have alread...Currently the only way to mark something as read is to stare for it for a moment and then scroll down and wait a moment again. This takes a long time especially when there are many unreads in a forum and feels annoying when I have already read the forums on another device. Thus I would like there to be buttons to:
* [ ] mark chat as read
* [ ] mark chat as unread, in case there is something I would like to return to later and have the UI remind me of it with the unread marker.Desktop 0.5.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/briar-desktop/-/issues/522Feature request: sharing forums in private chats, like make introduction2024-02-10T12:16:02ZAminda SuomalainenFeature request: sharing forums in private chats, like make introductionWhen I open a private chat, the three dots menu has an option to make introduction. There I can even introduce all my contacts to the contact whose chat I have open.
I wish I could do this with forums too in Briar desktop, especially wh...When I open a private chat, the three dots menu has an option to make introduction. There I can even introduce all my contacts to the contact whose chat I have open.
I wish I could do this with forums too in Briar desktop, especially when sharing to my other devices, but also when sharing multiple forums I think my contact would be interested in.https://code.briarproject.org/briar/briar-desktop/-/issues/521Feature request: unified place to manage forum invites2024-02-10T12:16:01ZAminda SuomalainenFeature request: unified place to manage forum invitesIn Briar Android, when I am invited to a forum and open the forums tab, on the bottom there is a floating bar saying that I have been invited to (a) forum(s) and opening it I see a list of forums I have been invited to, who has invited m...In Briar Android, when I am invited to a forum and open the forums tab, on the bottom there is a floating bar saying that I have been invited to (a) forum(s) and opening it I see a list of forums I have been invited to, who has invited me there and accept/decline buttons without having to find and scrolls the individual private chats.
I am missing this view in Briar Desktop.https://code.briarproject.org/briar/briar-mailbox/-/issues/193Handle unchecking all bridges2023-05-17T11:34:12ZTorsten GroteHandle unchecking all bridgeshttps://code.briarproject.org/briar/briar-mailbox/-/merge_requests/169#note_76780https://code.briarproject.org/briar/briar-mailbox/-/merge_requests/169#note_76780Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/onionwrapper/-/issues/10Calling start() moves state to CONNECTING2023-05-16T16:11:21ZTorsten GroteCalling start() moves state to CONNECTINGThe expected behavior is to go from `STARTING_STOPPING` to `DISABLED` it seems, which does seem a bit weird from an external library user perspective to be honest.The expected behavior is to go from `STARTING_STOPPING` to `DISABLED` it seems, which does seem a bit weird from an external library user perspective to be honest.akwizgranakwizgranhttps://code.briarproject.org/briar/tor-reproducer/-/issues/14Optimize build time for macOS binaries2023-07-13T11:02:08ZSebastianOptimize build time for macOS binariesWith our current approach of building the tor binaries for macOS using the [tor-browser-build](https://gitlab.torproject.org/tpo/applications/tor-browser-build/) setup, the build takes rather long (~ 3.5 hours).
The cause of this is tha...With our current approach of building the tor binaries for macOS using the [tor-browser-build](https://gitlab.torproject.org/tpo/applications/tor-browser-build/) setup, the build takes rather long (~ 3.5 hours).
The cause of this is that the build does build lots of tools from source itself such as `cmake` and `clang` to name the building blocks that take up roughly 73% of the build time. Here's a full list of things it builds with the timestamps giving indication of how long it takes. The difference from the item to its predecessor is the time it takes to build, e.g. `cmake` takes 7 minutes in this instance (which is quicker than the actual CI hardware because the machine that was used here has better hardware):
```
drwxr-xr-x 2 z z 4,0K May 2 09:00 mmdebstrap
drwx------ 2 z z 4,0K May 2 09:01 mmdebstrap-image
drwxr-xr-x 2 z z 4,0K May 2 09:01 container-image
drwx------ 2 z z 4,0K May 2 09:08 cmake
drwxr-xr-x 2 z z 4,0K May 2 09:10 llvm-project
drwx------ 2 z z 4,0K May 2 09:12 ninja
drwx------ 2 z z 4,0K May 2 10:17 clang
drwx------ 2 z z 4,0K May 2 10:23 libtapi
drwx------ 2 z z 4,0K May 2 10:25 cctools
drwx------ 2 z z 4,0K May 2 10:31 macosx-toolchain
drwx------ 2 z z 4,0K May 2 10:34 openssl
drwx------ 2 z z 4,0K May 2 10:35 libevent
drwx------ 2 z z 4,0K May 2 10:38 tor
```
A solution could be to let the build just not build some of those and instead use Debian snapshot repos to get deterministic versions of cmake, clang etc. during build.
On an upstream ticket, it was suggested, that it's possible to disable the use of containers when building tor, which would result in the requirement of installing in the docker container all the dependencies needed for the build. (see https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/40819#note_2899611)
Although this comment was given to solve a problem with docker in docker, I had the impression it also might help to reduce the build time. However it looks like `clang`, the most important building block (>66% of build time), is not among the tools that are then expected to be installed on the CI machine, it's still built from source.
I expect meddling with the tor build system to be a bit tricky even though it looks quite well structured. But I bet there is a way to make the build just use `clang` and `cmake` from the system instead of building it from source itself.
The same upstream ticket had a suggestion about reducing build times, too (see https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/40819#note_2899637):
> If you are able to keep the `out` directory accross builds, then it should not rebuild the dependencies.
I don't think though, that this is helpful for us. Well we could build those bits as part of the docker image, but as this runs as part of our pipeline as well, we won't gain much in total, only for reproducing locally maybe.https://code.briarproject.org/briar/onionwrapper/-/issues/9Add method for getting Country name to location utils2023-05-12T14:58:38ZTorsten GroteAdd method for getting Country name to location utils```kotlin
val currentCountry: String
get() = Locale.getAvailableLocales().find { locale ->
locale.country.equals(currentCountry, ignoreCase = true)
}?.displayCountry ?: currentCountry
``````kotlin
val currentCountry: String
get() = Locale.getAvailableLocales().find { locale ->
locale.country.equals(currentCountry, ignoreCase = true)
}?.displayCountry ?: currentCountry
```Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar-desktop/-/issues/520Include date in logs instead of just the time of day2023-05-08T14:12:24ZSebastianInclude date in logs instead of just the time of dayA user reported that it's difficult to make sense of logs if the date is missing. I can see the point.A user reported that it's difficult to make sense of logs if the date is missing. I can see the point.SebastianSebastianhttps://code.briarproject.org/briar/briar-desktop/-/issues/519Noticing missing string resource: alternative to silent log?2023-05-08T14:14:43ZMikolai GütschowNoticing missing string resource: alternative to silent log?When a key is used in one of our `i18n*` functions, for which no string exists neither in the translation nor in the English resource file, we currently just print a message to the log and return an empty string. Maybe it might be better...When a key is used in one of our `i18n*` functions, for which no string exists neither in the translation nor in the English resource file, we currently just print a message to the log and return an empty string. Maybe it might be better to either hard-crash the program (following Briar's crash-early strategy) or have some other way of making sure at compile time all strings are actually present (and no keys are misspelled).https://code.briarproject.org/briar/briar-desktop/-/issues/518Private groups: Sharing information in header is not updated after group leav...2023-05-11T21:21:59ZMikolai GütschowPrivate groups: Sharing information in header is not updated after group leave/dissolveNot sure if it is supposed to, but after the group is dissolved, it is still shown as "shared with 1". This should be double-checked with Android behavior.
![image](/uploads/a947ece60b3e2184238de9a72e12ed63/image.png)
Similar issue aft...Not sure if it is supposed to, but after the group is dissolved, it is still shown as "shared with 1". This should be double-checked with Android behavior.
![image](/uploads/a947ece60b3e2184238de9a72e12ed63/image.png)
Similar issue after a contact leaves a private group: the owner still sees them as a member and shows the private group as shared with them. Maybe at least this is actually intended behavior though.
Maybe someone can comment on this @sebkur or @grote ?Desktop 0.5.0Mikolai GütschowMikolai Gütschowhttps://code.briarproject.org/briar/onionwrapper/-/issues/8Reset bridges if enabling bridges with empty list2023-05-12T16:52:30ZTorsten GroteReset bridges if enabling bridges with empty list`enableBridges()` to call `resetConf("Bridge")` if bridge list is empty.`enableBridges()` to call `resetConf("Bridge")` if bridge list is empty.Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/onionwrapper/-/issues/7Include AndroidLocationUtils in onionwrapper-android2023-05-10T17:24:41ZTorsten GroteInclude AndroidLocationUtils in onionwrapper-androidThe location is needed for the API, so we might as well include a tool to get it.The location is needed for the API, so we might as well include a tool to get it.Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/onionwrapper/-/issues/6Unintuitive API: TorWrapper#start() doesn't actually start, unless enableNetw...2023-05-10T17:24:32ZTorsten GroteUnintuitive API: TorWrapper#start() doesn't actually start, unless enableNetwork() get calledYou call `TorWrapper#start()` and expect things to work. There's some JavaDoc somewhere that enableNetwork() is needed, but not really easy to find.You call `TorWrapper#start()` and expect things to work. There's some JavaDoc somewhere that enableNetwork() is needed, but not really easy to find.https://code.briarproject.org/briar/onionwrapper/-/issues/5Expose location of obfs4Executable for use with Moat2023-05-10T17:24:23ZTorsten GroteExpose location of obfs4Executable for use with MoatOur moat library needs a obfs4Executable to work with. Currently, there's no way to get this.Our moat library needs a obfs4Executable to work with. Currently, there's no way to get this.https://code.briarproject.org/briar/onionwrapper/-/issues/4TorState distinguish stopping from stopped2023-05-16T16:11:21ZTorsten GroteTorState distinguish stopping from stoppedThis may be needed to not start a new instance of TorWrapper, before the old one has stopped.
The wrapper already has code that waits for the tor process to exit, so hopefully we can use that to distinguish stopping from stopped.This may be needed to not start a new instance of TorWrapper, before the old one has stopped.
The wrapper already has code that waits for the tor process to exit, so hopefully we can use that to distinguish stopping from stopped.akwizgranakwizgranhttps://code.briarproject.org/briar/onionwrapper/-/issues/3TorState distinguish stopping/stopped from starting2023-05-16T16:11:21ZTorsten GroteTorState distinguish stopping/stopped from startingCurrently, in state terms those are the same while they are really different in practice.Currently, in state terms those are the same while they are really different in practice.akwizgranakwizgranhttps://code.briarproject.org/briar/onionwrapper/-/issues/2Package private implementation hard to use2023-05-10T17:25:59ZTorsten GrotePackage private implementation hard to use`AndroidWakeLockManagerImpl` and `CircumventionProviderImpl` are both package-private, so they require some hoops to jump through to be used.
we could add a factory method for that, perhaps?
A public factory for `AndroidWakeLockManage...`AndroidWakeLockManagerImpl` and `CircumventionProviderImpl` are both package-private, so they require some hoops to jump through to be used.
we could add a factory method for that, perhaps?
A public factory for `AndroidWakeLockManager`, maybe with two methods, one allows passing in your own `ScheduledExecutorService`, the other provides a default one?Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/onionwrapper/-/issues/1`android` isn't pulling in `core` as transitive dependency2023-05-10T17:25:53ZTorsten Grote`android` isn't pulling in `core` as transitive dependencylooks like org.briarproject:onionwrapper-android is not pulling in core as a transitive dependency.
without core:
```
error: InjectProcessingStep was unable to process 'org.briarproject.onionwrapper.TorWrapper' because 'org.briarproject...looks like org.briarproject:onionwrapper-android is not pulling in core as a transitive dependency.
without core:
```
error: InjectProcessingStep was unable to process 'org.briarproject.onionwrapper.TorWrapper' because 'org.briarproject.onionwrapper.TorWrapper' could not be resolved.
```
Maybe this is `api` vs. `implementation` in gradle dependency terms?Torsten GroteTorsten Grotehttps://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-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
```