Releases: Aureliusxradix/BreathGate
Release list
BreathGate 0.14.1
0.14.1 — 2026-08-20
The gate stopped watching, and said nothing. Reported the same day: "not doing the breath
check even though it is theoretically on, stopped all of a sudden."
- The watch loop can no longer stop. 0.14.0 made the loop re-post itself only while a cached
screen-state flag was true, and that flag was maintained by a broadcast receiver — which left the
whole watcher with a single ignition path. One missed screen-on broadcast and it was dead until
the service restarted, with every outward sign still normal. The loop now always re-posts and
asks the system for the screen state as it runs. The receiver is still there, but only to react
faster; if every one of its broadcasts were dropped, the gate would still work. The battery
saving is unchanged — the cost was never the tick, it was the usage query that gets skipped. - Grace windows are measured on a clock that runs. Re-intervention used a clock that stops
counting during deep sleep, so a 30-minute window could stay open across a night of standby and
the gate would not appear the next morning. - The notification says when something is wrong. With no network and no telemetry it is the
app's only voice, and it read "One breath before the door opens" while the watcher was doing
nothing. It now reports missing Usage Access, missing overlay permission, being paused, or
having no apps chosen — and tapping it opens the app.
BreathGate 0.14.0
One breath before the door opens.
When an app you have chosen comes to the foreground, BreathGate asks for a breath — and then asks
whether you still want to go in. It is not a blocker; blockers get uninstalled at the exact moment
they are needed. It asks for about twenty seconds and a decision, then gets out of the way either
way.
There is no INTERNET permission
Not a promise about data collection that you would have to take on trust. The app cannot reach
the network, and you can check that before installing:
aapt2 dump permissions BreathGate-0.14.0.apk | grep INTERNET # returns nothing
No account, no sync, no analytics, no crash reporting, no server — because there is nothing that
could talk to one. The release script refuses to publish a build that has acquired that
permission, so it cannot arrive quietly in a later version.
New in 0.14.0
The app is no longer briefly visible before the gate appears. The watcher polled every 350 ms, so
an app could be up and drawing for a third of a second before it was noticed — and a doorman who
arrives after you are through the door is a receipt. It now polls every 150 ms while the screen is
on and not at all while it is off, which is where the budget comes from.
In 0.13.1
Liberapay, beside the Monero address, on the support screen.
In 0.13.0
The sound gained two controls, because the first person to actually listen to it said the music
was too high. Pitch moves the struck notes across four positions and the default came down an
octave; brightness is a separate axis, since "too high" is often upper harmonics rather than
fundamental — a low sound can still be piercing. Struck notes can also be switched off entirely,
leaving only the drone.
What is in it
- Box breathing (4·4·4·4) by default, plus 4-7-8, simple in-and-out, or any counts you like.
- Five ways of drawing the breath, all growing from the centre: orb, bloom, box, guilloche,
and coral — a lung whose tubes fill with air from the middle out. - Every prompt is editable, including the question at the end.
- Re-intervention: the gate comes back while you are still inside a long session, not only
when you re-open the app. Set per app. - Optional sound, generated on the device — a drone in the palette's own key, and a bell on each
phase change that walks the tuning's degrees. No audio files, nothing downloaded. - Optional heartbeat, in colour and in sound, driven by a single shared function.
- Six palettes, a hand-built one, and a light mode.
Installing
Obtainium is the recommended route — it reads these releases and updates in place. Add this
repository as a GitHub source.
Or F-Droid, via this project's own repository — one tap on a phone with F-Droid installed:
Same APKs, same signing key, so the two never conflict.
⚠ If you install the APK by hand and a permission switch looks greyed out, that is Android holding
it shut because the app was sideloaded, not a bug:
Settings → Apps → BreathGate → ⋮ → Allow restricted settings
Then grant Usage access and Display over other apps. The app explains both on first open.
Android 8.0 (API 26) or later.
Verifying what you install
apksigner verify --print-certs BreathGate-0.14.0.apk
SHA-256: d0b6b276aa2cffc4b1b2850d2373dd3958c92bd68aa29a6ed76c17ffb25d75b0
⚠ Attach/install only the signed APK from this release. A build made with a different key is a
different app to Android and cannot update this one.
Licence
GPL-3.0-only, deliberately. This app is a gift, and a permissive licence would let anyone wrap
it, add the telemetry it refuses, and sell it back. Copyleft is what makes the gift cannot be
owned operative rather than merely stated — and a fork that adds an INTERNET permission is a
different program wearing this one's clothes.
Asking for something
Almost everything here arrived because someone used it and said what was wrong. Open an issue, or
write to infobreathgate.gladiator565@passmail.net.
The most useful report names the sensation — "spiky", "it clips", "the text overlaps". Every
one of those has pointed straight at a real mechanism faster than a theory would have.
BreathGate 0.13.1
One breath before the door opens.
When an app you have chosen comes to the foreground, BreathGate asks for a breath — and then asks
whether you still want to go in. It is not a blocker; blockers get uninstalled at the exact moment
they are needed. It asks for about twenty seconds and a decision, then gets out of the way either
way.
There is no INTERNET permission
Not a promise about data collection that you would have to take on trust. The app cannot reach
the network, and you can check that before installing:
aapt2 dump permissions BreathGate-0.13.1.apk | grep INTERNET # returns nothing
No account, no sync, no analytics, no crash reporting, no server — because there is nothing that
could talk to one. The release script refuses to publish a build that has acquired that
permission, so it cannot arrive quietly in a later version.
New in 0.13.1
Liberapay, beside the Monero address, on the support screen.
In 0.13.0
The sound gained two controls, because the first person to actually listen to it said the music
was too high. Pitch moves the struck notes across four positions and the default came down an
octave; brightness is a separate axis, since "too high" is often upper harmonics rather than
fundamental — a low sound can still be piercing. Struck notes can also be switched off entirely,
leaving only the drone.
What is in it
- Box breathing (4·4·4·4) by default, plus 4-7-8, simple in-and-out, or any counts you like.
- Five ways of drawing the breath, all growing from the centre: orb, bloom, box, guilloche,
and coral — a lung whose tubes fill with air from the middle out. - Every prompt is editable, including the question at the end.
- Re-intervention: the gate comes back while you are still inside a long session, not only
when you re-open the app. Set per app. - Optional sound, generated on the device — a drone in the palette's own key, and a bell on each
phase change that walks the tuning's degrees. No audio files, nothing downloaded. - Optional heartbeat, in colour and in sound, driven by a single shared function.
- Six palettes, a hand-built one, and a light mode.
Installing
Obtainium is the recommended route — it reads these releases and updates in place. Add this
repository as a GitHub source.
⚠ If you install the APK by hand and a permission switch looks greyed out, that is Android holding
it shut because the app was sideloaded, not a bug:
Settings → Apps → BreathGate → ⋮ → Allow restricted settings
Then grant Usage access and Display over other apps. The app explains both on first open.
Android 8.0 (API 26) or later.
Verifying what you install
apksigner verify --print-certs BreathGate-0.13.1.apk
SHA-256: d0b6b276aa2cffc4b1b2850d2373dd3958c92bd68aa29a6ed76c17ffb25d75b0
⚠ Attach/install only the signed APK from this release. A build made with a different key is a
different app to Android and cannot update this one.
Licence
GPL-3.0-only, deliberately. This app is a gift, and a permissive licence would let anyone wrap
it, add the telemetry it refuses, and sell it back. Copyleft is what makes the gift cannot be
owned operative rather than merely stated — and a fork that adds an INTERNET permission is a
different program wearing this one's clothes.
Asking for something
Almost everything here arrived because someone used it and said what was wrong. Open an issue, or
write to infobreathgate.gladiator565@passmail.net.
The most useful report names the sensation — "spiky", "it clips", "the text overlaps". Every
one of those has pointed straight at a real mechanism faster than a theory would have.
BreathGate 0.13.0
One breath before the door opens.
When an app you have chosen comes to the foreground, BreathGate asks for a breath — and then asks
whether you still want to go in. It is not a blocker; blockers get uninstalled at the exact moment
they are needed. It asks for about twenty seconds and a decision, then gets out of the way either
way.
There is no INTERNET permission
Not a promise about data collection that you would have to take on trust. The app cannot reach
the network, and you can check that before installing:
aapt2 dump permissions BreathGate-0.13.0.apk | grep INTERNET # returns nothing
No account, no sync, no analytics, no crash reporting, no server — because there is nothing that
could talk to one. The release script refuses to publish a build that has acquired that
permission, so it cannot arrive quietly in a later version.
New in 0.13.0
The sound gained two controls, because the first person to actually listen to it said the music
was too high. Pitch moves the struck notes across four positions and the default came down an
octave; brightness is a separate axis, since "too high" is often upper harmonics rather than
fundamental — a low sound can still be piercing. Struck notes can also be switched off entirely,
leaving only the drone.
What is in it
- Box breathing (4·4·4·4) by default, plus 4-7-8, simple in-and-out, or any counts you like.
- Five ways of drawing the breath, all growing from the centre: orb, bloom, box, guilloche,
and coral — a lung whose tubes fill with air from the middle out. - Every prompt is editable, including the question at the end.
- Re-intervention: the gate comes back while you are still inside a long session, not only
when you re-open the app. Set per app. - Optional sound, generated on the device — a drone in the palette's own key, and a bell on each
phase change that walks the tuning's degrees. No audio files, nothing downloaded. - Optional heartbeat, in colour and in sound, driven by a single shared function.
- Six palettes, a hand-built one, and a light mode.
Installing
Obtainium is the recommended route — it reads these releases and updates in place. Add this
repository as a GitHub source.
⚠ If you install the APK by hand and a permission switch looks greyed out, that is Android holding
it shut because the app was sideloaded, not a bug:
Settings → Apps → BreathGate → ⋮ → Allow restricted settings
Then grant Usage access and Display over other apps. The app explains both on first open.
Android 8.0 (API 26) or later.
Verifying what you install
apksigner verify --print-certs BreathGate-0.13.0.apk
SHA-256: d0b6b276aa2cffc4b1b2850d2373dd3958c92bd68aa29a6ed76c17ffb25d75b0
⚠ Attach/install only the signed APK from this release. A build made with a different key is a
different app to Android and cannot update this one.
Licence
GPL-3.0-only, deliberately. This app is a gift, and a permissive licence would let anyone wrap
it, add the telemetry it refuses, and sell it back. Copyleft is what makes the gift cannot be
owned operative rather than merely stated — and a fork that adds an INTERNET permission is a
different program wearing this one's clothes.
Asking for something
Almost everything here arrived because someone used it and said what was wrong. Open an issue, or
write to infobreathgate.gladiator565@passmail.net.
The most useful report names the sensation — "spiky", "it clips", "the text overlaps". Every
one of those has pointed straight at a real mechanism faster than a theory would have.
BreathGate 0.12.1
One breath before the door opens.
When an app you have chosen comes to the foreground, BreathGate asks for a breath — and then asks
whether you still want to go in. It is not a blocker; blockers get uninstalled at the exact moment
they are needed. It asks for about twenty seconds and a decision, then gets out of the way either
way.
There is no INTERNET permission
Not a promise about data collection that you would have to take on trust. The app cannot reach
the network, and you can check that before installing:
aapt2 dump permissions BreathGate-0.12.1.apk | grep INTERNET # returns nothing
No account, no sync, no analytics, no crash reporting, no server — because there is nothing that
could talk to one. The release script refuses to publish a build that has acquired that
permission, so it cannot arrive quietly in a later version.
What is in this first release
- Box breathing (4·4·4·4) by default, plus 4-7-8, simple in-and-out, or any counts you like.
- Five ways of drawing the breath, all growing from the centre: orb, bloom, box, guilloche,
and coral — a lung whose tubes fill with air from the middle out. - Every prompt is editable, including the question at the end.
- Re-intervention: the gate comes back while you are still inside a long session, not only
when you re-open the app. Set per app. - Optional sound, generated on the device — a drone in the palette's own key, and a bell on each
phase change that walks the tuning's degrees. No audio files, nothing downloaded. - Optional heartbeat, in colour and in sound, driven by a single shared function.
- Six palettes, a hand-built one, and a light mode.
Installing
Obtainium is the recommended route — it reads these releases and updates in place. Add this
repository as a GitHub source.
⚠ If you install the APK by hand and a permission switch looks greyed out, that is Android holding
it shut because the app was sideloaded, not a bug:
Settings → Apps → BreathGate → ⋮ → Allow restricted settings
Then grant Usage access and Display over other apps. The app explains both on first open.
Android 8.0 (API 26) or later.
Verifying what you install
apksigner verify --print-certs BreathGate-0.12.1.apk
SHA-256: d0b6b276aa2cffc4b1b2850d2373dd3958c92bd68aa29a6ed76c17ffb25d75b0
⚠ Attach/install only the signed APK from this release. A build made with a different key is a
different app to Android and cannot update this one.
Licence
GPL-3.0-only, deliberately. This app is a gift, and a permissive licence would let anyone wrap
it, add the telemetry it refuses, and sell it back. Copyleft is what makes the gift cannot be
owned operative rather than merely stated — and a fork that adds an INTERNET permission is a
different program wearing this one's clothes.
Asking for something
Almost everything here arrived because someone used it and said what was wrong. Open an issue, or
write to infobreathgate.gladiator565@passmail.net.
The most useful report names the sensation — "spiky", "it clips", "the text overlaps". Every
one of those has pointed straight at a real mechanism faster than a theory would have.