.vbw-planning/milestones/ui-fixes-and-smart-scraping/phases/04-smart-scrape-recommendations/04-PLAN-05-SUMMARY.md
Bulk scrape enablement flow: users can select multiple scrape candidate sources via checkboxes, see a sticky action bar with selected count, open a confirmation modal, and bulk-enable scraping for all selected sources in one action.
391e957 feat: add BulkScrapeEnablementsController with route and testsb0d1995 feat(views): add bulk scrape checkboxes, action bar, and confirmation modalef4a71d feat(js): extend select-all controller with action bar and count targetscreate action that bulk-updates scraping_enabled and scraper_adapter on selected sources. Responds with Turbo Stream (toast + redirect) and HTML formats. Handles empty selection with warning.resources :bulk_scrape_enablements, only: :create as top-level route in engine.select-all Stimulus controller. Added header checkbox (master toggle) and row checkboxes for scrape candidate sources only. Added sticky bottom action bar showing selected count and "Enable Scraping" button._bulk_scrape_enable_modal.html.erb partial using existing modal Stimulus controller. Shows warning text and "Confirm Enable" submit button wired into the bulk form.actionBar and count targets. New updateActionBar() method shows/hides action bar and updates count on every checkbox toggle.app/controllers/source_monitor/bulk_scrape_enablements_controller.rb (new)config/routes.rbapp/views/source_monitor/sources/index.html.erbapp/views/source_monitor/sources/_row.html.erbapp/views/source_monitor/sources/_bulk_scrape_enable_modal.html.erb (new)app/views/source_monitor/sources/_empty_state_row.html.erbapp/assets/javascripts/source_monitor/controllers/select_all_controller.jsapp/assets/builds/source_monitor/application.jsapp/assets/builds/source_monitor/application.js.maptest/controllers/source_monitor/bulk_scrape_enablements_controller_test.rb (new)test/controllers/source_monitor/sources_controller_test.rbSourceMonitor.config.scrapers.default_adapter_name which does not exist. Used hardcoded "readability" string instead (matches Sources::Params.default_attributes convention)._empty_state_row.html.erb colspan from 7 to 10 to account for the new checkbox column and correct the pre-existing count.assert_routing since the engine is mounted at a prefix that complicates path matching.