Releases: projectblacklight/spotlight
v3.3.0
What's Changed
- Update CI versions by @cbeer in #2791
- Add a contributing.md document for Spotlight by @mejackreed in #2291
- Skip a very flaky test in CI by @cbeer in #2795
- Import data using #with_indifferent_access to avoid confusing strings and symbols by @cbeer in #2794
- Make rake tasks read from env for non-interactive usage by @thatbudakguy in #2797
- Use the actual configured facet limit to determine when to show the 'too many values' version of the count by @cbeer in #2792
- Truncate titles in breadcrumbs and limit them to 1 line by @marlo-longley in #2796
- Update confirmation email text by @cbeer in #2800
- Omit HTML id attributes for the 'current tab tracking' hidden field by @cbeer in #2801
- Update requirements listed in the README by @cbeer in #2798
- Tweak log messages and comments by @cbeer in #2799
- Remove debug logging from test by @cbeer in #2802
- Address upstream deprecation warnings by @cbeer in #2803
- Wrap initializers that depend on Rails autoloading with to_prepare by @cbeer in #2806
- Allow paper_trail v12 by @cbeer in #2807
- Relax dependency pinning for acts-as-taggable-on by @cbeer in #2808
New Contributors
- @thatbudakguy made their first contribution in #2797
- @marlo-longley made their first contribution in #2796
Full Changelog: v3.2.0...v3.3.0
v3.2.0
What's Changed
- Only include Skip to search link on pages that have search by @elrayle in #2770
- Change label to Remove from exhibit by @elrayle in #2772
- For accessibility, allow aria-label and title in iFrames by @elrayle in #2774
- Add prompt for URL slug to command line exhibit creation by @aaron-collier in #2776
- 2781 translation page bug by @corylown in #2782
New Contributors
- @aaron-collier made their first contribution in #2776
- @corylown made their first contribution in #2782
Full Changelog: v3.1.0...v3.2.0
Spotlight 3.1.0
Features
- Move analytics rendering from footer into head (#2761)
Improvements
- Symbolize our strings used in paths (#2754)
- Guard against the bulk updates visibility column not appearing in the spreadsheet (#2758)
- Cache the search#count value (#2759)
- A11y improvements (#2764)
Bug Fixes
- Allow as_json to accept arguments (#2756)
- Update install generator to use the destination_root to support generating a new app with the template (#2763)
- ReindexExhibitJob#perform: fix when object count is 0 (#2760)
- Explicitly re-enable p tags for text all of our custom blocks (#2765)
Thanks
Spotlight 3.0.0
Features
- Blacklight 7 support
- Bootstrap 4
- Rails 6.1 support
- New Arabic, Brazilian Portuguese, and Spanish translations, and improved RTL display
- Accessibility improvements
- Support bulk updates and bulk actions for adding/removing tags and public/private visibility to many exhibit items at once
- New exhibit item indexing ETL framework, and other indexing improvements to provide better performance and visibility into the indexing background jobs for the exhibit builders
- New browse groups for organizing long lists of browse categories
Improvements
- Include the site title in feedback emails (#2282)
- Use the
:long
date format consistently (to include the year) (#2355) - Allow the engine configuration to limit which themes are available for a given exhibit (#2372)
- Updated Exhibit cards on home page (#2481)
- Improve rendering of browse categories, saved searches, and pages widgets (#2571)
- Removes the require.js / almond.js conversion of ES6 JavaScript from amd to umd modules #2599
- Improved OpenSeadragon ("ZPR") viewer styling
- Add a query facet for public items
- More granular exhibit export configuration for configuring what parts of an exhibit should be included in an export
Bug Fixes
- Fix an issue with the analytics component and multiple analytics profiles (#2312)
- Address a race condition when updating sidecar data (#2316 + #2320)
- Have feedback emails come addressed from the service, not the feedback submitter (#2301)
- Fix a navigation issue using the search result widget (#2347)
- Fix an issue with empty custom field data being indexed as an empty string (instead of removing the data from Solr) (#2356)
- Follow HTTP redirects when retrieving IIIF resources
- Reserve page + exhibit slugs that conflict with application routing
- Image uploads should be associated with an exhibit
Upgrading
In this major release, Spotlight 3 has updated its upstream dependencies to support the latest releases of Rails, Blacklight and Bootstrap. As such, it's important to review those upgrade guides and address deprecation warnings from your application either before or as part of upgrading to Spotlight 3.
- Review the Blacklight 7 upgrade guide
- Review the Bootstrap 3 to 4 migration guide for any local customizations
- Convert any local custom JavaScript from using require.js syntax to the umd version. See #2599
Additionally, there are some changes you need to make to your application to support new features or configurations in Spotlight 3:
- Add the SirTrevor initializer to your application
- Update local indexing code to use the new ETL framework (see below)
- Update your
SearchBuilder
to replaceSpotlight::AccessControlsEnforcementSearchBuilder
withSpotlight::SearchBuilder
- Install + run the new spotlight migrations:
rake spotlight:install:migrations && rake db:migrate
ETL
Spotlight::SolrDocumentBuilder
has been removed in Spotlight 3, and your Resource model is now responsible for all steps in the indexing process. Spotlight now provides an indexing pipeline framework to make it relatively easy to build your indexing rules into the resource.
Each resource class has indexing_pipeline
method that defines the ETL steps for creating solr documents from your resource instance. In your local resource class, you'll want to add additional configuration to the pipeline to perform appropriate extract and load steps.
The pipeline source
configuration is an array of extraction steps. These steps can return/yield one or more source objects that will be transformed later in the pipeline. In general, these objects should be 1:1 to the documents. By default, Spotlight assumes the resource object is the object to index, but e.g. if you had a resource instance that represented a collection containing 5 constituent object, the source would yield an object representing the collection and 5 additional objects for each part of the collection.
The pipeline transform
configuration take the sources and turns it into a solr document-style hash. By default, Spotlight provides some steps that augment a document with fields that enable spotlight-specific features, but you'll need to add a transform step to appropriately transform your source object to any number of application-specific metadata fields.
Here's an example of overriding the indexing pipeline for a contrived resource class.
class MyResourceClass < Spotlight::Resource
def self.indexing_pipeline
@indexing_pipeline ||= super.dup.tap do |pipeline|
# Override the default indexing pipeline to add our application-specific logic; in this case, the `#to_solr` method will be
# called on the source object (which.. because we don't override the `pipeline.sources` at all.. is just the resource instance itself)
pipeline.transforms = [Spotlight::Etl::Transforms::SourceMethodTransform(:to_solr)] + pipeline.transforms
end
end
def to_solr
{ id: id, title_field: xml_document.xpath('//title'), ... }
end
end
Other examples of this new pattern include:
- https://github.com/projectblacklight/spotlight/blob/master/app/models/spotlight/resources/iiif_harvester.rb
- https://github.com/projectblacklight/spotlight/blob/master/app/models/spotlight/resources/upload.rb
- https://github.com/sul-dlss/exhibits/blob/master/app/models/dor_harvester.rb
- https://github.com/sul-dlss/exhibits/blob/master/app/models/canvas_resource.rb
Other backwards compatibility notes
- Spotlight 2 exhibit exports may not import cleanly into Spotlight 3 applications
Thanks
v2.13.0
v2.12.1
v2.12.0
- Fixes bug where uploaded images are no longer able to be viewed in a IIIF viewer #2222
- HTML
lang
attribute should now reflect the current i18n locale #2247
Thank you to all release contributors!
@camillevilla @cbeer @dunn @mejackreed
v2.11.0
- Add UI controls for making a user a site administrator #2215
- Fix a regression in generating IIIF manifests for sites served over https (#2217)
Thank you to all release contributors!
@camillevilla @dunn
v2.10.0
- Allow importing IIIF manifests with multilingual metadata #2209
- Allow curators to specify exhibit-specific configuration for search fields #2208
- Add some configuration to allow uploaded field mappings to provide processing directives #2110
- Allow Spotlight applications to use an external (non-riiif) IIIF server for image derivative requests #2203
Thank you to all release contributors!
@camillevilla @cbeer @dunn @jkeck @mejackreed