From 4c736096aeb313d8abe6f46dd52352bdad6b543c Mon Sep 17 00:00:00 2001 From: Christoph Haas Date: Sun, 23 Aug 2026 10:49:32 +0200 Subject: [PATCH] Show search source badges only with show_sources param The badges are a debugging aid - render them only when explicitly requested via ?show_sources=1 instead of on every search. --- app/helpers/packages_helper.rb | 6 ++++++ app/views/packages/browse.slim | 4 ++-- test/controllers/packages_controller_test.rb | 13 +++++++++++-- 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/app/helpers/packages_helper.rb b/app/helpers/packages_helper.rb index 3bc7de0..b742a6b 100644 --- a/app/helpers/packages_helper.rb +++ b/app/helpers/packages_helper.rb @@ -1,4 +1,10 @@ module PackagesHelper + # Search result origin badges are only shown when explicitly + # requested via ?show_sources=1 + def search_sources_visible? + params[:show_sources].present? + end + # Human readable label for the search strategy that put a package # into the search results (see PackagesController#search_packages) def search_source_label(source) diff --git a/app/views/packages/browse.slim b/app/views/packages/browse.slim index 2dfdedc..b8e09c9 100644 --- a/app/views/packages/browse.slim +++ b/app/views/packages/browse.slim @@ -24,7 +24,7 @@ = pkg.name .text = pkg.description - - if @search_sources[pkg.id] + - if search_sources_visible? && @search_sources[pkg.id] .text.search-source span.label.secondary = search_source_label(@search_sources[pkg.id]) - elsif @view_style==:list @@ -40,7 +40,7 @@ a href=package_path(name: pkg.name) =pkg.name p =pkg.description - - if @search_sources[pkg.id] + - if search_sources_visible? && @search_sources[pkg.id] p span.label.secondary = search_source_label(@search_sources[pkg.id]) .listview.longdescription diff --git a/test/controllers/packages_controller_test.rb b/test/controllers/packages_controller_test.rb index 0c9c81c..d72ad95 100644 --- a/test/controllers/packages_controller_test.rb +++ b/test/controllers/packages_controller_test.rb @@ -25,7 +25,7 @@ class PackagesControllerTest < ActionController::TestCase test 'exact package name search wins without calling the vector service' do with_stubbed_method(Package, :nearest_to_text, ->(_text) { flunk 'should not call vector search' }) do - get :grid, params: { search: 'vim' } + get :grid, params: { search: 'vim', show_sources: '1' } assert_response :success assert_select 'div', 'vim' assert_equal({ packages(:vim).id => :exact }, assigns(:search_sources)) @@ -75,7 +75,7 @@ class PackagesControllerTest < ActionController::TestCase # "fire fox" should find "firefox" via name substring matching with_stubbed_method(Package, :nearest_to_text, ->(_text, **_opts) { Package.none }) do - get :grid, params: { search: 'fire fox' } + get :grid, params: { search: 'fire fox', show_sources: '1' } assert_response :success assert_select 'div', text: 'firefox', count: 1 assert_equal({ packages(:firefox).id => :name_contains }, @@ -84,6 +84,15 @@ class PackagesControllerTest < ActionController::TestCase end end + test 'search source badges stay hidden without show_sources param' do + with_stubbed_method(Package, :nearest_to_text, + ->(_text, **_opts) { Package.none }) do + get :grid, params: { search: 'fire fox' } + assert_response :success + assert_select '.search-source', count: 0 + end + end + test 'details shows semantically related packages' do packages(:vim).update_column(:embedding, Array.new(384, 0.25)) packages(:firefox).update_column(:embedding, Array.new(384, 0.75))