Skip to content

Releases: samvera/hyrax

v3.0.2

07 May 22:55
2a12c7c
Compare
Choose a tag to compare

This release adds support for Rails 5.2.6 and other releases containing the fix for CVE-2021-22885.

Bug Fixes:

  • Use symbols for polymorphic_path arguments (#4937)
  • Ensure that no exception is raised when giving an embargo date set in the past (#4885)
    • This relates to introducing the improved permission handling from #3166 and how form data is passed in.
  • Disable validations preventing saves for existing Embargoable objects with past release dates (#4939; #4942)

Deprecations:

  • Deprecate an unused code path Hyrax::PersistDerivatives#derivative_path_factory (#4840)
  • Deprecate WorkShowPresenter#member_presenter_for, use #member_presenters instead (#4902)

Notable Refactors:

  • Re-organize inheritance hierarchy of Collection Search Builders so all inherit from Hyrax::CollectionSearchBuilder (#4822)
  • Use a Valkyrie storage adapter to configure & handle Collection Branding image uploads (#4836)
  • Rework some Search Builders and DashboardHelperBehavior to avoid using ActiveFedora code for Solr queries (#4910; #4929)

Valkyrie Model Support:

  • Don't break on UrlHelper load if models aren't ActiveModel conformant (#4848)
  • Remove hard-coded Wings dependencies from autoload paths
    • this makes Wings an optional dependency for applications

Thanks to everyone who contributed, including the Hyrax Maintenance Working Group and participants in the (virtual) Developer Congress held this week.

tamsin johnson, Rob Kaufman, Matt Critchlow, Jeremy Friesen, E. Lynette Rayle, Daniel Pierce, Collin Brittle, Chris Colvard, Brandon R. Straley, Benjamin Kiah Stroud, Alexandra Dunn made contributions logged in Git since 3.0.1.

v2.9.5

07 May 23:03
Compare
Choose a tag to compare

This release adds support for Rails 5.2.6 and other releases containing the fix for CVE-2021-22885.

Bug Fixes:

  • Use symbols for polymorphic_path arguments (#4944; backports #4937)
  • Adding rendering of lease related error messages (#4890; backports #4889)
  • Use file_size_lts solr field for SolrDocument#file_size (#4811)
  • Wrap stringy sql in Arel.sql for pluck calls, fixing "dangerous query" warnings (#4818; backports #3888)

v3.0.1

31 Mar 22:19
Compare
Choose a tag to compare

Issue Fixes

  • use a button for FS actions when only download action is available (#4830)
  • add logging/warnings when we don't know how to propagate visibility (#4831)
  • display real alt text for banners in the form (#4838)
  • wrap riiif initializer in a Reloader (#4843)
    • this fix should only impact development environments, but changes the RIIIF initializer generated into new applications. existing apps may want to make similar updates to fix this issue in their local development environment.

Deprecations

  • Hyrax::PersistDerivatives.derivative_path_factory is unused internally. External callers should use Hyrax::DerivativePath (or their preferred path service) directly. (#4840)

Wings/Valkyrie

  • add support to Valkyrie's #count_all_of_model query to Wings' query service. (#4810)
  • cleanup FileSet members when deleting works with Valkyrie models (#4828)
  • cleanup Trophies when deleting works with Valkyrie models (#4829)
  • provide a hook for skipping Wings (e.g. to use another Valkyrie adapter w/out loading ActiveFedora models) (#4841)
    • use Hyrax.config.disable_wings = true or set the environment variable HYRAX_SKIP_WINGS=true, to prevent the engine from loading wings setup.

v.3.0.0

24 Mar 20:31
Compare
Choose a tag to compare

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.7 are added; we now recommend Rails 5.2 for all applications.
  • We dropped testing for Ruby 2.4; we now recommend at least Ruby 2.5 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.5, 2.6 and 2.7 in parallel, helping us ensure comprehensive support for those Ruby versions.

We have moved away from testing CircleCI with sqlite and are now using Postgresql (see @d0b0c2034). We assume that local development will also use Postgresql.

We have worked to improve the stability of our test suite and focused on speed of tests. We're now seeing our test suite regularly complete in less than 15 minutes.

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'

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

There is a new migration that will convert a database column from string to integer (see e9e9f65). The column type should have always been an integer.

IIIF & Universal Viewer

UV

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

Afterwards, running yarn or rake assets:precompile as part of the deployment process will install additional UV files to /public/uv. You may consider adding this directory to your .gitignore file.

IIIF

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|

TinyMCE

The TinyMCE editor has been updated to 5.x and now correctly loads the tinymce.yml config file. Applications should check that this file is valid for the updated TinyMCE. The new default file can be found at lib/generators/hyrax/templates/config/tinymce.yml in the hyrax gem.

Changes

Incompatible API changes

  • Dropped support for Ruby 2.3 and 2.4 (#3566, #3973)
  • Dropped support for Ruby 2.4 (#4371)
  • 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)
  • Flip batch upload field to be off by default (#4129)
  • 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)
  • Remove deprecated PresenterFactory.build_presenters (#4038)
  • Remove deprecated CollectionOptionsPresenter (#4037)
  • Remove deprecated WorkForm#collections_for_select (#4036)
  • Remove deprecated human_readable_type setter (#4035)
  • 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)
  • You'll want to review if you've over-written Hyrax::UsersController#base_query; We recommend that you use ActiveRecord::Base.where parameter syntax (#4407, #4400)

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)
  • Allow injection of new sections in form progress panel (#4453)
  • Stop triggering autocomplete for non-auto complete fields (#4451)
  • Create a better label for proxy deposits (#4378)
  • Links from Profile page show users collections and works (#4322)
  • Add a default health check endpoint at /healthz (#4291, #4292)
  • Remove collection size feature due to negative performance (#4207)
  • Add a ChildTypes to manage selection display during work attachment (#4181)
  • Decode filenames for fileset label (#4172)
  • Display analytics without having to refresh browser (#4170)
  • Broken logo image should not display broken link icon (#4168)
  • Fixed heading to center footer on public Collections view (#4518)

Documentation

  • Update work generator usage documentation (#4187)
  • Add examples to Hyrax::AccessControlList documentation (#4174)
  • Add documentation on using Postgresql locally as part of test app development build (#4397)

Enhancements

  • Format informative errors for workflow schema validation (#4028, #267)
  • Provide patterns and infrastructure for assiging remote identifiers (DOI, Handle, etc.) (#4458)
  • Delegate IIIF Manifest cache key version to presenter (#4418)
  • Open the ContactFormController to model subclasses (#4374)
  • Add a object.failed_deposit event (#4352)
  • Allow apps to forgo a custom ModelActor (#4339)
  • Support optimistic locking for ResourceForm (#4337)
  • Allow most recent version of file to be downloaded (#4336)
  • Extend MembershipHelper and ResourceForm for member_ids (#4321)
  • Adding Caching to IIIF Manifest Generation (#4275)
  • Adds Hyrax.publisher.subscribe(Hyrax::Listeners::MetadataIndexListener.new) to config/initializers/listeners.rb (#4218)
  • Adds publishing an object.metadata.updated event to t...
Read more

v2.9.4

22 Feb 19:05
Compare
Choose a tag to compare
  • CatalogController in freshly generated Hyrax app defaults to POST solr requests which allows for large requests with many clauses (backport of #4728)
  • Fix saving of new file versions when running background jobs on separate server (backport of #4165)

v2.9.3

08 Jan 21:10
Compare
Choose a tag to compare

Removes dependency on ES6.

v2.9.2

04 Jan 21:15
Compare
Choose a tag to compare

this bugfix release fixes several issues with serving IIIF manifests over https. these issues were introduced in 2.9.0, and affect primarily Hyrax applications deployed behind SSL termination.

Bugfixes

  • pass base_url, not just hostname through to manifest generation (#4663)

v2.9.0

28 Jul 17:11
7588d78
Compare
Choose a tag to compare

This release backports several significant improvements from 3.0 release candidates.

This includes a complete rewrite of the Hyrax code involved in IIIF manifest generation resulting in a massive speed-up of manifest generation and show view page loads for works with many image FileSets. The work in this direction includes an experimental feature flipper for caching manifests in the Rails cache; Which we have default to no caching, but adopters can "flip" to enable caching. Ultimately we found caching wasn't necessary to achieve desirable page load times even for works with hundreds of FileSets. Sites may need to reindex existing Works and FileSets to access the full extent of these performance improvements. Thanks to @jeremyf for initial work on manifest performance and caching, and to Trinity College Dublin for funding the larger manifest presenter rewrite.

In order to avoid view overrides in applications and allow for easier plugin development two new extension points were added in the work form view. Tabs can be supplemented or reordered and additional form progress sections can be injected by overriding helpers. Details on how to do this are in #4450 and #4456.

Another notable feature addition is an abstract API for "remote identifiers" (e.g. Handle, DOI, ARK). Thanks to @cjcolvar and Ubiquity Press for their efforts to extract these patterns from prior work in Hyrax applications.

Features

  • IIIF manifest rewrite. (#4412, #4419, #4446)
  • IIIF manifest caching (experimental; feature flipper) (#4412)
    • We recommend leaving this feature flipper off, for now. Caching manifests introduces complexity which applications should opt-in to carefully.
    • This includes a utility job (IiifManifestCachePrewarmJob) for pre-warming the cache for a given Work. This job is not called by default, but can be used by applications to support local caching needs.
  • Support data attribute based autocomplete types in forms. (#4449)
  • Provide patterns and infrastructure for assigning remote identifiers (#4465)
  • Allow for injection of new sections in form progress panel (#4456)
  • Allow for injection of new tabs on edit page (#4450)

Accessibility

  • Add aria-label for sidebar navigation on Dashboard. Fixes issue #4003. (#4392)

Bugfix

  • Stop triggering autocomplete for non-auto complete fields in Work Form (#4449)

v3.0.0.pre.rc2

24 Jul 13:08
Compare
Choose a tag to compare
v3.0.0.pre.rc2 Pre-release
Pre-release

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, Ruby 2.6, Ruby 2.7 are added; we now recommend Rails 5.2 for all applications.
  • We dropped testing for Ruby 2.4; we now recommend at least Ruby 2.5 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.5, 2.6 and 2.7 in parallel, helping us ensure comprehensive support for those Ruby versions.

We have moved away from testing CircleCI with sqlite and are now using Postgresql (see @d0b0c2034). We assume that local development will also use Postgresql.

We have worked to improve the stability of our test suite and focused on speed of tests. We're now seeing our test suite regularly complete in less than 15 minutes.

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.rc2`

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

There is a new migration that will convert a database column from string to integer (see @e9e9f65e1a81f78856afeafdb5bba3b726d070aa). The column type should have always been an integer.

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)
  • Dropped support for Ruby 2.4 (#4371)
  • 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)
  • Remove deprecated PresenterFactory.build_presenters (#4038)
  • Remove deprecated CollectionOptionsPresenter (#4037)
  • Remove deprecated WorkForm#collections_for_select (#4036)
  • Remove deprecated human_readable_type setter (#4035)
  • 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)
  • You'll want to review if you've over-written Hyrax::UsersController#base_query; We recommend that you use ActiveRecord::Base.where parameter syntax (#4407, #4400)

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)
  • Allow injection of new sections in form progress panel (#4453)
  • Stop triggering autocomplete for non-auto complete fields (#4451)
  • Create a better label for proxy deposits (#4378)
  • Links from Profile page show users collections and works (#4322)
  • Add a default health check endpoint at /healthz (#4291, #4292)
  • Remove collection size feature due to negative performance (#4207)
  • Add a ChildTypes to manage selection display during work attachment (#4181)
  • Decode filenames for fileset label (#4172)
  • Display analytics without having to refresh browser (#4170)
  • Broken logo image should not display broken link icon (#4168)

Documentation

  • Update work generator usage documentation (#4187)
  • Add examples to Hyrax::AccessControlList documentation (#4174)
  • Add documentation on using Postgresql locally as part of test app development build (#4397)

Enhancements

  • Format informative errors for workflow schema validation (#4028, #267)
  • Provide patterns and infrastructure for assiging remote identifiers (DOI, Handle, etc.) (#4458)
  • Delegate IIIF Manifest cache key version to presenter (#4418)
  • Open the ContactFormController to model subclasses (#4374)
  • Add a 'object.failed_deposit' event (#4352)
  • Allow apps to forgo a custom ModelActor (#4339)
  • Support optimistic locking for ResourceForm (#4337)
  • Allow most recent version of file to be downloaded (#4336)
  • Extend MembershipHelper and ResourceForm for member_ids (#4321)
  • Adding Caching to IIIF Manifest Generation (#4275)
  • Adds Hyrax.publisher.subscribe(Hyrax::Listeners::MetadataIndexListener.new) to config/initializers/listeners.rb (#4218)
  • Adds publishing an object.metadata.updated event to the after_create_concern callback. (#4218)
  • Use a Hyrax configuration option to set the system virus scanner (#4211)
  • Make the valkyrie index adapter configurable (#4148)
  • Use the Hyrax::TimeService for events (#4130)
  • Turn off Batch Upload features by default (#4129)

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 add...
Read more

v3.0.0-rc2

24 Jul 18:22
Compare
Choose a tag to compare
v3.0.0-rc2 Pre-release
Pre-release

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, Ruby 2.6, Ruby 2.7 are added; we now recommend Rails 5.2 for all applications.
  • We dropped testing for Ruby 2.4; we now recommend at least Ruby 2.5 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.5, 2.6 and 2.7 in parallel, helping us ensure comprehensive support for those Ruby versions.

We have moved away from testing CircleCI with sqlite and are now using Postgresql (see @d0b0c2034). We assume that local development will also use Postgresql.

We have worked to improve the stability of our test suite and focused on speed of tests. We're now seeing our test suite regularly complete in less than 15 minutes.

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.rc2`

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

There is a new migration that will convert a database column from string to integer (see @e9e9f65e1a81f78856afeafdb5bba3b726d070aa). The column type should have always been an integer.

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)
  • Dropped support for Ruby 2.4 (#4371)
  • 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)
  • Remove deprecated PresenterFactory.build_presenters (#4038)
  • Remove deprecated CollectionOptionsPresenter (#4037)
  • Remove deprecated WorkForm#collections_for_select (#4036)
  • Remove deprecated human_readable_type setter (#4035)
  • 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)
  • You'll want to review if you've over-written Hyrax::UsersController#base_query; We recommend that you use ActiveRecord::Base.where parameter syntax (#4407, #4400)

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)
  • Allow injection of new sections in form progress panel (#4453)
  • Stop triggering autocomplete for non-auto complete fields (#4451)
  • Create a better label for proxy deposits (#4378)
  • Links from Profile page show users collections and works (#4322)
  • Add a default health check endpoint at /healthz (#4291, #4292)
  • Remove collection size feature due to negative performance (#4207)
  • Add a ChildTypes to manage selection display during work attachment (#4181)
  • Decode filenames for fileset label (#4172)
  • Display analytics without having to refresh browser (#4170)
  • Broken logo image should not display broken link icon (#4168)

Documentation

  • Update work generator usage documentation (#4187)
  • Add examples to Hyrax::AccessControlList documentation (#4174)
  • Add documentation on using Postgresql locally as part of test app development build (#4397)

Enhancements

  • Format informative errors for workflow schema validation (#4028, #267)
  • Provide patterns and infrastructure for assiging remote identifiers (DOI, Handle, etc.) (#4458)
  • Delegate IIIF Manifest cache key version to presenter (#4418)
  • Open the ContactFormController to model subclasses (#4374)
  • Add a 'object.failed_deposit' event (#4352)
  • Allow apps to forgo a custom ModelActor (#4339)
  • Support optimistic locking for ResourceForm (#4337)
  • Allow most recent version of file to be downloaded (#4336)
  • Extend MembershipHelper and ResourceForm for member_ids (#4321)
  • Adding Caching to IIIF Manifest Generation (#4275)
  • Adds Hyrax.publisher.subscribe(Hyrax::Listeners::MetadataIndexListener.new) to config/initializers/listeners.rb (#4218)
  • Adds publishing an object.metadata.updated event to the after_create_concern callback. (#4218)
  • Use a Hyrax configuration option to set the system virus scanner (#4211)
  • Make the valkyrie index adapter configurable (#4148)
  • Use the Hyrax::TimeService for events (#4130)
  • Turn off Batch Upload features by default (#4129)

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 add...
Read more