The sidebar's full-text search sent /api/sessions/search with no profile, so
Electron routed it to the primary backend, which searched its launch profile's
state.db. On any other profile the sidebar listed the launch profile's hits
and missed the current profile's own sessions; switching profiles with a
query typed kept the old profile's results.
searchSessions now takes the profile and sends it both as the request scope
and as ?profile=, and the sidebar passes its scope (ALL keeps asking the
primary). The debounced search effect moves into useServerSessionSearch and
re-runs when the scope changes.