briar issueshttps://code.briarproject.org/briar/briar/-/issues2018-06-12T11:32:20Zhttps://code.briarproject.org/briar/briar/-/issues/616Continue button is off-screen when adding a contact2018-06-12T11:32:20ZakwizgranContinue button is off-screen when adding a contactThe new explanatory graphics for adding a contact are great, but on a small screen (Sony Xperia Tipo, 320x480) the continue button is now off-screen. If I wasn't familiar with that screen I might not realise the button existed.
![devi...The new explanatory graphics for adding a contact are great, but on a small screen (Sony Xperia Tipo, 320x480) the continue button is now off-screen. If I wasn't familiar with that screen I might not realise the button existed.
![device-2016-08-25-122749](/uploads/b7524cb8d0aa65be698a4e329ac1946e/device-2016-08-25-122749.png)Milestone ETorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/615Forums: Keyboard stays open2018-06-12T11:32:20ZMegaloxForums: Keyboard stays openI wanted to reply but decided against and left the forums via backarrow. The keyboard stayed open.
![forum_keyboard_bug](/uploads/c417c600e6239e19fb00398080363f01/forum_keyboard_bug.jpg)I wanted to reply but decided against and left the forums via backarrow. The keyboard stayed open.
![forum_keyboard_bug](/uploads/c417c600e6239e19fb00398080363f01/forum_keyboard_bug.jpg)Milestone ETorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/614DevReporter does not close streams2018-06-12T11:32:20ZTorsten GroteDevReporter does not close streams```
08-24 13:33:16.448 E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit t...```
08-24 13:33:16.448 E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
at dalvik.system.CloseGuard.open(CloseGuard.java:184)
at java.io.FileInputStream.<init>(FileInputStream.java:80)
at org.briarproject.reporting.DevReporterImpl.sendReports(DevReporterImpl.java:89)
at org.briarproject.plugins.tor.TorPlugin$1.run(TorPlugin.java:324)
```
Line 89 refers here to:
```java
in = new FileInputStream(f);
```Milestone Dakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/613Use metadata queries to look up introduction session state2018-04-28T00:17:21ZakwizgranUse metadata queries to look up introduction session stateSubtask of #376.Subtask of #376.Android 1.0Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/612Use metadata queries to look up invitation session state2018-06-11T10:24:35ZakwizgranUse metadata queries to look up invitation session stateSubtask of #376.Subtask of #376.Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/611Body cache in ConversationActivity isn't thread-safe2018-06-12T11:32:20ZakwizgranBody cache in ConversationActivity isn't thread-safeChanges to ConversationActivity in June broke the thread-safety of the body cache. If it's going to be accessed from the UI and DB threads it should be a `final ConcurrentHashMap<MessageId, byte[]>` rather than a `volatile HashMap<Messag...Changes to ConversationActivity in June broke the thread-safety of the body cache. If it's going to be accessed from the UI and DB threads it should be a `final ConcurrentHashMap<MessageId, byte[]>` rather than a `volatile HashMap<MessageId, byte[]>`.Milestone Eakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/610Result handlers can return results to destroyed activities/fragments2018-06-12T11:32:20ZakwizgranResult handlers can return results to destroyed activities/fragments@grote spotted this problem in !276, but it could happen anywhere a `ResultHandler` or `ResultExceptionHandler` is used. The activity or fragment that created the handler may be destroyed before the result or exception is handled.@grote spotted this problem in !276, but it could happen anywhere a `ResultHandler` or `ResultExceptionHandler` is used. The activity or fragment that created the handler may be destroyed before the result or exception is handled.Milestone ETorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/609Update UI in paused state to support multi-window mode2018-01-28T11:30:28ZakwizgranUpdate UI in paused state to support multi-window modeIn Android N's multi-window mode, the app that doesn't have focus is in the paused state. We should move all our calls to register/unregister event handlers, refresh content, etc, from onPause/onResume to onStart/onStop so that the UI is...In Android N's multi-window mode, the app that doesn't have focus is in the paused state. We should move all our calls to register/unregister event handlers, refresh content, etc, from onPause/onResume to onStart/onStop so that the UI is updated in the paused state.
https://developer.android.com/guide/topics/ui/multi-window.htmlMilestone Eakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/608Send feedback immediately if possible2020-11-21T17:08:45ZakwizgranSend feedback immediately if possibleUser feedback is saved to disk and sent the next time the user signs in. It should be sent immediately if possible.User feedback is saved to disk and sent the next time the user signs in. It should be sent immediately if possible.https://code.briarproject.org/briar/briar/-/issues/607Don't clear lists in onPause()2018-06-12T11:32:20ZakwizgranDon't clear lists in onPause()Various activities and fragments clear their lists in onPause() and asynchronously repopulate them in onResume(). This results in the appearance of the list briefly changing as the user navigates away.
For lists where items are never ...Various activities and fragments clear their lists in onPause() and asynchronously repopulate them in onResume(). This results in the appearance of the list briefly changing as the user navigates away.
For lists where items are never removed, we can leave the list populated in onPause() and asynchronously add any new items in onResume(). This will allow the views for existing items to be recycled.
For lists where items can be removed while the activity/fragment is paused, we'll need another solution. Clearing and then asynchronously repopulating the list in onResume() may result in the old contents being briefly visible, then disappearing, then the new contents appearing. Asynchronously loading the new contents in onResume() and then replacing the old contents (using a batched update to avoid flicker) may be acceptable as long as we gracefully handle any attempts to interact with items that are due to be removed.
See discussion on !276.Milestone Eakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/606Improve Fragment handling2020-11-21T17:17:05ZTorsten GroteImprove Fragment handlingThe `BriarFragmentActivity` is working around the fragment backstack instead of with it. Sometimes fragments are added to the stack and sometimes not. Fragments are *always* created from scratch even if there might already be an instance...The `BriarFragmentActivity` is working around the fragment backstack instead of with it. Sometimes fragments are added to the stack and sometimes not. Fragments are *always* created from scratch even if there might already be an instance on the backstack that could be re-used.https://code.briarproject.org/briar/briar/-/issues/605Add database method for retrieving a contact by local and remote author IDs2018-06-12T11:32:20ZakwizgranAdd database method for retrieving a contact by local and remote author IDsMilestone ETorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/604Provide hooks for mitigating flooding attacks at client layer2020-11-21T17:21:36ZakwizgranProvide hooks for mitigating flooding attacks at client layerMessage flooding attacks can be mitigated to some extent at the sync layer (#511), but the client may be in a better position to make decisions such as rate limiting. The sync API should allow clients to express these decisions, for exam...Message flooding attacks can be mitigated to some extent at the sync layer (#511), but the client may be in a better position to make decisions such as rate limiting. The sync API should allow clients to express these decisions, for example by limiting the rate at which messages are delivered to the client, shared with contacts, or both.https://code.briarproject.org/briar/briar/-/issues/603Research stream isolation for hidden service connections2020-11-16T11:11:45ZakwizgranResearch stream isolation for hidden service connectionsTor supports stream isolation, meaning that streams used for separate purposes can be forced to use separate circuits, making it harder for observers to tell whether the streams belong to the same client. Clients can activate this featur...Tor supports stream isolation, meaning that streams used for separate purposes can be forced to use separate circuits, making it harder for observers to tell whether the streams belong to the same client. Clients can activate this feature by specifying a SOCKS username and password - streams with different SOCKS credentials will be isolated from each other.
Using stream isolation for our hidden service connections may help to prevent Tor relays from learning which hidden service addresses belong to contacts of the same user. That information could be used to help identify the user or her contacts. On a larger scale it might also be used to build an anonymised social graph of hidden service addresses, which could then be deanonymised by comparing it with other social graphs (https://33bits.org/).
However, it's not clear whether stream isolation would prevent this information leak, as Tor may re-use existing circuits for publishing and retrieving hidden service descriptors (see https://gitweb.torproject.org/torspec.git/plain/rend-spec.txt).
Find out:
* Whether stream isolation applies to publishing and retrieving HS descriptors
* Whether stream isolation has a bandwidth cost due to using more circuitshttps://code.briarproject.org/briar/briar/-/issues/602Exponential backoff for RSS feeds2021-04-16T13:21:41ZakwizgranExponential backoff for RSS feedsWe fetch all RSS feeds at the same fixed interval. Some feeds update much more frequently than others, so we should adjust the interval of each feed to match its update interval. This can be done by doubling the interval whenever a fetch...We fetch all RSS feeds at the same fixed interval. Some feeds update much more frequently than others, so we should adjust the interval of each feed to match its update interval. This can be done by doubling the interval whenever a fetch succeeds without finding any new posts, and halving the interval whenever new posts are found. The intervals should be stored persistently.
Related to #44, #45.https://code.briarproject.org/briar/briar/-/issues/601Remove content type from forum posts2018-06-12T11:32:20ZakwizgranRemove content type from forum postsThe content type field is unused and we don't yet have a plan for when it will be used. Remove it until it's needed.The content type field is unused and we don't yet have a plan for when it will be used. Remove it until it's needed.https://code.briarproject.org/briar/briar/-/issues/600Remove content type from private messages2018-06-12T11:32:20ZakwizgranRemove content type from private messagesThe content type field is unused and we don't yet have a plan for when it will be used. Remove it until it's needed.The content type field is unused and we don't yet have a plan for when it will be used. Remove it until it's needed.Milestone FTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/599Fetch RSS feeds via Tor2018-06-12T11:32:20ZakwizgranFetch RSS feeds via TorUse the localhost Socks proxy to fetch the feeds. The proxy port is currently set in briar-android and would need to be moved to core or api.
The `FeedManager` should listen to `TransportEnabledEvent`s and enable the feed fetching sch...Use the localhost Socks proxy to fetch the feeds. The proxy port is currently set in briar-android and would need to be moved to core or api.
The `FeedManager` should listen to `TransportEnabledEvent`s and enable the feed fetching scheduler when Tor is started first. For simplicity, it should not turn off the scheduler when Tor gets turned off, but let the fetch job fail cleanly when Tor is not running.
We should use stream isolation to ensure the lookups for different feeds happen over different circuits. This is done by specifying a different SOCKS username and password for each feed (any username and password can be used, they just need to be different - generating them on the fly would be fine).Milestone ETorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/598Remove unused code and layouts for old blog implementation2018-06-12T11:32:20ZakwizgranRemove unused code and layouts for old blog implementationIf we decide we need them in future, they'll still be in git.If we decide we need them in future, they'll still be in git.Milestone Eakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/597gradle connectedCheck fails due to method limit2018-06-12T11:32:20ZTorsten Grotegradle connectedCheck fails due to method limit```
Execution failed for task ':briar-android-tests:transformClassesWithDexForDebugAndroidTest'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionExcep...```
Execution failed for task ':briar-android-tests:transformClassesWithDexForDebugAndroidTest'.
> com.android.build.api.transform.TransformException: com.android.ide.common.process.ProcessException: java.util.concurrent.ExecutionException: com.android.dex.DexIndexOverflowException: method ID not in [0, 0xffff]: 65536
```Milestone DTorsten GroteTorsten Grote