You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
fix(search): stop pinning the omnibox to a paid engine, and make it choosable (#75)
The address bar was hardcoded to Kagi, which is subscription-only past its
trial — so a fresh install landed on a login wall instead of results, and the
Settings dropdown didn't help because it only ever drove the new-tab box.
- The omnibox engine now comes from `$DATA/search-engine`, written by
`tron search <engine>`. Default is DuckDuckGo: it answers without an account.
- Drop the Kagi `suggestions_url`. It fired a request on every keystroke in the
address bar, which leaks the query before you press enter and stalls typing
when the endpoint is slow or answers 401.
- Only ever overwrite a search engine that is absent or that we wrote ourselves.
Profiles we had already pinned to Kagi get repaired; a choice the user made in
chrome://settings/search is left alone. An explicit `tron search` outranks both.
- Write Preferences via a temp file and rename. It holds the whole profile, and
a truncated in-place write loses every setting in it.
- Say plainly in both Settings copies which box each picker governs. They are
separate because an MV3 extension cannot set the browser's default engine —
there is no API, and chrome_settings_overrides isn't available on Linux.
The new-tab box defaults to DuckDuckGo too; leaving it on Kagi would reproduce
the same paywall in the other search box.
Tests: 9 launcher cases covering the default, the no-suggest rule, the repair,
the don't-stomp guard, explicit override and apply-once; 7 for `tron search`,
extracted from install.sh's heredoc since `sh -n install.sh` never parses it.
Co-authored-by: Claude Opus 5 <noreply@anthropic.com>
0 commit comments