briar issueshttps://code.briarproject.org/groups/briar/-/issues2023-08-31T13:43:30Zhttps://code.briarproject.org/briar/briar-desktop/-/issues/548Option to mark all blog posts as read2023-08-31T13:43:30ZMikolai GütschowOption to mark all blog posts as readhttps://code.briarproject.org/briar/briar-desktop/-/issues/546Make sure HtmlText Composable is secure2023-08-31T11:33:04ZSebastianMake sure HtmlText Composable is securehttps://code.briarproject.org/briar/briar-desktop/-/issues/545Allow plain text blog posts with newlines in them2023-09-01T09:12:48ZSebastianAllow plain text blog posts with newlines in themCurrently, all blog posts are interpreted as HTML, which basically means newlines are ignored.
I think that's not so nice because I think most people would expect that the plain text formatting in the text input works for blog posts.
I...Currently, all blog posts are interpreted as HTML, which basically means newlines are ignored.
I think that's not so nice because I think most people would expect that the plain text formatting in the text input works for blog posts.
It's the same on Android though.
I think it would be good to use some kind of heuristic to determine if a piece of text is actual plain text / no HTML and display it as regular text in that case.https://code.briarproject.org/briar/briar-desktop/-/issues/544Material style buttons for add contact dialog2023-08-31T10:20:33ZSebastianMaterial style buttons for add contact dialogthe buttons in the add contact dialog look different than the other dialog buttons which are AlertDialogs.the buttons in the add contact dialog look different than the other dialog buttons which are AlertDialogs.https://code.briarproject.org/briar/briar/-/issues/2443OOM error when polling large number of contacts2023-08-24T15:00:10ZakwizgranOOM error when polling large number of contacts* Android version: 13
* Phone model: Realme RMX3516 (RMX3516EEA)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.OutOfMemoryError: Failed to allocate a 48 byte allocation with 252528 free bytes and 246KB until OOM, target foo...* Android version: 13
* Phone model: Realme RMX3516 (RMX3516EEA)
* Briar version: 1.5.4 (7d76171)
Stacktrace:
```
java.lang.OutOfMemoryError: Failed to allocate a 48 byte allocation with 252528 free bytes and 246KB until OOM, target footprint 201326592, growth limit 201326592; giving up on allocation because <1% of heap free after GC.
at java.util.regex.Pattern.matcher(Pattern.java:1040)
at org.briarproject.bramble.plugin.tor.TorPlugin.createConnection(TorPlugin.java:361)
at org.briarproject.bramble.plugin.tor.TorPlugin.lambda$connect$2(TorPlugin.java:349)
at org.briarproject.bramble.plugin.tor.TorPlugin.$r8$lambda$dsAekyWijvXWn3loJi16FAklboE(Unknown Source:0)
at org.briarproject.bramble.plugin.tor.TorPlugin$$ExternalSyntheticLambda4.run(Unknown Source:6)
at org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerImpl.lambda$executeWakefully$0(AndroidWakeLockManagerImpl.java:71)
at org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerImpl.$r8$lambda$YrcWd5iwE_LXXUj-LlmRNhzP9-U(Unknown Source:0)
at org.briarproject.android.dontkillmelib.wakelock.AndroidWakeLockManagerImpl$$ExternalSyntheticLambda0.run(Unknown Source:4)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1137)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:637)
at java.lang.Thread.run(Thread.java:1012)
```
* NativeHeapAllocated: 467,674,320
* NativeHeapFree: 57,465,872
* NativeHeapTotal: 539,607,040
* SystemMemoryFree: 1,281,261,568
* SystemMemoryLow: false
* SystemMemoryThreshold: 339,738,624
* SystemMemoryTotal: 3,834,589,184
* VirtualMachineMemoryFree: 4,663,224
* VirtualMachineMemoryMaximum: 201,326,592
* VirtualMachineMemoryTotal: 201,326,592
The log shows that the crash happened about 9 seconds after polling the Tor plugin. Connection attempts from the previous two polls were still in progress, as shown by the messages logged when those attempts timed out. The previous two polls appear to have happened in quick succession, as two failures for the same address were often logged back-to-back. (This can happen when the plugin's enabled, as the first poll happens immediately and the second is scheduled after a randomised interval.)
The log shows that the user has at least 54 contacts. I'd speculate that this may cause polling to take longer than the polling interval, causing pending connection attempts to pile up.
All of the connection failures except the last are logged as "java.io.IOException: Connection failed: Host unreachable". The last connection failure is logged as "java.net.SocketTimeoutException: failed to connect to /127.0.0.1 (port 59050) from /127.0.0.1 (port 57012) after 5000ms", indicating that the connection to Tor's SOCKS port on localhost timed out. Perhaps the Tor process had become unresponsive, or perhaps the Java process was spending too much time in GC to service the connection.
The memory stats show 539 MB of native heap, which is a lot! Maybe there's a large backlog of socket connections, each with some native heap allocations, and each with an IoExecutor thread waiting on it that might have its own native heap allocations?
`VirtualMemoryFree` doesn't match the amount in the OOM error message, which is an issue we've seen before (https://code.briarproject.org/briar/briar/-/issues/1898#note_76643).
It's useful to know that the allocator gives up if it can't free more than 1% of the max heap space after GC.https://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-desktop/-/issues/541Feature request: add riscv64 architecture (Licheepi4A and VisionfiveV2 boards)2023-08-21T13:11:31ZRice BoxFeature request: add riscv64 architecture (Licheepi4A and VisionfiveV2 boards)Hello,
I already asked this on IRC but I wanted to add this request here too. Could you please check if you have the time to add that architecture (riscv64)? Tor binary exists on riscv64 and Java runs fine.
Thank you!Hello,
I already asked this on IRC but I wanted to add this request here too. Could you please check if you have the time to add that architecture (riscv64)? Tor binary exists on riscv64 and Java runs fine.
Thank you!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-desktop/-/issues/540Make it portable, rootless.2023-08-08T07:06:15ZVladislavMake it portable, rootless.Allow installing and use of the briar desktop without root rights on Windows.Allow installing and use of the briar desktop without root rights on Windows.https://code.briarproject.org/briar/briar-desktop/-/issues/539Ability to remove blogs2023-08-25T13:33:34ZMikolai GütschowAbility to remove blogsI'm actually not fully sure what that means, but saw the option on Android.
It is worth to notice that it is not possible to remove one's own blog.I'm actually not fully sure what that means, but saw the option on Android.
It is worth to notice that it is not possible to remove one's own blog.Desktop 0.7.0https://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/website/-/issues/44Update transports image on How it works page2023-10-02T11:39:59ZNicoUpdate transports image on How it works page![Briar can sync via Bluetooth/Wi-Fi/Tor](https://code.briarproject.org/briar/website/-/raw/2399a954f54ec218993338127283fc0801879db1/static/img/diagram_secure.png)
On this image, memory cards are missing. I'd like to add them, but I can...![Briar can sync via Bluetooth/Wi-Fi/Tor](https://code.briarproject.org/briar/website/-/raw/2399a954f54ec218993338127283fc0801879db1/static/img/diagram_secure.png)
On this image, memory cards are missing. I'd like to add them, but I can't find the source file of it. @akwizgran Do you have it? Otherwise I can create a new (vector-based) image, but that would be much more work. Therefore, obtaining the source file is preferred :slight_smile:https://code.briarproject.org/briar/briar-desktop/-/issues/538Add command line `--test-tor` or similar to check Tor is working properly2023-07-26T14:25:27ZSebastianAdd command line `--test-tor` or similar to check Tor is working properlyWhile trying to improve the situation with #486 and improving the NixOS package, I got an idea that might be helpful for 3rd party maintainers. If we added a `--test-tor` switch to the executable with the behavior of spinning up a `TorWr...While trying to improve the situation with #486 and improving the NixOS package, I got an idea that might be helpful for 3rd party maintainers. If we added a `--test-tor` switch to the executable with the behavior of spinning up a `TorWrapper` and making sure it can bootstrap, that could be used in CI pipelines to make sure they don't screw up things somehow. I got inspired by a PR on Github where I've seen that a bunch of pipelines have been started for the changes, not just for Linux but also for macOS and I would guess that all kinds of things could go wrong if they attempt to package custom tor binaries for macOS like the do on Linux: https://github.com/NixOS/nixpkgs/pull/245398#issuecomment-1650054652https://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/tor-reproducer/-/issues/15Linux binaries require glibc 2.292023-07-13T11:04:05ZakwizgranLinux binaries require glibc 2.29The Linux binaries won't run on systems with glibc 2.28 (eg Debian 10), perhaps because they were built on Debian 11. If we still want to support these older platforms (which is an open question) then we should ensure the binaries are co...The Linux binaries won't run on systems with glibc 2.28 (eg Debian 10), perhaps because they were built on Debian 11. If we still want to support these older platforms (which is an open question) then we should ensure the binaries are compatible with older glibc versions. If we don't then we can close this ticket.https://code.briarproject.org/briar/briar-mailbox/-/issues/196Support for running on a linux server (also containers)2023-10-27T11:21:57ZmicressorSupport for running on a linux server (also containers)I would love to be able to run the mailbox on my own server.
The most optimal would probably be a container like podman or docker.
Small advantage of this variant: The smartphone used for this does not radiate unnecessarily.I would love to be able to run the mailbox on my own server.
The most optimal would probably be a container like podman or docker.
Small advantage of this variant: The smartphone used for this does not radiate unnecessarily.https://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-desktop/-/issues/531Draft message gone when navigating away from forum/group and back there2023-06-28T12:14:12ZSebastianDraft message gone when navigating away from forum/group and back thereThis is different in contrast to private messages, where we preserve the text in the input box. I think it would probably be better to keep the text in the input fields for forums and groups, too.This is different in contrast to private messages, where we preserve the text in the input box. I think it would probably be better to keep the text in the input fields for forums and groups, too.https://code.briarproject.org/briar/briar-desktop/-/issues/529Document building and running on macOS2023-06-23T10:50:29ZSebastianDocument building and running on macOS!332 brings support for building and running on macOS. The CI has been configured to produce distributable zip archives, however it's not entirely straightforward to run these as signing and notarization needs to be done for which a cert...!332 brings support for building and running on macOS. The CI has been configured to produce distributable zip archives, however it's not entirely straightforward to run these as signing and notarization needs to be done for which a certificate is required (either self-created or officially obtained from Apple). While we do take the zip created by the CI and sign it ourselves in order to publish it on the website as packages that can be installed by ordinary users, we should probably document how to sign packages, so that developers can run developments builds or people can use the nightly builds from the CI for experimentation and testing.
There's a script `utils/sign-mac.sh` that can be used for signing the packages build locally using pinpit or build on the CI, but it requires some modification in order to work. Either one needs to put the credentials for one's own Apple developer certificate into the script:
```
TEAM="ABCDEF1234"
APPLE_ID="<your apple id email>"
PASSWORD="<password>"
```
or it needs to be changed in a way to work with a self-created certificate. How that works hasn't been worked out yet. Per [this comment](https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/issues/40819#note_2897651) we could probably figure something out based on [this script](https://gitlab.torproject.org/tpo/applications/tor-browser-build/-/blob/main/tools/browser-self-sign-macos.sh).