Skip to content

v3.0.0-rc1

Pre-release
Pre-release
Compare
Choose a tag to compare
@no-reply no-reply released this 12 Sep 20:38

Hyrax 3.0.0 is a substantial release featuring a wide variety of UI improvements, metadata updates, and bugfixes as well as significant internal improvements.

The highlights for this release include:

  • Support for Rails 5.2 and Ruby 2.6 are added; we now recommend Rails 5.2 for all applications.
  • Out-of-the-box metadata schemas are updated to more closely align with the recommendations of the Samvera Metadata Interest Group.
  • File versions and transparent PNGs are now supported by our IIIF installation. Universal Viewer's install process is improved to use yarn.
  • Valkyrie is introduced as a production dependency and a custom adapter (Wings) is introduced to handle backward-compatible use of Valkyrie within Hyrax. (see more on this below)

Wings/Valkyrie

This release marks a major milestone in the transition from ActiveFedora to Valkyrie as Hyrax's persistence middleware. The introduction of Wings has allowed us to transition some portions of the Hyrax codebase to using Valkyrie natively. Likewise it allows adopters to begin the transition to Valkyrie within their own applications in a limited fashion.

At this point, we encourage early-adopters to explore using Wings through native Valkyrie interfaces and provide feedback about its suitability in Hyrax-based applications. Existing ActiveFedora models can be cast to auto-generated Valkyrie resource classes by using resource = my_object.valkyrie_resource.

A broader usage guide for Wings and Valkyrie is provided at https://github.com/samvera/hyrax/wiki/Hyrax-Valkyrie-Usage-Guide

Currently, the internal Wings adapter is the only supported Valkyrie adapter. We expect to support other adapters, and eventually deprecate Wings in future releases.

CircleCI

In support of development efforts, we migrated our CI builds from Travis to CircleCI. This has allowed us to substantially reduce build times, increasing developer productivity. It has also allowed us to expand Hyrax's build matrix: we now run builds for Ruby 2.4, 2.5 and 2.6 in parallel, helping us ensure comprehensive support for those Ruby versions.

Migration Procedures from Hyrax 2.x to 3.0

The following steps describe the process for migrating to Hyrax 3. The steps should be run in the order presented.

Update gem

Edit Gemfile or gemspec to update the version of hyrax.

gem 'hyrax', '3.0.0.pre.beta2`

and run

bundle update hyrax

Database: Application DB changes are all covered by db:migrate

Run migrations to get database changes...

rails hyrax:install:migrations
rails db:migrate

IIIF & Universal Viewer

The Universal Viewer install is now managed by yarn. Ensure UV is installed correctly by running the provided install rake task:

rake hyrax:universal_viewer:install

The number of arguments needed by the iiif_image_url_builder lambda changed.
Applications that use the riiif gem for IIIF will need to add format to the iiif_image_url_builder lambda in config/initializers/hyrax.rb.

config.iiif_image_url_builder = lambda do |file_id, base_url, size, format|

Changes

