Skip to content

Fix language reload, jumping search rows, Enter and calculator after #30/#32 - #33

Merged
denson9874 merged 4 commits into
mainfrom
claude/project-thread-dabw37
Sep 30, 2026
Merged

denson9874 merged 4 commits into
mainfrom
claude/project-thread-dabw37

Conversation

@denson9874

Copy link
Copy Markdown
Owner

Requested by Daryl Denson

A review of the merged PRs #29–#32 found four problems. This fixes them before they ship in 4.0.0.

Before:

After:

  • A language change reloads the launcher, so names and section letters switch right away. This also covers changing only a secondary language.
  • Each section keeps the previous query's rows until its provider answers the new query, so rows no longer jump. Clearing the box, pressing Back or closing search starts the next search fresh.
  • Enter searches the web instead of opening the Play Store. The row order is unchanged.
  • The calculator answers only real calculations, such as 12*7, sqrt(16) or 2*pi. sqrt() is new.

How:

  • InvariantDeviceProfile.toModelState() now includes the locale list, so the existing locale-change path runs refreshAndReloadLauncher.
  • A new SeededProviderResults seeds each provider with its last answer from the same typing session.
  • LawnchairLocalSearchAlgorithm ends the session on cancel(true) and on zero state, using a session counter and a lock around the job launch. A search queued just before Back therefore can't deliver results or seeds into the next session.
  • AllAppsSearchInput also ends the session when Back clears a query.
  • setFirstItemQuickLaunch skips the Play Store row while a web-search row is shown.
  • CalculatorSearchProvider needs a digit and an operator or a function call before it shows a result.

Testing:

  • Unit tests: 208/208 pass, and all 127 ci/tests pass. New tests: InvariantDeviceProfileLocaleTest, SeededProviderResultsTest, SearchQuickLaunchTargetTest and CalculatorSearchProviderTest. Each one failed before its fix.
  • Emulator (Android 17 QPR2 AVD):
    • rows stay in place from wea to weat and on Backspace, measured frame by frame
    • calculator accepts and rejects the right inputs
    • Enter opens Chrome, never the Play Store
    • no old rows after Back
    • a rapid type-then-Back stress run
    • switching to German reloads the drawer with German names and letters
    • no launcher crash
  • Reviews: two independent reviews for each fix, plus a review of how they fit together.

Known limits and follow-ups (not changed here):

  • Enter pressed within a few ms of the last letter does nothing. It never opens old results.
  • The Search on Google row can show the Play Store icon for about 2 frames after a keystroke.
  • Blank cards can appear for about 200 ms when a new search first shows results.
  • A hardware Enter key can start the web search twice. This is older behavior.
  • After the language-change reload, some drawer icons lose their accessibility description. This is being checked separately.

🤖 Generated with Claude Code

denson9874 and others added 4 commits September 29, 2026 23:53
PR #30 stopped reloading the whole model on every recreate. A language change
recreates Launcher, which then binds the in-memory model directly, and
InvariantDeviceProfile.toModelState() left out the locale, so the locale
broadcast never reported a model change either. App labels and drawer section
letters stayed in the old language.

Include the locale list (all tags, not just the primary language: labels fall
back through it and the drawer index is built from it) in toModelState(), so
the existing locale path runs refreshAndReloadLauncher.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
PR #32 seeded every non-app provider with an empty list on each keystroke, so
web suggestions, contacts, files and settings vanished and came back 100-1000 ms
later, moving the rows under the user's finger.

Seed each provider with what it returned for the previous query of the same
typing session instead; its answer to the new query replaces those rows as soon
as it arrives. Clearing the box, Back and closing search end the session.
A session counter plus a lock around the job launch keep a search queued before
Back from delivering results or seeds into the next session.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
With no app match, the first row Enter could open was 'Search in Play Store'
until web suggestions arrived. Skip that row for the quick-launch target while
a web search row is shown, so Enter searches the web. Row order is unchanged.

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
With the calculator now on by default, typing 'e', 'pi' or a plain number such
as '2024' showed a calculator row, which also became the Enter target. Answer
only when the query has a digit and applies an operator or a function; add
sqrt() next to abs().

Co-Authored-By: Claude Opus 5.5 (1M context) <noreply@anthropic.com>
@denson9874 denson9874 self-assigned this Sep 30, 2026
@denson9874
denson9874 merged commit 73b6592 into main Sep 30, 2026
8 checks passed
denson9874 added a commit that referenced this pull request Sep 30, 2026
… fixes from public main (#29-#33)

Ports the android/ part of public main 938e9c6..73b6592 (PRs #29-#33):
- #29 BaseDepthController: skip redundant workspace blur clears and per-frame logging
- #30 stop reloading the whole model on every recreate (always-reload-icons default off)
- #31 stop re-binding prediction containers on every resume and state change
- #32 Pixel-style drawer search: instant results, calculator on by default, opaque
  focused pill, "Pixel Search (third-party)" label
- #33 locale change reloads the model; seeded provider results with session guard;
  Enter never opens a Play Store search while web suggestions load; calculator only
  answers real calculations (sqrt added)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
denson9874 added a commit that referenced this pull request Sep 30, 2026
…ge-following labels, bump to v4.0.0 (49)

Major release built on the #29-#33 port: instant drawer search that keeps rows in place, opaque
focused pill, calculator on by default and only for real calculations, Enter searches the web,
fewer blur clears, no full model reload on recreate, no prediction re-binds on resume, and labels
that follow a system language change. Default changes: "Always reload icons" off unless set,
calculator results on. Changelog 49, 4.0.0 announcement and parity ledger updated.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant