Commit Graph

125 Commits

Author SHA1 Message Date
b0072f0fc2 Key the weather worker's location skip on the provider, not on a setting
typing.8 checked WeatherSettingsData.managedLocation, but that only exists once the
user has explicitly picked "managed location" for the provider, so
weatherProviderSettings stayed empty and the guard never fired: the worker kept
requesting a location and retrying every 30s.

The real signal is the provider's own capability. BreezyWeatherProvider.getWeatherData()
is a hardcoded noop that also manages its own location, so add WeatherProvider.isPushBased
and check that instead.

Also stop treating a managed location as "pull nothing": those providers still have data
to fetch, they just resolve the position themselves, so they now take the
WeatherLocation path instead of the auto-location one.

Bump to 1.40.2-typing.9 (versionCode 2026091202).
2026-09-12 15:43:10 +02:00
61f3424de5 Stop the weather worker pinning location for providers that manage it
Some checks failed
Trigger F-Droid repository rebuild / trigger (release) Has been cancelled
Breezy Weather resolves its own location and pushes weather updates, but
WeatherUpdateWorker only looked at autoLocation before requesting a location.
BreezyWeatherProvider.getWeatherData() is a noop that always returns null, so
the worker then returned Result.retry() forever and never set lastUpdate -
which meant the update interval check could never short-circuit it either.

Every attempt called getLastKnownLocation(), which registers GPS *and* network
listeners at a one second interval and held them for up to ten minutes, so the
location stack never idled. On the phone this showed up as ~46k delivered fixes,
`*location*` wakelocks held ~99% of the time and Doze never engaging at all.

- expose the selected provider's managedLocation in WeatherSettingsData
- skip and cancel the weather work for providers that manage their own location
- give up on a fix after two minutes instead of ten
- LocationsRepository: don't collect the location flow when location search is
  off or not permitted. As a combineTransform argument it was always collected,
  so every search query registered GPS and network listeners for up to 30s.

Bump to 1.40.2-typing.8 (versionCode 2026091201).
2026-09-12 15:19:10 +02:00
291752abcd Bump version to 1.40.2-typing.7
Some checks failed
Trigger F-Droid repository rebuild / trigger (release) Has been cancelled
The clock widget's agenda part is immediate and reliable now: its query is
no longer held back by the repository's 500 ms debounce, collectors no longer
receive an empty list before the provider has run, and the parts are not
rebuilt (losing their cached data) every time the launcher leaves the
background.
2026-09-11 21:21:28 +02:00
6aba977823 Bump version to 1.40.2-typing.6
Some checks failed
Trigger F-Droid repository rebuild / trigger (release) Has been cancelled
Alarm shows its trigger time and matches the date part's typography, static
dynamic-zone rankings (alarm 100, date 90, calendar 30), and a wider agenda
dot column.
2026-09-11 13:23:13 +02:00
6c6cbe33fa Bump version to 1.40.2-typing.5
The agenda part and the configurable number of dynamic zone slots, with the
time column left-aligned.
2026-09-11 12:25:17 +02:00
5c1e9c5bf2 Handle physical keyboard keys on the scaffold state that is rendered
Some checks failed
Trigger F-Droid repository rebuild / trigger (release) Has been cancelled
Build Nightly APK / build (push) Has been cancelled
The key event handler was installed on the activity together with the state
instance it captured, so it could keep talking to a state that is no longer the
one that is drawn. That happens in practice: the scaffold state is recreated
when one of its rememberSaveable keys changes, which it does right after the
launcher starts (the window is measured, and the state is restored after the
configuration change), and the activity then still holds the handler of the
previous state. Typing on the home screen set the search query and started the
page transition on the detached state, so the search page never appeared, while
the query showed up in the search bar.

The handler is now created without the state as a key and asks for the current
state through a provider, and the activity's handler is refreshed on every
composition instead of only when the handler instance changes.

Verified on the Titan 2: typing on the home screen opens the search page with
the character inserted, further characters append, the text field stays
unfocused and the on-screen keyboard stays hidden.
2026-09-10 21:44:46 +02:00
e004862b00 Bump version to 1.40.2-typing.3
Some checks failed
Trigger F-Droid repository rebuild / trigger (release) Has been cancelled
Fixes on top of -typing.2: the widget configure activity crash, the search bar
keeping the keyboard focus (and the IME) on the home screen after an app switch,
and the TextFieldValue update in SearchBar moving out of the composition.
2026-09-10 20:46:11 +02:00
e17903f40f Clear the search when the launcher is left, end keyboard search on dismiss
Some checks failed
Trigger F-Droid repository rebuild / trigger (release) Has been cancelled
Two fixes on top of the type-to-search feature:

- The search no longer survives leaving the launcher. Upstream only resets the
  search when the launcher was in the background for more than five seconds, so
  a quick app switch or a fast return from a launched app left the old query on
  screen. The search page is now always reset, whatever the pause was.
- Dismissing the search page ends the keyboard driven search. Without that the
  flag stayed set, so opening the search later (gesture or search bar) did not
  focus the text field and the soft keyboard stayed away.

Version 1.40.2-typing.2.
2026-09-10 12:03:00 +02:00
0f53f7ecdf Open the search when typing on a physical keyboard
Some checks failed
Trigger F-Droid repository rebuild / trigger (release) Has been cancelled
Typing on a physical keyboard while the home screen is shown now opens the
search page and inserts the typed character, so the launcher can be used
without touching the screen. It works for any printable key, appends the
characters in order even when the user types faster than the launcher can
recompose, and the search bar can still be tapped to edit the query with
the on-screen keyboard as usual.

