briar issueshttps://code.briarproject.org/briar/briar/-/issues2021-01-06T12:31:58Zhttps://code.briarproject.org/briar/briar/-/issues/1861Remove calls to WifiManager#getConfiguredNetworks()2021-01-06T12:31:58ZakwizgranRemove calls to WifiManager#getConfiguredNetworks()AndroidSecureRandomProvider calls WifiManager#getConfiguredNetworks() at startup. This call requires ACCESS_FINE_LOCATION on API 30. Remove this call, and any other calls to this method.
Subtask of #1827.AndroidSecureRandomProvider calls WifiManager#getConfiguredNetworks() at startup. This call requires ACCESS_FINE_LOCATION on API 30. Remove this call, and any other calls to this method.
Subtask of #1827.Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1862Show a bomb icon on the send button when the self-destruct timer is enabled2021-07-06T09:56:55ZakwizgranShow a bomb icon on the send button when the self-destruct timer is enabledSubtask of #804.Subtask of #804.Self-destructing messagesTorsten GroteTorsten Grote2021-01-31https://code.briarproject.org/briar/briar/-/issues/1863IllegalArgumentException when creating group invitation2021-04-15T15:24:24ZTorsten GroteIllegalArgumentException when creating group invitation
```
java.lang.IllegalArgumentException
at org.briarproject.bramble.db.DatabaseComponentImpl.mergeGroupMetadata(DatabaseComponentImpl.java:756)
at org.briarproject.bramble.client.ClientHelperImpl.mergeGroupMetadata(C...
```
java.lang.IllegalArgumentException
at org.briarproject.bramble.db.DatabaseComponentImpl.mergeGroupMetadata(DatabaseComponentImpl.java:756)
at org.briarproject.bramble.client.ClientHelperImpl.mergeGroupMetadata(ClientHelperImpl.java:217)
at org.briarproject.briar.autodelete.AutoDeleteManagerImpl.getAutoDeleteTimer(AutoDeleteManagerImpl.java:109)
at org.briarproject.briar.android.privategroup.creation.CreateGroupControllerImpl.createInvitationContexts(CreateGroupControllerImpl.java:174)
at org.briarproject.briar.android.privategroup.creation.CreateGroupControllerImpl.lambda$null$4(CreateGroupControllerImpl.java:155)
at org.briarproject.briar.android.privategroup.creation.CreateGroupControllerImpl.lambda$null$4$CreateGroupControllerImpl(CreateGroupControllerImpl.java)
at org.briarproject.briar.android.privategroup.creation.-$$Lambda$CreateGroupControllerImpl$UuIyBT5BPK-Ol5OSyYuTSxVHrEA.run(lambda)
at org.briarproject.bramble.db.DatabaseComponentImpl.transaction(DatabaseComponentImpl.java:198)
at org.briarproject.briar.android.privategroup.creation.CreateGroupControllerImpl.lambda$sendInvitation$5(CreateGroupControllerImpl.java:151)
```Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1864Show warning dialog when the expected timer differs from the current timer2021-03-11T12:26:19ZTorsten GroteShow warning dialog when the expected timer differs from the current timerWe mirror the timer duration from our contact's messages. It is possible that we are writing a message and short before we hit send, the timer changes or gets turned off. To prevent this scenario, we should show a warning dialog that pop...We mirror the timer duration from our contact's messages. It is possible that we are writing a message and short before we hit send, the timer changes or gets turned off. To prevent this scenario, we should show a warning dialog that pops up if the timer when sending is different from the timer when we started typing the message.
Subtask of #804.Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1865Migrate SetupController to ViewModel2021-04-06T12:40:15ZTorsten GroteMigrate SetupController to ViewModelSubtask of #1800Subtask of #1800Adapt to changes in the Android platformDaniel LublinDaniel Lublin2021-04-30https://code.briarproject.org/briar/briar/-/issues/1866Migrate BlogController and FeedController to ViewModel2021-10-29T12:05:09ZTorsten GroteMigrate BlogController and FeedController to ViewModelBoth controllers share code in BaseController.
Subtask of #1800Both controllers share code in BaseController.
Subtask of #1800Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1867Introduce ViewModel for ContactListFragment2021-04-06T12:39:54ZTorsten GroteIntroduce ViewModel for ContactListFragmentThe ContactListFragment does lots of work on the UI level, this should be migrated to a ViewModel scoped to the fragment. See !1327
Subtask of #1823.The ContactListFragment does lots of work on the UI level, this should be migrated to a ViewModel scoped to the fragment. See !1327
Subtask of #1823.Adapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/1869Introduce ViewModel for ForumListFragment2021-04-06T12:40:53ZTorsten GroteIntroduce ViewModel for ForumListFragmentThe ForumListFragment does lots of work on the UI level, this should be migrated to a ViewModel scoped to the fragment. See !1327
Subtask of #1823.The ForumListFragment does lots of work on the UI level, this should be migrated to a ViewModel scoped to the fragment. See !1327
Subtask of #1823.Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1870Migrate ForumController to ViewModel2021-04-06T12:40:10ZTorsten GroteMigrate ForumController to ViewModelSubtask of #1800Subtask of #1800Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1871Introduce ViewModel for IntroductionActivity (and ContactChooserFragment)2021-05-05T16:08:46ZTorsten GroteIntroduce ViewModel for IntroductionActivity (and ContactChooserFragment)The IntroductionActivity and its two fragments do lots of work on the UI level, this should be migrated to a ViewModel scoped to the activity that both fragments also access.
Subtask of #1823.
Test instructions:
1. Check that contact ...The IntroductionActivity and its two fragments do lots of work on the UI level, this should be migrated to a ViewModel scoped to the activity that both fragments also access.
Subtask of #1823.
Test instructions:
1. Check that contact list used displays correctly
* Go into a conversation
* menu → make introduction
* check that list does not contain the contact you're introducing
2. Check that contact list used updates properly
* On some device (A) repeat steps from 1.
* While the contact selection list is open: use a different device (B) and sent a message to (A). Make sure the number of unread messages displayed on (A) updates and also the contact moves up to the top as it now is the contact with the last recent message
3. Check that selecting a contact works
* Repeat steps from 1.
* select a contact and check that the next screen show the expected contacts
4. Make sure going back to contact selection and repeatedly selecting contacts works as expected
* Repeat steps from 3.
* Navigate back to the list of contacts to introduce your contact to
* Select a different contact than before, check that the next screen show the contact selected the second time
* Just to be sure, try again with a third contact
5. Check screen rotation doesn't break anything
* Repeat steps from 4.
* During navigation, rotate device at different times during the processAdapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1872Finish migrating KeyAgreementActivity to ViewModel2021-05-05T16:08:47ZTorsten GroteFinish migrating KeyAgreementActivity to ViewModelThe `KeyAgreementActivity` is abstract and only implemented by `ContactExchangeActivity`. See if both can be merged and more logic moved into `ContactExchangeViewModel`.
`KeyAgreementFragment` is doing lots of work and interactions with...The `KeyAgreementActivity` is abstract and only implemented by `ContactExchangeActivity`. See if both can be merged and more logic moved into `ContactExchangeViewModel`.
`KeyAgreementFragment` is doing lots of work and interactions with briar-core. This should also be moved into the ViewModel.
Subtask of #1823.Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1873Migrate GroupController to ViewModel2021-04-06T12:40:04ZTorsten GroteMigrate GroupController to ViewModelSubtask of #1800Subtask of #1800Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1881Migrate ThreadListController to ViewModel2021-04-06T12:40:00ZTorsten GroteMigrate ThreadListController to ViewModelSubtask of #1800Subtask of #1800Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1884Why keep a chat history?2022-02-25T15:04:46ZWuukoWhy keep a chat history?Why history appears?Why history appears?https://code.briarproject.org/briar/briar/-/issues/1886Quotation from text in the chat2021-01-07T10:13:20ZGhost UserQuotation from text in the chatHi,
i have a feature request. I wish me the possibility to quote text within a 1:1 chat. As far as i know almost every android messenger has this function and it makes chatting much easier if you write about different topics with your c...Hi,
i have a feature request. I wish me the possibility to quote text within a 1:1 chat. As far as i know almost every android messenger has this function and it makes chatting much easier if you write about different topics with your chat partner.
Thanks in advance for implementation.https://code.briarproject.org/briar/briar/-/issues/1887Status about Image support in 1:1 chat2022-02-25T15:04:26ZGhost UserStatus about Image support in 1:1 chatHi,
i think the title says all. I know that the devs worked on that topic in the past but i would appreciate some infos about the current state.
Thanks in advanceHi,
i think the title says all. I know that the devs worked on that topic in the past but i would appreciate some infos about the current state.
Thanks in advancehttps://code.briarproject.org/briar/briar/-/issues/1889Import / Export profile2021-01-05T11:45:00ZivahoeImport / Export profileCreate functional to be able to export / import profile (contacts, messages) to a file, to transfer the app to another phone.Create functional to be able to export / import profile (contacts, messages) to a file, to transfer the app to another phone.https://code.briarproject.org/briar/briar/-/issues/1891Migrate SharingController to ViewModel2021-04-26T12:53:15ZTorsten GroteMigrate SharingController to ViewModelUsed by blogs and forums.Used by blogs and forums.Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1892[Feature Request] A new ui2022-02-25T15:04:11Zfinrelemos[Feature Request] A new uithe current ui of the app is really basic, and for the masses to switch to a new app from say whatsapp or signal they must be able to see the visual appeal cause for most of people the real features of briar (privacy and security) are no...the current ui of the app is really basic, and for the masses to switch to a new app from say whatsapp or signal they must be able to see the visual appeal cause for most of people the real features of briar (privacy and security) are not visible, a better ui would be useful to convince the masses to use briar.https://code.briarproject.org/briar/briar/-/issues/1893Provide explanation when self-destruct timer gets changed2021-03-11T12:26:30ZTorsten GroteProvide explanation when self-destruct timer gets changedWhen self-destruct timer gets changed initially and later, we should provide a way to get more information about this feature for users that don't understand it, yet.
This could be as simple as making the timer changed message bubble ta...When self-destruct timer gets changed initially and later, we should provide a way to get more information about this feature for users that don't understand it, yet.
This could be as simple as making the timer changed message bubble tapable "Tap here to change" and bring the user to the settings screen for self-destructing messages that has further explanation #1837Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1894Introduce ViewModel for RssFeed*Activity2021-05-05T16:08:09ZTorsten GroteIntroduce ViewModel for RssFeed*ActivityThere's `RssFeedManageActivity` and `RssFeedImportActivity`. Maybe one of them or both can be turned into a fragment and share the same ViewModel.
Subtask of #1823.There's `RssFeedManageActivity` and `RssFeedImportActivity`. Maybe one of them or both can be turned into a fragment and share the same ViewModel.
Subtask of #1823.Adapt to changes in the Android platformDaniel LublinDaniel Lublin2021-04-30https://code.briarproject.org/briar/briar/-/issues/1897Groups/forums/blogs are shown as "already sharing" if initial connection to c...2023-01-20T14:33:34ZakwizgranGroups/forums/blogs are shown as "already sharing" if initial connection to contact is lostIf the initial connection to a contact is lost before client versioning messages are exchanged, any group/forum/blog we try to share with the contact will be shown as "already sharing".If the initial connection to a contact is lost before client versioning messages are exchanged, any group/forum/blog we try to share with the contact will be shown as "already sharing".Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/2070Unit test for transport key agreement validator2021-06-23T14:08:44ZakwizgranUnit test for transport key agreement validatorTransfer content securely via SD cards and USB memory sticksTorsten GroteTorsten Grote2021-07-31https://code.briarproject.org/briar/briar/-/issues/1899NPE in BluetoothSocket#connect()2021-03-11T18:11:31ZakwizgranNPE in BluetoothSocket#connect()* Android version: 9
* Phone model: Huawei ANE-LX1
* Briar version: 1.2.9 (9d96ce6)
* User feedback: "Unlocked the phone and Briar showed me this."
Stacktrace:
```
java.lang.NullPointerException: Attempt to read from field 'java.lang.St...* Android version: 9
* Phone model: Huawei ANE-LX1
* Briar version: 1.2.9 (9d96ce6)
* User feedback: "Unlocked the phone and Briar showed me this."
Stacktrace:
```
java.lang.NullPointerException: Attempt to read from field 'java.lang.String com.android.bluetooth.btservice.AdapterService$ConnectRecord.packageName' on a null object reference
at android.os.Parcel.createException(Parcel.java:1959)
at android.os.Parcel.readException(Parcel.java:1921)
at android.os.Parcel.readException(Parcel.java:1871)
at android.bluetooth.IBluetooth$Stub$Proxy.shouldRefuseConn(IBluetooth.java:2108)
at android.bluetooth.BluetoothSocket.connect(BluetoothSocket.java:400)
at org.briarproject.bramble.plugin.bluetooth.AndroidBluetoothPlugin.connectTo(AndroidBluetoothPlugin.java:206)
at org.briarproject.bramble.plugin.bluetooth.BluetoothPlugin.connect(BluetoothPlugin.java:318)
at org.briarproject.bramble.plugin.bluetooth.BluetoothPlugin.createConnection(BluetoothPlugin.java:337)
at org.briarproject.bramble.plugin.bluetooth.BluetoothPlugin.lambda$connect$1$BluetoothPlugin(BluetoothPlugin.java:290)
at org.briarproject.bramble.plugin.bluetooth.-$$Lambda$BluetoothPlugin$ll6XYbG2pnImYnbEJhWCfN150gw.run(Unknown Source:6)
at java.util.concurrent.ThreadPoolExecutor.processTask(ThreadPoolExecutor.java:1187)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1152)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:784)
```
Last lines of log:
```
08-17 23:11:37.677 I/PollerImpl: Polling plugin org.briarproject.bramble.bluetooth
08-17 23:11:37.694 I/ConnectionRegistryImpl: 2 contacts connected or better: org.briarproject.bramble.blue
tooth
08-17 23:11:37.699 I/BluetoothConnectionLimiterImpl: Can open contact connection
08-17 23:11:37.700 I/BluetoothPlugin: Connecting to A8:[scrubbed]:A9
08-17 23:11:37.702 I/BluetoothConnectionLimiterImpl: Can open contact connection
08-17 23:11:37.702 I/BluetoothPlugin: Connecting to AC:[scrubbed]:EE
08-17 23:11:37.703 I/BluetoothConnectionLimiterImpl: Can open contact connection
08-17 23:11:37.703 I/BluetoothPlugin: Connecting to 10:[scrubbed]:00
```
Looks like a bug in the Bluetooth stack that we could work around by catching the NPE and treating it as a failed connection attempt.Android 1.2https://code.briarproject.org/briar/briar/-/issues/1904IllegalStateException when backing out of blog feed2021-02-17T17:19:39ZakwizgranIllegalStateException when backing out of blog feed* Android version: 4.4.4
* Phone model: Sony Xperia X
* Briar version: 1.2.7 (eb562f8)
* User feedback: "I've pressed back button on Blogs page."
Stacktrace:
```
java.lang.IllegalStateException: Can not perform this action after onSaveI...* Android version: 4.4.4
* Phone model: Sony Xperia X
* Briar version: 1.2.7 (eb562f8)
* User feedback: "I've pressed back button on Blogs page."
Stacktrace:
```
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at androidx.fragment.app.FragmentManagerImpl.checkStateLoss(FragmentManagerImpl.java:1536)
at androidx.fragment.app.FragmentManagerImpl.enqueueAction(FragmentManagerImpl.java:1558)
at androidx.fragment.app.BackStackRecord.commitInternal(BackStackRecord.java:317)
at androidx.fragment.app.BackStackRecord.commit(BackStackRecord.java:282)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.startFragment(NavDrawerActivity.java:331)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.startFragment(NavDrawerActivity.java:315)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.startFragment(NavDrawerActivity.java:310)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.onBackPressed(NavDrawerActivity.java:277)
at android.app.Activity.onKeyUp(Activity.java:2193)
at android.view.KeyEvent.dispatch(KeyEvent.java:2664)
at androidx.core.view.KeyEventDispatcher.activitySuperDispatchKeyEventPre28(KeyEventDispatcher.java:137)
at androidx.core.view.KeyEventDispatcher.dispatchKeyEvent(KeyEventDispatcher.java:87)
at androidx.core.app.ComponentActivity.dispatchKeyEvent(ComponentActivity.java:133)
at androidx.appcompat.app.AppCompatActivity.dispatchKeyEvent(AppCompatActivity.java:558)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
at androidx.appcompat.app.AppCompatDelegateImpl$AppCompatWindowCallback.dispatchKeyEvent(AppCompatDelegateImpl.java:2814)
at androidx.appcompat.view.WindowCallbackWrapper.dispatchKeyEvent(WindowCallbackWrapper.java:59)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1962)
at android.view.ViewRootImpl$ViewPostImeInputStage.processKeyEvent(ViewRootImpl.java:3845)
at android.view.ViewRootImpl$ViewPostImeInputStage.onProcess(ViewRootImpl.java:3819)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3518)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
at android.view.ViewRootImpl$AsyncInputStage.apply(ViewRootImpl.java:3575)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$InputStage.apply(ViewRootImpl.java:3419)
at android.view.ViewRootImpl$InputStage.deliver(ViewRootImpl.java:3392)
at android.view.ViewRootImpl$InputStage.onDeliverToNext(ViewRootImpl.java:3442)
at android.view.ViewRootImpl$InputStage.forward(ViewRootImpl.java:3411)
at android.view.ViewRootImpl$AsyncInputStage.forward(ViewRootImpl.java:3551)
at android.view.ViewRootImpl$ImeInputStage.onFinishedInputEvent(ViewRootImpl.java:3711)
at android.view.inputmethod.InputMethodManager$PendingEvent.run(InputMethodManager.java:2043)
at android.view.inputmethod.InputMethodManager.invokeFinishedInputEventCallback(InputMethodManager.java:1737)
at android.view.inputmethod.InputMethodManager.finishedInputEvent(InputMethodManager.java:1728)
at android.view.inputmethod.InputMethodManager$ImeInputEventSender.onInputEventFinished(InputMethodManager.java:2020)
at android.view.InputEventSender.dispatchInputEventFinished(InputEventSender.java:141)
at android.os.MessageQueue.nativePollOnce(Native Method)
at android.os.MessageQueue.next(MessageQueue.java:138)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:5001)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:797)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:613)
at dalvik.system.NativeStart.main(Native Method)
```
Last lines of log:
```
10-18 21:06:06.210 I/BaseActivity: Starting NavDrawerActivity
10-18 21:06:06.247 I/BaseActivity: Stopping NavDrawerActivity
10-18 21:06:06.416 I/BaseActivity: Starting NavDrawerActivity
10-18 21:06:06.431 I/BaseActivity: Stopping NavDrawerActivity
```
This looks similar to #1423.Android 1.2IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1905Use ContactListViewModel in ContactChooserFragment and IntroductionActivity2021-04-26T12:51:23ZSebastianUse ContactListViewModel in ContactChooserFragment and IntroductionActivity!1341 introduced the ContactListViewModel which should be reusable by ContactChooserFragment and IntroductionActivity!1341 introduced the ContactListViewModel which should be reusable by ContactChooserFragment and IntroductionActivityAdapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/1908Going offline2022-02-25T15:03:53ZWuukoGoing offlineI was online but I'm offline.I was online but I'm offline.https://code.briarproject.org/briar/briar/-/issues/1910IllegalStateException when adding contact remotely2021-02-17T17:19:12ZakwizgranIllegalStateException when adding contact remotely* Android version: 8.0.0
* Phone model: Samsung SM-A520F (a5y17ltexx)
* Briar version: 1.2.12 (54893d2)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.briar.android.contact.add.remote.AddContactViewModel.add...* Android version: 8.0.0
* Phone model: Samsung SM-A520F (a5y17ltexx)
* Briar version: 1.2.12 (54893d2)
Stacktrace:
```
java.lang.IllegalStateException
at org.briarproject.briar.android.contact.add.remote.AddContactViewModel.addContact(AddContactViewModel.java:104)
at org.briarproject.briar.android.contact.add.remote.NicknameFragment.onAddButtonClicked(NicknameFragment.java:127)
at org.briarproject.briar.android.contact.add.remote.NicknameFragment.lambda$onCreateView$0$NicknameFragment(NicknameFragment.java:88)
at org.briarproject.briar.android.contact.add.remote.-$$Lambda$NicknameFragment$DP4SKMB9Kkf7jxUQrVMBWLNcvuI.onClick(Unknown Source:2)
at android.view.View.performClick(View.java:6897)
at android.widget.TextView.performClick(TextView.java:12727)
at android.view.View$PerformClick.run(View.java:26101)
at android.os.Handler.handleCallback(Handler.java:789)
at android.os.Handler.dispatchMessage(Handler.java:98)
at android.os.Looper.loop(Looper.java:164)
at android.app.ActivityThread.main(ActivityThread.java:6944)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygote.java:327)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1374)
```
Edited log:
```
01-14 16:53:22.538 I/AndroidNetworkManager: Received broadcast android.intent.action.SCREEN_ON
01-14 16:53:33.404 I/BaseActivity: Creating NavDrawerActivity
01-14 16:53:33.504 I/BaseActivity: Starting NavDrawerActivity
01-14 16:53:33.512 I/BaseActivity: Resuming NavDrawerActivity
01-14 16:53:36.039 I/BaseActivity: Pausing NavDrawerActivity
01-14 16:53:36.059 I/BaseActivity: Creating AddContactActivity
01-14 16:53:36.114 I/BaseActivity: Starting AddContactActivity
01-14 16:53:36.779 I/BaseActivity: Resuming AddContactActivity
01-14 16:53:37.277 I/BaseActivity: Stopping NavDrawerActivity
01-14 16:53:37.298 I/BaseActivity: Destroying NavDrawerActivity
01-14 16:53:49.623 I/BaseActivity: Pausing AddContactActivity
01-14 16:53:49.643 I/BaseActivity: Stopping AddContactActivity
01-14 16:53:49.667 I/BaseActivity: Destroying AddContactActivity
01-14 16:53:53.323 I/BaseActivity: Creating AddContactActivity
01-14 16:53:53.399 I/BaseActivity: Starting AddContactActivity
01-14 16:53:53.405 I/BaseActivity: Resuming AddContactActivity
```Android 1.2IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1913Bomb icon on images not white on API 162021-03-08T12:27:36ZSebastianBomb icon on images not white on API 16The bomb icon is grey on grey background which makes it difficult to see.
Its possible that !1346 will help find a simple solution for this.
![Screen01](/uploads/2739eda519037ebf5d109d087fc44746/Screen01.png)The bomb icon is grey on grey background which makes it difficult to see.
Its possible that !1346 will help find a simple solution for this.
![Screen01](/uploads/2739eda519037ebf5d109d087fc44746/Screen01.png)Self-destructing messagesSebastianSebastian2021-01-31https://code.briarproject.org/briar/briar/-/issues/1917Crash reporter captures log from crash reporter process, not main process2021-03-24T16:05:15ZakwizgranCrash reporter captures log from crash reporter process, not main processThe new crash reporter captures the log output from the crash reporter process, not the main Briar process. This log output doesn't give any information about the cause of the crash - it just shows the crash reporter process being create...The new crash reporter captures the log output from the crash reporter process, not the main Briar process. This log output doesn't give any information about the cause of the crash - it just shows the crash reporter process being created, injecting its components and launching CrashReportActivity.Android 1.2IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1919Password fields not focusable when navigated back to from the next page (keyb...2021-07-06T10:01:58ZIvanaPassword fields not focusable when navigated back to from the next page (keyboard doesn't come up when they are tapped)The test scenario was like this:
I type in my nickname on the first screen and I tap Next button. Then I proceed to type in my passwords, and click next (on the keyboard Next button).
A message comes up onthe next screen informing th...The test scenario was like this:
I type in my nickname on the first screen and I tap Next button. Then I proceed to type in my passwords, and click next (on the keyboard Next button).
A message comes up onthe next screen informing the user that briar has to stay connected and that they user should switch off the battery optimisation.
From that screen user navigates back to the password screen, because they changed their mind about what password to use and they want to change it.
The passwords cannot be changed because the keyboard doesn't come up when fields are tapped, so user cannot type. This was confirmed a bug in mattermost conversation (Testing channel, 3.2.21, around noon)
What should happen here? Should the user be able to chang etheir password from here?
Or should something else happen when they navigate back to the password page?
Please describe the details of solution in here so they can be re-tested when fied.
mp4 attached for your info.
![device-2021-02-03-124850](/uploads/2f3f336a75746a0b25efd7d786886283/device-2021-02-03-124850.mp4)Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1921PluginViewModel should wait for DB to open before loading settings2021-04-21T11:29:10ZakwizgranPluginViewModel should wait for DB to open before loading settingsWhile testing something unrelated on the 1.2.12 release I noticed this exception in the log:
```
02-03 16:15:52.017 2925-2952/org.briarproject.briar.android.debug W/PluginViewModel: org.briarproject.bramble.api.db.DbClosedException
...While testing something unrelated on the 1.2.12 release I noticed this exception in the log:
```
02-03 16:15:52.017 2925-2952/org.briarproject.briar.android.debug W/PluginViewModel: org.briarproject.bramble.api.db.DbClosedException
org.briarproject.bramble.api.db.DbClosedException
at org.briarproject.bramble.db.H2Database.createConnection(H2Database.java:97)
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:554)
at org.briarproject.bramble.db.JdbcDatabase.startTransaction(JdbcDatabase.java:97)
at org.briarproject.bramble.db.DatabaseComponentImpl.startTransaction(DatabaseComponentImpl.java:161)
at org.briarproject.bramble.db.DatabaseComponentImpl.transactionWithResult(DatabaseComponentImpl.java:208)
at org.briarproject.bramble.settings.SettingsManagerImpl.getSettings(SettingsManagerImpl.java:26)
at org.briarproject.briar.android.navdrawer.PluginViewModel.isPluginEnabled(PluginViewModel.java:204)
at org.briarproject.briar.android.navdrawer.PluginViewModel.lambda$loadSettings$0$PluginViewModel(PluginViewModel.java:187)
at org.briarproject.briar.android.navdrawer.-$$Lambda$PluginViewModel$HPPDOnjY7Hk6kE7RpR2no4vHis8.run(lambda)
at org.briarproject.bramble.TimeLoggingExecutor.lambda$execute$0$TimeLoggingExecutor(TimeLoggingExecutor.java:36)
at org.briarproject.bramble.-$$Lambda$TimeLoggingExecutor$Bqrtbsq_8LcRPoTWBOef6xh7gJg.run(lambda)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1113)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:588)
at java.lang.Thread.run(Thread.java:818)
```
This happens at startup when NavDrawerActivity is created before signing in, as PluginViewModel tries to load the plugin settings.
This is currently harmless because a new NavDrawerActivity instance is created after signing in, with a new view model instance that successfully loads the settings. But that's just a lucky accident. To avoid depending on that, perhaps it would be better to refactor PluginViewModel to use DbViewModel#runOnDbThread()?Adapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/1922Upgrade Tor to 0.3.5.132021-02-17T17:19:27ZakwizgranUpgrade Tor to 0.3.5.13Tor 0.3.5.13 includes the following bugfix that should improve v3 hidden service reachability:
> Major bugfixes (onion service v3, backport from 0.4.5.3-rc):
> - Stop requiring a live consensus for v3 clients and services, and
> allow...Tor 0.3.5.13 includes the following bugfix that should improve v3 hidden service reachability:
> Major bugfixes (onion service v3, backport from 0.4.5.3-rc):
> - Stop requiring a live consensus for v3 clients and services, and
> allow a "reasonably live" consensus instead. This allows v3 onion
> services to work even if the authorities fail to generate a
> consensus for more than 2 hours in a row. Fixes bug 40237; bugfix
> on 0.3.5.1-alpha.Android 1.2IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1926Crash after account creation on Samsung Ultra devices2022-02-28T13:48:05ZakwizgranCrash after account creation on Samsung Ultra devicesThree users reported via Google Play that the app crashes at startup on their Samsung devices (Galaxy Note20 Ultra 5G, Galaxy S21 Ultra 5G).
One of the users reported that the app crashes every time after tapping "create account". The u...Three users reported via Google Play that the app crashes at startup on their Samsung devices (Galaxy Note20 Ultra 5G, Galaxy S21 Ultra 5G).
One of the users reported that the app crashes every time after tapping "create account". The user sent a partial crash report by email, since the app didn't reach the point where the report could be sent via Tor.
Stacktrace:
```
Failed to allocate a 1040 byte allocation with 115624 free bytes and 112KB until OOM, target footprint 268435456, growth limit 268435456; failed due to fragmentation (largest possible contiguous allocation 97255424 bytes)
java.lang.OutOfMemoryError: Failed to allocate a 1040 byte allocation with 115624 free bytes and 112KB until OOM, target footprint 268435456, growth limit 268435456; failed due to fragmentation (largest possible contiguous allocation 97255424 bytes)
at org.spongycastle.util.Arrays.clone(Arrays.java:671)
at org.spongycastle.crypto.generators.SCrypt.SMix(SCrypt.java:126)
at org.spongycastle.crypto.generators.SCrypt.MFcrypt(SCrypt.java:87)
at org.spongycastle.crypto.generators.SCrypt.generate(SCrypt.java:66)
at org.briarproject.bramble.crypto.ScryptKdf.measureDuration(ScryptKdf.java:48)
at org.briarproject.bramble.crypto.ScryptKdf.chooseCostParameter(ScryptKdf.java:38)
at org.briarproject.bramble.crypto.CryptoComponentImpl.encryptWithPassword(CryptoComponentImpl.java:328)
at org.briarproject.bramble.account.AccountManagerImpl.encryptAndStoreDatabaseKey(AccountManagerImpl.java:182)
at org.briarproject.bramble.account.AccountManagerImpl.createAccount(AccountManagerImpl.java:173)
at org.briarproject.briar.android.account.SetupControllerImpl.lambda$createAccount$0(SetupControllerImpl.java:111)
at org.briarproject.briar.android.account.SetupControllerImpl.lambda$createAccount$0$SetupControllerImpl(Unknown Source:0)
at org.briarproject.briar.android.account.-$$Lambda$SetupControllerImpl$d4VGO9XJWxzmTk5cXfL8og-qX7I.run(Unknown Source:8)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
```
Memory info:
```
SystemMemoryFree: 4696301568
SystemMemoryThreshold: 226492416
SystemMemoryTotal: 11047866368
VirtualMachineMemoryAllocated: 268435456
VirtualMachineMemoryFree: 249255432
VirtualMachineMemoryMaximum: 268435456
```
The issue appears to be that scrypt is exhausting the available memory while trying to choose a cost parameter. The phone has 12 GB of memory and a 256 MB heap.
We might be able to avoid the issue by capping the scrypt cost parameter so that scrypt's expected memory usage isn't more than half of the max heap size.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1930Show actual auto-delete timer duration in UI2021-03-01T17:05:35ZTorsten GroteShow actual auto-delete timer duration in UISince we only support a fixed timer for disappearing messages, the UI currently shows a static text (one week) for the duration.
However, to make changing the timer possible in the future without client version upgraded, we should alrea...Since we only support a fixed timer for disappearing messages, the UI currently shows a static text (one week) for the duration.
However, to make changing the timer possible in the future without client version upgraded, we should already show the actual timer that is being used, so that old clients can show the actual duration used by future clients.Self-destructing messagesakwizgranakwizgran2021-01-31https://code.briarproject.org/briar/briar/-/issues/1933Testing new release (test issue)2022-02-25T15:03:13ZSebastianTesting new release (test issue)Briar settings:
Settings > Connections >
- Connect to contact via bluetooth = off
- Connect to contacts on the same wi-fi network = off
- Connect to contacts via internet = on
Device settngs:
- Wi-fi = on
- Bluetooth = off
Scenarios...Briar settings:
Settings > Connections >
- Connect to contact via bluetooth = off
- Connect to contacts on the same wi-fi network = off
- Connect to contacts via internet = on
Device settngs:
- Wi-fi = on
- Bluetooth = off
Scenarios:
1. Both devices online at the same time
- [ ] Use two devices with above settings and exchange their connection codes(send via email, sms, other chat apps etc) using the share button
- [ ] Verify that connection is successfully created and the new contact's name appears on top of the list on Contacts screen. This should happen within seconds if both devices are online.
2. One device online and the other connects later on ( a few hours later)
- [ ] at the bottom of the Contacts screen, there is a message tothe user 'Pending contacts...' and the user can click on Show, which will display the name of the user whose connection is pending.
- [ ] It is possible to delete this pending contact by tapping on the bin icon - delet it
- [ ] recreate contact at a distance in the same way
- [ ] Contact should be created successfully when the contact comes online
3. Recreate the same contact with the same code when the contact is already created
- [ ] there should be a message saying: "is this the same person" and the user can choose Yes or No.
- [ ] If Yes is chosen, no new contact is created. If No, then a new contact is created.
4. Delete an already created contact on one device and re-create it with the same code that was used previously. Used the Copy and Paste buttons underneath each field.
- [ ] Contact should be created successfully
5. Perform copying of code whilst the device is in portrait and pasting whilst device is in landscape. Give the contact name in portrait, then tap Add contact in landscape.
- [ ] Contact should be created successfully
6. Copy and paste the codes (using the popup Paste button), give the new contact a name, and tap Add contact, then immediately - home button. Restart briar from recently used apps.
- [ ] Contact should be created successfully
7. Copy and paste the codes (using the popup Paste button) in landscape, give the new contact a name, and tap Add contact, then immediately - home button. Restart briar from recently used apps in portrait.
- [ ] Contact should be created successfully
8. copy and paste codes for a contact that is not online - so the contact creation remains in Connecting/Waiting for the contact to come online. Repeat for another contact. Then, whilst the first two are 'waiting for the contact to come online', create a third and a fourth contact in the same way.
- [ ] Contact should be created successfully
9. The 'waiting to come online' contacts should time out after certain time.IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1934Upgrade obfs4proxy to fix meek's certificate pinning2021-02-17T17:15:34ZakwizgranUpgrade obfs4proxy to fix meek's certificate pinningobfs4proxy's meek-lite transport stopped working on 7 December due to a change in the TLS certificate chain of the Azure infrastructure. This will prevent Briar users in China from connecting to Tor, as well as any users in other countri...obfs4proxy's meek-lite transport stopped working on 7 December due to a change in the TLS certificate chain of the Azure infrastructure. This will prevent Briar users in China from connecting to Tor, as well as any users in other countries who are on IPv6-only networks and have bridges enabled.
https://gitlab.torproject.org/tpo/anti-censorship/pluggable-transports/meek/-/issues/40001
https://gitweb.torproject.org/pluggable-transports/obfs4.git/log/
There hasn't been a new obfs4proxy release since the fix was merged, so we'll need to build from master. I suggest we use `0.0.12-dev-<commit ID>` as the version number, as this isn't a snapshot build in the Maven sense (the artifact won't change when changes are made upstream).Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1939Private group is greyed out after rotating screen2021-02-18T16:51:40ZakwizgranPrivate group is greyed out after rotating screen![device-2021-02-11-150926](/uploads/b17c093a0c55f126e950c695aee3ae00/device-2021-02-11-150926.png)
Should be fixed by !1371.![device-2021-02-11-150926](/uploads/b17c093a0c55f126e950c695aee3ae00/device-2021-02-11-150926.png)
Should be fixed by !1371.Android 1.2IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1941making the ### clickable and show a small dialog2021-07-23T11:18:13Zsystermaking the ### clickable and show a small dialogNext to an account name of someone that wrote a message there are 3 hashes shown. They can vary in color.
Make a clickable dialogue that will explain its meaning.Next to an account name of someone that wrote a message there are 3 hashes shown. They can vary in color.
Make a clickable dialogue that will explain its meaning.https://code.briarproject.org/briar/briar/-/issues/1942Profile picture isn't shown if settings screen is recreated after process was...2021-04-26T12:13:43ZakwizgranProfile picture isn't shown if settings screen is recreated after process was killedSteps to reproduce:
* Open the Briar settings screen
* Leave Briar running in the foreground and turn the screen off
* Use the ADB shell to kill the Briar process
* Turn the screen back on
* The Briar password prompt is shown
* Sign into...Steps to reproduce:
* Open the Briar settings screen
* Leave Briar running in the foreground and turn the screen off
* Use the ADB shell to kill the Briar process
* Turn the screen back on
* The Briar password prompt is shown
* Sign into Briar
* The settings screen is shown
* The profile picture isn't loaded
![device-2021-02-18-143535](/uploads/264e108ebbe0be0b9acb706e3080bfe1/device-2021-02-18-143535.png)
Tested on the Nexus 5X (Android 8.1.0).Adapt to changes in the Android platformakwizgranakwizgran2021-04-30https://code.briarproject.org/briar/briar/-/issues/1944Changing a contact name does not update the contact list immediately2021-04-26T12:09:06ZSebastianChanging a contact name does not update the contact list immediatelyTest instructions:
* Enter a conversation
* Open the menu
* Select 'change contact name'
* Enter a new alias and confirm
* Navigate back to the contact list
* Observe that the alias of the contact has already changed when arriving at the...Test instructions:
* Enter a conversation
* Open the menu
* Select 'change contact name'
* Enter a new alias and confirm
* Navigate back to the contact list
* Observe that the alias of the contact has already changed when arriving at the contact list
* Variant A: change the contact name to nothing (empty string into dialog)
* Variant B: after the contact alias was empty, change back to some non-empty aliasAdapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/57Detect DB durability failures2021-04-12T13:18:14ZakwizgranDetect DB durability failuresIf the app or device crashes, the database may fail to store data durably:
http://www.h2database.com/html/advanced.html#durability_problems
This may cause a wide range of problems, including data sync bugs where a peer believes we've s...If the app or device crashes, the database may fail to store data durably:
http://www.h2database.com/html/advanced.html#durability_problems
This may cause a wide range of problems, including data sync bugs where a peer believes we've stored some data because we acked it, but we failed to store the data durably. The peer won't ever resend the acked data.
To detect durability problems, store a flag in the DB indicating whether the DB is dirty. At startup, if the DB is dirty then a crash has occurred. Otherwise mark the DB dirty before handling the first transaction. At shutdown, mark the DB clean after handling the last transaction.
If a crash is detected then we can attempt to recover from any problems it may have caused, for example by asking peers to forget about any acks we've sent.
This approach relies on the assumption that if transaction A is committed before transaction B is started, it's not possible for the database to durably store transaction B but not transaction A. Is that a safe assumption?Adapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/2065Implement UI of transfer data feature2021-07-06T09:41:34ZTorsten GroteImplement UI of transfer data featureTransfer content securely via SD cards and USB memory sticksTorsten GroteTorsten Grote2021-07-31https://code.briarproject.org/briar/briar/-/issues/1946Text in blog comments has no padding on the left side (API 16)2021-09-02T12:26:21ZakwizgranText in blog comments has no padding on the left side (API 16)On the Galaxy Ace 2 (Android 4.1.2) blog posts are shown with the correct amount of padding but comments are not: the text touches the left side of the card. On other devices posts and comments have a similar amount of padding.
![device...On the Galaxy Ace 2 (Android 4.1.2) blog posts are shown with the correct amount of padding but comments are not: the text touches the left side of the card. On other devices posts and comments have a similar amount of padding.
![device-2021-02-19-142657](/uploads/afce2bc980a7e1ed9be254a25696e3ec/device-2021-02-19-142657.png)Android 1.3IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1947NPE when forum post arrives before parent is loaded2021-02-19T17:55:49ZakwizgranNPE when forum post arrives before parent is loaded* Android version: 4.1.2
* Phone model: Samsung Galaxy Ace 2 (GT-I8160)
* Briar version: 1.2.15 (885b03c) (debug build)
The crash happened when I opened a forum from the invitation message in a private conversation, then quickly hit the...* Android version: 4.1.2
* Phone model: Samsung Galaxy Ace 2 (GT-I8160)
* Briar version: 1.2.15 (885b03c) (debug build)
The crash happened when I opened a forum from the invitation message in a private conversation, then quickly hit the back button.
Stacktrace:
```
java.lang.NullPointerException
at org.briarproject.briar.client.MessageTreeImpl.parseNode(MessageTreeImpl.java:74)
at org.briarproject.briar.client.MessageTreeImpl.add(MessageTreeImpl.java:50)
at org.briarproject.briar.client.MessageTreeImpl.add(MessageTreeImpl.java:57)
at org.briarproject.briar.android.threaded.ThreadListViewModel.addItem(ThreadListViewModel.java:200)
at org.briarproject.briar.android.forum.ForumViewModel.eventOccurred(ForumViewModel.java:98)
at org.briarproject.bramble.event.EventBusImpl.lambda$broadcast$0(EventBusImpl.java:42)
at org.briarproject.bramble.event.EventBusImpl.lambda$broadcast$0$EventBusImpl(EventBusImpl.java)
at org.briarproject.bramble.event.-$$Lambda$EventBusImpl$clxOMxNLcHINGTGi9tkg-7meojQ.run(lambda)
at android.os.Handler.handleCallback(Handler.java:615)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4867)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1007)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:774)
at dalvik.system.NativeStart.main(Native Method)
```
Edited log:
```
02-19 14:29:35.867 I/BaseActivity: Pausing ConversationActivity
02-19 14:29:35.918 I/BaseActivity: Creating ForumActivity
02-19 14:29:36.128 I/BaseActivity: Starting ForumActivity
02-19 14:29:36.129 I/BaseActivity: Resuming ForumActivity
02-19 14:29:36.253 I/DuplexOutgoingSession: Generated ack: true
02-19 14:29:36.254 I/DuplexOutgoingSession: Sent ack
02-19 14:29:36.643 I/BaseActivity: Pausing ForumActivity
02-19 14:29:36.692 I/BaseActivity: Resuming ConversationActivity
02-19 14:29:36.763 I/ForumViewModel: Forum post received, adding...
```
The message tree assumes that when a message is added, its parent (which is a dependency) is already in the tree.
ForumViewModel logs the amount of time taken to load the message headers and bodies. This is a debug build, so messages logged with logDuration() would appear in the log. Those messages don't appear in the log, so it looks like the new message was added to the tree before the initial load completed, so its parent was present in the DB but not in the tree.Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1950Briar 5 dakika sonra kapanıyor.2021-02-22T11:28:57ZWuukoBriar 5 dakika sonra kapanıyor.Briar açıldıktan 5 dakika sonra eğer aktif değilsem kapanıyor. Aktifsem kapanmıyor.
Telefon: huawei y7
Sürüm:8.2
Note: I wrote in Turkish because my English was bad.Briar açıldıktan 5 dakika sonra eğer aktif değilsem kapanıyor. Aktifsem kapanmıyor.
Telefon: huawei y7
Sürüm:8.2
Note: I wrote in Turkish because my English was bad.https://code.briarproject.org/briar/briar/-/issues/1951Exclude files from D2D backups2021-03-15T13:29:35ZTorsten GroteExclude files from D2D backupsWhen targeting API 30: When using device-to-device backup our `allowBackup=false` will be ignored and our app data will get backed up, if we don't explicitly exclude files from backup.
Subtask of #1827When targeting API 30: When using device-to-device backup our `allowBackup=false` will be ignored and our app data will get backed up, if we don't explicitly exclude files from backup.
Subtask of #1827Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1952Crash - when changing or canceling profile pictures2021-07-06T10:06:10ZIvanaCrash - when changing or canceling profile picturesSteps to reproduce:
HTC One M9 API 24 -
Log into the briar
1. Go to settings > tap on 'tap here to change your profile picture'
2. Select a picture available in your phone
3. When the popup appears, select 'cancel'.
Go back to step 1...Steps to reproduce:
HTC One M9 API 24 -
Log into the briar
1. Go to settings > tap on 'tap here to change your profile picture'
2. Select a picture available in your phone
3. When the popup appears, select 'cancel'.
Go back to step 1 and 2
This has been reproduced 3 times... here are the logfiles from Android studio.
[change_of_profile_pictures_3.txt](/uploads/2be2b0296e1e4a386f41e6ce31fbae13/change_of_profile_pictures_3.txt)[crash_when_changing_profile_picture_2.txt](/uploads/fb32103ee1133301809083e9331bd5f5/crash_when_changing_profile_picture_2.txt)[Crash_when_changing_profile_pictures.txt](/uploads/bdbcba54c0d8ff0a966a3effe4dd2d2e/Crash_when_changing_profile_pictures.txt)
version under test: beta 1.2.16 8a534b45Profile picturesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1953Dialog about "Disappearing messages changed" for image only messages2021-03-08T12:27:51ZSebastianDialog about "Disappearing messages changed" for image only messages![issue](/uploads/8e8d903d76bddc993f68dfc1af183ae6/issue.png)
The "Disappearing messages changed" appears although it shouldn't.
Steps to reproduce:
1. open a fresh, empty conversation
2. enable disappearing messages
3. (optional: send...![issue](/uploads/8e8d903d76bddc993f68dfc1af183ae6/issue.png)
The "Disappearing messages changed" appears although it shouldn't.
Steps to reproduce:
1. open a fresh, empty conversation
2. enable disappearing messages
3. (optional: send a text message and notice that the dialog does not appear)
4. send an image message (without text) and see the dialog appear
It doesn't work just once, it works repeatedly and also after sending more text-only or image-with-text messagesSelf-destructing messagesTorsten GroteTorsten Grote2021-01-31https://code.briarproject.org/briar/briar/-/issues/1955Don't advertise support for self-destructing messages unless feature flag is ...2021-03-08T17:58:12ZakwizgranDon't advertise support for self-destructing messages unless feature flag is enabledTo avoid receiving self-destructing messages when the UI for the feature is disabled by a feature flag, we shouldn't tell our contacts we support the new version of the messaging client unless the feature flag is enabled.To avoid receiving self-destructing messages when the UI for the feature is disabled by a feature flag, we shouldn't tell our contacts we support the new version of the messaging client unless the feature flag is enabled.Self-destructing messagesTorsten GroteTorsten Grote2021-01-31https://code.briarproject.org/briar/briar/-/issues/1836Automatically decline incoming private group invitations when they self-destruct2021-03-11T12:26:10ZakwizgranAutomatically decline incoming private group invitations when they self-destructWhen an incoming private group invitation self-destructs without being answered, automatically decline the request. This may require a protocol update (coordinated with #1831) to flag the decline as an automatic response that shouldn't b...When an incoming private group invitation self-destructs without being answered, automatically decline the request. This may require a protocol update (coordinated with #1831) to flag the decline as an automatic response that shouldn't be shown in the UI.
Subtask of #804Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1957All conversation messages are marked as read via messaging manager2021-05-05T16:08:47ZakwizgranAll conversation messages are marked as read via messaging managerThe setReadFlag() method is declared in the ConversationClient interface, but only MessagingManagerImpl's implementation of the method is used (except for one integration test).
If clients don't need their own implementations, the metho...The setReadFlag() method is declared in the ConversationClient interface, but only MessagingManagerImpl's implementation of the method is used (except for one integration test).
If clients don't need their own implementations, the method could be moved to the MessagingManager or ConversationManager interface, and the unused implementation in ConversationClientImpl could be removed.
On the other hand, if clients *do* need their own implementations then the implementation in ConversationClientImpl should be updated and we should make sure that ConversationViewModel and (eventually) MessagingControllerImpl call the right client for each message.
Test instructions:
* repeat tests from !1389Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1958Bomb icon disappears from the text input field in landscape orientation when ...2021-03-08T12:29:21ZIvanaBomb icon disappears from the text input field in landscape orientation when the keyboard comes upSteps to reproduce the issue:
Go to menu in the upper right corner and change Disappearing messages setting to ON
Start typing a message to a contact, and verify that there is a little bomb icon in the text input field as you are typing...Steps to reproduce the issue:
Go to menu in the upper right corner and change Disappearing messages setting to ON
Start typing a message to a contact, and verify that there is a little bomb icon in the text input field as you are typing... then change the orientation of device. Continue typing.
Expected result:
The bomb icon shows in the text input field the same way as it does in the portrait orientation
Actual results:
The bomb icon does not show int he text input field when the keyboard is up.
Turning the device back into portrait orientation - bomb icon in the text input field is visible again.![device-2021-03-03-123142](/uploads/211a76c6a292e5e923b93787a5fb9ad3/device-2021-03-03-123142.mp4)Self-destructing messages2021-01-31https://code.briarproject.org/briar/briar/-/issues/1960Design "Connect via Bluetooth" feature2021-04-26T12:52:47ZTorsten GroteDesign "Connect via Bluetooth" featureSub-task of #1821Sub-task of #1821Adapt to changes in the Android platformTorsten GroteTorsten Grote2021-04-30https://code.briarproject.org/briar/briar/-/issues/1961Implement UI of "Connect via Bluetooth" feature2021-07-06T10:01:35ZTorsten GroteImplement UI of "Connect via Bluetooth" featureImplement the design of #1960
Sub-task of #1821Implement the design of #1960
Sub-task of #1821Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1962Implement backend of "Connect via Bluetooth" feature2021-04-27T12:31:32ZTorsten GroteImplement backend of "Connect via Bluetooth" featureProvide the backend functionality for: #1961
A couple of options there:
* we can try to connect to a specific contact without closing any existing connections (no prioritisation), which is what we'd usually do when polling
* or we can ...Provide the backend functionality for: #1961
A couple of options there:
* we can try to connect to a specific contact without closing any existing connections (no prioritisation), which is what we'd usually do when polling
* or we can close other connections first to give the new connection the best chance of succeeding
Maybe we should defer this question until we've experimented a bit. We already have a mechanism for closing connections so we know it's something that could be added later if needed.Adapt to changes in the Android platformDaniel LublinDaniel Lublin2021-04-30https://code.briarproject.org/briar/briar/-/issues/1914Create ViewModels immediately after injection2021-04-26T12:11:53ZakwizgranCreate ViewModels immediately after injectionVarious activities and fragments are creating their view models at different points in their lifecycles. To avoid subtle lifecycle bugs let's standardise this and create view models immediately after injection.
Subtask of #1823.
Test i...Various activities and fragments are creating their view models at different points in their lifecycles. To avoid subtle lifecycle bugs let's standardise this and create view models immediately after injection.
Subtask of #1823.
Test instructions:
This set of changes doesn't introduce new features, it only rearranges some code and is supposed not to break anything. It makes sense to test that the workflows and actions for which code has been touched. These include:
* Creating a new account on a fresh install
* Adding contacts via QR codes and make sure it works
* Add a contact remotely and before that finishes (by only completing the dialog on one of the devices first), check that the screen with the "pending contacts" works as expected
* Changing the alias for a contact
* Changing the account password
* Sending an image and opening that image full screen on both the sender and receiver device
* Opening the transports screen (by opening the navigation drawer on the left, tapping any of the connection modes at the bottom) and check that changing anything there persists (i.e. is still changed when navigating away and back to that screen)Adapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/1964Colons in filename prevent image from being saved on API 21 emulator2021-05-05T16:14:51ZakwizgranColons in filename prevent image from being saved on API 21 emulatorWhen saving images we use the time and date to generate a default filename. Trying to save the image with this filename fails on the API 21 emulator because the colons in the filename are illegal for some filesystems (I assume the SD car...When saving images we use the time and date to generate a default filename. Trying to save the image with this filename fails on the API 21 emulator because the colons in the filename are illegal for some filesystems (I assume the SD card uses the FAT filesystem). Replacing the colons with dashes allows the image to be saved.Android 1.3https://code.briarproject.org/briar/briar/-/issues/1966Coming another post2021-03-11T19:01:22ZWuukoComing another postI'm writing a piece, first the old one comes out, then the new one.I'm writing a piece, first the old one comes out, then the new one.https://code.briarproject.org/briar/briar/-/issues/1970Two compose buttons in blog feed2021-09-02T12:27:51ZakwizgranTwo compose buttons in blog feed![device-2021-03-16-145013](/uploads/d05d9fb8ce4bc618a5833929a8bd4d50/device-2021-03-16-145013.png)
Steps to reproduce:
* You need to have at least one blog post in the combined feed - write one if necessary
* Open the combined feed an...![device-2021-03-16-145013](/uploads/d05d9fb8ce4bc618a5833929a8bd4d50/device-2021-03-16-145013.png)
Steps to reproduce:
* You need to have at least one blog post in the combined feed - write one if necessary
* Open the combined feed and tap on the body of a blog post
* The post is shown on its own
* Hamburger menu > Contacts
* Hamburger menu > Blogs
* The combined blog feed is shown
* Back button
* Expected: The contact list should be shown
* Actual: The combined blog feed is still shown, with two compose buttons
The bug exists on master and isn't fixed by !1342. (I rebased on !1342 master for testing, as it predates !1377, which I suspect is related to this bug).Android 1.3IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1971Upgrade Tor to 0.3.5.142021-05-31T12:05:53ZakwizgranUpgrade Tor to 0.3.5.14https://gitweb.torproject.org/tor.git/tree/ChangeLog?h=tor-0.3.5.14https://gitweb.torproject.org/tor.git/tree/ChangeLog?h=tor-0.3.5.14Android 1.2akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1972Unable to add nearby contact when location services disabled2021-04-26T12:12:47ZDaniel LublinUnable to add nearby contact when location services disabled2 Android 10 devices trying to add each other. Location permissions has been granted, but actual location service were later disabled in the system. Adding times out, and I get the "Could not connect to your contact" screen.
Enabling lo...2 Android 10 devices trying to add each other. Location permissions has been granted, but actual location service were later disabled in the system. Adding times out, and I get the "Could not connect to your contact" screen.
Enabling location service on both devices and trying again is successful.Adapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1973Make use of DbViewModel#handleException2021-04-26T12:13:14ZTorsten GroteMake use of DbViewModel#handleException!1342 is introducing `DbViewModel#handleException()` that we should also use in other ViewModel code where we currently do nothing more than logging the exception.!1342 is introducing `DbViewModel#handleException()` that we should also use in other ViewModel code where we currently do nothing more than logging the exception.Adapt to changes in the Android platformSebastianSebastian2021-04-30https://code.briarproject.org/briar/briar/-/issues/1975Crash: after introductions are declined by both parties (disappearing message...2021-05-05T16:17:23ZIvanaCrash: after introductions are declined by both parties (disappearing messages setting is ON on all devices)Scenario was like this;
Three devices, Samsung Mini API19, Nokia 1.3 API 30 and Pixel 2 API29. Samsung has connections with both, but they are not connected to each other. Disappearing messages are on for both Samsung's contacts, as we...Scenario was like this;
Three devices, Samsung Mini API19, Nokia 1.3 API 30 and Pixel 2 API29. Samsung has connections with both, but they are not connected to each other. Disappearing messages are on for both Samsung's contacts, as well as on Nokia and Pixel for the conversations with Samsung.
Samsung mini selects Pixel and goes to select the Make Introductions. Then it selects the Nokia's contact and sends a message to both of them. They both decline the intro message.
Samsung goes back to Pixel's conversation, and tries to perform the intro again, in the same way.
After selecting Make introductions, the crash happens. No logfile as the phone that crashed was not connected to Android Studio at the time of crash. But here are the screenshots of Stacktrace on the phone itself.
Reproduced - crash happens after both parties decline invitation with Disappearing msgs = ON. One more detail in the scenario is that the sender's atomatically generated messages related to this intro disappear before either of the recipients sees their messages re: intro that sender sent them. After disappearance of the sender's auto-generated msgs, both contacts then look at their messages and decline the intro.
![device-2021-03-23-115918](/uploads/fcf869c8275fe99c4ef3db7e9131a9d7/device-2021-03-23-115918.png)![device-2021-03-23-115939](/uploads/c42a2522c05d09c95a5a20358687a5cc/device-2021-03-23-115939.png)[Logfile_Crash_230321.txt](/uploads/d47015c1f5b198907b63ca667557fa6f/Logfile_Crash_230321.txt)Self-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1979Crash when showing feedback details as feedback is being sent2021-05-05T16:11:10ZakwizgranCrash when showing feedback details as feedback is being sent* Android version: 11
* Phone model: Google Pixel 4a (sunfish)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "I was about to send feedback and I selected include more data and send, while it was loading I pressed on 'show' to see th...* Android version: 11
* Phone model: Google Pixel 4a (sunfish)
* Briar version: 1.2.13 (5fdc7e7)
* User feedback: "I was about to send feedback and I selected include more data and send, while it was loading I pressed on 'show' to see the logs that will be sent, then it caused the crash prompt."
Stacktrace:
```
String resource ID #0x0
android.content.res.Resources$NotFoundException: String resource ID #0x0
at android.content.res.Resources.getText(Resources.java:444)
at android.widget.TextView.setText(TextView.java:6429)
at org.briarproject.briar.android.reporting.ReportDataAdapter$ReportDataViewHolder.bind(ReportDataAdapter.java:62)
at org.briarproject.briar.android.reporting.ReportDataAdapter.onBindViewHolder(ReportDataAdapter.java:38)
at org.briarproject.briar.android.reporting.ReportDataAdapter.onBindViewHolder(ReportDataAdapter.java:18)
at androidx.recyclerview.widget.RecyclerView$Adapter.onBindViewHolder(RecyclerView.java:7065)
at androidx.recyclerview.widget.RecyclerView$Adapter.bindViewHolder(RecyclerView.java:7107)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryBindViewHolderByDeadline(RecyclerView.java:6012)
at androidx.recyclerview.widget.RecyclerView$Recycler.tryGetViewHolderForPositionByDeadline(RecyclerView.java:6279)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6118)
at androidx.recyclerview.widget.RecyclerView$Recycler.getViewForPosition(RecyclerView.java:6114)
at androidx.recyclerview.widget.LinearLayoutManager$LayoutState.next(LinearLayoutManager.java:2303)
at androidx.recyclerview.widget.LinearLayoutManager.layoutChunk(LinearLayoutManager.java:1627)
at androidx.recyclerview.widget.LinearLayoutManager.fill(LinearLayoutManager.java:1587)
at androidx.recyclerview.widget.LinearLayoutManager.onLayoutChildren(LinearLayoutManager.java:665)
at androidx.recyclerview.widget.RecyclerView.dispatchLayoutStep2(RecyclerView.java:4134)
at androidx.recyclerview.widget.RecyclerView.onMeasure(RecyclerView.java:3540)
at android.view.View.measure(View.java:25466)
at androidx.constraintlayout.widget.ConstraintLayout$Measurer.measure(ConstraintLayout.java:792)
at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measure(BasicMeasure.java:480)
at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.measureChildren(BasicMeasure.java:134)
at androidx.constraintlayout.solver.widgets.analyzer.BasicMeasure.solverMeasure(BasicMeasure.java:277)
at androidx.constraintlayout.solver.widgets.ConstraintWidgetContainer.measure(ConstraintWidgetContainer.java:119)
at androidx.constraintlayout.widget.ConstraintLayout.resolveSystem(ConstraintLayout.java:1578)
at androidx.constraintlayout.widget.ConstraintLayout.onMeasure(ConstraintLayout.java:1690)
at android.view.View.measure(View.java:25466)
at androidx.core.widget.NestedScrollView.measureChildWithMargins(NestedScrollView.java:1599)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.core.widget.NestedScrollView.onMeasure(NestedScrollView.java:585)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at androidx.appcompat.widget.ContentFrameLayout.onMeasure(ContentFrameLayout.java:146)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.LinearLayout.measureChildBeforeLayout(LinearLayout.java:1552)
at android.widget.LinearLayout.measureVertical(LinearLayout.java:842)
at android.widget.LinearLayout.onMeasure(LinearLayout.java:721)
at android.view.View.measure(View.java:25466)
at android.view.ViewGroup.measureChildWithMargins(ViewGroup.java:6957)
at android.widget.FrameLayout.onMeasure(FrameLayout.java:194)
at com.android.internal.policy.DecorView.onMeasure(DecorView.java:747)
at android.view.View.measure(View.java:25466)
at android.view.ViewRootImpl.performMeasure(ViewRootImpl.java:3402)
at android.view.ViewRootImpl.measureHierarchy(ViewRootImpl.java:2246)
at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2504)
at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1948)
at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:8177)
at android.view.Choreographer$CallbackRecord.run(Choreographer.java:972)
at android.view.Choreographer.doCallbacks(Choreographer.java:796)
at android.view.Choreographer.doFrame(Choreographer.java:731)
at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:957)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:223)
at android.app.ActivityThread.main(ActivityThread.java:7660)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
```
Log not available due to #1917.Android 1.2IvanaIvanahttps://code.briarproject.org/briar/briar/-/issues/1980SecurityException in ConnectivityManager#getNetworkCapabilities()2022-04-20T14:51:58ZakwizgranSecurityException in ConnectivityManager#getNetworkCapabilities()* Android version: 11
* Phone model: Android Pixel 3 (aosp_blueline)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Package android does not belong to 10144
java.lang.SecurityException: Package android does not belong to 10144
...* Android version: 11
* Phone model: Android Pixel 3 (aosp_blueline)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Package android does not belong to 10144
java.lang.SecurityException: Package android does not belong to 10144
at android.os.Parcel.createExceptionOrNull(Parcel.java:2373)
at android.os.Parcel.createException(Parcel.java:2357)
at android.os.Parcel.readException(Parcel.java:2340)
at android.os.Parcel.readException(Parcel.java:2282)
at android.net.IConnectivityManager$Stub$Proxy.getNetworkCapabilities(IConnectivityManager.java:2456)
at android.net.ConnectivityManager.getNetworkCapabilities(ConnectivityManager.java:1385)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.getSocketFactory(AndroidLanTcpPlugin.java:241)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0(AndroidLanTcpPlugin.java:283)
at org.briarproject.bramble.plugin.tcp.AndroidLanTcpPlugin.lambda$updateConnectionStatus$0$AndroidLanTcpPlugin(Unknown Source:0)
at org.briarproject.bramble.plugin.tcp.-$$Lambda$AndroidLanTcpPlugin$RnrvoJsXGo91N3aS5KUNVN0J3hU.run(Unknown Source:2)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0(PoliteExecutor.java:57)
at org.briarproject.bramble.PoliteExecutor.lambda$execute$0$PoliteExecutor(Unknown Source:0)
at org.briarproject.bramble.-$$Lambda$PoliteExecutor$wSvuPL6t_HUoaaqCVexrhJX_RSg.run(Unknown Source:6)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:923)
Caused by: android.os.RemoteException: Remote stack trace:
at android.app.AppOpsManager.checkPackage(AppOpsManager.java:7739)
at com.android.server.ConnectivityService.getNetworkCapabilities(ConnectivityService.java:1668)
at android.net.IConnectivityManager$Stub.onTransact(IConnectivityManager.java:978)
at android.os.Binder.execTransactInternal(Binder.java:1154)
at android.os.Binder.execTransact(Binder.java:1123)
```
Edited log:
```
03-06 01:00:56.967 I/BriarApplicationImpl: Created
03-06 01:00:56.996 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:05.194 I/BaseActivity: Creating SplashScreenActivity
03-06 01:05:05.221 I/BaseActivity: Starting SplashScreenActivity
03-06 01:05:05.226 I/BaseActivity: Resuming SplashScreenActivity
03-06 01:05:05.748 I/BaseActivity: Pausing SplashScreenActivity
03-06 01:05:05.758 I/BaseActivity: Creating NavDrawerActivity
03-06 01:05:05.844 I/BaseActivity: Starting NavDrawerActivity
03-06 01:05:05.846 I/BaseActivity: Resuming NavDrawerActivity
03-06 01:05:05.846 I/BriarActivity: Not signed in, launching StartupActivity
03-06 01:05:05.853 I/BaseActivity: Pausing NavDrawerActivity
03-06 01:05:05.858 I/BaseActivity: Creating StartupActivity
03-06 01:05:05.870 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:05.872 I/BaseActivity: Starting StartupActivity
03-06 01:05:05.914 I/BaseActivity: Resuming StartupActivity
03-06 01:05:06.031 I/BaseActivity: Stopping NavDrawerActivity
03-06 01:05:06.570 I/BaseActivity: Stopping SplashScreenActivity
03-06 01:05:06.571 I/BaseActivity: Destroying SplashScreenActivity
03-06 01:05:12.041 I/AccountManagerImpl: Found database key in primary file
03-06 01:05:13.075 I/AndroidKeyStrengthener: Loaded key from keystore
03-06 01:05:13.420 I/BriarService: Created
03-06 01:05:13.422 I/RenewableWakeLock: Acquiring wake lock org.briarproject.briar.android
03-06 01:05:13.431 I/LifecycleManagerImpl: Opening database
03-06 01:05:13.443 I/H2Database: Reopening DB: true
03-06 01:05:13.743 I/JdbcDatabase: 15994116646 ms since last compaction
03-06 01:05:13.945 I/IdentityManagerImpl: Identity loaded
03-06 01:05:13.955 I/LifecycleManagerImpl: Starting services
03-06 01:05:13.958 I/AndroidNetworkManager: Received broadcast android.net.conn.CONNECTIVITY_CHANGE
03-06 01:05:13.967 I/PluginManagerImpl: Starting simplex plugins
03-06 01:05:13.967 I/PluginManagerImpl: Starting duplex plugins
03-06 01:05:13.971 I/PluginManagerImpl: org.briarproject.bramble.bluetooth changed from state STARTING_STOPPING to DISABLED
03-06 01:05:13.971 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.bluetooth is DISABLED
03-06 01:05:13.976 I/AndroidTorPlugin: Deleted Tor binary
03-06 01:05:13.978 I/AndroidTorPlugin: Deleted obfs4 binary
03-06 01:05:13.989 I/BluetoothPlugin: Local address null
03-06 01:05:14.009 I/PluginManagerImpl: org.briarproject.bramble.lan changed from state STARTING_STOPPING to INACTIVE
03-06 01:05:14.009 I/PluginViewModel: TransportStateEvent: org.briarproject.bramble.lan is INACTIVE
03-06 01:05:14.016 I/AndroidLanTcpPlugin: Connected to wifi
```
Looks like this phone's running an AOSP build. I won't add this to the milestone for now, unless/until we get further reports.Android 1.4akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/1981NPE from MaterialTapTargetPrompt when setting typeface2021-08-27T11:45:48ZakwizgranNPE from MaterialTapTargetPrompt when setting typeface* Android version: 10
* Phone model: Xiaomi Redmi Note 7 Pro (violet)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
java.lang.NullPointerEx...* Android version: 10
* Phone model: Xiaomi Redmi Note 7 Pro (violet)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
java.lang.NullPointerException: Attempt to read from field 'int android.graphics.Typeface.mStyle' on a null object reference
at android.graphics.Typeface.create(Typeface.java:849)
at uk.co.samuelwall.materialtaptargetprompt.extras.PromptUtils.setTypefaceFromAttrs(PromptUtils.java:127)
at uk.co.samuelwall.materialtaptargetprompt.extras.PromptOptions.load(PromptOptions.java:248)
at uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt$Builder.<init>(MaterialTapTargetPrompt.java:1139)
at uk.co.samuelwall.materialtaptargetprompt.MaterialTapTargetPrompt$Builder.<init>(MaterialTapTargetPrompt.java:1122)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.showTransportsOnboarding(NavDrawerActivity.java:489)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$null$2(NavDrawerActivity.java:181)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$null$2$NavDrawerActivity(Unknown Source:0)
at org.briarproject.briar.android.navdrawer.-$$Lambda$NavDrawerActivity$xWqZhXc-2hRSJQvQHp-zwWTmweU.onChanged(Unknown Source:6)
at org.briarproject.briar.android.util.UiUtils$3.onChanged(UiUtils.java:400)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:144)
at androidx.lifecycle.LiveData$ObserverWrapper.activeStateChanged(LiveData.java:443)
at androidx.lifecycle.LiveData$LifecycleBoundObserver.onStateChanged(LiveData.java:395)
at androidx.lifecycle.LifecycleRegistry$ObserverWithState.dispatchEvent(LifecycleRegistry.java:361)
at androidx.lifecycle.LifecycleRegistry.addObserver(LifecycleRegistry.java:188)
at androidx.lifecycle.LiveData.observe(LiveData.java:203)
at org.briarproject.briar.android.util.UiUtils.observeOnce(UiUtils.java:397)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$onCreate$3(NavDrawerActivity.java:180)
at org.briarproject.briar.android.navdrawer.NavDrawerActivity.lambda$onCreate$3$NavDrawerActivity(Unknown Source:0)
at org.briarproject.briar.android.navdrawer.-$$Lambda$NavDrawerActivity$LIifbSpjf5QmEgmsWY6XA8WUmPg.onChanged(Unknown Source:4)
at org.briarproject.briar.android.util.UiUtils$3.onChanged(UiUtils.java:400)
at androidx.lifecycle.LiveData.considerNotify(LiveData.java:131)
at androidx.lifecycle.LiveData.dispatchingValue(LiveData.java:149)
at androidx.lifecycle.LiveData.setValue(LiveData.java:307)
at androidx.lifecycle.MutableLiveData.setValue(MutableLiveData.java:50)
at androidx.lifecycle.LiveData$1.run(LiveData.java:91)
at android.os.Handler.handleCallback(Handler.java:883)
at android.os.Handler.dispatchMessage(Handler.java:100)
at android.os.Looper.loop(Looper.java:224)
at android.app.ActivityThread.main(ActivityThread.java:7592)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:539)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:950)
```
Log snippet:
```
03-16 17:09:44.556 I/TorPlugin: Country code: IN
```
Perhaps country code IN could mean that the system typeface is different than on our test devices?Android 1.3https://code.briarproject.org/briar/briar/-/issues/1982RuntimeException: getParameters failed (empty parameters)2021-05-05T16:12:24ZakwizgranRuntimeException: getParameters failed (empty parameters)* Android version: 7.1
* Phone model: Google Nexus 7 (nakasig)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
getParameters failed (empty parameters)
java.lang.RuntimeException: getParameters failed (empty parameters)
at andr...* Android version: 7.1
* Phone model: Google Nexus 7 (nakasig)
* Briar version: 1.2.16 (8a534b4)
Stacktrace:
```
getParameters failed (empty parameters)
java.lang.RuntimeException: getParameters failed (empty parameters)
at android.hardware.Camera.native_getParameters(Native Method)
at android.hardware.Camera.getParameters(Camera.java:1896)
at org.briarproject.briar.android.keyagreement.CameraView.start(CameraView.java:130)
at org.briarproject.briar.android.keyagreement.KeyAgreementFragment.onStart(KeyAgreementFragment.java:149)
at androidx.fragment.app.Fragment.performStart(Fragment.java:2730)
at androidx.fragment.app.FragmentStateManager.start(FragmentStateManager.java:365)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1194)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1356)
at androidx.fragment.app.FragmentManager.moveFragmentToExpectedState(FragmentManager.java:1434)
at androidx.fragment.app.FragmentManager.moveToState(FragmentManager.java:1497)
at androidx.fragment.app.BackStackRecord.executeOps(BackStackRecord.java:447)
at androidx.fragment.app.FragmentManager.executeOps(FragmentManager.java:2169)
at androidx.fragment.app.FragmentManager.executeOpsTogether(FragmentManager.java:1992)
at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute(FragmentManager.java:1947)
at androidx.fragment.app.FragmentManager.execPendingActions(FragmentManager.java:1849)
at androidx.fragment.app.FragmentManager$4.run(FragmentManager.java:413)
at android.os.Handler.handleCallback(Handler.java:751)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6148)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
```
This is very similar to #998, but getParameters() is being called from a different place where apparently we forgot to catch the exception.
Also similar to #1523, but here the call is synchronous so catching the exception is an option.Android 1.2Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1984Register social mesh research app's signing key and package name with Google ...2021-09-01T09:47:43ZakwizgranRegister social mesh research app's signing key and package name with Google PlayIf we plan to develop a research app as part of #1816, register the package name and app signing key with Google Play before the end of July 2021 so we're not required to let Google manage the signing key.
https://android-developers.goo...If we plan to develop a research app as part of #1816, register the package name and app signing key with Google Play before the end of July 2021 so we're not required to let Google manage the signing key.
https://android-developers.googleblog.com/2020/11/new-android-app-bundle-and-target-api.html
Subtask of #1816.akwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/1985Register public mesh research app's signing key and package name with Google ...2022-01-21T14:13:18ZakwizgranRegister public mesh research app's signing key and package name with Google PlayIf we plan to develop a research app as part of #1817, register the package name and app signing key with Google Play before the end of July 2021 so we're not required to let Google manage the signing key.
https://android-developers.goo...If we plan to develop a research app as part of #1817, register the package name and app signing key with Google Play before the end of July 2021 so we're not required to let Google manage the signing key.
https://android-developers.googleblog.com/2020/11/new-android-app-bundle-and-target-api.html
Subtask of #1817.Public mesh researchakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/1986Introducing same two contacts not possible after self-destructing non-answere...2021-05-05T16:14:52ZSebastianIntroducing same two contacts not possible after self-destructing non-answered response to one-sided declined introductionUnder certain circumstances, an introduction can fail and leave the introducer in a state where they are not able to retry the introduction.
Situation to reproduce this: A introduces B and C with self-destructing messages enabled among ...Under certain circumstances, an introduction can fail and leave the introducer in a state where they are not able to retry the introduction.
Situation to reproduce this: A introduces B and C with self-destructing messages enabled among A-B and A-C. At the time of the introduction being sent, C is offline to simulate a delay.
* introduction arrives at B
* 30 seconds pass
* C comes online
* introduction arrives at C
* another 30 seconds pass
* B didn't do anything, the introduction self-destructs, and auto-declines it
* A forwards the decline to C
* another 30 seconds pass
* C didn't do anything, the introduction self-destructs, but doesn't auto decline it because B already declined and the
introduction can no longer succeed
* C didn't send a response and hence A cannot try again to introduce B and C, although it should. Also C has no way to respond to the introduction any longer to fix that
Test instructions:
* Variant 1
* Let A introduce B and C, with self-destructing messages enabled among A and C but not necessarily enabled among A and B.
* let B **decline** the introduction
* observe that C receives the response from B
* let the timer of the introduction expire at C
* observe that A received a decline from both B and C
* try to let A introduce B and C again. Make sure it is possible to actually send a new introduction that arrives at B and C
* Variant 2
* Let A introduce B and C, with self-destructing messages enabled among A and C but not necessarily enabled among A and B.
* let B **accept** the introduction
* in this case, C does not receive any response from B
* let the timer of the introduction expire at C
* observe that A received an accept from B and a decline from C
* try to let A introduce B and C again. Make sure it is possible to actually send a new introduction that arrives at B and CSelf-destructing messagesIvanaIvana2021-01-31https://code.briarproject.org/briar/briar/-/issues/1989Blog post created snackbar re-appears after screen rotation2021-04-26T12:03:55ZTorsten GroteBlog post created snackbar re-appears after screen rotation* write a blog post
* wait until snackbar disappears
* rotate screen
* observe the snackbar coming back* write a blog post
* wait until snackbar disappears
* rotate screen
* observe the snackbar coming backAdapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1990Clicking re-blogged author opens blog of reblogging author2021-04-26T12:08:41ZTorsten GroteClicking re-blogged author opens blog of reblogging author* get a blog post from a contact
* re-blog this post
* click the author of the original post in the reblogged post
* observe how your own blog opens and not the one of the author of the original post* get a blog post from a contact
* re-blog this post
* click the author of the original post in the reblogged post
* observe how your own blog opens and not the one of the author of the original postAdapt to changes in the Android platformIvanaIvana2021-04-30https://code.briarproject.org/briar/briar/-/issues/1991Panic button preferences screen doesn't use material design switches on API 192021-05-05T16:14:53ZakwizgranPanic button preferences screen doesn't use material design switches on API 19![device-2021-03-26-154413](/uploads/0dc8a6696c9159263f6e2f24e695dd69/device-2021-03-26-154413.png)![device-2021-03-26-154413](/uploads/0dc8a6696c9159263f6e2f24e695dd69/device-2021-03-26-154413.png)Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/1992Initial experiments to decide whether to use Bluetooth or Wi-Fi2021-07-06T09:40:57ZakwizgranInitial experiments to decide whether to use Bluetooth or Wi-FiInstall via Bluetooth or Wi-FiTorsten GroteTorsten Grote2021-07-31https://code.briarproject.org/briar/briar/-/issues/1993Define overall technical and UX approach2021-07-13T10:34:36ZakwizgranDefine overall technical and UX approachUX/dev collaboration to define the overall technical and UX approach for this feature.UX/dev collaboration to define the overall technical and UX approach for this feature.Transfer content securely via SD cards and USB memory sticksTorsten GroteTorsten Grote2021-07-31https://code.briarproject.org/briar/briar/-/issues/2105Let contacts know if removable drive transport isn't supported2021-09-02T12:26:52ZakwizgranLet contacts know if removable drive transport isn't supportedAndroid devices running API < 19 where the removable drive feature isn't supported should let their contacts know that the feature isn't supported. This could be done by not configuring the plugin on API < 19, so no transport properties ...Android devices running API < 19 where the removable drive feature isn't supported should let their contacts know that the feature isn't supported. This could be done by not configuring the plugin on API < 19, so no transport properties will be sent.
A nicer but more complex solution would be to send different transport properties on API < 19 (supported = false), so the contact's device knows that we're running a Briar version that's aware of the transport, but our device doesn't support it, and thus the contact's UI can show an appropriate message.
Subtask of #1802.Transfer content securely via SD cards and USB memory sticksIvanaIvana2021-07-31https://code.briarproject.org/briar/briar/-/issues/2104Show startup failure activity immediately instead of showing a notification2021-07-28T10:11:31ZakwizgranShow startup failure activity immediately instead of showing a notificationWhen testing #2061 we found that the startup failure notification wasn't very noticeable, so it appeared that the app had just closed itself. Let's show the startup failure activity immediately and skip the notification.When testing #2061 we found that the startup failure notification wasn't very noticeable, so it appeared that the app had just closed itself. Let's show the startup failure activity immediately and skip the notification.Transfer content securely via SD cards and USB memory sticksIvanaIvana2021-07-31https://code.briarproject.org/briar/briar/-/issues/2031Increase max latency to 28 days2021-07-06T20:10:51ZakwizgranIncrease max latency to 28 daysTransfer content securely via SD cards and USB memory sticksakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/2103Check whether we have transport keys before trying to send data via removable...2021-07-06T20:10:49ZakwizgranCheck whether we have transport keys before trying to send data via removable driveAs well as checking whether the contact supports the transport, we should check whether transport keys have been derived.
Subtask of #1802.As well as checking whether the contact supports the transport, we should check whether transport keys have been derived.
Subtask of #1802.Transfer content securely via SD cards and USB memory sticksakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/2016Create RemovableDriveManager2021-06-17T13:35:40ZakwizgranCreate RemovableDriveManagerCreate a manager interface in bramble-api, with an impl in bramble-core, to manage access to the RemovableDrivePlugin (#2015). The manager will provide methods for doing the following:
* Retrieve the current reader/writer task, if any, ...Create a manager interface in bramble-api, with an impl in bramble-core, to manage access to the RemovableDrivePlugin (#2015). The manager will provide methods for doing the following:
* Retrieve the current reader/writer task, if any, for a given contact
* Register and start a reader/writer task for a contact (fails if an equivalent task is already registered)
* Unregister a task (for use by the task itself, when it finishes running)
We may later want to convert this to some kind of abstract TaskManager interface with TaskKeys and so on, and refactor other long-running tasks to use it, but let's not do that yet.
Subtask of #1802Transfer content securely via SD cards and USB memory sticksakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/2037Create RemovableDriveViewModel2021-06-22T19:04:27ZDaniel LublinCreate RemovableDriveViewModelTransfer content securely via SD cards and USB memory sticksDaniel LublinDaniel Lublin2021-07-31https://code.briarproject.org/briar/briar/-/issues/2017Create RemovableDriveReaderTask2021-06-17T13:35:19ZakwizgranCreate RemovableDriveReaderTaskCreate an interface in bramble-api, with an impl in bramble-core, for a task that reads data from a file for syncing with a given contact. It should be possible to attach and detach observers for observing the progress of the task (see #...Create an interface in bramble-api, with an impl in bramble-core, for a task that reads data from a file for syncing with a given contact. It should be possible to attach and detach observers for observing the progress of the task (see #2013 and #2014). The task should unregister itself with the RemovableDriveManager (see #2016) when it finishes running.
Subtask of #1802Transfer content securely via SD cards and USB memory sticksakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/2018Create RemovableDriveWriterTask2021-06-17T13:35:02ZakwizgranCreate RemovableDriveWriterTaskCreate an interface in bramble-api, with an impl in bramble-core, for a task that writes data to a file for syncing with a given contact. It should be possible to attach and detach observers for observing the progress of the task (see #2...Create an interface in bramble-api, with an impl in bramble-core, for a task that writes data to a file for syncing with a given contact. It should be possible to attach and detach observers for observing the progress of the task (see #2013 and #2014). The task should unregister itself with the RemovableDriveManager (see #2016) when it finishes running.
Subtask of #1802Transfer content securely via SD cards and USB memory sticksakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/2014Update MessagesSentEvent to include amount of data sent2021-05-10T12:00:41ZakwizgranUpdate MessagesSentEvent to include amount of data sentSubtask of #1802Subtask of #1802Transfer content securely via SD cards and USB memory sticksakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/2035Create AndroidRemovableDrivePlugin2021-05-11T11:23:14ZakwizgranCreate AndroidRemovableDrivePluginCreate an Android subclass of RemovableDrivePlugin that uses URIs and the ContentResolver to obtain input/output streams.
Subtask of #1802Create an Android subclass of RemovableDrivePlugin that uses URIs and the ContentResolver to obtain input/output streams.
Subtask of #1802Transfer content securely via SD cards and USB memory sticksakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/2015Create RemovableDrivePlugin2021-05-10T13:07:16ZakwizgranCreate RemovableDrivePluginCreate a RemovableDrivePlugin that extends FilePlugin, along with a suitable PluginFactory. The plugin's writerFinished() method can be a no-op. The readerFinished() method should try to delete the file if the tag was recognised and the ...Create a RemovableDrivePlugin that extends FilePlugin, along with a suitable PluginFactory. The plugin's writerFinished() method can be a no-op. The readerFinished() method should try to delete the file if the tag was recognised and the read completed without an exception, failing gracefully if the file is on a read-only filesystem.
The ~~UI~~ read/write tasks (#2017 and #2018) will interact with the plugin via its createReader() and createWriter() methods, which are already provided by FilePlugin.
Subtask of #1802Transfer content securely via SD cards and USB memory sticksakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/2013Add database method for getting amount of data to sync2021-05-10T12:00:48ZakwizgranAdd database method for getting amount of data to syncSubtask of #1802Subtask of #1802Transfer content securely via SD cards and USB memory sticksakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/1995Test sharing an app when offline2022-07-20T10:38:40ZTorsten GroteTest sharing an app when offlineYou will need *two* Android phones to help with testing sharing an app in an offline scenario.
It starts by download this test app on the first phone: https://grobox.de/tmp/hotspot.apk
Then please respond to this ticket, copying and pa...You will need *two* Android phones to help with testing sharing an app in an offline scenario.
It starts by download this test app on the first phone: https://grobox.de/tmp/hotspot.apk
Then please respond to this ticket, copying and pasting the text below into your response, giving the phone models in the first line.
You can check boxes by replacing `[ ]` with `[x]` or sending your response and then go through the steps, checking boxes by clicking them.
If you don't have or want an account to respond here, you can also send your response to `contact@briarproject.org` via email.
Please also respond, if you fail to complete all the steps. We would especially like to hear from you!
If something didn't go as expected, please feel free to add extra info to the questionnaire.
This is an example, how going through these steps could look like on the first phone:
[<img src="/uploads/b78344755319ed1b0830ce528b8c9637/device-2021-04-13-141128.png" width="200">](/uploads/b78344755319ed1b0830ce528b8c9637/device-2021-04-13-141128.png)
[<img src="/uploads/cdf3ae921106e98ee9dabbec2dfb3ac8/device-2021-04-13-141146.png" width="200">](/uploads/cdf3ae921106e98ee9dabbec2dfb3ac8/device-2021-04-13-141146.png)
[<img src="/uploads/750cd78087a215ede1c8a295eb9eb8a2/device-2021-04-13-142703.png" width="200">](/uploads/750cd78087a215ede1c8a295eb9eb8a2/device-2021-04-13-142703.png)
[<img src="/uploads/2e720826106e1fbedad1dde85b1683cd/device-2021-04-13-142720.png" width="200">](/uploads/2e720826106e1fbedad1dde85b1683cd/device-2021-04-13-142720.png)
[<img src="/uploads/6ccedfa1a0f8475383e43eb202645258/device-2021-04-14-102618.png" width="200">](/uploads/6ccedfa1a0f8475383e43eb202645258/device-2021-04-14-102618.png)
```
1. My phone models are: **[ModelOfPhone1]** and **[ModelOfPhone2]** running **[AndroidVersion1]** and **[AndroidVersion2]**
1. Download and install app on the first phone only
1. Start app and allow location permission (if requested)
1. [ ] Below the `START HOTSPOT` button, it says that `5GHz Wi-Fi is supported`.
1. Press the `START HOTSPOT` button
1. [ ] A QR code for a Wi-Fi appears
1. [ ] The Wi-Fi's name starts with `DIRECT-`
1. [ ] Below the `START HOTSPOT` button, it says `Hotspot started` and there's this text behind: **[no text]**
1. With a second phone I was able to connect to this Wi-Fi by
1. [ ] Scanning the QR code with a reader app
1. [ ] Entering the Wi-Fi data manually in the phone's Wi-Fi settings
1. Once the second phone is connected, press the `PEER CONNECTED` button
1. [ ] The app shows `http://192.168.49.1:9999` at the bottom
1. Press the menu/overflow icon and select `Network interfaces`
1. [ ] A new page shows text that includes the line `p2p0: /192.168.49.1`
1. Press the back button to come back to the (second) QR code screen
1. I was able to visit the shown site with the second phone by
1. [ ] Scanning the QR code with a reader app
1. [ ] Entering the link manually in my browser app
1. [ ] I could not visit this site
1. [ ] I could download the app on the second phone
1. [ ] I could install and open the app on the second phone
1. [ ] The second phone stayed connected to the first phone's Wi-Fi and I did not need to reconnect
1. While still connected to the first phone's Wi-Fi, go to system settings on the second phone.
* Open Wi-Fi settings and select the first phone's Wi-Fi.
* Try to find the `Frequency` (e.g. `5 GHz`) the Wi-Fi is using and write it down here: **[frequency]**
1. [ ] Bonus step: I could repeat the process by switching phones and it works the same or different in what aspect?
```
You can see how this will look like below or when using the "Preview" tab in your response.
Subtask of #1992Install via Bluetooth or Wi-FiTorsten GroteTorsten Grote2021-07-31https://code.briarproject.org/briar/briar/-/issues/2011App offline sharing UX2021-10-29T11:45:23ZElio Qoshielio@ura.designApp offline sharing UX![All_Screens](/uploads/bd9eb2dd5bbb58e2287fd8e9a036f12f/All_Screens.png)
I drafted an initial UX proposal for sharing an app offline.
Figma specs: https://www.figma.com/file/NgBKOW1GcLk1NXzHQBcYdY/Offline-App-Installer-Sharing?node-id=...![All_Screens](/uploads/bd9eb2dd5bbb58e2287fd8e9a036f12f/All_Screens.png)
I drafted an initial UX proposal for sharing an app offline.
Figma specs: https://www.figma.com/file/NgBKOW1GcLk1NXzHQBcYdY/Offline-App-Installer-Sharing?node-id=1%3A5491
Considerations:
- This doesn't take into account that we are automatically detecting if a fellow peer connects to the hotspot. The hosting user needs to manually confirm this.
- There should be plenty of space for instructions and help text, as well as a separate help option via the dropdown menu if needed. The texts are of course only placeholders, though their I included their notion, more or less.
- An illustration should make the process feel more engaging (like the start of onboarding).
- Not sure about the steppers on the bottom. Open to hear what you think.Install via Bluetooth or Wi-FiElio Qoshielio@ura.designElio Qoshielio@ura.design2021-07-31https://code.briarproject.org/briar/briar/-/issues/2023List of Wi-Fi hotspot troubleshooting tips2021-08-11T07:48:33ZTorsten GroteList of Wi-Fi hotspot troubleshooting tipsWhen sharing the app via a hotspot doesn't work, we should provide a list of things the user can try to make things work.
This ticket is about assembling this list.
Subtask of #1081When sharing the app via a hotspot doesn't work, we should provide a list of things the user can try to make things work.
This ticket is about assembling this list.
Subtask of #1081Install via Bluetooth or Wi-FiTorsten GroteTorsten Grote2021-07-31https://code.briarproject.org/briar/briar/-/issues/2042Investigate integrity mechanisms2021-08-26T10:53:13ZSebastianInvestigate integrity mechanismsInstall via Bluetooth or Wi-Fiakwizgranakwizgran2021-07-31https://code.briarproject.org/briar/briar/-/issues/2026UX testing of offline app sharing feature2021-08-27T11:41:26ZTorsten GroteUX testing of offline app sharing featureWe should test the feature design of #2011 and validate that users understand it and can successfully share an app offline.
Since this requires two people (and the test engineer) in proximity doing this might be difficult during a pande...We should test the feature design of #2011 and validate that users understand it and can successfully share an app offline.
Since this requires two people (and the test engineer) in proximity doing this might be difficult during a pandemic.Install via Bluetooth or Wi-FiRenata GegajRenata Gegaj2021-07-31https://code.briarproject.org/briar/briar/-/issues/2087Hotspot view model loses state when activity gets recreated2021-07-06T09:40:01ZSebastianHotspot view model loses state when activity gets recreatedTest instructions:
* Enable the developer option "don't keep activities" (Device Settings → System → Developer options → Apps section → Don't keep activities)
* Open briar
* Go to the share briar offline activity (Briar Settings → Share ...Test instructions:
* Enable the developer option "don't keep activities" (Device Settings → System → Developer options → Apps section → Don't keep activities)
* Open briar
* Go to the share briar offline activity (Briar Settings → Share Briar offline)
* Start sharing (revealing the Wifi configuration for the receiving device)
* Switch to any different app
* Switch back to briar
* Observe that you're back at the intro screen of the offline hotspot feature
* Start sharing again (revealing the Wifi configuration again)
* Make sure that sharing is still working, i.e. connect with a second device and download briar
![Screen16](/uploads/a5d8089ee928db9f41a4d317f1255496/Screen16.png)![Screen15](/uploads/4bea1ed9bfea8f8d5b4626c1541b9d34/Screen15.png)Install via Bluetooth or Wi-FiIvanaIvana2021-07-31https://code.briarproject.org/briar/briar/-/issues/2080Improve text for sharing app offline feature2021-07-26T12:31:25ZIvanaImprove text for sharing app offline featureMaybe linked to #2011 - if any work by designer needed after review
for the purposes of this ticket, device1 means the device thatopens the hotspot and device2 is the one that will download the app from device1
#### Screen: Intro Start...Maybe linked to #2011 - if any work by designer needed after review
for the purposes of this ticket, device1 means the device thatopens the hotspot and device2 is the one that will download the app from device1
#### Screen: Intro Start Sharing
1. **Existing Text**
"Your phone will open a local hotspot and provide a small website with a download of this app."
**Comment**
This implies that the download can be done from the device1 – or that device1 can somehow download or push the app onto device 2
**Proposed Text**
Your phone will open a local hotspot and provide an IP address for the other phone to connect to. The other phone will then be able to download the Briar app from your phone.
2. **Existing Text**
Button 'Start sharing'
**Comment**
**Proposed Text**
'Open Local Hotspot'
#### Screen: Wi-Fi details screen
1. **Existing Text**
To download the app on another phone, please connect to this Wi-Fi network
**Comment**
This implies that the user1 needs to connect to the Wi-Fi network – when in reality it is user2 on device2
**Proposed Text**
For another phone to download the Briar app from your phone, it needs to connect to the local hotspot opened by your phone. To do that it needs to add the following Wi-Fi network in its device settings
2. **Existing Text**
Button: Start app sharing
**Comment**
**Proposed Text**
'Generate the IP address'
3. **Existing Text**
Instead of adding the network manually, you can also scan a QR code
**Comment**
this implies that the user1 needs to add the network or scan the code – actually it is the user2 who needs to do it
**Proposed Text**
Instead of adding the network manually, the other phone can also scan a QR code provided in the QR tab
4. **Existing Text**
Button: Start app sharing
**Comment**
It may not be immediately clear to the user when they need to press this button, so I would add a few words of text...
**Proposed text**
After the other device is connected to your hotspot, press the following button to generate the IP address from which it can download the Briar app
5. **Existing Text**
Button: 'Stop sharing'
**Comment**
**Proposed text**
'Close/delete/cancel the hotspot'
#### Wi-Fi details screen QR code tab
1. **Existing Text**
“To download the app on another phone, please scan this QR code to connect to this Wi-Fi network:
**Comment**
It is not the user1 on th ephone1 that needs to scan the code, but the user2 on phone2
**Proposed Text**
To be able to download the Briar app from your phone, the other phone needs to scan this QR code. This will connect it to your phone's local hotspot
2. **Existing Text**
QR code background cut off?
It seem that the buttons Start app sharing and stop sharing cut the bottom of the QR code background off – maybe not on every device... will check. But on Pixel2 they do. On Nokia 3.1 the cut off area is a bit smaller. On Samsung A01 Core, there is no cut off... the background has nice rounded corners (however, maybe the space between the QR code background and the buttons bellow could be increased?
#### IP address screen
1. **Existing Text**
After you are connected to the Wi-Fi, carefully enter this address in your browser
**Comment**
This reads as though the user 1 needs to enter this code, and it is actually the user2 on device2.
**Proposed Text**
After the other device is connected to the local hotspot on your phone, it needs to enter this address into its browser
This will open a small website from which they can download the Briar app.
2. **Existing Text**
Instead of typing the address manually, you can also scan QR code
**Comment**
This is addressed to user1 on device1 and it should be addressed to the user2 ondevice2
**Proposed Text**
Instead of typing the address manually, the other phone can scan the QR code provided in the QR tab
#### IP address screenQR tab
1. **Existing text**
After you are connected to the Wi-Fi scan this QR code to download the app
**Comment**
**Proposed Text*
When the other phone scans this QR code, this action will enter the IP address into its browser.
You need to keep the hotspot on your phone open (by staying on this screen) whilst the donwnload is ongoing. When the other phone has successfully downloaded the Briar app from your phone, you can close this screen by pressing Stop Sharing (or 'Close/delete/cancel hotspot' if button renamed)Install via Bluetooth or Wi-FiSebastianSebastian2021-07-31https://code.briarproject.org/briar/briar/-/issues/2093Inconsistency when navigating back to intro fragment and rotating device2021-08-27T11:42:38ZSebastianInconsistency when navigating back to intro fragment and rotating deviceOne can start the hotspot and go back to the intro fragment and then rotate the screen. It will then act as if you clicked the button. Maybe tricky to fix, unless going back to the intro fragment should kill the hotspot? Alternatively we...One can start the hotspot and go back to the intro fragment and then rotate the screen. It will then act as if you clicked the button. Maybe tricky to fix, unless going back to the intro fragment should kill the hotspot? Alternatively we could not put the intro fragment onto the back stack, making "back" navigate off the hotspot activity and back to the settings directly.Install via Bluetooth or Wi-FiSebastianSebastian2021-07-31https://code.briarproject.org/briar/briar/-/issues/2090Crash after double-tap of Start Sharing button2021-08-27T11:40:55ZIvanaCrash after double-tap of Start Sharing buttonSteps to reproduce:
- Goto settings > share Briar app offline
- on the first screen that shows, double tap the Start Sharing button
Expected results:
- this should be handled gracefully, either treated as single tap and proceeding ont...Steps to reproduce:
- Goto settings > share Briar app offline
- on the first screen that shows, double tap the Start Sharing button
Expected results:
- this should be handled gracefully, either treated as single tap and proceeding onto the following screen, or staying on the same screen, or returning to the Briar settings page - but it should not crash.
Actual results:
- Briar crashes.
First identified on HTCOne M9 (API 24), Android Studio logs attached plus device crash report sent from device itself. Reproduced multiple times. Then also reproduced on Pixel2, API30[crash_HTC_One_M9_24062021.txt](/uploads/5410d133dcff90deceeff4501a30853c/crash_HTC_One_M9_24062021.txt)[Crash_HTC_One_M9_24062021_2.txt](/uploads/0a6cf2ca4d42c83683fbf19f1acea9d4/Crash_HTC_One_M9_24062021_2.txt)Install via Bluetooth or Wi-FiIvanaIvana2021-07-31https://code.briarproject.org/briar/briar/-/issues/2092Tapping "start hotspot" twice quickly can mess up the UI2021-08-27T11:41:38ZSebastianTapping "start hotspot" twice quickly can mess up the UI* possibly, "next" can also be tapped twice
* in other places, we just disable buttons after being tapped* possibly, "next" can also be tapped twice
* in other places, we just disable buttons after being tappedInstall via Bluetooth or Wi-FiIvanaIvana2021-07-31https://code.briarproject.org/briar/briar/-/issues/2088Sharing Briar offline - Crash when wifi on device is OFF and 'Start sharing' ...2021-12-07T15:20:36ZIvanaSharing Briar offline - Crash when wifi on device is OFF and 'Start sharing' tapped on Briar screenSteps to reproduce:
1. Device: Samsung Mini I9195 (API19) - go to device settings and switch the wi-fi OFF
2. Go to Briar app > settings > Share Briar app offline
3. Tap Start Sharing button
Expected results:
1. As the wifi gets switc...Steps to reproduce:
1. Device: Samsung Mini I9195 (API19) - go to device settings and switch the wi-fi OFF
2. Go to Briar app > settings > Share Briar app offline
3. Tap Start Sharing button
Expected results:
1. As the wifi gets switched ON during this process, the expected would be for the briar app sharing to continue as normal
Actual results:
1. Briar app crashes. (Reproduced 3 times in a row)
Attached screenshot of device settings, movie of user actions on Briar and Android Studio logfile for the device during this process.
![device-2021-06-23-133045](/uploads/03642e88edf23c9f00e13969cc8e08d3/device-2021-06-23-133045.mp4)[crash_samsung_mini_23062021.txt](/uploads/f4e4ca1973fc75867ea1b65b7a533d5a/crash_samsung_mini_23062021.txt)![device-2021-06-23-133011](/uploads/05ff2fdb19bc1d0bcb052c1c4e3fc51b/device-2021-06-23-133011.png)
Crash report sent from the device as well.
Checking what happens in the same scenario for devices:
- Pixel 2 (API30) - user is given a message that the wifi needs to be on and then they are taken to the device settings to enable the wi-fi = OK
- Nokia 3.1 (API29) - as Pixel2 = OK
- Samsung A01 Core (API29) - as Pixel 2 = OK
- HTC One M9 (API24)Android 1.4SebastianSebastianhttps://code.briarproject.org/briar/briar/-/issues/2100We're asking for location permission although we probably don't need to on AP...2021-08-27T11:41:03ZSebastianWe're asking for location permission although we probably don't need to on API < 29Test instructions: on a device on API level 28 or lower, make sure we do not ask for the location permission. I.e. first go to the app settings and if the location permission is currently granted to the app, then revoke it. Afterwards st...Test instructions: on a device on API level 28 or lower, make sure we do not ask for the location permission. I.e. first go to the app settings and if the location permission is currently granted to the app, then revoke it. Afterwards start the app sharing procedure and expect that we do not ask for the location permission.
When starting the hotspot, we ask the user for the location permission on all API levels, although we probably only need to do this on API 29+.
At least on API 23 we can still successfully start the hotspot and share the app even if the location permission is denied.Install via Bluetooth or Wi-FiIvanaIvana2021-07-31