<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mullvadvpn/android/service, branch decrease-leaks-during-reconnect</title>
<subtitle>The Mullvad VPN client app for desktop and mobile</subtitle>
<id>http://git.waynecole.info/mullvadvpn/atom?h=decrease-leaks-during-reconnect</id>
<link rel='self' href='http://git.waynecole.info/mullvadvpn/atom?h=decrease-leaks-during-reconnect'/>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/'/>
<updated>2025-10-28T14:56:09Z</updated>
<entry>
<title>Rename 'shared' to 'repository'</title>
<updated>2025-10-28T14:56:09Z</updated>
<author>
<name>Kalle Lindström</name>
<email>karl.lindstrom@mullvad.net</email>
</author>
<published>2025-10-27T10:35:42Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/commit/?id=d10085b894e0061138c5e0ff4b351ed04a22c65e'/>
<id>urn:sha1:d10085b894e0061138c5e0ff4b351ed04a22c65e</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add option to show relay location in notification</title>
<updated>2025-10-28T14:55:52Z</updated>
<author>
<name>Kalle Lindström</name>
<email>karl.lindstrom@mullvad.net</email>
</author>
<published>2025-10-23T14:15:02Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/commit/?id=376372c84c6b881e0097e5dab5348adab3e5f100'/>
<id>urn:sha1:376372c84c6b881e0097e5dab5348adab3e5f100</id>
<content type='text'>
This PR adds the following:
- An option to show the relay location in the connection notification.
- A new submenu under Settings called Notifications.
- In the new Notifications screen a toggle to enable/disable showing the
  location in the notification.
</content>
</entry>
<entry>
<title>Fix failing test due to time zone change</title>
<updated>2025-10-23T12:12:16Z</updated>
<author>
<name>Kalle Lindström</name>
<email>karl.lindstrom@mullvad.net</email>
</author>
<published>2025-10-23T11:38:49Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/commit/?id=98eab84c1cd238e6b380476f6e36870962386508'/>
<id>urn:sha1:98eab84c1cd238e6b380476f6e36870962386508</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Move ApiEndpointOverride to its own bean in app module</title>
<updated>2025-09-11T09:00:26Z</updated>
<author>
<name>Jonatan Rhodin</name>
<email>jonatan.rhodin@mullvad.net</email>
</author>
<published>2025-09-10T09:06:22Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/commit/?id=99764348eb6522b1eab76b085969fcfae3afd6be'/>
<id>urn:sha1:99764348eb6522b1eab76b085969fcfae3afd6be</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Attempt to fix potential ANR</title>
<updated>2025-08-04T10:44:04Z</updated>
<author>
<name>Kalle Lindström</name>
<email>karl.lindstrom@mullvad.net</email>
</author>
<published>2025-08-04T09:19:50Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/commit/?id=0a12ecffef67b5a3422dcd6ae53eeca114d407d4'/>
<id>urn:sha1:0a12ecffef67b5a3422dcd6ae53eeca114d407d4</id>
<content type='text'>
In onReceive in NotificationAlarmReceiver onBlocking() was used which
could potentially take too much time and cause an ANR. This PR changes
the onBlocking() call to instead use the goAsync() API so that the
onReceive method can return immediately.
</content>
</entry>
<entry>
<title>Fix gradle kotlinOptions warnings</title>
<updated>2025-07-03T08:18:59Z</updated>
<author>
<name>David Göransson</name>
<email>david.goransson@mullvad.net</email>
</author>
<published>2025-07-03T07:34:41Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/commit/?id=c65a73d6b996f8933d3e6a9e53ef5c43de96c164'/>
<id>urn:sha1:c65a73d6b996f8933d3e6a9e53ef5c43de96c164</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Use AlarmManager for notifications</title>
<updated>2025-06-19T07:36:26Z</updated>
<author>
<name>Kalle Lindström</name>
<email>karl.lindstrom@mullvad.net</email>
</author>
<published>2025-06-09T15:16:45Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/commit/?id=cdc2c4d700cd41f37cf4b1607a0396019b1fbee5'/>
<id>urn:sha1:cdc2c4d700cd41f37cf4b1607a0396019b1fbee5</id>
<content type='text'>
Instead of scheduling system notifications from a flow we now
schedule them independently from the app lifecycle via AlarmManager.

This is done so that for example an expiry notification that the user
dismissed won't get redisplayed if the app process gets killed and
then restarted.

When the account exiry time is fetched we schedule an alarm that will
show a notification 3 days before the account time expires. This alarm
then also schedules a new alarm to show the following notification and
so on.

To make this work this PR also introduces two new broadcast receivers;
one on boot received listener and one on time time/timezone changed
listener.

Beause Android clears alarms when the devices is rebooted/the time is
changed we need these listeners to re-trigger the alarm.

To enable the broadcast receivers to re-trigger the alarm we also have
to persist the expiry time in the DataStore preferences.
</content>
</entry>
<entry>
<title>Migrate remaining deps and versions to version catalogs</title>
<updated>2025-05-26T07:42:46Z</updated>
<author>
<name>David Göransson</name>
<email>david.goransson@mullvad.net</email>
</author>
<published>2025-05-24T07:23:14Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/commit/?id=1a421b646b09599c6f329226284b66b8416eef88'/>
<id>urn:sha1:1a421b646b09599c6f329226284b66b8416eef88</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Supply IP address when using API override</title>
<updated>2025-05-21T10:42:25Z</updated>
<author>
<name>David Göransson</name>
<email>david.goransson@mullvad.net</email>
</author>
<published>2025-05-21T09:17:25Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/commit/?id=7e7d6734b1c53dcc26774aebca60e5c09201152b'/>
<id>urn:sha1:7e7d6734b1c53dcc26774aebca60e5c09201152b</id>
<content type='text'>
Previously we did a DNS lookup for Stagemole and Devmole however, this
causes problem when starting the app with no internet and is different
from how the app performs in production mode. This commit removes that
logic in order to align closer to what we expect in prod.
</content>
</entry>
<entry>
<title>Unify usage of gradle properties</title>
<updated>2025-05-21T09:56:43Z</updated>
<author>
<name>David Göransson</name>
<email>david.goransson@mullvad.net</email>
</author>
<published>2025-05-20T08:11:16Z</published>
<link rel='alternate' type='text/html' href='http://git.waynecole.info/mullvadvpn/commit/?id=bf7f22e42500ba570776a08d132b6ee1e3a93df9'/>
<id>urn:sha1:bf7f22e42500ba570776a08d132b6ee1e3a93df9</id>
<content type='text'>
This commit does multiple changes to how we work with properties.
- Instead of relying on `e2e.properties` and `local.properties` only use
the `gradle.properties` as per standard gradle.
- Naming of properties are changed to have a coherent structure.
- Allow for setting stagemole and prod account separately.
- Consolidate all the default values into `gradle.properties`
</content>
</entry>
</feed>