Incompatible API changes

  • Dropped support for Ruby 2.3 (#3566)
  • Show for license has moved from app/views/hyrax/base/_metadata.html.erb to app/views/hyrax/base/_attribute_rows.html.erb (#3153).
    • If you have local view overrides for _attribute_rows.html.erb but not _metadata.html.erb, this will orphan the license field in the show view. Fix this by adding <%= presenter.attribute_to_html(:license, render_as: :license, html_dl: true) %> to your custom _attribute_rows.html.erb.
  • Renames two database columns to names to avoid camelCase: itemId -> item_id, downloadKey -> download_key (#3121)
  • Removes Solrizer::Common from the Hyrax::WorkBehavior ancestor tree (#3399)
  • Deprecated member_of_collection_ids interface removed from CollectionsMembershipActor; use member_of_collections_attributes instead (#3428)
  • Removes code deprecated during the Hyrax 2.x series (#3401)
  • Use Hydra.config.user_key_field to determine User#user_key (#3480)
  • Change Solr search builders to use [* TO *] for date range searches (#3559)
  • Solr configuration is now loaded from ./solr/conf by default, matching the Blacklight approach (#3915)
  • Drop support for browse everything versions older than 0.16, add support for 1.0+ (#3879, #3645)
  • Drop support for hydra-head releases older than 10.6.1(#3495)
  • The universal viewer install process has changed to use yarn/rake assets:precompile (#3765, #3761, #3696)
  • config.iiif_image_url_builder's method signature has changed (#3760)

User Interface

  • Improve Generic Work layout and button organization (#3374)
  • Use versioned images in IIIF and universal viewer (#3764)
  • Support rendering PNGs with alpha channels with IIIF and universal viewer (#3760)
  • Improve thumbnail cache behavior (#3764)
  • Makes Admin Sets Participants tab consistent with Collections Sharing tab (#3384)
  • Fixes punctuation error in help text (#3368)
  • Generic Login Form employs Bootstrap conventions (#3362)
  • Make thumbnails the same size as thumbnails in Works list view (#3446)
  • Ensure dashboard collection list item thumbnails don't overlap with title (#3446)
  • Change description label from "Abstract or Summary" to "Description" (#3449)
  • Ensure collection thumbnails show properly in search results (#3291)
  • Remove Hyrax::Actors::TransactionalRequest from default middleware (#3482)
  • Backport of #3164 - Collection Thumbnails don't show in search results (#3658)
  • Add new option for how to contribute (#3751)
  • Relabel the links for private child works from 'File' (#3740)
  • When downloading from Box, use label for filename (#3718)
  • When tabbing in relationship tab, allow user to reach "Add" buttons. (#3709)
  • Avoid silent removal of unsaved form changes when changing tabs in 'Edit Collection' by prompting the user (#3942)
  • Improve padding for the navbar on mobile devices (#3944)
  • Improve breadcrumbs on work pages (#3914)
  • Improve display of collection item lists to avoid overlapping elements (#3913)
  • Remove Google+ from sharing buttons (#3894)
  • Make Add files and Add folder buttons to work with tab key navigation (#3488)
  • Fix display of feature/unfeature buttons (#3776)
  • Center headings in work listed in dashboard. (#3759)

Metadata

  • Add rights_notes metadata to BasicMetadata (#3550)
  • Add access rights metadata to a work. (#3749)
  • Remove keyword from required fields (#3747)
  • Add abstract metadata to work (#3680)
  • Change predicate used by keyword (#3748)
  • Map license to dcterms:license (#3293)
  • Limit #title to single use, introduce dc:alternative for additional titles (#3554)

Solr field names

  • Replace use of set_fields with direct references to literal solr field names (#3831).
    • If you've been customizing index keys by overriding methods in ActiveFedora::Indexing::Fieldmapper or other Solrizer-related functionality, we recommend using a custom indexer or overriding a hyrax indexer instead.

Bug Fixes

  • Prevents creation of multiple FileSets when AttachFilesToWorkJob is retried after an uncaught error (#3407)
  • Sanitize IIIF manifest output (#3395)
  • Fix template url and update rails version (#3755)
  • Add mime_type to the Riiif info_service (#3752)
  • Increase Google Analytics download limit to 10,000, supporting usage stats from more than 1000 days ago (#3926)
  • Fix generator for analytics configuration to use ENV variables correctly (#3934)
  • Prevent users from making themselves a proxy depositor (#3909)
  • Verifiy the validity of the URL supplied by users for the collection logo (#3789)
  • Use the original file's width and height instead of assuming 640x480 (#3772)

Internationalization

  • Improve coverage of i18n keys (#3535, #3564, #3898)
  • New form hint translation (#3396)
  • Email text are moved to locales (#3383)
  • Extract and translate strings. (#3708)
  • use explicit utf-8 character for German Guillemets' (#3786)

Refactors

  • Homepage layout includes more room for customization and nav pills have been changed to tabs (#3375)
  • Extract VisibilityIntention class from InterpretVisibilityActor (#3462)
  • Remove unneeded #save of embargoes and leases during InterpretVisibilityActor (#3462)
  • Make CreateWithRemoteFilesOrderedMembersActor thread safe (#3477)
    • Reverted with "Move instance variable out of actor and into environment" (#3703)
  • Add DestroyWork transaction to experimental Dry::Transactions actor stack alternative (#3473)
  • Remove conditional from user partial (#3380)
  • Remove internal references to ActiveFedora::Base.logger, use Hyrax.logger instead (#3901)
  • Replace Hydra::Works::VirusCheck and Hydra::Works::VirusScanner with Hyrax::VirusCheck and Hyrax::VirusScanner (#3901)
  • Raise Hyrax::ObjectNotFoundError in place of ActiveFedora::ObjectNotFoundError. Applications should move to catching the former. (#3840)
  • Don't short-circut actor Environment when interpreting visibility (#3892)
  • Support custom dashboard sidebar partials rendered using sidebar_partials class attribute (#3878)
  • Refactor WorkForm#agreement_accepted to agreement_accepted? (#3890)
  • Use Arel.sql to wrap a known safe SQL string in PermissionsService (#3888)
  • Add original_file.id to FileSetIndexer (#3864)
  • Remove direct dependency on ActiveFedora.id_field (#3809)
  • Refactor for configurable ActiveFedora.index_field_mapper (#3802)
  • Extract Visibility application to a Hyrax::VisibilityIntentionApplicator service for reusability (#3468)

Deprecations

  • Deprecate ActiveFedora::SolrService in favor of Hyrax::SolrService (#3943)

Dependencies

  • Added support for Ruby 2.6; dropped 2.3 (#3565, #3566)
  • Add valkyrie as a production dependency (#3563)
  • Upgrade riiif gem to 2.0 (#3390)
  • Upgrade to ActiveFedora 12.0 (#3425)
  • Upgrade hydra-head to releases 10.6.1 or later (#3495)
  • Move internal dependencies into the main Engine body (#3686)
  • Drop support for browse everything versions older than 0.16, add support for 1.0+ (#3879, #3645)