briar issueshttps://code.briarproject.org/groups/briar/-/issues2020-11-19T15:25:24Zhttps://code.briarproject.org/briar/briar/-/issues/921Contact seemed to remain online after phone was reused2020-11-19T15:25:24ZakwizgranContact seemed to remain online after phone was reusedThis issue arose in user testing when one of the devices was reused by another tester.
User A with device X and user B with device Y added each other as contacts. Then user C took over device Y and created a new account. User A continue...This issue arose in user testing when one of the devices was reused by another tester.
User A with device X and user B with device Y added each other as contacts. Then user C took over device Y and created a new account. User A continued to see user B as online.
This may have been caused by a Bluetooth channel remaining open between the devices, causing user A to think that a connection to user B was still open. Perhaps a subsequent connection between user A and user C either reused the channel or otherwise caused it to remain open rather than timing out, or perhaps the Bluetooth stack on device X simply doesn't time out connections in a reasonable time.
If any of those speculations are right, we should work out how to avoid relying on Bluetooth to time out the connection and time out after a reasonable time in the Bramble stack instead.
We should also check that Bluetooth connections are being disposed of properly when they're closed.https://code.briarproject.org/briar/briar/-/issues/922Emoji in forum and group names2020-11-19T15:24:18ZakwizgranEmoji in forum and group namesA tester asked to be able to use emoji in forum and group names. (This is possible with an emoji keyboard, but not otherwise.)A tester asked to be able to use emoji in forum and group names. (This is possible with an emoji keyboard, but not otherwise.)https://code.briarproject.org/briar/briar/-/issues/923Tester expected contact to be added immediately after accepting introduction2018-12-19T12:22:16ZakwizgranTester expected contact to be added immediately after accepting introductionA tester expected that when she accepted an introduction the contact would be added to her contact list immediately. She didn't understand that the introducer was waiting for the other introducee's response.A tester expected that when she accepted an introduction the contact would be added to her contact list immediately. She didn't understand that the introducer was waiting for the other introducee's response.Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/924Tester thought tap target onboarding was a bug2020-11-15T10:43:00ZakwizgranTester thought tap target onboarding was a bugA tester thought the tap target onboarding for the introduction feature was a bug - she held up her phone and asked "Is it meant to look like that?".
Perhaps we should consider using a less bold design, or changing the parameters so tha...A tester thought the tap target onboarding for the introduction feature was a bug - she held up her phone and asked "Is it meant to look like that?".
Perhaps we should consider using a less bold design, or changing the parameters so that the target appears more gradually.https://code.briarproject.org/briar/briar/-/issues/925Touching the Panic app list crashes if no market is installed.2017-06-09T19:25:51ZJulian DehmTouching the Panic app list crashes if no market is installed.If the list of connected panic apps is <= 1 and you press on it Briar will crash if no market is installed:
`org.briarproject.briar E/ACRA: ACRA caught a ActivityNotFoundException for org.briarproject.briar
android.content.ActivityNo...If the list of connected panic apps is <= 1 and you press on it Briar will crash if no market is installed:
`org.briarproject.briar E/ACRA: ACRA caught a ActivityNotFoundException for org.briarproject.briar
android.content.ActivityNotFoundException: No Activity found to handle Intent { act=android.intent.action.VIEW dat=market://details?id=info.guardianproject.ripple }`Milestone GJulian DehmJulian Dehmhttps://code.briarproject.org/briar/briar/-/issues/926ClassCastException when handling splash screen intent2017-06-09T19:25:51ZakwizgranClassCastException when handling splash screen intentSteps to reproduce:
* Sign into Briar normally
* Open a private conversation that includes at least one message
* Send a splash screen intent: `am start -a android.intent.action.MAIN -n org.briarproject.briar/org.briarproject.briar.an...Steps to reproduce:
* Sign into Briar normally
* Open a private conversation that includes at least one message
* Send a splash screen intent: `am start -a android.intent.action.MAIN -n org.briarproject.briar/org.briarproject.briar.android.splash.SplashScreenActivity`
* The contact list is shown
* Sign out of Briar
Stacktrace:
```
03-29 09:19:26.889 3284-3284/org.briarproject.briar E/ACRA: ACRA caught a RuntimeException for org.briarproject.briar
java.lang.RuntimeException: Unable to start activity ComponentInfo{org.briarproject.briar/org.briarproject.briar.android.contact.ConversationActivity}: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class org.thoughtcrime.securesms.components.emoji.EmojiTextView
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2450)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: android.view.InflateException: Binary XML file line #27: Binary XML file line #27: Error inflating class org.thoughtcrime.securesms.components.emoji.EmojiTextView
at android.view.LayoutInflater.inflate(LayoutInflater.java:539)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at org.briarproject.briar.android.contact.ConversationActivity.onCreate(ConversationActivity.java:197)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: android.view.InflateException: Binary XML file line #27: Error inflating class org.thoughtcrime.securesms.components.emoji.EmojiTextView
at android.view.LayoutInflater.createView(LayoutInflater.java:645)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at org.briarproject.briar.android.contact.ConversationActivity.onCreate(ConversationActivity.java:197)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java:619)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at org.briarproject.briar.android.contact.ConversationActivity.onCreate(ConversationActivity.java:197)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
Caused by: java.lang.ClassCastException: android.view.ContextThemeWrapper cannot be cast to org.briarproject.briar.android.activity.BaseActivity
at org.thoughtcrime.securesms.components.emoji.EmojiProvider.getInstance(EmojiProvider.java:80)
at org.thoughtcrime.securesms.components.emoji.EmojiTextView.setText(EmojiTextView.java:45)
at android.widget.TextView.<init>(TextView.java:1401)
at android.widget.TextView.<init>(TextView.java:671)
at org.thoughtcrime.securesms.components.emoji.EmojiTextView.<init>(EmojiTextView.java:38)
at org.thoughtcrime.securesms.components.emoji.EmojiTextView.<init>(EmojiTextView.java:33)
at java.lang.reflect.Constructor.newInstance(Native Method)
at android.view.LayoutInflater.createView(LayoutInflater.java:619)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:764)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:835)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:838)
at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:798)
at android.view.LayoutInflater.inflate(LayoutInflater.java:515)
at android.view.LayoutInflater.inflate(LayoutInflater.java:423)
at android.view.LayoutInflater.inflate(LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:276)
at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139)
at org.briarproject.briar.android.contact.ConversationActivity.onCreate(ConversationActivity.java:197)
at android.app.Activity.performCreate(Activity.java:6251)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1108)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2403)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2510)
at android.app.ActivityThread.-wrap11(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1363)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:148)
at android.app.ActivityThread.main(ActivityThread.java:5461)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:726)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616)
```Milestone Gakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/927The "Change password" option accepts the old password as new2022-07-26T15:34:47ZJulian DehmThe "Change password" option accepts the old password as newIt's possible to "change" the password to the one you currently use.
We should check if the new one differs from the old before activating the change password buttonIt's possible to "change" the password to the one you currently use.
We should check if the new one differs from the old before activating the change password buttonhttps://code.briarproject.org/briar/briar/-/issues/928Move HTML sanitation to DbThread2017-06-09T19:25:50ZTorsten GroteMove HTML sanitation to DbThreadHTML Sanitation currently causes a StrictMode violation:
```
D/StrictMode: StrictMode policy violation; ~duration=407 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=31 violation=2
at an...HTML Sanitation currently causes a StrictMode violation:
```
D/StrictMode: StrictMode policy violation; ~duration=407 ms: android.os.StrictMode$StrictModeDiskReadViolation: policy=31 violation=2
at android.os.StrictMode$AndroidBlockGuardPolicy.onReadFromDisk(StrictMode.java:1152)
at libcore.io.BlockGuardOs.stat(BlockGuardOs.java:292)
at java.io.File.isDirectory(File.java:524)
at java.io.File.getAbsoluteName(File.java:1099)
at java.io.File.toURL(File.java:1085)
at dalvik.system.DexPathList$Element.findResource(DexPathList.java:477)
at dalvik.system.DexPathList.findResource(DexPathList.java:343)
at dalvik.system.BaseDexClassLoader.findResource(BaseDexClassLoader.java:67)
at java.lang.ClassLoader.getResource(ClassLoader.java:403)
at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:442)
at java.lang.Class.getResourceAsStream(Class.java:1368)
at org.jsoup.nodes.Entities.loadEntities(Entities.java:240)
at org.jsoup.nodes.Entities.<clinit>(Entities.java:225)
at org.jsoup.nodes.Entities.access$000(Entities.java:17)
at org.jsoup.nodes.Entities$EscapeMode.<clinit>(Entities.java:20)
at org.jsoup.nodes.Document$OutputSettings.<init>(Document.java:371)
at org.jsoup.nodes.Document.<init>(Document.java:18)
at org.jsoup.nodes.Document.createShell(Document.java:42)
at org.jsoup.parser.Parser.parseBodyFragment(Parser.java:128)
at org.jsoup.Jsoup.parseBodyFragment(Jsoup.java:148)
at org.jsoup.Jsoup.clean(Jsoup.java:198)
at org.jsoup.Jsoup.clean(Jsoup.java:215)
at org.briarproject.briar.util.HtmlUtils.clean(HtmlUtils.java:15)
```
The `clean()` method should be called right after the blog posts are retrieved from disk to prevent that.Milestone GTorsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/929Non-blocking SettingsManager2020-11-15T10:37:10ZakwizgranNon-blocking SettingsManagerThe SettingsManager interface is inconvenient to use because it needs to be called on the DB thread. Make the interface non-blocking by loading settings at startup and writing them back to the DB in the background when they're updated.The SettingsManager interface is inconvenient to use because it needs to be called on the DB thread. Make the interface non-blocking by loading settings at startup and writing them back to the DB in the background when they're updated.https://code.briarproject.org/briar/briar/-/issues/930Recent emoji page isn't updated2018-09-03T12:13:56ZakwizgranRecent emoji page isn't updatedSteps to reproduce:
* Choose an emoji from the first page (smilies)
* Switch to the recent emoji page
* Expected behaviour: the chosen emoji has been added to the page
* Actual behaviour: the chosen emoji isn't added until the page is de...Steps to reproduce:
* Choose an emoji from the first page (smilies)
* Switch to the recent emoji page
* Expected behaviour: the chosen emoji has been added to the page
* Actual behaviour: the chosen emoji isn't added until the page is destroyed and recreated
The recent emoji page is destroyed and recreated if you switch to any non-adjacent page, such as animals and plants, so the behaviour is inconsistent depending on which pages you switch to.
The problem occurs because the EmojiPageView doesn't know when its model has been updated. The model can keep a reference to the view (via some listener interface) to notify the view of changes, but the reference must be removed when the view is destroyed and restored when the view is recreated. I had a quick look at this but couldn't find a clean way to implement it in the current structure.Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/931Check whether getSystemService() returns null2017-06-09T19:25:50ZakwizgranCheck whether getSystemService() returns nullWe call Context#getSystemService() in various places without checking the return value. Apparently it can return null, so we should check it.We call Context#getSystemService() in various places without checking the return value. Apparently it can return null, so we should check it.https://code.briarproject.org/briar/briar/-/issues/932Panic button sign out response doesn't terminate process2017-06-09T19:25:50ZakwizgranPanic button sign out response doesn't terminate processWhen Briar signs out in response to a panic button intent, relaunching the app brings up the contact list rather than the password screen, with the progress wheel spinning indefinitely.
This happens because the panic button response shu...When Briar signs out in response to a panic button intent, relaunching the app brings up the contact list rather than the password screen, with the progress wheel spinning indefinitely.
This happens because the panic button response shuts down BriarService but doesn't terminate the process.Milestone Gakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/933Show beta warning screen during setup2017-12-18T07:40:20ZakwizgranShow beta warning screen during setupThe beta will be time-limited and forward-incompatible with later releases, so testers will lose their contacts and messages when the build expires. Show a warning about this during setup.
Perhaps we should repeat the warning a week bef...The beta will be time-limited and forward-incompatible with later releases, so testers will lose their contacts and messages when the build expires. Show a warning about this during setup.
Perhaps we should repeat the warning a week before the build expires.Android Beta 1Torsten GroteTorsten Grotehttps://code.briarproject.org/briar/briar/-/issues/934Potential SocksSocket resource leak2018-05-11T10:02:32ZJulian DehmPotential SocksSocket resource leakI've seen this a few times now in the log:
```
org.briarproject.briar I/ConnectionRegistryImpl: 1 contacts connected
04-10 12:35:19.584 4701-4712/org.briarproject.briar E/StrictMode: A resource was acquired at attached stack trace but...I've seen this a few times now in the log:
```
org.briarproject.briar I/ConnectionRegistryImpl: 1 contacts connected
04-10 12:35:19.584 4701-4712/org.briarproject.briar E/StrictMode: A resource was acquired at attached stack trace but never released. See java.io.Closeable for information on avoiding resource leaks.
java.lang.Throwable: Explicit termination method 'close' not called
at dalvik.system.CloseGuard.open(CloseGuard.java:180)
at java.net.AbstractPlainSocketImpl.create(AbstractPlainSocketImpl.java:103)
at java.net.Socket.createImpl(Socket.java:470)
at java.net.Socket.connect(Socket.java:603)
at org.briarproject.bramble.socks.SocksSocket.connect(SocksSocket.java:57)
at java.net.Socket.connect(Socket.java:554)
at org.briarproject.bramble.socks.SocksSocketFactory.createSocket(SocksSocketFactory.java:29)
at org.briarproject.bramble.plugin.tor.TorPlugin.createConnection(TorPlugin.java:577)
at org.briarproject.bramble.plugin.tor.TorPlugin$3.run(TorPlugin.java:551)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
```https://code.briarproject.org/briar/briar/-/issues/935Hostname of feed URL is logged during RSS Feed Import2020-11-19T15:22:32ZTorsten GroteHostname of feed URL is logged during RSS Feed ImportPrivacy leak?
```
04-10 15:14:04.602 D/libc-netbsd: [getaddrinfo]: hostname=www.schneier.com; servname=(null); cache_mode=(null), netid=0; mark=0
04-10 15:14:04.602 D/libc-netbsd: [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flag...Privacy leak?
```
04-10 15:14:04.602 D/libc-netbsd: [getaddrinfo]: hostname=www.schneier.com; servname=(null); cache_mode=(null), netid=0; mark=0
04-10 15:14:04.602 D/libc-netbsd: [getaddrinfo]: ai_addrlen=0; ai_canonname=(null); ai_flags=4; ai_family=0
```https://code.briarproject.org/briar/briar/-/issues/936Create synchronous incoming sync session for integration tests2018-06-21T15:58:16ZakwizgranCreate synchronous incoming sync session for integration testsThe integration tests use various workarounds to deal with IncomingSession writing messages and acks to the DB asynchronously. Create a simple synchronous incoming session for tests so these workarounds can be removed.The integration tests use various workarounds to deal with IncomingSession writing messages and acks to the DB asynchronously. Create a simple synchronous incoming session for tests so these workarounds can be removed.https://code.briarproject.org/briar/briar/-/issues/937Research how to package Bramble as a Cordova plugin2017-06-09T19:25:50ZakwizgranResearch how to package Bramble as a Cordova pluginSubtask of #141.Subtask of #141.Milestone Fakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/938Screen filter detects Google Play Services on Sony Xperia Tipo2017-06-09T19:25:50ZakwizgranScreen filter detects Google Play Services on Sony Xperia TipoOn the Sony Xperia Tipo (Android 4.0.4), the screen filter warning shows Google Play Services, which I would have expected to be excluded as a system app.
I'm guessing this happens because Google Play Services wasn't part of the origina...On the Sony Xperia Tipo (Android 4.0.4), the screen filter warning shows Google Play Services, which I would have expected to be excluded as a system app.
I'm guessing this happens because Google Play Services wasn't part of the original system image - it was installed when the Android Market app updated itself to Google Play. So I guess the flags don't indicate that Google Play Services is a system app.
If my guess is right, this will happen on all phones that didn't originally have Google Play Services installed. Maybe we should consider adding a special exception for it? But to avoid malicious apps masquerading as Google Play Services (on devices where it isn't installed) to bypass the filter, the exception would need to be based on the signing key rather than the package name.Milestone Gakwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/940Update to the latest emoji2018-09-03T12:13:35ZakwizgranUpdate to the latest emojiSignal's emoji code and resources were updated in December 2016:
https://github.com/WhisperSystems/Signal-Android/commit/f7474362ff8bc75fff70ed75a1caad31fd55374e
New emoji were released in March 2017:
http://emojipedia.org/emoji-5.0/Signal's emoji code and resources were updated in December 2016:
https://github.com/WhisperSystems/Signal-Android/commit/f7474362ff8bc75fff70ed75a1caad31fd55374e
New emoji were released in March 2017:
http://emojipedia.org/emoji-5.0/Android 1.1akwizgranakwizgranhttps://code.briarproject.org/briar/briar/-/issues/941Reblogged RSS post has wrong icon2017-06-09T19:25:50ZakwizgranReblogged RSS post has wrong iconWhen reblogging a post from an RSS feed, the reblogged post has the correct (RSS) icon for the original author when viewed on the device where it was imported:
![device-2017-04-13-145813](/uploads/85b44d910b5c997c7b44642be75c7a16/device...When reblogging a post from an RSS feed, the reblogged post has the correct (RSS) icon for the original author when viewed on the device where it was imported:
![device-2017-04-13-145813](/uploads/85b44d910b5c997c7b44642be75c7a16/device-2017-04-13-145813.png)
But when the reblogged post is viewed on a contact's device, is has an identicon and a trust indicator for the original author, instead of the RSS icon:
![device-2017-04-13-145903](/uploads/80e80b8ff9c9e6cdc8f326dc2ced3e94/device-2017-04-13-145903.png)
If the contact reblogs the post again, the twice-reblogged post has an identicon and a trust indicator for the original author on both devices:
![device-2017-04-13-145950](/uploads/902826ad1a284bbd869f17cbf9d269ca/device-2017-04-13-145950.png)
I guess there's a bug in the code that finds the root post and checks whether it comes from an RSS feed.Android Beta 1akwizgranakwizgran