While the search is driven by the keyboard, the search bar's text field is
left unfocused on purpose: a focused text field would make the system show
the on-screen keyboard, which is not wanted when there is a physical
keyboard. The handler therefore inserts and deletes characters itself,
including backspace and enter (to launch the best match).

The behaviour is controlled by a new "Search on typing" preference in
Settings -> Search, which is enabled by default.

Implementation notes:
- The key events are intercepted in SharedLauncherActivity.dispatchKeyEvent,
  which is the only place that sees hardware key events while no view has
  focus. The scaffold installs the handler while it is shown.
- Key events are not forwarded to the search bar's text field, so the
  characters are inserted into the search view model directly.
- SearchBar keeps a TextFieldValue instead of a String so that the cursor
  moves to the end of the text when the value is changed from the outside.
  Without this the next typed character ended up in front of the text.
2026-09-10 11:45:14 +02:00
MM20
64dc66aadb Update dependencies, change java version to 11, update Gradle 2026-08-12 23:42:41 +02:00
MM20
8e236e1d1d bump version code and add changelog 2026-05-31 18:57:34 +02:00
MM20
7e7f3f72aa Version 1.40.2 2026-05-31 18:15:11 +02:00
MM20
47596ad484 Version 1.40.1 2026-04-14 20:39:49 +02:00
MM20
06982b6e5a Specify compile sdk minor version
Close #1867
2026-04-14 20:00:45 +02:00
MM20
3820cca43e Version 1.40.0 2026-04-12 17:34:26 +02:00
MM20
b07773a8cc reenable r8 shrinking 2026-04-06 10:49:49 +02:00
MM20
37fa1697dd Migrate to Android Gradle Plugin 9 2026-03-28 16:02:54 +01:00
MM20
e7d794d9c2 Version 1.39.3 2026-01-24 16:40:46 +01:00
MM20
664419b3c4 [WIP] Add experimental feed support 2026-01-05 23:45:20 +01:00
MM20
5c106c387d Version 1.39.2 2025-12-30 13:43:13 +01:00
MM20
3cd660058e Version 1.39.1 2025-12-24 13:51:35 +01:00
MM20
ff417e57c5 Version 1.39.0 2025-12-23 20:47:36 +01:00
MM20
67167de2da Add transliteration support for non-latin scripts 2025-12-15 23:00:40 +01:00
MM20
f991e579c0 Version 1.38.0 2025-10-18 16:08:09 +02:00
MM20
d4549069b8 modernize gradle scripts 2025-08-16 16:34:03 +02:00
MM20
83b96e4fcd Version 1.37.0 2025-07-04 18:47:34 +02:00
MM20
269c107a8e Version 1.36.1 2025-05-03 20:31:58 +02:00
MM20
06095a75ab Version 1.36.0 2025-05-03 17:36:35 +02:00
MM20
7132e69ec8 Add tasks.org integration 2025-04-26 13:29:58 +02:00
MM20
6036d04476 Version 1.35.4 2025-04-21 23:35:31 +02:00
MM20
31f83ca778 Version 1.35.3 2025-04-21 17:44:12 +02:00
MM20
2d40459237 Remove unused resources and libraries 2025-04-20 18:30:56 +02:00
MM20
fb33c859d3 Version 1.35.2 2025-04-03 22:17:02 +02:00
MM20
2080897839 Version 1.35.1 2025-04-02 23:59:43 +02:00
MM20
811d3c8b28 Version 1.35.0 2025-04-02 23:30:24 +02:00
Christoph
bceae1aa58 ContactItem improvements (#1324)
* ContactRepository: try to deduplicate phoneNumbers in a smart way

* AndroidManifest: use CALL_PHONE permission to allow for making phone calls

* Implement CallOnTap with contact results

- contact activities that require permissions we do not have are not
  listed
- add CallOnTap setting for phone number results on search behind
  contacts settings

* utilize PhoneNumberUtils

* navroute settings/search/contacts

* queryIntentActivities -> resolveActivity

* localization

* Code formatting

* Wrap contact search settings in preference category

---------

Co-authored-by: MM20 <15646950+MM2-0@users.noreply.github.com>
2025-03-29 17:18:30 +01:00
MM20
8d1800b95b Get rid of Guava 2025-02-10 20:41:40 +01:00
MM20
45a19ce95e Remove Google integration 2025-02-09 12:54:20 +01:00
MM20
8b4c3c10ca Version 1.34.1 2024-12-24 11:26:45 +01:00
MM20
d565da1492 Version 1.34.0 2024-12-05 18:57:43 +01:00
MM20
a868fe36cf Version 1.33.1 2024-09-03 17:00:52 +02:00
MM20
f862c109a4 Version 1.33.0 2024-08-17 00:20:11 +02:00
MM20
8bb2184818 Make string translatable 2024-08-17 00:07:52 +02:00
MM20
d2b134bfd2 Version 1.32.2 2024-07-24 20:56:37 +02:00
MM20
8ae5fdfcda Version 1.32.1 2024-07-22 20:54:09 +02:00
MM20
b1381b9571 Version 1.32.0 2024-07-19 23:24:05 +02:00
MM20
5a28eb584e React to changing profile availability 2024-07-07 14:29:42 +02:00
MM20
54c38378f1 Version 1.31.2 2024-07-03 23:17:54 +02:00
MM20
9424663dac Version 1.31.1 2024-07-01 00:15:27 +02:00
MM20
787a17a325 Version 1.31.0 2024-06-30 20:18:52 +02:00