-
Kvaesitso 1.40.2 type-to-search and agenda (build 10)
StableSome checks are pendingTrigger F-Droid repository rebuild / trigger (release) Waiting to runreleased this
2026-09-17 08:57:00 +02:00 | 0 commits to main since this releaseTenth build of the fork. The clock widget's agenda is configurable.
Changes since v1.40.2-typing.9
- Pick which calendars the agenda shows. The agenda used to inherit the calendar search
settings' exclusions and nothing else. The clock widget now has its own selection
(clockWidgetCalendarPartExcludedCalendars): Events → Calendars expands into a checkbox per
calendar, tinted with the calendar's colour. Calendars you disable in Settings → Search → Calendar
are not listed there at all, since the launcher does not read them; the Manage calendars
button next to the list opens that screen (it is now reachable directly via a settings route).
If the calendar permission is missing, the section says so and offers to grant it. - Choose how many entries are shown. The Visible events slider (1–8, default 4) sets how many
event rows the agenda renders before it collapses the rest into a "+N more events" row. The
collapse row now counts the events it hides after the configured number of rows instead of
reserving one of them, so five events with the default now read as four rows plus "+1 more event"
rather than three plus "+2".
Both settings default to the previous behaviour, so nothing changes until you open the clock
widget's configuration (home screen edit mode, or Settings → Home screen → Clock widget → the
tune button). No migration, no data loss on update.Signed with the same key as previous builds, so it installs in place over the running launcher.
Downloads
- Pick which calendars the agenda shows. The agenda used to inherit the calendar search
-
released this
2026-09-12 15:47:27 +02:00 | 2 commits to main since this releaseSecond attempt at the weather/location battery drain. The first one (typing.8) keyed the skip
onWeatherSettingsData.managedLocation, which only exists once "managed location" has been
picked explicitly for the provider — so with an emptyweatherProviderSettingsthe guard never
fired and the worker kept requesting a location and retrying every 30 seconds.With a push-based weather provider (Breezy Weather), the worker only checked
autoLocationand
therefore requested a location even though the provider resolves its own.getWeatherData()is a
noop that always returnsnull, so the worker then returnedResult.retry()forever and never
setlastUpdate— which also meant the update interval check could never short-circuit it.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 device this showed up as ~46,000 delivered fixes,*location*wakelocks held ~99% of the
time, and Doze never engaging at all.- Add
WeatherProvider.isPushBasedand set it onBreezyWeatherProvider, so the check no longer
depends on any user setting. - Skip and cancel the weather work entirely for push-based providers.
- A managed location now takes the
WeatherLocationpath instead of the auto-location one, so
managed-location plugins still get their data without a location request. - Give up on a location fix after two minutes instead of ten.
LocationsRepository: don't collect the location flow when location search is off or not
permitted. As acombineTransformargument it was always collected, so every search query
registered GPS and network listeners for up to 30 seconds.
Downloads
- Add
-
Kvaesitso 1.40.2 type-to-search and agenda (build 8)
StableSome checks failedTrigger F-Droid repository rebuild / trigger (release) Has been cancelledreleased this
2026-09-12 15:30:18 +02:00 | 4 commits to main since this releaseFixes a battery drain caused by the weather worker pinning the location stack.
With a weather provider that manages its own location (Breezy Weather), the worker only
checkedautoLocationand therefore still requested a location even though the provider
resolves its own.BreezyWeatherProvider.getWeatherData()is a noop that always returns
null, so the worker then returnedResult.retry()forever and never setlastUpdate—
which also meant the update interval check could never short-circuit it.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 device this showed up as ~46,000 delivered fixes,*location*wakelocks
held ~99% of the time, and Doze never engaging at all.- Expose the selected provider's
managedLocationinWeatherSettingsData. - Skip and cancel the weather work for providers that manage their own location.
- Give up on a location fix after two minutes instead of ten.
LocationsRepository: don't collect the location flow when location search is off or not
permitted. As acombineTransformargument it was always collected, so every search
query registered GPS and network listeners for up to 30 seconds.
Downloads
- Expose the selected provider's
-
Kvaesitso 1.40.2-typing.7 (type-to-search + agenda)
StableSome checks failedTrigger F-Droid repository rebuild / trigger (release) Has been cancelledreleased this
2026-09-11 21:30:23 +02:00 | 6 commits to main since this releaseSeventh build of the fork. The clock widget's agenda part is immediate and reliable now.
Changes since v1.40.2-typing.6
- The agenda no longer shows up late. Its query went through the calendar repository's 500 ms
debounce (which exists to collapse refresh bursts in the calendar widget) and the part is hidden
while its ranking is 0, so it always popped in about half a second after the clock, date and
alarm. The agenda query now skips that debounce. - Coming back to the home screen keeps the agenda. The clock widget rebuilt its part providers
every time it was subscribed again - which happens on every return from another app - so the
cached data was thrown away and the query had to run again. The providers now live as long as the
widget's ViewModel: their cached ranking is drawn immediately and the query refreshes the rows in
place. - Fixed a calendar query that reported "no events" before it had run. The query handed out an
empty result before any provider had answered. The 500 ms debounce had been hiding that behind
its delay; without the debounce the agenda vanished completely. It now waits for the providers and
reports their combined result, so today's events - all-day ones included - are there as soon as
the widget is drawn. The search page no longer flashes an empty result list either.
Install or update through Obtanium as usual. The APK is signed with the same key as the installed
build, so it updates in place and keeps the launcher configuration.Downloads
- The agenda no longer shows up late. Its query went through the calendar repository's 500 ms
-
Kvaesitso 1.40.2-typing.6 (type-to-search + agenda)
StableSome checks failedTrigger F-Droid repository rebuild / trigger (release) Has been cancelledreleased this
2026-09-11 13:30:47 +02:00 | 10 commits to main since this releaseSixth build of the fork. The clock widget's dynamic zone is tidied up.
Changes since v1.40.2-typing.5
- The alarm part shows the time the alarm goes off (e.g.
07:30) instead of "in 8 hours". Its text now uses the same typography as the date part. - The dynamic zone's order is fixed: the alarm always sits directly below the clock, the date follows it, and only then come the contextual parts (media, calendar, low battery). The calendar's "starting soon" boost is gone, so the agenda no longer jumps the queue.
- More spacing between each agenda row's colour dot and its time column.
Downloads
- The alarm part shows the time the alarm goes off (e.g.
-
Kvaesitso 1.40.2-typing.5 (type-to-search + agenda)
StableSome checks failedTrigger F-Droid repository rebuild / trigger (release) Has been cancelledreleased this
2026-09-11 12:38:42 +02:00 | 14 commits to main since this releaseFifth build of the fork. The clock widget's dynamic zone can now show more than one part, and it has an agenda part.
Changes since v1.40.2-typing.4
- The dynamic zone shows up to N parts instead of exactly one. Settings → Clock widget → Dynamic zone → Visible parts sets N (1 up to the number of enabled parts). Parts are shown highest-ranked first, so the contextual ones (media, alarm, low battery) still take precedence over the date.
- New Events part (same card, off by default): today's agenda under the clock — events that are still running or upcoming, plus today's all-day events. Up to four rows of [dot in the calendar's colour | time | title], with "+N more events" as the last row when there are more (it opens the calendar app). Tapping a row opens the event. All-day events read "all-day"; times are always times, never dates.
- Alarms are shown up to 24 hours ahead instead of 8, so an alarm set for the next morning no longer stays hidden all evening.
The Events part uses the calendar permission, the same one the calendar widget asks for.
Downloads
-
released this
2026-09-10 21:49:57 +02:00 | 18 commits to main since this releaseFourth build of the type-to-search fork. Skip
v1.40.2-typing.3— in that build the physical
keyboard stopped opening the search page (the character was inserted into the query, but the results
never appeared).Changes since v1.40.2-typing.2
- Typing on the physical keyboard on the home screen opens the search page again. The key event
handler was bound to a scaffold state that is replaced while the launcher starts (the state that
rememberSaveablerestores after the configuration change, and the one created when the window is
measured), so it acted on a state that was not the one being rendered. - The launcher no longer crashes when a widget offers "Configure widget" but has no configure
activity (or the app providing it was uninstalled). Upstreammainstill has the unguarded call;
the failure is now logged instead of killing the launcher process. - Coming back to the home screen from another app no longer leaves the search bar holding the
keyboard focus with the on-screen keyboard up. In that state the physical keyboard typed into the
search bar without the search results ever opening, which made the launcher look unresponsive. - The search query is cleared before the search page is reset when the launcher is resumed, so a
stale query cannot survive an interrupted page transition. - SearchBar adopts text that changed from the outside in a side effect instead of writing snapshot
state during composition.
The feature
- Pressing a printable key on the physical keyboard on the home screen opens the search and inserts
the character. - Characters keep their order, even when typing faster than the launcher can redraw.
- Backspace deletes, enter launches the highlighted result.
- The on-screen keyboard stays hidden while you type.
- Tapping the search bar gives the normal editable field with the soft keyboard.
- Setting: Settings -> Search -> Search on typing (on by default).
Downloads
- Typing on the physical keyboard on the home screen opens the search page again. The key event
-
Kvaesitso 1.40.2-typing.3 (type-to-search)
StableSome checks failedTrigger F-Droid repository rebuild / trigger (release) Has been cancelledreleased this
2026-09-10 20:59:22 +02:00 | 19 commits to main since this releaseSuperseded by
v1.40.2-typing.4. In this build the physical keyboard did not open the
search page (the character was inserted into the query, but the results never appeared).
Do not use this build.Third build of the type-to-search fork.
Changes since v1.40.2-typing.2
- The launcher no longer crashes when a widget offers "Configure widget" but has no configure
activity (or the app providing it was uninstalled). Upstreammainstill has the unguarded call;
the failure is now logged instead of killing the launcher process. - Coming back to the home screen from another app no longer leaves the search bar holding the
keyboard focus with the on-screen keyboard up. In that state the physical keyboard typed into the
search bar without the search results ever opening, which made the launcher look unresponsive. - The search bar adopts text that changed from the outside in a side effect instead of writing
snapshot state during composition. - The search query is cleared before the search page is reset when the launcher is resumed, so a
stale query cannot survive an interrupted page transition.
The feature
- Pressing a printable key on the physical keyboard on the home screen opens the search and inserts
the character. - Characters keep their order, even when typing faster than the launcher can redraw.
- Backspace deletes, enter launches the highlighted result.
- The on-screen keyboard stays hidden while you type.
- Tapping the search bar gives the normal editable field with the soft keyboard.
- Setting: Settings -> Search -> Search on typing (on by default).
Downloads
- The launcher no longer crashes when a widget offers "Configure widget" but has no configure
-
Kvaesitso 1.40.2-typing.2 (type-to-search)
StableSome checks failedTrigger F-Droid repository rebuild / trigger (release) Has been cancelledreleased this
2026-09-10 12:03:01 +02:00 | 23 commits to main since this releaseSecond build of the type-to-search fork.
Changes since v1.40.2-typing.1
- The search is cleared when the launcher is left, even after a short app switch or a fast return
from a launched app. Upstream keeps the search for returns within five seconds, which left the old
query on screen. - Dismissing the search page now ends the keyboard driven search, so opening the search again
(gesture or search bar) focuses the text field and shows the soft keyboard as usual.
The feature
- Pressing a printable key on the physical keyboard on the home screen opens the search and inserts
the character. - Characters keep their order, even when typing faster than the launcher can redraw.
- Backspace deletes, enter launches the highlighted result.
- The on-screen keyboard stays hidden while you type.
- Tapping the search bar gives the normal editable field with the soft keyboard.
- Setting: Settings -> Search -> Search on typing (on by default).
Downloads
- The search is cleared when the launcher is left, even after a short app switch or a fast return
-
Kvaesitso 1.40.2-typing.1 (type-to-search)
StableSome checks failedTrigger F-Droid repository rebuild / trigger (release) Has been cancelledreleased this
2026-09-10 11:45:39 +02:00 | 25 commits to main since this releaseFork of Kvaesitso 1.40.2 with type-to-search for
phones with a physical keyboard (built for the Unihertz Titan 2 Elite).What is different from upstream
- Type to search – pressing a printable key on the home screen opens the search page and
inserts the character. No need to touch the screen or the search bar first. - Characters keep their order, even when typing faster than the launcher can redraw.
- Backspace deletes, enter launches the highlighted result (same as "launch on enter").
- The on-screen keyboard is kept hidden while you type, because it would only cover the results.
- Tapping the search bar still gives the normal editable search field, including the on-screen
keyboard, so nothing from upstream is lost. - Only starts from the home screen (and from the search page itself when the cursor was scrolled
away). Typing on the widgets, notifications or recents page does not jump to the search. - New setting Settings → Search → Search on typing (on by default) to turn it off.
While a search is driven by the keyboard the text field is intentionally left unfocused - a focused
text field makes the system show the on-screen keyboard. The characters are therefore inserted into
the search state directly. The moment you tap the search bar, the text field takes over and behaves
exactly like upstream.Install
Signed with the fork key, so this replaces the official build (
de.mm20.launcher2.release).
Uninstalling the official app first and restoring the data afterwards keeps the launcher setup.Downloads
- Type to search – pressing a printable key on the home screen opens the search page and