About Features Downloads Getting Started Documentation Events Support GitHub

Love VuFind®? Consider becoming a financial supporter. Your support helps build a better VuFind®!

Site Tools


Warning: This page has not been updated in over over a year and may be outdated or deprecated.
changelog

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
changelog [2020/07/01 10:34] – [Release 7.0 - coming 7/20/2020] demiankatzchangelog [2024/03/21 14:57] (current) – [Release 10.0 - currently in development] demiankatz
Line 1: Line 1:
-====== VuFind Change Log ======+====== VuFind® Change Log ======
  
 // When adding a new release, see the [[changelog:release_checklist|release checklist]]. // // When adding a new release, see the [[changelog:release_checklist|release checklist]]. //
  
-===== Release 7.0 - coming 7/20/2020 =====+===== Release 10.0 - currently in development ===== 
 + 
 +New features: 
 + 
 +  * Rendering of search results has been improved to take advantage of Javascript where available for a more responsive and accessible user experience. This functionality is on by default but can be disabled if unwanted; see [[https://github.com/vufind-org/vufind/pull/2929|pull request #2929]]. 
 +  * [[configuration:authentication#persistent_login|Persistent logins]] ("remember me" functionality) can now be optionally enabled. 
 +  * An optional "explain" feature can now be enabled in Solr-based search backends to visually explain relevance ranking of individual search results; see [[https://github.com/vufind-org/vufind/pull/3069|pull request #3069]] for details. 
 +  * On-screen virtual keyboards can now be enabled through searchbox.ini if needed; see [[https://github.com/vufind-org/vufind/pull/2952|pull request #2952]] for more details. 
 +  * The user interface for browsing full facet lists now includes a "filter" text input when the underlying index supports filtering functionality. In this release, only Solr facets with translation disabled are supported. See [[https://github.com/vufind-org/vufind/pull/2991|pull request #2991]] for more details. 
 +  * Favorite lists now support multi-page selection (i.e. checkbox states persist across multiple pages of results) for bulk actions; this new option is enabled by default but can be disabled. See [[https://github.com/vufind-org/vufind/pull/3142|pull request #3142]] for details. 
 +  * Translation strings can now optionally use the ICU MessageFormatter syntax to allow more sophisticated conditional translation (e.g. to handle plural forms); see [[https://github.com/vufind-org/vufind/pull/3286|pull request #3286]] for details. 
 +  * The content, order and behavior of the user account menu can now be customized using the new AccountMenu.yaml configuration file. See [[https://github.com/vufind-org/vufind/pull/3415|pull request #3415]] for details. 
 +  * The new Databases recommendation module can be used to display links to external databases based on facet values found in search results. It is primarily designed for use with EDS and LibGuides, but it is adaptable to other scenarios. See [[https://github.com/vufind-org/vufind/pull/3160|pull request #3160]] for details. 
 +  * The new ConsortialVuFind recommendation module can be enabled to search a third-party VuFind® instance using the public API in order to display additional results. See [[https://github.com/vufind-org/vufind/pull/3270|pull request #3270]] for details. 
 +  * Pagination controls can now optionally be added at the top of search result screens via the new top_paginator setting. See [[https://github.com/vufind-org/vufind/pull/3034|pull request #3034]] for details. 
 +  * Bound-with records can now be displayed in holdings using data retrieved from the ILS (where supported -- currently only in FOLIO). 
 +  * The new [HiddenSorting] section of backend-specific configuration files (searches.ini, etc.) makes it possible to enable sort options without adding them to the user-facing sort control, for use cases where sort options are valuable in direct links but not through the user interface. See [[https://github.com/vufind-org/vufind/pull/3237|pull request #3237]] for details. 
 +  * The new [[configuration:ils:composed_driver|Composed ILS driver]] can be used to pull together functionality from multiple drivers to represent a single system. See [[https://github.com/vufind-org/vufind/pull/3112|pull request #3112]] for details. 
 +  * The "new items" search can now use a different default sort than other search types, and it can be configured to display facet values for pre-filtering. See [[https://github.com/vufind-org/vufind/pull/3269|pull request #3269]] for details. 
 +  * When using EZProxy, you can now control which URLs get prefixed and which do not via a web service like [[https://github.com/lehigh-university-libraries/ezproxy-url-checker|ezproxy-url-checker]]; see [[https://github.com/vufind-org/vufind/pull/3199|pull request #3199]] for details. 
 +  * The [[development:architecture:record_data_formatter|RecordDataFormatter]] now supports a dataMethodParams configuration option which can be used to pass arguments to the dataMethod. See [[https://github.com/vufind-org/vufind/pull/3189|pull request #3189]]. 
 +  * The [[development:architecture:record_data_formatter|RecordDataFormatter]] can now be configured via RecordDataFormatter.ini, allowing customization of record views without code changes. See [[https://github.com/vufind-org/vufind/pull/3193|pull request #3193]]. 
 +  * The Primo module now supports display of citation/cited-by lists for eligible records. 
 +  * Deep searching within nested collections can now be enabled with some extra indexing and the new search_container_id_field  setting. See the [[indexing:hierarchies_and_collections|Hierarchies and Collections]] page and [[https://github.com/vufind-org/vufind/pull/3182|pull request #3182]] for more details. 
 +  * It is now possible to create an aliases.ini file within a language directory to set up translation aliases; see [[https://github.com/vufind-org/vufind/pull/3249|pull request #3249]] for details. 
 +  * Language names are now internationalized by default (in facets and record displays); see [[https://github.com/vufind-org/vufind/pull/3200|pull request #3200]] for details. 
 +  * Māori language support has been added to the user interface. 
 + 
 +Possible backward compatibility breaks:  
 + 
 +  * :!: The minimum PHP version requirement has been raised to 8.1, as earlier versions are no longer supported by the PHP community. Please make sure your server is running a supported version before upgrading. 
 +  * :!: A full reindex of the Solr index is required due to the upgrade to Solr 9.5.0; it will also allow you to take advantage of changes to the schema. See the [[development:architecture:solr_index_schema#vufind_100|index schema changelog]] for details. 
 +  * :!: Be sure to run a database upgrade to reflect table changes (see also the [[development:architecture:database_schema#release_100|database changelog]]). 
 +  * :!: The default theme has been changed from bootprint3 to sandal; the bootprint3 theme will eventually be retired, so if you are using it as the foundation for your local theme, you should consider revisions. 
 +  * :!: The new load_results_with_js setting is on by default for all search backends to improve the user search experience. This causes some changes to the user interface, most significantly changing the summary at the top of the search results to include navigation buttons and more concise text. If necessary, this behavior can be changed via settings added to searches.ini and other backend-specific configuration files in [[https://github.com/vufind-org/vufind/pull/2929|pull request #2929]]. 
 +  * :!: The isLoggedIn() method of \VuFind\Auth\Manager and \VuFind\View\Helper\Root\Auth has been deprecated, since returning an object from a method with a Boolean name was potentially confusing. You should use getIdentity() or getUserObject() instead. Use getIdentity() if you only need a basic login status from the RBAC system; use getUserObject if you need to interact with VuFind®-specific user properties. 
 +  * :!: The \VuFind\Db\Entity\UserEntityInterface has been introduced as an abstraction to reduce dependence on any specific database framework. Several constructors and methods with \VuFind\Db\Row\User typehints have been updated to use the new interface instead. See [[https://github.com/vufind-org/vufind/pull/3478|pull request #3478]] and [[https://github.com/vufind-org/vufind/pull/3500|pull request #3500]] for details. 
 +  * :!: Code related to encryption of passwords has been refactored to the \VuFind\Auth\ILSAuthenticator. The getCatPassword() and encryptOrDecrypt() methods of \VuFind\Db\Row\User have been deprecated. Several constructor signatures have changed (\VuFind\Auth\CAS, \VuFind\Auth\ILSAuthenticator, \VuFind\Auth\LDAP, \VuFind\Auth\Shibboleth, \VuFind\Auth\SimulatedSSO, \VuFind\OAuth2\Entity\UserEntity and \VuFind\OAuth2\Repository\IdentityRepository). See [[https://github.com/vufind-org/vufind/pull/3537|pull request #3537]] for details. 
 +  * :!: The \VuFind\Search\QueryAdapter and related query minification/deminification logic has been significantly refactored to eliminate static methods and improve customizeability. This impacts \VuFind\Search\Base\Params, VuFind\Search\Base\Results and their subclasses and \VuFind\Search\Minified as well as the aforementioned QueryAdapter. Since this code was previously difficult to customize, this probably has limited impact on custom code, but if you have customized logic in these areas, see [[https://github.com/vufind-org/vufind/pull/3358|pull request #3358]] for details. 
 +  * :!: Javascript code driving the autocomplete feature has been refactored and moved from common.js to searchbox_controls.js. If you have customized this code, adjustments will be needed. See [[https://github.com/vufind-org/vufind/pull/3064|pull request #3064]] for details. 
 +  * :!: The past_days translation string has been revised to use ICU MessageFormatter syntax, and the Yesterday translation has been removed as redundant; if you use or have overridden these translation strings, you will need to make local adjustments. See [[https://github.com/vufind-org/vufind/pull/3286|pull request #3286]] for details. 
 +  * :!: Some redundant bulk-action-related language strings have been simplified and replaced with aliases (mostly those starting with "bookbag_"); other such strings have been renamed (from a "_selected" suffix to a "bulk_" prefix). If you have customized these strings, adjustments may be needed. See [[https://github.com/vufind-org/vufind/pull/3239|pull request #3239]] for details. 
 +  * :!: Language strings related to saved items have been renamed and consolidated; the old strings "Favorites", "My Favorites" and "Your Favorites" have been removed in favor of "default_list_title" and "saved_items". If you customized any of those old strings, you should move your customizations to the new keys. See [[https://github.com/vufind-org/vufind/pull/3489|pull request #3489]] for details. 
 +  * :!: The getResultTotal() method of Results objects can now return a -1 value, indicating that a result total cannot be determined (for example, when processing combined search results). If you have custom code using this value, you may need to add handling for this special case. 
 +  * :!: The SearchTabs view helper has been significantly simplified and refactored; local customizations may need to be adjusted to match. See [[https://github.com/vufind-org/vufind/pull/3309|pull request #3309]] for details. 
 +  * :!: Primo Central users are strongly encouraged to switch the api setting in Primo.ini from "legacy" to "rest" to take advantage of newer and more reliable APIs. The legacy connectors will be removed in the next release. See [[https://github.com/vufind-org/vufind/pull/3255|pull request #3255]] for details. 
 +  * :!: The language translation map used for indexing MARC records has been updated to use labels from the latest MARC standards. You should reindex all of your MARC records to ensure index consistency (and up-to-date language names). See [[https://github.com/vufind-org/vufind/pull/2933|pull request #2933]] for details. 
 +  * :!: Refactoring of the post-login redirect system has led to the replacement of the \VuFind\Controller\AbstractBase::getFollowupUrl() method with \VuFind\Controller\AbstractBase::getAndClearFollowupUrl(). If you have code that relies on the old method, please review [[https://github.com/vufind-org/vufind/pull/2941|pull request #2941]] and adjust it accordingly. 
 +  * :!: \VuFind\Auth\Manager has had some minor backward-breaking changes that may require updates to local subclasses or custom code. 
 +    * The constructor signature has changed to accommodate the new LoginTokenManager used by [[configuration:authentication#persistent_login|persistent logins]]. 
 +    * The protected updateUser() method now has a required second argument; see [[https://github.com/vufind-org/vufind/pull/3432|pull request #3432]]. 
 +  * :!: The constructor signatures of the CartController and MyResearchController have been adjusted to reduce direct dependency on the ServiceLocator. Custom subclasses may require adjustments. See [[https://github.com/vufind-org/vufind/pull/3239|pull request #3239]] for details. 
 +  * :!: Some code has been reorganized to prepare for future database library upgrades. 
 +    * \VuFind\RecordDriver\AbstractBase::addTags() has been deprecated in favor of \VuFind\Db\Service\TagService::addTagsToRecord() 
 +    * \VuFind\RecordDriver\AbstractBase::deleteTags() has been deprecated in favor of \VuFind\Db\Service\TagService::deleteTagsFromRecord() 
 +  * :!: The [[configuration:record_versions|record versions]] functionality has been simplified for consistency and maintainability. If you have customized any functionality related to versions, adjustments may be needed. See [[https://github.com/vufind-org/vufind/pull/3295|pull request #3295]] and [[https://github.com/vufind-org/vufind/pull/3300|#3300]] for full details; significant highlights: 
 +    * The \VuFind\Record\VersionsHelper and \VuFindSearch\Command\WorkExpressionsCommand classes are no longer needed and have been removed. 
 +    * The \VuFindSearch\Feature\WorkExpressionsInterface and its implementation in \VuFindSearch\Backend\Solr\Backend are no longer needed and have been removed. 
 +    * Some methods/method signatures have changed in \VuFindSearch\Query\WorkKeysQuery. 
 +    * Links to versions of records that are not found in the Solr index (i.e. legacy links to deleted records) will no longer work. 
 +  * :!: The ProxyManager library is no longer being maintained, so code relying upon it has been refactored. This has resulted in changes to the constructor signatures of \VuFind\Auth\ILSAuthenticator and \VuFind\Auth\Manager and to the behavior of \VuFind\Auth\ILSAuthenticatorFactory, \VuFind\Log\LoggerFactory and \VuFind\Session\SecureDelegatorFactory. See [[https://github.com/vufind-org/vufind/pull/3343|pull request #3343]] and [[https://github.com/vufind-org/vufind/pull/3390|pull request #3390]] for details. 
 +  * :!: A new SearchSettings view helper has been introduced to simplify template logic related to the display of checkboxes for the cart and bulk actions. See [[https://github.com/vufind-org/vufind/pull/3292|pull request #3292]] for details. 
 +  * :!: Some logic has been refactored from \VuFind\Controller\CombinedController into \VuFind\Search\Combined\Options to improve encapsulation. As a result, the constructor signature of the Options class has changed. See [[https://github.com/vufind-org/vufind/pull/3292|pull request #3292]] for details. 
 +  * :!: The signature of \VuFind\Search\SolrCollection\Params::initFromRecordDriver() has changed; if you have customized this in a subclass, you will need to adjust your method to match. See [[https://github.com/vufind-org/vufind/pull/3182|pull request #3182]] for more details. 
 +  * :!: The  \VuFindSearch\Backend\EDS\SearchRequestModel::endsWith() method has been removed, as it can now be replaced by the native PHP str_ends_with() function. Please switch to str_ends_with() if you were using this method in custom code. 
 +  * :!: Code related to displaying hierarchies of collections has been significantly revised and simplified. If you have custom tree-related code, it will likely need revision. See [[https://github.com/vufind-org/vufind/pull/3277|pull request #3277]] for full details. Highlights: 
 +    * jsTree is no longer used to render hierarchies and has been removed from the codebase. 
 +    * The JSTree TreeRenderer class has been replaced by a new HTMLTree class. 
 +    * XML hierarchy file support has been removed; all tree data is now stored and processed using JSON. 
 +    * Tree-related styles have been completely rewritten. 
 +  * :!: Code related to displaying hierarchical facets has been significantly simplified to eliminate the use of jsTree; if you have customized this code, local changes may be needed. See [[https://github.com/vufind-org/vufind/pull/3046|pull request #3046]]. Updates include constructor signature changes to \VuFind\AjaxHandler\GetSideFacets and \VuFind\Recommend\FavoriteFacets. 
 +  * :!: The constructor signature for \VuFind\View\Helper\Root\ProxyUrl has changed; local custom subclasses may require adjustments. See [[https://github.com/vufind-org/vufind/pull/3199|pull request #3199]] for details. 
 +  * :!: Error handling has been simplified in \VuFind\Controller\AjaxController to reduce the likelihood of errors getting missed; AJAX calls are now more likely to fail in development mode when PHP warnings or notices occur during processing, but this should help catch problems earlier instead of concealing them. See [[https://github.com/vufind-org/vufind/pull/3267|pull request #3267]] for details. 
 +  * :!: The \VuFind\Search\Base\Options::supportsFirstLastNavigation() method has been deprecated in favor of the more clearly-named recordFirstLastNavigationEnabled() method. The supporting protected $firstlastNavigation property has been removed. Custom code leveraging this code will need to be adjusted; see [[https://github.com/vufind-org/vufind/pull/3404|pull request #3404]] for details. 
 +  * :!: The signature and input of \VuFind\ILS\Driver\Folio::formatHoldingItem have changed slightly; see [[https://github.com/vufind-org/vufind/pull/3094|pull request #3094]] and make adjustments if you locally extend or utilize this method. 
 +  * :!: The \VuFind\Bootstrapper::initLocaleAndTimeZone() method has been renamed to initTimeZone(), since local initialization is no longer necessary. See [[https://github.com/vufind-org/vufind/pull/3526|pull request #3526]] for details. 
 +  * :!: Some constructor typehints have been broadened from \Laminas\Cache\Storage\Adapter\AbstractAdapter to \Laminas\Cache\Storage\StorageInterface. This change impacts \VuFind\Recommend\LibGuidesProfile, \View\Helper\Root\ProxyUrl and \VuFindSearch\Backend\EDS. See [[https://github.com/vufind-org/vufind/pull/3369|pull request #3369]]. 
 +  * :!: The CspNonce view helper has been deprecated in favor of the getNonce method in the Csp view helper, and it will be removed in release 11. The Csp view helper's constructor signature has changed to support this merger. In the unlikely event that you use or modify this helper in custom code, adjustments may be needed. See [[https://github.com/vufind-org/vufind/pull/3392|pull request #3392]]. 
 +  * :!: The [[https://github.com/vufind-org/vufind-browse-handler|alphabetical browse handler]] has been significantly updated; if you use a custom build of the handler or if you have modified the index-alphabetic-browse scripts, adjustments may be needed 
 +    * The project layout, code and build process have been modernized to use more up-to-date Java conventions, and Leech classes have been renamed to use more standardized terminology. See [[https://github.com/vufind-org/vufind-browse-handler/pull/48|pull request vufind-browse-handler#48]] for details. 
 +    * The index-alphabetic-browse scripts have been updated to use renamed options and classes (see [[https://github.com/vufind-org/vufind/pull/3253|pull request #3253]] for details). 
 +    * Some deprecated methods (org.vufind.solr.handler.BibDB::matchingIDs, org.vufind.solr.handler::getIds and org.vufind.solr.handler::setIds) have been removed; see [[https://github.com/vufind-org/vufind-browse-handler/pull/49|pull request vufind-browse-handler#49]]. 
 +  * :!: The signatures of the \VuFind\Controller\ContentController::getViewFor*() methods have been changed to improve flexibility; in the unlikely event that you have changed/extended these, see [[https://github.com/vufind-org/vufind/pull/3452|pull request #3452]] for necessary adjustments. 
 +  * :!: Javascript code no longer uses DOM CustomEvents, and event names have been revised. See [[https://github.com/vufind-org/vufind/pull/3361|pull request #3361]] if you have custom code that interacts with internal events; it will need to be revised based on these changes. 
 +  * :!: The .offcanvas CSS class in the bootstrap3 theme has been renamed to .vufind-offcanvas to prevent conflicts with an .offcanvas class introduced in newer versions of Bootstrap. If you rely on or customize this class in custom code, please adjust accordingly. See [[https://github.com/vufind-org/vufind/pull/3484|pull request #3484]] for details. 
 +  * :!: Code deprecated in release 9.x has now been removed: 
 +    * \VuFind\Auth\AbstractBase::getCannedPasswordPolicyHint() - use getCannedPolicyHint() instead. 
 +    * \VuFind\Recommend\SearchObject - use AbstractSearchObject instead. 
 +    * \VuFindSearch\Backend\EDS\Backend::debugPrint() and \VuFindSearch\Backend\EDS\Base::debugPrint() - use debug() instead. 
 +  * The protected \VuFindTheme\ThemeInfo::mergeWithoutOverride() method has been renamed, refactored and moved into \VuFind\Feature\MergeRecursiveTrait::mergeRecursive() for easier reuse. In the unlikely event that you have custom code relying on this method, minor adjustments will be needed; see [[https://github.com/vufind-org/vufind/pull/3417|pull request #3417]] for details. 
 +  * The \VuFind\View\Helper\Root\RecordDataFormatter\SpecBuilder::setDefaultPrioritizeAlt() method was removed as it is superseded by RecordDataFormatter.ini functionality; this method was introduced in release 9.1 and never used in core code, so the removal is unlikely to affect anyone. 
 +  * Historically, the event system has used a mix of "VuFindSearch" and "VuFind\Search" to namespace search-related events. While these old names will still be supported for backward compatibility, it is now recommended that you use \VuFindSearch\Service::class (the class name of the search service) as the event namespace for consistency. See [[https://github.com/vufind-org/vufind/pull/3497|pull request #3497]] for details. 
 +  * Javascript initialization has been revised and refactored for reduced redundancy and greater flexibility. Significant changes that could impact backward compatibility include refactoring additional logic from search/results.phtml into search/results-scripts.phtml and moving the initResultScripts Javascript function from combined-search.js into common.js. See [[https://github.com/vufind-org/vufind/pull/2878|pull request #2878]] for details. 
 +  * The "Favorites" controller plug-in now depends on \VuFind\Favorites\FavoritesService, and \VuFind\Favorites\FavoritesService::getListObject is now public, to reduce redundancy. See [[https://github.com/vufind-org/vufind/pull/2887|pull request #2887]] for details. 
 +  * The \VuFind\View\Helper\Root\RecordDataFormatter class now accepts a configuration object through its constructor; in the unlikely event that you have a custom subclass with a constructor, it will need to be adjusted to match. 
 +  * The "tag" help screen was removed, because it was no longer linked anywhere, and the content was out of date. See [[https://github.com/vufind-org/vufind/pull/3174|pull request #3174]]. 
 + 
 +===== Release 9.1.2 - currently in development ===== 
 + 
 +  * Minor bug fix release. 
 +  * :!: A bug fix to the conditional filter listener required a change to the constructor signature of \VuFind\Search\Solr\InjectConditionalFilterListener (and associated factory code). See [[https://github.com/vufind-org/vufind/pull/3513|pull request #3513]] for details. 
 +  * :!: Fixes to date range handling required signature changes to several methods in \VuFind\Search\Base\Params: formatDateForFullDateRange(), formatValueForNumericRange() and formatYearForDateRange(). In the unlikely event that you have extended these methods, adjustments may be needed. See [[https://github.com/vufind-org/vufind/pull/3465|pull request #3465]] for details. 
 +  * :!: Fixes to the switch_db_hash command line utility required a change to the constructor signature of \VuFindConsole\Command\Util\SwitchDbHashCommand. In the extremely unlikely situation that you have overridden this constructor, adjustments will be needed. See [[https://github.com/vufind-org/vufind/pull/3476|pull request #3476]] for details. 
 + 
 +===== Release 9.1.1 - 2/12/2024 ===== 
 + 
 +  * Minor bug fix / translation improvement release. 
 +  * Adds support for FOLIO's new RTR authentication mechanism (disabled by default until the feature is more widely available; see the legacy_authentication setting in Folio.ini) 
 +  * Includes the addition of Mongolian as a new interface language. 
 +  * :!: All translations of the tree_search_limit_reached_html string have been adjusted to remove the outgoing link. This rarely-seen link was invalid and has not worked correctly at any point in the project's history, so removing it seemed like the most appropriate solution. See [[https://github.com/vufind-org/vufind/pull/3274|pull request #3274]] for details. 
 +  * :!: Some method signatures changed as part of a bug fix to the LocalFile cover handler. In the very unlikely situation that you have customized this code, adjustments may be needed. See [[https://github.com/vufind-org/vufind/pull/3337|pull request #3337]]. 
 +  * :!: If you utilize the cover image proxy (most likely only true for Summon users), make sure that the coverproxyAllowedHosts setting in config.ini is set correctly. See [[https://github.com/vufind-org/vufind/pull/3385|pull request #3385]] for details. 
 + 
 +===== Release 9.1 - 10/30/2023 ===== 
 + 
 +New features: 
 + 
 +  * The EBSCO Publication Finder is now supported as a search backend (requires a valid EBSCO subscription). 
 +  * [[configuration:blender|Blended Search]] now supports advanced search. 
 +  * Added support for the [[development:plugins:ils_drivers#geturlsforrecord|getUrlsForRecord]] ILS driver method (currently implemented for KohaRest and the Demo driver). 
 +  * Users can now view all of their proxy relationships through the Profile page (if supported by the ILS driver). See [[https://github.com/vufind-org/vufind/pull/3006|pull request #3006]]. 
 +  * Added support for the [[development:plugins:ils_drivers#purgetransactionhistory|purgeTransactionHistory]] ILS driver method (currently implemented for KohaRest, SierraRest and the Demo driver). 
 +  * ILS drivers can now report an "uncertain" status in addition to the traditional true/false availability status values. This new feature is currently supported by the Alma and Demo drivers. See the locationTypeItemStatus setting in Alma.ini for related configuration. 
 +  * The import-marc.sh ingest script can now accept multiple MARC files in a single call to reduce overhead of starting up SolrMarc. In Linux, the harvest/batch-import-marc.sh script now takes advantage of this by default, adding a -x switch to set the number of files to index per call to SolrMarc. See [[https://github.com/vufind-org/vufind/pull/2995|pull request #2995]] for details. 
 +  * The util/deletes command line script now supports an --id-prefix option to prefix the IDs of records being deleted. 
 +  * Combined search has been enhanced with some new configuration settings to allow the optional inclusion of advanced search links in combined search results (see [[https://github.com/vufind-org/vufind/pull/3099|pull request #3099]]), to better retain the order of sections on small screens (see [[https://github.com/vufind-org/vufind/pull/3077|pull request #3077]]), to display side recommendations (see [[https://github.com/vufind-org/vufind/pull/3135|pull request #3135]]) and to display a "jump menu" at the top of the page (see [[https://github.com/vufind-org/vufind/pull/3083|pull request #3083]]). 
 +  * A new LibGuidesAZ search backend has been added to search Database A-Z lists stored in LibGuides; this serves as a complement to the existing LibGuides search backend, which allows search of regular guides in LibGuides. See [[https://github.com/vufind-org/vufind/pull/2860|pull request #2860]] for details. 
 +  * It is now possible to configure custom Solr highlighting parameters. See [[https://github.com/vufind-org/vufind/pull/2927|pull request #2927]] for details. 
 +  * Custom scripts can now be set up to run via the Maintenance page of the Admin module (optional, disabled by default, and permission-controlled). See [[https://github.com/vufind-org/vufind/pull/2866|pull request #2866]] for details. 
 +  * When records are displayed based on using the record cache in "fallback" mode, a warning message is now displayed. See [[https://github.com/vufind-org/vufind/pull/2886|pull request #2886]] for details. 
 +  * Turning on debug mode in config.ini now displays ALL messages, not just debug-level messages, to assist with troubleshooting of errors. 
 +  * File-based caching can now be disabled by default if desired (see the disabled setting in the [Cache] section of config.ini). Additionally, context-specific caching override settings have been introduced for some services (see [[https://github.com/vufind-org/vufind/pull/2659|pull request #2659]] for details). 
 +  * It is now possible to add a DirLocations.ini file to the root of a [[configuration:local_settings_directory|local settings directory]] in order to customize some of its behavior (adjusting path to configuration files, inheriting from parent directories). See [[https://github.com/vufind-org/vufind/pull/2947|pull request #2947]] for details. 
 +  * When [[configuration:combining_search_types#tabbed_search_boxes|search tabs]] are enabled and hidden filters do not match any tab configurations, a "Custom Search" tab will be displayed. This behavior can be disabled by customizing the temporary_search_tab_title translation string to be empty. See [[https://github.com/vufind-org/vufind/pull/2908|pull request #2908]]. 
 +  * A special "debug" language code is now supported to reveal raw language strings in the user interface for troubleshooting and development purposes. See [[development:architecture:localization#troubleshooting_language_strings|Troubleshooting Language Strings]] and [[https://github.com/vufind-org/vufind/pull/3015|pull request #3015]] for more details. 
 +  * It is now optionally possible to include usernames in system-generated logs for diagnostic purposes (off by default -- see [[https://github.com/vufind-org/vufind/pull/3156|pull request #3156]]). 
 +  * Sierra users can now configure mappings for patron block codes in SierraRest.ini (see [[https://github.com/vufind-org/vufind/pull/2856|pull request #2856]]). 
 +  * FOLIO users should be aware that the holding_id field in ILS driver responses has been renamed to holdings_id; the original name was a typographical error. Since this data field was not used for anything internally by the driver, the change should not impact users unless they have customized something. Local Folio.ini files should be updated to correct the field name in the HMACKeys setting. See [[https://github.com/vufind-org/vufind/pull/3101|pull request #3101]] for details. A similar fix for Alma has been applied in [[https://github.com/vufind-org/vufind/pull/3102|pull request #3102]], but this is more careful to retain backward-compatibility since the holding_id value is more likely to be used in production under Alma than FOLIO. 
 +  * When indexing course reserves, the FOLIO driver will now exclude suppressed records by default (but this behavior can be changed via Folio.ini). See [[https://github.com/vufind-org/vufind/pull/2935|pull request #2935]] for details. 
 +  * The new fallback_languages setting can be used to prioritize where translations are found when they are missing from the currently selected language. See [[https://github.com/vufind-org/vufind/pull/2891|pull request #2891]] for details. 
 +  * Theme configuration now optionally supports multiple favicons (to allow for more than one size); see [[https://github.com/vufind-org/vufind/pull/2862|pull request #2862]]. 
 +  * The installation process now supports selection of a custom Solr port (see [[https://github.com/vufind-org/vufind/pull/2962|pull request #2962]]). 
 +  * Syndetics cover images can now be configured so that the Syndetics-generated placeholder images are only shown when the user "opts in" with the use_syndetics_cover_image_fallback cover setting. This way, if Syndetics has no available image, other configured cover providers will be used. 
 +  * The new "LibGuidesProfile" recommendation module can display librarian information from LibGuides; see [[https://github.com/vufind-org/vufind/pull/2977|pull request #2977]]. 
 +  * Updated SolrMarc indexer (version 3.5). 
 +  * New interface translation: Northern Sámi. 
 + 
 +Possible backward compatibility breaks: 
 + 
 +  * :!: Solr has been upgraded to release 9.3.0. A full reindex will be necessary. 
 +  * :!: The upgraded version of SolrMarc now interprets translation maps as UTF-8 instead of Latin-1/ISO-8859-1. This new behavior is more consistent with the rest of the project, but it means that if you have local translation maps containing non-ASCII characters, they will need to have their formats converted -- e.g. with ''iconv -f LATIN1 -t UTF-8 my-map.properties > my-map.properties''
 +  * :!: In order to reconcile inconsistent alphabetical title browse and title sort functionality, some changes had to be made to the way the title_sort field is populated by the XML indexer. If you use alphabetical browse or title sorting and index XML records, you may need to adjust any local custom XSLT sheets. See [[https://github.com/vufind-org/vufind/pull/3024|pull request #3024]] for details. 
 +  * :!: The URL used for establishing an EBSCO Discovery Service session is now a configurable setting in EDS.ini. If you are using a non-standard api_url setting in EDS.ini, you may need to adjust the new session_url setting to match it. 
 +  * :!: As part of the update to add advanced search, the [[configuration:blender|Blended Search]] logic has been moved to its own controller and the old Search/Blended route has been deprecated (though it still works). If you have customized anything related to the old route or SearchController::blendedAction, it will need to be updated. See [[https://github.com/vufind-org/vufind/pull/3068|pull request #3068]] for details. 
 +  * :!: Hierarchical facet displays have been significantly revised to address accessibility problems with jsTree; if you have customized styles or implementation related to hierarchical facets, adjustments will likely be needed. See [[https://github.com/vufind-org/vufind/pull/3047|pull request #3047]] for details. 
 +  * :!: Escaping of dynamic values in the icon helper was previously done inconsistently and could cause problems in some rare edge cases. This has been fixed by [[https://github.com/vufind-org/vufind/pull/3084|pull request #3084]], which makes some significant changes to all icon-helper-related templates. In the relatively unlikely situation that you have customized these templates or extended the icon helper itself, you should review these changes and make local adjustments to match. 
 +  * Some language file parsing/normalization logic and translation strings have been adjusted for compatibility with the Lokalise service. If you have custom language files, you may wish to run the [[administration:command_line_utilities#language_category|command line normalization tool]] on them and check whether you have overridden any impacted keys. More details: 
 +    * Purely numeric language file keys are now enclosed in single quotes; see [[https://github.com/vufind-org/vufind/pull/3044|pull request #3044]]. 
 +    * The "Export to" translation string has been replaced by "export_to", which includes a %%target%% token. The previous version of the translation string relied on whitespace in the translation file and concatenation in templates, which made proper translation more difficult. 
 +  * The "with_selected" translation string has been removed, as its use in checkbox/button interfaces was inconsistently applied and confusing. If you have a local template that uses this string, you should adjust your template or reintroduce it as a local custom string. See [[https://github.com/vufind-org/vufind/pull/2978|pull request #2978]]. 
 +  * The system for retrieving alternate record versions from Solr has been revised to fix a bug related to large numbers of keys and to improve performance; see [[https://github.com/vufind-org/vufind/pull/3087|pull request #3087]] for details. 
 +  * The signature of \VuFind\Auth\EmailAuthenticator::sendAuthenticationLink has been changed as part of a bug fix. In the unlikely event that you have customized this method or use it in custom code, adjustments may be needed. See [[https://github.com/vufind-org/vufind/pull/3030|pull request #3030]]. 
 +  * Some functionality of the laminas-mail library has been locally overridden to compensate for an upstream bug that will not be fixed by the package maintainers. If you encounter problems sending email, please review [[https://github.com/vufind-org/vufind/pull/3060|pull request #3060]] in case it is related. 
 +  * The hash_passwords setting in config.ini is now set to "true" by default. The normal installation process has always changed this setting from "false" to "true" as part of the "security fix" step, but it originally defaulted to false for backward compatibility with release 1.x. Since direct migration from version 1.x to 9.x is extremely unlikely, the default has been changed to reduce the chances of accidental misconfiguration. If for some reason you have this set to false in your configuration, please use the web-based install tool's security fix option to correct it and hash existing passwords. The normal web-based upgrade process will automatically prompt you to take this action if necessary. 
 +  * A few minor changes have been introduced to the EBSCO Discovery Service backend, which will only impact users who have customized low-level code in that service: 
 +    * \VuFind\Search\EDS\Params::createBackendFilterParameters has been refactored to \VuFind\Search\EDS\AbstractParams and has had its second parameter ($options) removed, as it was not used for anything. 
 +    * The edsApiHost property in \VuFindSearch\Backend\EDS\Base has been renamed to apiHost. 
 +    * The facet_limit setting in EDS.ini has been removed, as it never had any effect due to limitations in the EDS API. 
 +    * debugPrint methods have been deprecated, and the debug method should be used instead for logging debug messages (debugPrint is retained for backward compatibility now but will be removed in release 10.0) 
 +  * The Google, Orb and Syndetics cover image handlers have been refactored to add caching support, with some impact to their factories and internal methods. In the unlikely situation that you have extended these services, see [[https://github.com/vufind-org/vufind/pull/2659|pull request #2659]] and [[https://github.com/vufind-org/vufind/pull/3154|pull request #3154]] for details and adjust your local code to match. 
 +  * Cart popover displays have been adjusted for validity/accessibility, with minor impact on associated Javascript and styles; see [[https://github.com/vufind-org/vufind/pull/2838|pull request #2838]]. 
 +  * Custom styles associated with the optional cookie consent feature have been significantly refactored; see [[https://github.com/vufind-org/vufind/pull/2909|pull request #2909]]. 
 +  * The GetItemStatuses AjaxHandler has been significantly revised to support a broader range of statuses. See [[https://github.com/vufind-org/vufind/pull/2857|pull request #2857]] for details. 
 +  * Historic transaction functionality has been refactored to a separate CheckoutsController, and some associated templates and routes have been renamed. Old routes and URLs will redirect to the new ones for backward compatibility, but if you have modified the MyResearchController::historicloansAction() or the myresearch/historicloans.phtml template, you will need to move your changes. See [[https://github.com/vufind-org/vufind/pull/2779|pull request #2779]]. 
 +  * OCLC has shut down the WorldCatIdentities API without providing a replacement, so the WorldCatIdentities recommendation module has been removed from the code along with the supporting \VuFind\Connection\WorldCatUtils class and the \VuFind\Autocomplete\OCLCIdentities handler. Existing configuration referring to WorldCatIdentities or OCLCIdentities should be removed for the sake of efficiency, but it should not break anything, due to aliasing to the "deprecated" recommendation module and the "none" autocomplete handler. Additionally, any custom code that refers to the WorldCatUtils class will need to be removed, as the functionality of this class is no longer supported by OCLC. 
 +  * The Alma driver's constructor signature and factory configuration have changed, and its internal availability status logic has been significantly revised. See [[https://github.com/vufind-org/vufind/pull/2857|pull request #2857]] for details. 
 +  * Improvements to the SierraRest driver have introduced some changes that could impact local custom subclasses: the HOLDINGS_LINE_NUMBER constant has been replaced with HOLDINGS_LOCATION_FIELD; the signatures of the getBibRecord and getItemStatusesForBib methods have changed; and the itemHoldAllowed method has been merged into the isHoldable method (whose signature has also changed). See [[https://github.com/vufind-org/vufind/pull/2921|pull request #2921]] for details. 
 +  * The bootstrap-custom.css file has been removed from the bootstrap3 theme; this was provided as an example, but it was never used and had grown out of date, so it has been deleted to prevent confusion. 
 +  * The \VuFind\Service\ReCaptcha class had to be rewritten for compatibility with the latest release of the laminas-recaptcha component. In the very unlikely situation that you locally extend this class, you will need to make adjustments. See [[https://github.com/vufind-org/vufind/pull/2911|pull request #2911]] for details. 
 +  * The \VuFind\Recommend\SearchObject class has been deprecated and will be removed in release 10.0; please use \VuFind\Recommend\AbstractSearchObject instead. 
 +  * Various templates have had minor accessibility improvements applied. When upgrading, it is strongly recommended that you synchronize these changes to your local templates. See the [[videos:upgrading_vufind_using_git|Upgrading VuFind® Using Git]] video (or the resources linked from that page) for a possible approach to automating this process. 
 +  * Stamen maps have been removed from the examples in geofeatures.ini, as this service has been discontinued. If you are using these maps, see the [[https://maps.stamen.com/stadia-partnership/|Stamen x Stadia]] page. 
 + 
 +[[changelog:release-9.1|Press Release]] 
 + 
 +[[videos:vufind_9.1_-_what_s_new_what_s_changed|Video Summary]] 
 +===== Release 9.0.3 - 7/24/2023 ===== 
 + 
 +  * Minor bug fix release. 
 +  * :!: A bug fix to the ChannelsController changes the constructor signature to address an omission; if you have customized this controller or its factory, local adjustments may be needed. See [[https://github.com/vufind-org/vufind/pull/2989|pull request #2989]]. 
 +  * Adds a new "OperatorToFieldPrefix" view helper as part of a bug fix (see [[https://github.com/vufind-org/vufind/pull/2992|pull request #2992]]). 
 +  * The graphical icon used for facet exclusion in the bootprint3 theme has been changed back to a font-based icon matching the bootstrap3/sandal themes for aesthetic reasons including alignment problems (see [[https://github.com/vufind-org/vufind/pull/2996|pull request #2996]]). 
 +===== Release 9.0.2 - 6/26/2023 ===== 
 + 
 +  * Minor bug fix release. 
 +  * Adds a new "Session" view helper as part of a bug fix (see [[https://github.com/vufind-org/vufind/pull/2926|pull request #2926]] for details). 
 +  * Eliminates log4j 1.x from SolrMarc to prevent false-positive vulnerability detection. 
 +===== Release 9.0.1 - 4/24/2023 ===== 
 + 
 +  * Bug fix release: corrects problems with Blowfish encryption migration discovered immediately following the release of 9.0. Please use this version instead of 9.0 if you are switching your encryption method! 
 + 
 +===== Release 9.0 - 4/24/2023 ===== 
 + 
 +New features: 
 + 
 +  * Support for [[configuration:blender|Blended Search]], which can combine results from multiple search backends into a single list. 
 +  * Support for a [[configuration:cookie_consent|cookie consent]] dialog box (disabled by default). 
 +  * Support for user-provided star ratings of records (off by default; see the rating setting in the [Social] section of config.ini). 
 +  * A new "interval" [[development:plugins:captcha_handlers|CAPTCHA handler]] has been added which can be used to restrict user access to specific features based on frequency of activity rather than on a specific input. Useful, for example, to limit the number of emails or text messages that can be sent in a single session. 
 +  * Support for proxy requests (i.e. one user places a hold for another user); currently FOLIO-only, but can be added to other compatible ILS systems in future. 
 +  * Support for configurable username policies to restrict account names created within the system. See [[https://github.com/vufind-org/vufind/pull/2581|pull request #2581]] for details. 
 +  * Feedback forms can now be forwarded/persisted using [[development:plugins:form_handlers|Form Handler plugins]]. The pre-existing email-based functionality remains the default, but it is now also possible to store form submissions in the database or to build custom integrations. 
 +  * Feedback forms can now be configured to allow some fields to be pre-populated using URL query parameters. 
 +  * A new administrative module has been created for managing feedback results stored in the database. See [[https://github.com/vufind-org/vufind/pull/2399|pull request #2399]] for details. 
 +  * Support for using Koha local cover images as a cover image source. 
 +  * Support for activating [[https://tagmanager.google.com|Google Tag Manager]] via configuration; see [[https://github.com/vufind-org/vufind/pull/2637|pull request #2637]] for details. 
 +  * The EDS and Primo backends now support facet value filtering, similar to the pre-existing functionality for Solr (see the [HideFacetValue] and [ShowFacetValue] sections in EDS.ini and Primo.ini for details). 
 +  * The EDS and Primo backends now support search response caching for improved performance (see the [SearchCache] section in EDS.ini and Primo.ini for details). 
 +  * Support for storing MARC records in MARC-in-JSON format in the Solr index. 
 +  * The staff view for MARC records can be configured to also display indexed Solr fields (see [[https://github.com/vufind-org/vufind/pull/2540|pull request #2540]]). 
 +  * The new allowUserLogin setting in the [Catalog] section of config.ini can be turned off to disable direct end user login to the ILS; this can improve security in scenarios where user credentials are auto-loaded during authentication, and should never be input directly by the user. 
 +  * The new bypass_default_filters setting in the [AlphaBrowse] section of config.ini has been added to solve problems with confusing interactions between default filters and alphabetic browse functionality. This is now on by default, but should be turned off if your default filters include "inverted facets" that expand the result set when applied. See [[https://github.com/vufind-org/vufind/pull/2538|pull request #2538]] for details. 
 +  * The [[https://thirdiron.com/products/browzine/|BrowZine]] DOI linker plugin now supports the display of retraction notices. 
 +  * An [[development:apis:admin|administrative API endpoint]] (featuring cache-clearing functionality) has been added. 
 +  * YAML configuration files can now be set up to inherit specific keys from their parents; see [[configuration:inheritance|Configuration File Inheritance]] for details. 
 +  * Support has been added for using VuFind® as an [[configuration:oauth2_oidc|OAuth2 and OpenID Connect Authorization Server]] (OIDC Provider). Please see the configuration page for additional information and prerequisites. 
 +  * Example import configuration has been added for ingesting XML harvested from [[https://www.subjectsplus.com/|SubjectsPlus]]. 
 + 
 +Possible backward compatibility breaks: 
 + 
 +  * :!: VuFind® now requires PHP 7.4.1 or newer; please make sure you have an appropriate version installed before upgrading. 
 +    * Note that while PHP 7.4 is supported, PHP 8.0 or newer is STRONGLY RECOMMENDED, as PHP 7 is no longer being supported. The next release (9.1) will fully drop support for PHP 7. 
 +    * To use the new OAuth2 / OpenID Connect functionality, the PHP [[https://www.php.net/manual/en/book.sodium.php|Sodium]] extension is also now required. 
 +  * :!: The version of Solr bundled in VuFind® now requires Java 11 or newer. 
 +  * :!: VuFind® has dropped support for Apache 2.2. Your httpd-vufind.conf file can be simplified as long as you use Apache 2.4 or newer; see [[https://github.com/vufind-org/vufind/pull/2577|pull request #2577]]. 
 +  * :!: Be sure to run a database upgrade to reflect table changes (see also the [[development:architecture:database_schema#release_90|database changelog]]). 
 +  * :!: Some indexing and dependency changes require a full reindex: 
 +    * :!: Solr has been upgraded to release 9.1.1. You MUST reindex all records to avoid encountering errors related to highlighting within the author/author_variant fields (see [[https://github.com/vufind-org/vufind/pull/2695|pull request #2695]] for details). 
 +    * :!: Deprecated Solr fields have been removed. See the [[development:architecture:solr_index_schema#vufind_90|index schema changelog]] for more details. 
 +    * :!: VuFind®'s SolrMarc configuration now populates Solr's fullrecord field using MARC-in-JSON format instead of binary MARC format. This solves problems caused by records exceeding binary MARC's 99,999-character limit, but it introduces an incompatibility with earlier VuFind® releases. If you want a backward-compatible solution, you can customize marc_local.properties to use MARCXML instead. 
 +    * :!: The FormatCalculator SolrMarc custom indexing class has been revised to detect formats more accurately. If you have created a custom subclass of the FormatCalculator, please note that there have been method signature changes to getFormatFromBibLevel, getFormatFromRecordType and isElectronic, plus the getTypeOfComputerFile method has been removed. If you use a custom translation map, note that the FormatCalculator has several new possible output values which you may wish to customize in your map. See [[https://github.com/vufind-org/vufind/pull/2412|pull request #2412]] for details. 
 +  * :!: Because of the upgrade to Solr 9, Solr will now only bind to "localhost" by default. If you need to connect to Solr from another machine using a hostname, you should set the SOLR_JETTY_HOST environment variable prior to starting Solr. See [[https://solr.apache.org/guide/solr/latest/deployment-guide/taking-solr-to-production.html#security-considerations|Taking Solr to Production]] for more details. 
 +  * :!: Blowfish encryption algorithms are deprecated in OpenSSL 3.0, and VuFind® has changed its default encryption method to reflect this. If you have legacy encrypted data (ILS credentials) in your database, you should convert it to a supported method. VuFind®'s web-based upgrade tool will guide you through this, so be sure to access it as part of your upgrade process. 
 +  * :!: The PHP-based LESS compiler has been removed due to compatibility problems; "grunt less" is now the only way to compile LESS, and the entire "less" section (including the "active" setting) has been removed from theme.config.php. See the [[development:architecture:less|LESS / SASS page]] for more details. 
 +  * :!: The Hunt library is no longer used by themes and has been replaced with the browser-native IntersectionObserver. If you rely on Hunt or have customized functionality related to dynamic data loading into search results, you will likely need to adjust local code -- see [[https://github.com/vufind-org/vufind/pull/2447|pull request #2447]]. 
 +  * :!: The global checkSaveStatuses / checkSaveStatusesCallback Javascript functions from check_save_statuses.js have been refactored into the new VuFind.saveStatuses module (to reduce global functions). See [[https://github.com/vufind-org/vufind/pull/2844|pull request #2844]]. 
 +  * :!: To increase flexibility, record drivers can now differentiate between a "source identifier" (the backend where the record resides) and a "search backend identifier" (the backend used to find the record). This distinction makes it possible to have "virtual" search backends which pull data from multiple sources. Supporting this required several changes which may need to be reflected in local custom code: 
 +    * The setSourceIdentifier record driver and record collection methods have been deprecated in favor of setSourceIdentifiers, which allows both IDs to be set. The legacy method will set both IDs to the same value for backward compatibility. These changes affect any classes implementing VuFindSearch\Response\RecordCollectionInterface or VuFindSearch\Response\RecordInterface. The changes have been implemented in VuFindSearch\Response\AbstractRecordCollection and VuFindSearch\Response\RecordTrait for easy reuse. 
 +    * Record controllers (i.e. VuFind\Controller\AbstractRecord and its children) have replaced the $searchClassId property with $sourceId. 
 +  * :!: Facet processing has been adjusted to maintain a consistent internal format between the EDS, Primo and Solr backends, with standard processing taking place in the \VuFind\Search\Base\Results class. This simplifies the work of the Blender backend and better conforms to VuFind®'s internal documentation. The changes are most significant in Solr, where the \VuFindSearch\Backend\Solr\Response\Json\Facets class has been removed and replaced by additional methods on \VuFindSearch\Backend\Solr\Response\Json\RecordCollection. Note that some other backends (most notably Summon) still use non-standard facet processing and are presently incompatible with Blender. This may be corrected in a future release. (See [[https://github.com/vufind-org/vufind/pull/2372|pull request #2372]]). 
 +  * :!: The default configuration now includes a username policy that prevents the inclusion of exotic characters. This can be made more or less restrictive through configuration; see [[https://github.com/vufind-org/vufind/pull/2581|pull request #2581]]. Note that this will not impact existing users or usernames in your system; it will just prevent the creation of new ones that do not match the pattern. 
 +  * :!: In support of refactoring related to username policies, VuFind\Auth\AbstractBase::getCannedPasswordPolicyHint has been deprecated and \VuFind\Auth\Database::validateUsernameAndPassword has been removed; if you have custom authentication code relying upon these methods, it should be adjusted. 
 +  * :!: The \VuFind\Config\Locator class has been deprecated in favor of a new \VuFind\Config\PathResolver class. Whereas Locator was accessed statically, making some code hard to test or customize, the PathResolver is a full-fledged VuFind® service that can be overridden or extended. This change has resulted in adjustments to the internals of \VuFind\Config\PluginFactory, \VuFind\Config\YamlReader, and other classes; see [[https://github.com/vufind-org/vufind/pull/2568|pull request #2568]] for full details. 
 +  * :!: Previous VuFind® releases suppressed the display of items without barcodes on the holdings tab of the record view. This restriction has now been lifted by default but can be reintroduced by turning off the display_items_without_barcodes setting in config.ini. 
 +  * :!: Record links can now optionally include a search ID, which helps the system more reliably maintain context (e.g. when multiple open tabs are being used to search at the same time). Supporting this feature required a few backward-incompatible chnages: The constructors for \VuFind\RecordTab\CollectionList, \VuFind\Controller\Plugin\ResultScroller and \VuFind\Search\Memory have changed, as has the signature of the \VuFind\Search\Memory::rememberSearch method. Additionally, the recordLinker view helper now accepts a results object as a parameter so that it can add the necessary parameter to record links. 
 +  * :!: Laminas no longer uses the deprecated container-interop interfaces for factories; it now uses psr-container instead. This means that all references to the Interop\Container namespace should be replaced with equivalent references to the Psr\Container interface (note that Interop\Container\Exception is replaced by Psr\Container\ContainerException). If you have local factories, or other code that references container interfaces, they should be updated to ensure forward-compatibility. See [[https://github.com/vufind-org/vufind/pull/2445|pull request #2445]]. 
 +  * :!: The Ezb [[development:plugins:link_resolver_drivers|link resolver driver]] has been renamed to Jop to better reflect the branding of the underlying API. If you use or extend this driver, you should update your configuration and/or code. See [[https://github.com/vufind-org/vufind/pull/2455|pull request #2455]]. 
 +  * :!: Methods and properties related to the HierarchicalFacetHelper have been refactored from \VuFind\Search\Solr\Results to \VuFind\Search\Base\Results, and a HierarchicalFacetHelperInterface has been defined to enable the possibility of consistent hierarchical facet processing across multiple backends. (See [[https://github.com/vufind-org/vufind/pull/2372|pull request #2372]]). 
 +  * :!: Because of Google's migration from Universal Analytics to Google Analytics 4, the Google Analytics plug-in has been rewritten. If you use this, be sure to update your Google Analytics account to use a GA4 key, and if you rely on the create_options_js setting in config.ini, note that some option names may have changed -- e.g. cookieFlags has become cookie_flags. See [[https://github.com/vufind-org/vufind/pull/2402|pull request #2402]] for details. 
 +  * :!: Code deprecated in release 8.0 has been fully removed: 
 +    * :!: \VuFind\Ils\Driver\CacheTrait has been removed; use \VuFind\Cache\CacheTrait instead. 
 +    * :!: The RecordLink view helper has been removed; use RecordLinker instead. 
 +    * :!: \VuFindSearch\Service::invoke() and the command pattern must be used for all search service calls; the legacy backward-compatibility helper methods have been removed (see the 8.0 changelog for more details). 
 +  * :!: The icon system introduced in VuFind® 8.0 is now fully utilized in themes. Icons have been standardized and in some cases changed. Many obsolete styles have been removed. You may notice some minor changes to user interface appearance as a result, but it can all be configured through your local theme.config.php as needed. Additionally, links containing icons have been restructured with new CSS which may require markup changes in local templates; see [[https://github.com/vufind-org/vufind/pull/2400|pull request #2400]]. 
 +  * :!: The constructor signature of \VuFind\View\Helper\Root\Icon has been changed to remove the dependency on the HeadLink helper. See [[https://github.com/vufind-org/vufind/pull/1962|pull request #1962]] for details. 
 +  * :!: The league/commonmark library used for Markdown rendering has been upgraded to a new major version (2.x). If you have customized markdown.ini or any code related to Markdown processing (particularly the League\CommonMark\MarkdownConverterInterface service, which has been renamed to League\CommonMark\ConverterInterface), you should review [[https://github.com/vufind-org/vufind/pull/2048|pull request #2048]] to make sure appropriate adjustments are made. 
 +  * :!: The \VuFind\Validator\Csrf class has been replaced by \VuFind\Validator\CsrfInterface + \VuFind\Validator\SessionCsrf to open the possibility of alternate CSRF implementations. If you have customized this class or written code which pulls it from the service manager, you may need to make some adjustments. See [[https://github.com/vufind-org/vufind/pull/2201|pull request #2201]]. 
 +  * :!: The File_MARC dependency from PEAR has been replaced by a new [[https://github.com/vufind-org/vufind-marc|VuFind\Marc]] library for improved performance and forward compatibility with newer PHP releases. This means that a significant amount of VuFind®'s MARC record processing logic has been revised, and you will have to update any related local subclasses. In particular: 
 +    * The deprecated getMarcRecord() method in several record drivers has been removed (you should use getMarcReader() instead). 
 +    * Some components of the WorldCat search backend have changed. 
 +    * The command line tools for deleting records and linting MARC files have been revised. 
 +  * :!: The internals of the VuFind\MarcReader class have been changed; see [[https://github.com/vufind-org/vufind/pull/2334|pull request #2334]]. In the unlikely situation that you have locally customized this code, you will need to make updates. 
 +  * :!: All ILS drivers with a getConfig method have been standardized to use a consistent method signature. If you have customized this method in a local ILS driver, you should adjust your code to match. See [[https://github.com/vufind-org/vufind/pull/2429|pull request #2429]]. 
 +  * :!: Search backend factories extended from AbstractSolrBackendFactory may need minor adjustments due to improvements to the design of configuration loading within the factories. The $solrCore property has been renamed to $defaultIndexName, and the getSolrCore() method has been renamed to getIndexName(). The getSolrUrl() method no longer accepts any parameters. 
 +  * :!: The signature and behavior of \VuFind\ILS\Driver\AbstractAPI::makeRequest() has been changed for more consistent and reliable error handling; this impacts the FOLIO and GeniePlus ILS drivers; see [[https://github.com/vufind-org/vufind/pull/2554|pull request #2554]] for details. 
 +  * :!: During application initialization, VuFind® used to change the working directory to $VUFIND_HOME; code has now been refactored to avoid this, which simplifies some things. If your code relies on expecting a specific working directory, it may need to be adjusted, and if you have custom console commands that extend RelativeFileAwareCommand, they should be adjusted, since this base class is no longer needed. See [[https://github.com/vufind-org/vufind/pull/2305|pull request #2305]]. 
 +  * :!: Two classes have been refactored to use the CurrencyFormatter service, which separates formatting logic from the SafeMoneyFormat view helper for improved reusability. If you have local changes to \VuFind\AjaxHandler\GetUserFines or \VuFind\View\Helper\Root\SafeMoneyFormat, you should review them. See [[https://github.com/vufind-org/vufind/pull/2217|pull request #2217]] for details. 
 +  * :!: The \VuFind\Controller\Plugin\AbstractRequestBase::getValidIds() method has been superseded by a validateIds() method. If you rely on the old method in custom code (a fairly unlikely situation), you will need to revise your code. See [[https://github.com/vufind-org/vufind/pull/2206|pull request #2206]] for details. 
 +  * :!: Feedback form processing has been significantly refactored; see [[https://github.com/vufind-org/vufind/pull/2230|pull request #2230]] and [[https://github.com/vufind-org/vufind/pull/2237|pull request #2237]]. 
 +  * :!: The signature of \VuFind\Db\Table\Search::saveSearch() has changed to accommodate a fix to prevent duplicate searches in history; see [[https://github.com/vufind-org/vufind/pull/2460|pull request #2460]]. 
 +  * :!: The \VuFind\Search\UrlQueryHelper::buildQueryString() method has been made public and static for easier reuse; in the unlikely event that you have customized this method in a subclass, you will need to adjust your local code accordingly. 
 +  * :!: The \VuFindSearch\Backend\Solr\Connector class has been revised: the HTTP client (or a factory function to create HTTP clients) is now a required constructor parameter (and constructor parameters have been reordered accordingly), plus the getTimeout() and setTimeout() methods have been removed in favor of the more flexible callWithHttpOptions() method. If you use the connector directly in custom code, you should review potentially affected logic. See [[https://github.com/vufind-org/vufind/pull/2229|pull request #2229]] and [[https://github.com/vufind-org/vufind/pull/2515|pull request #2515]] for details. 
 +  * :!: Some translation strings have been renamed or split to reduce ambiguity; if you have customized the old strings in local language files, or if you use them in any custom templates/configurations, you will need to adjust your local files to use the appropriate new values. See [[https://github.com/vufind-org/vufind/pull/2598|#2598]] for details; summary of changes: 
 +    * "Find More" => footer_header_find_more 
 +    * "Need Help?" => feedback_help_label / footer_header_need_help / link_text_need_help 
 +    * "Search Options" => footer_header_search_options 
 +    * "Send us your feedback!" => feedback_title 
 +    * "Subject(s)" => deleted [no longer used/needed] 
 +    * "Thank you for your feedback." => feedback_response 
 +  * :!: The \VuFind\Db\Table\ExpirationTrait has been revised to prevent a potential problem with infinite looping during database row expiration; if you have a custom class utilizing this trait, revisions will be necessary. See [[https://github.com/vufind-org/vufind/pull/2450|pull request #2450]]. 
 +  * :!: Some function signatures have been more strictly typed based on [[development:recommended_tools#static_analysis|PHPStan]] analysis (see [[https://github.com/vufind-org/vufind/pull/2255|pull request #2255]], for example). If you have local code that extends core code, it is strongly recommended that you run [[development:recommended_tools#static_analysis|PHPStan]] on it to make sure your signatures remain accurate and compatible. 
 +  * :!: \VuFind\Search\Solr\HideFacetValueListener has been renamed to \VuFind\Search\Base\HideFacetValueListener, since it is no longer Solr-specific (it is now shared with EDS and Primo). 
 +  * :!: The shell/batch scripts in $VUFIND_HOME/import/bin have been removed; these were part of SolrMarc 2.x and were deprecated with the release of SolrMarc 3. If you rely on any of these for your processes/workflows, you should find alternatives. For MARC import, everyone should already be using $VUFIND_HOME/import-marc.sh instead of the obsolete $VUFIND_HOME/import/bin/import.sh. 
 +  * :!: The data provided by the GetUserFines AJAX handler has changed, using "total" instead of "value" for the element containing the sum of all fines; the associated logic in account_ajax.js has been adjusted to match. If you have customized anything related to this, please change local code to reflect the change. 
 +  * :!: The DOILookup AJAX handler and the BrowZine DOI linker plugin have had their constructor signatures and factories changed; if you have customized either of them, adjustments may be needed. See [[https://github.com/vufind-org/vufind/pull/2616|pull request #2616]] for details. 
 +  * :!: If you use [[https://thirdiron.com/products/browzine/|BrowZine]], be sure to update your local BrowZine.ini to reflect the new [DOIServices] section added in [[https://github.com/vufind-org/vufind/pull/2616|pull request #2616]]; this supersedes the previous DOI "filters[]" setting and allows access to new functionality. 
 +  * :!: If you use Git to track your local configuration files, note that changes to the default .gitignore file will prevent local configurations from being committed. See the note at the bottom of the [[https://vufind.org/wiki/development:recommended_tools:git#getting_started|Getting Started with Git]] documentation for a solution to this problem. 
 +  * :!: The factory and constructor expectations for \VuFind\Search\EDS\Options have changed in order to support "on demand" API data retrieval for improved efficiency. If you have customized this code, changes may be needed; see [[https://github.com/vufind-org/vufind/pull/2643|pull request #2643]] for details. 
 +  * :!: The second parameter ($flatten) of \VuFindTheme\ThemeInfo::getMergedConfig() was not working correctly and has been removed; in the unlikely event that you wrote code which relied on this feature, you should review it. See [[https://github.com/vufind-org/vufind/pull/2543|pull request #2543]] for details. 
 +  * :!: The original database-driven Sierra ILS driver has been removed as it was no longer being maintained; Sierra users should use the API-based SierraRest driver instead. 
 +  * The [[development:architecture:record_data_formatter|Record Data Formatter]] view helper has been adjusted so that the record driver parameter can be passed to the helper invocation instead of as a parameter to the getData method, and this is now the preferred method of using the helper. However, support for the legacy style is retained for backward compatibility. See [[https://github.com/vufind-org/vufind/pull/2658|pull request #2658]] for details. 
 +  * The book bag feature now requires browser Javascript support for add/remove functionality in result lists (see [[https://github.com/vufind-org/vufind/pull/2477|pull request #2477]]). Given current standards, this is part of a general move away from universal non-Javascript support. 
 +  * The CSS classes used for displaying counts of checkouts and requests in the account side menu have been renamed for clarity (.ok to .account-info; .warn to .account-warning; and .overdue to .account-alert). If you have customized these styles, you will need to make adjustments. See [[https://github.com/vufind-org/vufind/pull/2481|pull request #2481]]. 
 +  * The key generation rule for caching parsed YAML files has been changed to reduce the possibilities of collisions across instances; see [[https://github.com/vufind-org/vufind/pull/2351|pull request #2351]]. 
 +  * The API specification has been updated to use the OpenAPI 3.0.3 standard, and the Swagger UI tool included for API testing has been upgraded. The actual API interface and functionality has not changed (apart from additions noted above) and remains backward-compatible. 
 +  * Search backend factories have been refactored to improve extensibility; if you have custom factories, you should review the pull requests linked from [[https://vufind.org/jira/browse/VUFIND-1446|VUFIND-1446]]; there may be opportunities to simplify your code. 
 +  * Some aspects of the VuFindApi module were refactored for greater flexibility when admin tools were added; see [[https://github.com/vufind-org/vufind/pull/2219|pull request #2219]] for details. This only affects code internals, not the behavior of existing API endpoints. 
 +  * The non-tab record action handling in \VuFind\Route\RouteGenerator has been refactored to make it easier to add additional actions in local modules. If you have already customized these types of routes in your instance, adjustments may be needed or simplification may be possible; see [[https://github.com/vufind-org/vufind/pull/2172|pull request #2172]]. 
 +  * The include_facets setting in EDS.ini had no effect in the existing code and has been removed. 
 + 
 +[[changelog:release-9.0|Press Release]] 
 + 
 +[[videos:vufind_9.0_-_what_s_new_what_s_changed|Video Summary]] 
 +===== Release 8.1.2 - 2/6/2023 ===== 
 +  * :!: Upgrades to Solr 8.11.2, which includes further updates to Solr's bundled log4j library. You should reindex your records after upgrading due to the Solr version change. 
 +  * Also includes some other minor bug fixes. 
 + 
 +===== Release 8.1.1 - 10/3/2022 ===== 
 + 
 +  * Minor bug fix/translation improvement release. 
 +  * :!: FOLIO users are strongly encouraged to upgrade due to a significant bug fix. 
 + 
 +===== Release 8.1 - 7/18/2022 ===== 
 + 
 +New features: 
 + 
 +  * A new "custom Solr filters" feature makes it possible to define "inverted facets" which apply filters UNLESS the user applies a specific filter (e.g. if you want to exclude things by default but have an opt-in checkbox). This feature also makes it possible to define more complex checkbox filters without creating unwieldy URLs for the end user. See [[https://github.com/vufind-org/vufind/pull/2340|pull request #2340]] and the [CustomFilters] section of facets.ini for more details. 
 +  * New [[development:plugins:fallback_record_loaders|fallback record loader]] to allow VuFind to look up Solr records based on previous IDs when current ID lookups fail (useful for compatibility with legacy URLs after a system migration); must be configured using the new fallback_id_field setting in [[configuration:files:searches.ini]]. 
 +  * Translated facet values can now be optionally configured to include both the raw and translated values together (see [[https://github.com/vufind-org/vufind/pull/2352|pull request #2352]] for details). This can be useful for displaying results based on classification systems. 
 +  * Example configuration settings for importing CSV files exported from Scopus; see [[https://github.com/vufind-org/vufind/pull/2345|pull request #2345]]. 
 +  * New ILS driver: support for Lucidea's [[https://lucidea.com/genieplus/|GeniePlus]]. 
 +  * New cover image service supported: [[https://www.bokinfo.se|Bokinfo]]. 
 +  * New interface translations: Armenian and Ukrainian. 
 +  * Minor accessibility improvements. 
 +  * Minor [[development:architecture:solr_index_schema#vufind_81|Solr schema]] additions. 
 +  * Improved compatibility with PHP 8.1. 
 + 
 +Possible backward compatibility breaks: 
 + 
 +  * :!: The default httpd-vufind.conf configuration for Apache has been changed to include a new public assets directory, which is required to apply styles to RSS feeds. It is strongly recommended that you update your local Apache configuration to match. See [[https://github.com/vufind-org/vufind/pull/2385|pull request #2385]] for details. 
 +  * :!: The "Loading..." message displayed in lightboxes has been visually improved to prevent formatting problems. If you have customized the lightbox Javascript code or your layout template, you should review the changes in [[https://github.com/vufind-org/vufind/pull/2197|pull request #2197]] and make sure no incompatibilities have been introduced. 
 +  * :!: For compatibility with PHP 8.1, some method signatures have had return types added in some classes implementing PHP standard interfaces. If you have extended any of the impacted classes, you will need to modify your custom code to match. See [[https://github.com/vufind-org/vufind/pull/2423|pull request #2423]] for details. Impacted code: 
 +    * Custom session handlers (\VuFind\Session namespace) 
 +    * Solr response wrapper classes (\VuFindSearch\Backend\Solr\Response\Json namespace) 
 +    * \VuFindSearch\Response\AbstractRecordCollection 
 +    * \VuFind\Search\ParamBag (very unlikely to be locally customized) 
 +  * :!: The Evergreen ILS driver had become outdated; it has been brought up to speed, but this required some backward-incompatible changes (including drop of support for Evergreen versions before 2.10). Evergreen users should review [[https://github.com/vufind-org/vufind/pull/2203|pull request #2203]]. 
 +  * :!: The KohaRest ILS driver has had changes to its constructor signature to fix a problem related to the SafeMoneyFormatter view helper; it now relies on a new CurrencyFormatter service instead. See [[https://github.com/vufind-org/vufind/commit/8d70097f879a624ea6af83720dca89d12b07f7e6|commit 8d70097]] for details. 
 +  * :!: The \VuFind\Record\FallbackLoader\SummonFactory has been replaced by \VuFind\Record\FallbackLoader\AbstractFallbackLoaderFactory. In the very unlikely situation that you rely on this in local code, you will need to use the new factory instead of the old one. 
 +  * :!: The ConfigManager used by SolrMarc custom indexing Java has been revised to solve a thread-related bug (see [[https://vufind.org/jira/browse/VUFIND-1546|VUFIND-1546]]). The getSanitizedConfigSection method has been deprecated, and the default behavior of getConfigSection has been changed to always sanitize values. If you have written custom indexing Java which utilizes the ConfigManager, you should review [[https://github.com/vufind-org/vufind/pull/2376|pull request #2376]] and adjust your code if necessary. 
 +  * :!: Language files and templates were adjusted slightly to improve internationalization of periods of ellipsis. In particular, the translation strings for "More EDS Results", "More Summon Results", and "Submitting" were updated to include periods of ellipsis in the language files instead of the templates. If you have customized these strings locally, you may need to review your customizations. See [[https://github.com/vufind-org/vufind/pull/2381|pull request #2381]] for details. 
 +  * Some minor improvements to the accuracy of the FormatCalculator used during MARC indexing may result in slight changes to format assignment when you next reindex your records, particularly for component parts and electronic resources; see [[https://github.com/vufind-org/vufind/pull/2403|pull request #2403]] and [[https://github.com/vufind-org/vufind/pull/2408|pull request #2408]] for details. 
 +  * The signature of \VuFind\Search\Options\ViewOptionsTrait::initViewOptions() has changed slightly (to make the parameter nullable). In the unlikely event that you have overridden this method, your subclass may need to be adjusted to match. See [[https://github.com/vufind-org/vufind/pull/2261|pull request #2261]]. 
 +  * Default content security policy settings have been changed to improve compatibility with Safari; if you have enabled CSP enforcement, you should review [[https://github.com/vufind-org/vufind/pull/2153|pull request #2153]] and consider adjusting your settings to match. 
 +  * The HTML title tag now includes the site title for improved accessibility. You should be sure that the title setting in the [Site] section of config.ini is appropriate. See comments above that setting for notes on how to customize this behavior. 
 +  * The MultiBackend ILS driver has been refactored significantly to simplify the code. In the unlikely situation that you have built a local subclass of this code, you should review [[https://github.com/vufind-org/vufind/pull/2154|pull request #2154]] and make sure your code remains compatible. The biggest internal interface change is the replacement of methodSupported() with driverSupportsMethod(). 
 +  * Print-related Javascript has been split from common.js into a new separate file, to make targeted customization easier (see [[https://github.com/vufind-org/vufind/pull/2143|pull request #2143]]). If you have a locally customized common.js, you should be sure to adjust it to match the upstream refactoring. 
 + 
 +[[changelog:release-8.1|Press Release]] 
 +===== Release 8.0.4 - 2/28/2022 ===== 
 +  * Minor bug fix release, addressing problems with session management (see [[https://vufind.org/jira/browse/VUFIND-1532|VUFIND-1532]]) and long binary MARC records (see [[https://vufind.org/jira/browse/VUFIND-1534|VUFIND-1534]]). 
 + 
 +===== Release 8.0.3 - 12/20/2021 ===== 
 +  * :!: Upgrades to Solr 8.11.1, which addresses multiple security vulnerabilities in Solr's bundled log4j library (see [[https://nvd.nist.gov/vuln/detail/CVE-2021-44228|CVE-2021-44228]]). You should reindex your records after upgrading due to the Solr version change. 
 +  * Also includes some other minor bug fixes. 
 + 
 +===== Release 8.0.2 - 11/29/2021 ===== 
 + 
 +  * Minor bug fix release. 
 +  * Note that this release adds a new dependency (the composer/semver library, used to fix a bug in version number comparison during the upgrade process); if you are manually upgrading via Git, don't forget to run "composer install." If you are installing from a package, no extra action is necessary. 
 +  * Note that fixes to a problem with hierarchy tree displays in right-to-left languages required significant changes to some styles; if you have customized tree displays, you should review [[https://github.com/vufind-org/vufind/pull/2151|pull request #2151]]. 
 + 
 +===== Release 8.0.1 - 9/27/2021 ====== 
 + 
 +  * Bug fix / improved translation release. 
 +  * Addresses "out of memory" errors caused by Laminas Cache under certain circumstances. 
 + 
 +===== Release 8.0 - 9/20/2021 ===== 
 + 
 +New features: 
 + 
 +  * It is now possible to import data directly to VuFind's Solr index from [[indexing:csv|CSV files]] (to complement existing support for MARC and XML indexing). 
 +  * New "Bookplates" [[development:plugins:related_records_modules|Related module]] for displaying bookplate images on the record view. See [[https://github.com/vufind-org/vufind/pull/1834|pull request #1834]] for details. 
 +  * Significant performance improvements for internal handling of MARC records and search result rendering. 
 +  * Citation generation has been significantly updated and improved. 
 +  * Support for [[https://matomo.org/|Matomo]] analytics (for use with Matomo 4 and up; the pre-existing Piwik support remains for legacy versions). See [[https://github.com/vufind-org/vufind/pull/1943|pull request #1943]] for details. 
 +  * New (optional) SolrPrefix autocomplete handler for making suggestions through the edge n-gram tokenizer (see [[https://github.com/vufind-org/vufind/pull/1850|pull request #1850]]). 
 +  * Optional support for caching Solr query results (see [[https://github.com/vufind-org/vufind/pull/1854|pull request #1854]]). 
 +  * Sitemap generation has been improved to (optionally) include alternate-language versions of pages, as well as static content. See [[https://github.com/vufind-org/vufind/pull/1904|pull request #1904]]. 
 +  * Expanded holds functionality (for supporting ILS drivers): the ability to freeze holds until a start date, and the ability to edit fields in existing holds. 
 +  * Support for call number prefixes (which are displayed, but do not affect sorting/searching), for supporting ILS drivers. 
 +  * Improved support for rendering alternate-script versions of titles (and retrieving other data from MARC 880 fields). 
 +  * Improved handling of punctuation in author names in MARC records (with some new associated configuration settings); see [[https://github.com/vufind-org/vufind/pull/2028|pull request #2028]] for details. 
 +  * More flexible Javascript configuration in theme.config.php, including better control over loading order, plus the ability to load Javascript in the page footer as well as the HTML header (see [[https://github.com/vufind-org/vufind/pull/1863|pull request #1863]] and [[https://github.com/vufind-org/vufind/pull/1799|pull request #1799]]). 
 +  * There is now a [ShowFacets] setting in facets.ini which complements the [HideFacets] setting by making it possible to create a fixed list of legal facet values, for fields where only certain specific values are meant to be displayed. See [[https://github.com/vufind-org/vufind/pull/2013|pull request #2013]] for details. 
 +  * Restored support for XHProf [[development:profiling|profiling]] (in addition to existing Tideways support). 
 +  * It is now possible to link multiple user library accounts from multiple Shibboleth IdP's; see [[configuration:shibboleth:library_cards|Shibboleth and Library Cards]] and [[https://github.com/vufind-org/vufind/pull/1823|pull request #1823]]. 
 +  * The new GlobalExtraParams section in searchspecs.yaml makes it easier to configure custom boosts and other Solr parameters. See [[https://github.com/vufind-org/vufind/pull/2104|pull request #2104]]. 
 +  * The new "Content" view helper makes it easier to utilize VuFind's system for displaying internationalized content inside other templates; see [[configuration:static_pages#embedding_static_content|Embedding Static Content]] for more details. 
 +  * Cover images can now be loaded from the [[https://www.base-orb.fr/|Orb]] service (with an appropriate subscription); see [[https://github.com/vufind-org/vufind/pull/1949|pull request #1949]]. 
 +  * Cover images can now have associated attribution messages, when required by a provider (currently used for ObalkyKnih). 
 +  * The optional Memcache session handler now supports both of PHP's Memcache client libraries: \Memcache and \Memcached. Users can configure which one they prefer to use. See [[https://github.com/vufind-org/vufind/pull/1945|pull request #1945]]. 
 +  * All of the XML import example XSLT files have been updated to support both single-record and multi-record import. This means that if you are harvesting via OAI-PMH to index XML, you can turn on the combineRecords setting in oai.ini to save records in batches rather than as separate files, and your subsequent indexing should be significantly faster. 
 +  * The XSLT import examples have also been updated to make it significantly more convenient to enable [[indexing:tracking_record_changes|change tracking support]]; see [[https://github.com/vufind-org/vufind/pull/2100|pull request #2100]]. 
 +  * Feedback forms have some minor improvements: overrideable email senders, date fields, and improved validation. 
 +  * Dewey indexing rules have been updated to use DDC 23 instead of DDC 22 by default (but DDC 22 mappings are retained for backward compatibility). 
 +  * VuFind now supports loading templates from modules as well as loading templates from themes; this will make it easier to build and distribute third-party VuFind plugins that can be loaded via Composer. See [[https://github.com/vufind-org/vufind/pull/1424|pull request #1424]] for details. 
 +  * The new Icon view helper makes it easier to configure and customize icons used in the user interface; for this release, it is only being used for loading spinners, but future releases will leverage it more widely. 
 +  * Further improvements to accessibility. 
 +  * Further improvements to PHP 8 compatibility. 
 +  * Upgraded to Solr 8.9.0. 
 +  * Upgraded to [[indexing:solrmarc|SolrMarc]] 3.4. 
 + 
 +Possible backward compatibility breaks: 
 + 
 +  * :!: VuFind now requires PHP 7.3 or newer; please make sure you have an appropriate version installed before upgrading. 
 +  * :!: VuFind has dropped support for MySQL versions earlier than 5.7.7 (or MariaDB 10.2.2); these versions have reached end of life and should no longer be used under any circumstances. 
 +  * :!: MySQL/MariaDB databases will now be encoded using utf8mb4 instead of utfmb3, to allow compatibility with more characters; the database portion of the [[installation:migration_notes|web-based upgrade process]] will correct this for you. Some key lengths have been reduced to accommodate the larger size of utf8mb4 characters; in the unlikely event that this introduces a problem to your database, the upgrade process will inform you with an error message. 
 +  * :!: Legacy support for latin1-encoded MySQL databases (which was provided for compatibility with VuFind 1.x installations) has been removed. You must use utf8 encoding. In the very unlikely situation that you still have a VuFind 1.x database that you need to connect to, please upgrade to VuFind 7.x or earlier first, then migrate to VuFind 8. 
 +  * :!: The Solr schema has changed, the Solr version has been upgraded, DDC call number mappings have been updated, and author indexing has been adjusted, so records MUST be reindexed after an upgrade. See the [[development:architecture:solr_index_schema#changelog|index schema changelog]] for more details. 
 +  * :!: The Solr "split-on-whitespace" setting has been changed to true by default, to improve the accuracy of search results; however, this will cause problems if you use multi-word synonyms. See [[https://github.com/vufind-org/vufind/pull/1937|pull request #1937]] for details on new configuration options if you need to restore the old behavior. 
 +  * :!: VuFind now expects browsers to support ES6; see the [[installation:requirements#browser_support|browser support statement]] for details. 
 +  * :!: Several changes have been made in relation to VuFind's caching layer (see [[https://github.com/vufind-org/vufind/pull/2054|pull request #2054]]): 
 +    * The \VuFind\Cache\Storage\Adapter\NoCacheAdapter has been removed, because the core Laminas BlackHole adapter serves the same purpose. 
 +    * Support for caching in APC has been removed, because APC is obsolete as of PHP 7. 
 +    * Several deprecated storage adapters are no longer being installed through Composer (and were never needed to begin with). 
 +    * The constructor signature of \VuFind\Cache\Manager has changed for compatibility with the latest release of the laminas-cache component. 
 +  * :!: MARC record handling in record drivers has been refactored to use the faster VuFind\Marc\MarcReader instead of the File_MARC library; this has resulted in some changes to MARC-related support methods like getSubfieldArray(). If you have custom MARC handling in a local record driver, you may need to replace getMarcRecord() calls with getMarcReader() and adjust some other details. See [[https://github.com/vufind-org/vufind/pull/1776|pull request #1776]] for details. 
 +  * :!: Pre-existing record driver traits (HierarchyAwareTrait, IlsAwareTrait, MarcAdvancedTrait and MarcBasicTrait) have been moved into the VuFind\RecordDriver\Feature namespace (from VuFind\RecordDriver) to improve code organization; if you have a custom driver which incorporates these traits, you'll just need to adjust your use statements. See [[https://github.com/vufind-org/vufind/pull/2008|pull request #2008]]. 
 +  * :!: Functions deprecated in earlier versions of VuFind have been removed; these include CallNumberTools::getFullCallNumber and CreatorTools::getParsedTagList in the SolrMarc custom indexing Java code, and \Db\Row\UserList::getTags and \Db\Table\ResourceTags::destroyLinks in the PHP code. See [[https://github.com/vufind-org/vufind/pull/2014|pull request #2014]] for details. 
 +  * :!: VuFind\View\Helper\Root\AbstractClassBasedTemplateRenderer has been replaced by VuFind\View\Helper\Root\ClassBasedTemplateRendererTrait, and the signature of the protected resolveClassTemplate() method has changed. If you have a custom view helper that extends this base class, you should revise it to use the trait instead. See [[https://github.com/vufind-org/vufind/pull/1747|pull request #1747]] for details. 
 +  * :!: Text normalization logic has been factored out of the VuFindSearch\Query objects and into a separate class for greater flexibility/extensibility/separation of concerns, and the VuFindSearch\Query\QueryInterface has been changed to reflect this. If you have custom query objects or custom code that deals with query text normalization, some adjustments may be required. See [[https://github.com/vufind-org/vufind/pull/1714|pull request #1714]] for details. 
 +  * :!: The VuFindSearch\Service has been refactored to use the Command Pattern; you can now send command objects to the service's invoke method instead of calling more specific search/retrieve/etc. methods. These command objects are also shared with search listeners. The command system makes it easier to customize search behavior without having to rewrite the search service itself. This has been implemented in a mostly-backward-compatible way, but the old way of doing things is deprecated in this release and will be removed in VuFind 9.0. If you make calls to the search service in your code, and/or if you have written any custom search listeners, you should update your code to use command objects instead of the old techniques. When using command objects, some event details will be different (some arguments may not be present, and the event target will also be different). See [[https://github.com/vufind-org/vufind/pull/1967|pull request #1967]] for details and examples, and [[https://github.com/vufind-org/vufind/pull/2108|pull request #2108]] for some subsequent revisions to event targets. 
 +  * :!: The HTTP behavior of the VuFindSearch\Backend\Solr\Connector class has been simplified. It now accepts a client object as a constructor parameter, and the setAdapter and setProxy methods have been removed. If you use Solr connectors in custom code, you may need to adjust your logic. See [[https://github.com/vufind-org/vufind/pull/2011|pull request #2011]]. 
 +  * :!: The classes used for sending messages to Solr have been rewritten for greater flexibility; see [[https://github.com/vufind-org/vufind/pull/1952|pull request #1952]]. If you have custom code using any classes from the \VuFindSearch\Backend\Solr\Document namespace, or if your code interacts with the \VuFind\Solr\Writer or calls \VuFindSearch\Backend\Solr\Connector::write(), some adjustments may be required. 
 +  * :!: Direct access to search backends through the BackendManager (which bypasses the normal event-driven search service) is STRONGLY DISCOURAGED because it can lead to inconsistent event-related behavior. All existing VuFind code following this anti-pattern has been refactored, which has resulted in constructor signature changes in these classes: 
 +    * \VuFind\Autocomplete\EDS 
 +    * \VuFind\ChannelProvider\Channels 
 +    * \VuFind\Content\Covers\BrowZine 
 +    * \VuFind\DoiLinker\BrowZine 
 +    * \VuFind\Hierarchy\TreeDataSource\Solr 
 +    * \VuFind\Recommend\MapSelection 
 +    * \VuFind\Record\FallbackLoader\Summon 
 +    * \VuFind\RecordTab\HoldingsWorldCat 
 +    * \VuFind\Solr\Writer 
 +  * :!: The RecordLink view helper has been replaced by the RecordLinker view helper (see [[https://github.com/vufind-org/vufind/pull/2072|pull request #2072]]). RecordLink will be maintained for backward template compatibility until release 9.0, when it will be removed. However, any local subclasses of RecordLink should be rewritten as subclasses of RecordLinker. The changes in RecordLinker include: 
 +    * The deprecated getHoldUrl() method has been removed 
 +    * All methods returning URLs return raw URLs, not HTML-escaped versions; you are responsible for escaping this output when using it in HTML. This makes the methods more flexible and eliminates some inconsistencies from the previous helper 
 +    * getBreadcrumb() has been renamed to getBreadcrumbHtml() to indicate that it returns HTML rather than a plain link 
 +    * The \VuFind\OAI\Server::setRecordLinkHelper() method has been renamed to setRecordLinkerHelper(). 
 +    * The \VuFind\RecordDriver\DefaultRecord::getXML() method has been adjusted to accept the new helper class instead of the old one. 
 +  * :!: \VuFind\Record\SourceAndIdList::getRecordPosition() has been replaced with \VuFind\Record\SourceAndIdList::getRecordPositions(). If you are using the old method (which is extremely unlikely, unless you have customized \VuFind\Record\Loader), you will need to adjust your code. 
 +  * :!: \VuFindTheme\View\Helper\HeadThemeResources::parseSetting() has been moved to \VuFindTheme\ResourceContainer::parseSetting() and will eventually be deprecated; in the unlikely situation that you rely on this method, you should revise your code. 
 +  * :!: The "cssBuilder" command line utility has been deprecated; use the "grunt less" command to compile LESS instead. See [[https://github.com/vufind-org/vufind/pull/1925|pull request #1925]] for related discussion. 
 +  * :!: The VuFind\Db\Table\Tags::getForUser method has been renamed to getListTagsForUser to improve clarity. In the unlikely case that you use this method in custom code, you will need to change your call to use the new name. See [[https://github.com/vufind-org/vufind/pull/2017|pull request #2017]]. 
 +  * :!: The MyResearchController is being split up to improve code organization and clarity. If you extend/customize this controller, you may need to revise your code. Specific changes: 
 +    * Holds-related functionality (the holdsAction method) has been moved to a separate HoldsController, and the myresearch-holds route now redirects to holds-list. 
 +    * The getDriversForILSRecords and collectRequestAccountStats support methods have been moved to a new ilsRecords() controller plugin. 
 +    * The getRefreshResponse method has been refactored to the AbstractBase controller for reuse elsewhere. 
 +  * :!: The Laminas dependency plugin has been removed; if you have not fully migrated local legacy Zend Framework code to Laminas, you may have problems with this release. 
 +  * :!: The code to delete expired rows from database tables (old searches, sessions, etc.) has been refactored to reduce complexity and improve performance (see [[https://github.com/vufind-org/vufind/pull/1815|pull request #1815]]). In the unlikely event that you have built any custom expiration tools, you will need to adjust them to match. 
 +  * :!: If you have customized the extensions setting in markdown.ini, you should make sure that the Autolink, DisallowedRawHtml, Strikethrough, Table and TaskList extensions are enabled in your extensions setting; these are now active by default and are required by default behavior. See [[https://github.com/vufind-org/vufind/pull/2006|pull request #2006]] for details. If you have not customized this setting or do not use Markdown for content rendering, no action is needed. 
 +  * :!: The endroid/qr-code library has changed significantly; if you have custom QR code logic, you will need to adjust it. See [[https://github.com/vufind-org/vufind/pull/1954|pull request #1954]] for details. 
 +  * :!: VuFind\Log\Logger, VuFind\Resolver\Driver\Ezb, VuFind\Role\PermissionProvider\IpRange, and VuFind\Role\PermissionProvider\IpRegEx now explicitly depend upon VuFind\Net\UserIpReader; this dependency was previously optional. If you have customized any of these classes, minor adjustments may be needed. See [[https://github.com/vufind-org/vufind/pull/2009|pull request #2009]]. 
 +  * :!: Some typehints have been changed on the VuFind\Search\Solr\DeduplicationListener constructor; if you have a custom subclass, you should adjust it to match. See [[https://github.com/vufind-org/vufind/pull/1844|pull request #1844]]. 
 +  * :!: Typehints referring to \Laminas\ServiceManager\ServiceManager have been replaced with more generic ContainerInterface references to improve flexibility in the future; consider making similar adjustments to ServiceManager typehints in local custom code. See [[https://github.com/vufind-org/vufind/pull/1848|#1848]] for more details. 
 +  * :!: Locale/language detection is now achieved using the [[https://packagist.org/packages/slm/locale|slm/locale]] module, reducing VuFind-specific custom code. If you have custom locale detection logic, you may need to adjust your code. See [[https://github.com/vufind-org/vufind/pull/1885|pull request #1885]]. 
 +  * :!: Initialization of the Laminas i18n system has been streamlined and standardized; if you have a custom translator factory or have customized the DisplayLanguageOption view helper (both unlikely situations), you may need to make some adjustments. See [[https://github.com/vufind-org/vufind/pull/1928|pull request #1928]] for details. 
 +  * :!: A new mechanism has been added for showing/hiding long elements of the display (see [[https://github.com/vufind-org/vufind/pull/2121|pull request #2121]]). This is used for SideFacets, TopFacets and WorldCatIdentities recommendation modules, replacing the old registerMoreLessFacetsEventHandlers() function in facets.js. If you have any custom code relying on this function, you should refactor to use the new mechanism. 
 +  * :!: The constructor signature of the JsTranslations view helper has changed; in the unlikely situation that you have overridden it, you will need to adjust your subclass to match. See [[https://github.com/vufind-org/vufind/pull/1981|pull request #1981]]. 
 +  * :!: The \VuFind\Sitemap\Generator class has been drastically refactored to improve code organization, extensibility and testability. This includes changes to the class' constructor signature; you will have to adjust custom subclasses to match, if you have any, and some logic may need to be moved to plugins. See [[https://github.com/vufind-org/vufind/pull/1904|pull request #1904]] and [[https://github.com/vufind-org/vufind/pull/2037|pull request #2037]] for details. 
 +  * :!: The getCancelHoldDetails, getCancelHoldLink, getCancelILLRequestDetails and getCancelStorageRetrievalRequestDetails methods have been updated across ILS drivers to consistently accept a second ($patron) parameter. If you have customized any of these methods in a subclass, you will need to make sure the signatures match. 
 +  * :!: To support [[configuration:static_pages#embedding_static_content|embedding static content]], some potentially backward-incompatible internal changes have been made to the VuFind\ContentBlock\TemplateBased class, its associated template, and the HelpText view helper. In the unlikely case that you have locally customized any of these things, you should review your changes with reference to [[https://github.com/vufind-org/vufind/pull/1874|pull request #1874]]. 
 +  * :!: The LBS4 ILS driver has been removed due to incompatibility with PHP 7 and a lack of demand for an updated version of the code. Please reach out to us if you still need it for any reason! 
 +  * :!: The Aleph ILS driver's [duedates] configuration section (and associated functionality) has been removed; this was using the duedate field inappropriately, and seems likely to be unused by the vast majority of users. See [[https://github.com/vufind-org/vufind/pull/1989|pull request #1989]]. 
 +  * :!: The "Expires" translation string has been split into several different strings to reduce ambiguity; if you have customized this string, you will need to make adjustments. See [[https://github.com/vufind-org/vufind/pull/1976|pull request #1976]]. 
 +  * :!: The [Advanced_Facets] section of EDS.ini has been replaced with a new advanced_limiters setting in the [General] section. The original version was not implemented correctly and had no effect; the new version provides the ability to filter and reorder limiters on the Advanced EDS search screen. See [[https://github.com/vufind-org/vufind/pull/2044|pull request #2044]] for details. 
 +  * :!: Due to changes in an upstream library, the name and location of the configuration key for ignoring specific exceptions in the Whoops error handler have changed; see [[https://github.com/vufind-org/vufind/pull/1993|pull request #1993]] if you need to use this setting. (This only applies to development mode, and it is unlikely that it is being locally customized). 
 +  * :!: The $forceOverride parameter of UrlQueryHelper::setDefaultParameter now defaults to false instead of true; this is unlikely to impact most users. See [[https://github.com/vufind-org/vufind/pull/2015|pull request #2015]]. 
 +  * :!: Templates for search results and other lists of records have been refactored to use HTML list tags for better accessibility; if you have customized these templates (or some record driver templates that interact with them), your custom code may need to be adjusted; see [[https://github.com/vufind-org/vufind/pull/1931|pull request #1931]]. 
 +  * :!: A bug in VuFind 7.1.x was preventing advanced Shibboleth configuration from loading correctly; it has been corrected by [[https://github.com/vufind-org/vufind/pull/2064|pull request #2064]]. If you previously worked around this problem by renaming Shibboleth.ini to shibboleth.ini (changing the case of the first letter), you should now change it back, as the correct filename will now load as intended. 
 +  * :!: \VuFind\Ils\Driver\CacheTrait has been renamed to \VuFind\Cache\CacheTrait. The old name will continue to work in VuFind 8.x but will be removed in VuFind 9.0. 
 +  * :!: If you use ojs-multirecord.xsl in your ojs.properties file for ingesting harvested XML from OJS, you should change the setting back to the default ojs.xsl. The base ojs.xsl file correctly handles both single-record and multi-record ingests now, so the ojs-multirecord.xsl file has been removed as redundant. 
 +  * :!: The \VuFind\Form\Form constructor signature has changed to load configuration differently; see [[https://github.com/vufind-org/vufind/commit/50642b18c8a9e4a02ae404db56a461da916a768e|commit 50642b]]. Additionally, the getElements() method has been renamed to getFormElementConfig() to resolve a conflict with the base class (see [[https://github.com/vufind-org/vufind/pull/2120|pull request #2120]]). 
 +  * :!: The Linkify view helper now uses the UrlHighlight library instead of the Linkify library for converting URLs into links inside text; see [[https://github.com/vufind-org/vufind/pull/1709|pull request #1709]]. 
 +  * :!: The Aleph driver no longer supports sorting of historical transactions, because it is incompatible with pagination (see [[https://github.com/vufind-org/vufind/pull/2126|pull request #2126]]). 
 +  * :!: The KohaILSDI driver has been updated to correctly retrieve fine data from Koha version 19.11 and up; earlier versions (which are no longer supported by the Koha community) are no longer compatible. 
 +  * Code specifically designed for decoding binary MARC records in Solr XML responses has been removed, as VuFind no longer uses Solr XML responses (JSON is now favored). If you use XML in Solr for some reason (very unlikely), you may need to compensate for this change. See [[https://github.com/vufind-org/vufind/pull/1900|pull request #1900]]. 
 +  * Support for passing an array of breadcrumb data (instead of an HTML string) to the layout has been removed; it is very unlikely that this feature was ever used, so it should not impact anyone. See [[https://github.com/vufind-org/vufind/pull/2098|pull request #2098]] for details. 
 +  * The English language files have been adjusted to replace the term "favorites" with "saved items" for a more consistent user experience. See [[https://github.com/vufind-org/vufind/pull/2020|pull request #2020]] 
 +  * The TopFacets recommendation module's output has been restructured, so the top_cols configuration setting (found in facets.ini and equivalent .ini files for other backends) is no longer meaningful and has been removed. 
 +  * Javascript translations have been refactored to a separate layout/js-translations.phtml to simplify layout/layout.phtml; you may wish to adjust your local theme to match if you have customized your layout. See [[https://github.com/vufind-org/vufind/pull/1691|pull request #1691]]. 
 + 
 +[[changelog:release-8.0|Press Release]] 
 +===== Release 7.1.1 - 7/5/2021 ===== 
 + 
 +  * Minor bug fix / improved translation release. 
 + 
 +===== Release 7.1 - 2/22/2021 ===== 
 + 
 +New features: 
 + 
 +  * The new [[configuration:record_versions|Record Versions]] feature provides links between different editions or versions of the same work; this is on by default but can be disabled through the display_versions setting in searches.ini if it is not needed. 
 +  * PHP 8 compatibility has been improved. 
 +  * Tags can now be applied to user lists as well as resources; this feature is disabled by default (see the listTags setting in config.ini). The ListItems [[development:plugins:channel_providers|channel provider]] now has new options to take advantage of list tags for channel selection. See [[https://github.com/vufind-org/vufind/pull/1645|pull request #1645]] for details. 
 +  * Facet values can be filtered natively in Solr (by prefix or regular expression) using the new facet_prefix_by_field and facet_matches_by_field settings in [[configuration:files:facets.ini]]; see [[https://github.com/vufind-org/vufind/pull/1694|pull request #1694]]. 
 +  * Solr has been upgraded to version 7.7.3. 
 +  * The Shibboleth authentication handler has been significantly revised and improved, with some new features and settings added; see [[https://github.com/vufind-org/vufind/pull/1617|pull request #1617]] for details. 
 +  * The XCNCIP2 ILS driver has been significantly revised and improved. 
 +  * If you wish to render a custom template instead of displaying a specific "no cover" image when a cover graphic cannot be found, you can use the useCoverFallbacksOnFail setting in combination with the ajaxcovers setting in config.ini; see [[https://github.com/vufind-org/vufind/pull/1679|pull request #1679]]. 
 +  * Permissions (and associated permission denied behavior) can now be applied to columns within combined search results. See [[https://github.com/vufind-org/vufind/pull/1707|pull request #1707]] for details. 
 +  * Specific values can be moved to the tops of the advanced search facet lists for Solr (for example, to highlight commonly-used values) using the new limitOrderOverride setting in facets.ini. See [[https://github.com/vufind-org/vufind/pull/1807|pull request #1807]] for details. 
 +  * A new log writer has been added for Office365 webhooks (for notifications into Microsoft Teams); see [[https://github.com/vufind-org/vufind/pull/1757|pull request #1757]]. 
 +  * The Solr field used for storing full MARC records in the index is now configurable (see [[https://github.com/vufind-org/vufind/pull/1813|pull request #1813]]). 
 +  * Some settings controlling the VuFind API are now more easily configurable (see [[https://github.com/vufind-org/vufind/pull/1838|pull request #1838]]). 
 + 
 +Possible backward compatibility breaks: 
 + 
 +  * :!: Be sure to run a database upgrade to reflect table changes (see also the [[development:architecture:database_schema#release_71|database changelog]]). 
 +  * :!: Be sure to reindex your records due to the Solr upgrade and to ensure that Record Version functionality is set up correctly. 
 +  * :!: If you use VuFind's optional sharding support, note that some additional Solr configuration may now be needed due to the upgrade; see "Configuring the ShardHandlerFactory" in [[https://lucene.apache.org/solr/guide/7_7/distributed-requests.html|the Solr documentation]] for details. 
 +  * :!: VuFind\Db\Row\UserList now has the VuFind\Tags service as a constructor parameter; in the unlikely case that you have a custom subclass/factory, be sure to adjust it accordingly. See [[https://github.com/vufind-org/vufind/commit/2b05cef5c7f3041444ad415935f482e8b3cacfee|commit 2b05cef]] for details. 
 +  * :!: VuFind\ChannelProvider\ListItems now has the VuFind\Db\Table\ResourceTags table object as a constructor parameter; in the unlikely case that you have a custom subclass/factory, be sure to adjust it accordingly. See [[https://github.com/vufind-org/vufind/pull/1645|pull request #1645]] for details. 
 +  * :!: The Symfony YAML library has been updated from version 3 to version 4, which has more strict validation rules; if you have custom YAML configurations, you should make sure that they still load correctly, and fix them if they contain errors. 
 +  * :!: If you use a custom version of the Shibboleth authentication handler, local customizations may need to be adjusted to match the refactoring in [[https://github.com/vufind-org/vufind/pull/1617|pull request #1617]]. 
 +  * :!: If you use the XCNCIP2 ILS driver, you should review [[https://github.com/vufind-org/vufind/pull/1672|pull request #1672]] and make sure that the changes and fixes there do not conflict with any local customizations. 
 +  * :!: The EDS integration now stores search options in the cache; this improves performance and stability by reducing reliance on the API, but it also means that you may need to clear your local cache if you change settings in EBSCO's admin panel. 
 +  * :!: The constructor signature of the KohaRest ILS driver has been changed to make the money format helper optional; in the very unlikely case that you have customized this, your subclass will need to be adjusted to match. See [[https://github.com/vufind-org/vufind/commit/b4edee8b80ca8fcd4c584d3f4483c3fe8f677fbf|commit b4edee8]] for details. 
 +  * :!: The constructor signature of the GetRecordCover AJAX handler class has been changed to fix a bug; in the very unlikely situation that you have extended this class, you will need to adjust your custom code to match. See [[https://github.com/vufind-org/vufind/pull/1842|pull request #1842]] for details. 
 +  * A new transEscAttr() view helper has been added (see [[https://github.com/vufind-org/vufind/pull/1820|pull request #1820]]) to escape translated text for use in HTML attributes. This should not introduce any backward compatibility problems, but if you are inserting translated text into HTML attributes in local custom templates, you should use this helper to ensure proper escaping with concise code. 
 +  * VuFind's Markdown processor ([[https://github.com/thephpleague/commonmark|league/commonmark]]) has been upgraded to version 1.5; this deprecates the "inner_contents" setting for the HeadingPermalink plugin, replacing it with "symbol." In the unlikely event that you have customized this setting in markdown.ini, you should update its name accordingly. 
 +  * VuFind\Db\Row\UserList::getTags() has been deprecated in favor of VuFind\Db\Row\UserList::getResourceTags(). VuFind\Db\Table\ResourceTags::destroyLinks() has been deprecated in favor of VuFind\Db\Table\ResourceTags::destroyResourceLinks(). The deprecated methods will be removed in VuFind 8.0. See [[https://github.com/vufind-org/vufind/commit/2b05cef5c7f3041444ad415935f482e8b3cacfee|commit 2b05cef]] for details. 
 + 
 +[[changelog:release-7.1|Press Release]] 
 +===== Release 7.0.2 - 12/7/2020 ===== 
 + 
 +  * Minor bug fix release. 
 +  * :!: Solr has been upgraded to version 7.4.0 in order to fix [[https://vufind.org/jira/browse/VUFIND-1459|VUFIND-1459]]. A reindex should not be necessary, but may be a good idea as a precaution. 
 +  * :!: Some style and template details have changed to fix a bug in the Channels interface; see [[https://github.com/vufind-org/vufind/pull/1787|pull request #1787]] for details. This is unlikely to impact you unless you have customized this optional feature. 
 +  * :!: An incompatibility between [[administration:security:content_security_policy|content security policy]] support and the [[administration:performance#asset_pipeline|asset pipeline]] has been resolved. If you are using both features, be sure to set the new asset_pipeline_max_css_import_size setting appropriately and/or adjust your CSP rules. See [[https://github.com/vufind-org/vufind/pull/1719|pull request #1719]] for details. 
 +  * :!: A fix for the KohaRest ILS driver added a parameter to the constructor, which introduced a change to the corresponding factory; if you have a custom subclass of this driver, minor adjustments may be needed. 
 + 
 +===== Release 7.0.1 - 8/31/2020 ====== 
 + 
 +  * Minor bug fix release. 
 +  * Includes updates to several dependencies (Laminas components, etc.). 
 +  * :!: To fix problems related to IP detection behind a proxy, the allow_forwarded_ips and forwarded_ip_filter settings have been added to config.ini. If you run VuFind behind a proxy and rely on IP detection, you should review these settings (and the related [[administration:security#proxies_and_ip_authentication|security wiki page]]) carefully. Some constructor signatures have changed to support this functionality, but backward compatibility breaks are unlikely; see [[https://github.com/vufind-org/vufind/pull/1681|pull request #1681]], [[https://github.com/vufind-org/vufind/pull/1682|#1682]] and [[https://github.com/vufind-org/vufind/pull/1687|#1687]] for details. 
 + 
 +===== Release 7.0 - 7/20/2020 =====
  
 New features: New features:
Line 14: Line 562:
   * Improved ILS drivers: the FOLIO driver is now production-ready, and the new KohaRest driver provides richer support for Koha (compatible with Koha 20.05+ using the [[https://github.com/natlibfi/koha-plugin-rest-di|koha-plugin-rest-di]] plugin).   * Improved ILS drivers: the FOLIO driver is now production-ready, and the new KohaRest driver provides richer support for Koha (compatible with Koha 20.05+ using the [[https://github.com/natlibfi/koha-plugin-rest-di|koha-plugin-rest-di]] plugin).
   * When using the optional link shortener feature, you can now configure how shortlinks redirect to full URLs (HTML-based, header-based, or conditional URL-length-based redirection). See [[https://github.com/vufind-org/vufind/pull/1533|pull request #1533]].   * When using the optional link shortener feature, you can now configure how shortlinks redirect to full URLs (HTML-based, header-based, or conditional URL-length-based redirection). See [[https://github.com/vufind-org/vufind/pull/1533|pull request #1533]].
-  * VuFind's integration with EBSCO Discovery Service has been significantly improved, with a large number of bug fixes.+  * VuFind's integration with EBSCO Discovery Service has been significantly improved, with a large number of bug fixes and added support for citation and export functionality.
   * New [[development:plugins:view_helpers|view helpers]] ("slot" and "parentTemplate" / "templatePath") make it easier to extend and customize core templates. See [[https://github.com/vufind-org/vufind/pull/1454|pull request #1454]] and [[https://github.com/vufind-org/vufind/pull/1458|pull request #1458]] for details.   * New [[development:plugins:view_helpers|view helpers]] ("slot" and "parentTemplate" / "templatePath") make it easier to extend and customize core templates. See [[https://github.com/vufind-org/vufind/pull/1454|pull request #1454]] and [[https://github.com/vufind-org/vufind/pull/1458|pull request #1458]] for details.
   * Custom [[configuration:feedback|Feedback Forms]] now support help text both before and after form elements through new pre/post help configuration settings.   * Custom [[configuration:feedback|Feedback Forms]] now support help text both before and after form elements through new pre/post help configuration settings.
Line 23: Line 571:
   * The NoILS driver can now extract data from more than one MARC field at a time (for displaying status/call number information). See [[https://github.com/vufind-org/vufind/pull/1622|pull request #1622]].   * The NoILS driver can now extract data from more than one MARC field at a time (for displaying status/call number information). See [[https://github.com/vufind-org/vufind/pull/1622|pull request #1622]].
   * VuFind's [[development:apis|API]] now offers access to the secondary Solr index configurable through Search2.ini as well as the website index.   * VuFind's [[development:apis|API]] now offers access to the secondary Solr index configurable through Search2.ini as well as the website index.
 +  * Support routines have been developed for indexing geographic data from dc:coverage fields in XML records; it may be optionally turned on in the DSpace indexing example. See [[https://github.com/vufind-org/vufind/pull/1465|pull request #1465]] for details.
 +  * The ObalkyKnih cover image provider is now supported as an [[configuration:external_content|external content]] source.
   * In VuFind's browse module, the display order of browse options is now controlled by the order of configuration settings in the [Browse] section of [[configuration:files:config.ini]].   * In VuFind's browse module, the display order of browse options is now controlled by the order of configuration settings in the [Browse] section of [[configuration:files:config.ini]].
-  * VuFind's Mailer class now supports multi-part messages (though this capability is not currently being used in the core code). See [[https://github.com/vufind-org/vufind/pull/1610|pull request #1610]] for details.+  * VuFind's Mailer class now supports multi-part messages (though this capability is not being used in the core code yet). See [[https://github.com/vufind-org/vufind/pull/1610|pull request #1610]] for details.
   * The util/scssBuilder command line utility has been added for users who wish to use SCSS instead of the default LESS for building VuFind's CSS.   * The util/scssBuilder command line utility has been added for users who wish to use SCSS instead of the default LESS for building VuFind's CSS.
 +  * VuFind now sets the SameSite attribute on cookies for improved browser compatibility; see [[https://github.com/vufind-org/vufind/pull/1664|pull request #1664]].
  
 Possible backward compatibility breaks: Possible backward compatibility breaks:
Line 38: Line 589:
   * :!: As noted above, you are strongly encouraged to configure a [[administration:security:content_security_policy|content security policy]] for improved security. Note that adjustments to local custom themes may be needed to conform to security requirements; for example, Javascript event attributes (onclick, etc.) should not be used, and all scripts should be loaded through the Laminas headScript or inlineScript helpers instead of with hand-written script tags.   * :!: As noted above, you are strongly encouraged to configure a [[administration:security:content_security_policy|content security policy]] for improved security. Note that adjustments to local custom themes may be needed to conform to security requirements; for example, Javascript event attributes (onclick, etc.) should not be used, and all scripts should be loaded through the Laminas headScript or inlineScript helpers instead of with hand-written script tags.
   * :!: If you are using ReCaptcha, several configuration settings have been renamed; the automated configuration updates through the web-based upgrade tool will take care of this, but if you are using a different mechanism to upgrade, you may need to make some adjustments to config.ini; see [[https://github.com/vufind-org/vufind/pull/1574|pull request #1574]] for details.   * :!: If you are using ReCaptcha, several configuration settings have been renamed; the automated configuration updates through the web-based upgrade tool will take care of this, but if you are using a different mechanism to upgrade, you may need to make some adjustments to config.ini; see [[https://github.com/vufind-org/vufind/pull/1574|pull request #1574]] for details.
 +  * :!: The recaptcha view helper has been replaced by a more generic helper. If you have custom templates referencing this view helper, you will need to update them; see [[https://github.com/vufind-org/vufind/pull/1574|pull request #1574]] for details.
   * :!: VuFind's session handler code has been significantly refactored to improve extensibility and testability; see [[https://github.com/vufind-org/vufind/pull/1506|pull request #1506]] for details. If you have built a custom session handler, it will likely need to be adjusted; otherwise, this should not impact you.   * :!: VuFind's session handler code has been significantly refactored to improve extensibility and testability; see [[https://github.com/vufind-org/vufind/pull/1506|pull request #1506]] for details. If you have built a custom session handler, it will likely need to be adjusted; otherwise, this should not impact you.
   * :!: VuFind's jQuery version has been upgraded from 2.1.1 to 3.5.1; if you have custom jQuery code, you should double-check its compatibility.   * :!: VuFind's jQuery version has been upgraded from 2.1.1 to 3.5.1; if you have custom jQuery code, you should double-check its compatibility.
   * :!: Several templates have been rewritten to use the slot view helper instead of view variables, improving readability and extensibility; if you have extended these templates yourself, the code may need to be adjusted. See [[https://github.com/vufind-org/vufind/pull/1454|pull request #1454]] details.   * :!: Several templates have been rewritten to use the slot view helper instead of view variables, improving readability and extensibility; if you have extended these templates yourself, the code may need to be adjusted. See [[https://github.com/vufind-org/vufind/pull/1454|pull request #1454]] details.
 +  * :!: The record/cover.phtml template has been moved to RecordDriver/DefaultRecord/cover.phtml, so that cover thumbnail rendering is now record-driver-specific. See [[https://github.com/vufind-org/vufind/pull/1566|pull request #1566]] for details.
   * :!: Support for Amazon cover images and reviews has been removed; the ZendService\Amazon library has been deprecated, and there was insufficient demand to take the time to port the code to a new library. If you need Amazon support, please open a new [[https://vufind.org/jira|JIRA]] ticket.   * :!: Support for Amazon cover images and reviews has been removed; the ZendService\Amazon library has been deprecated, and there was insufficient demand to take the time to port the code to a new library. If you need Amazon support, please open a new [[https://vufind.org/jira|JIRA]] ticket.
   * :!: The \VuFind\Search\Base\Params::getFilters() method, which was deprecated in release 6.1 (see [[https://github.com/vufind-org/vufind/pull/1489|pull request #1489]]), has now been completely removed; use \VuFind\Search\Base\Params::getRawFilters() instead.   * :!: The \VuFind\Search\Base\Params::getFilters() method, which was deprecated in release 6.1 (see [[https://github.com/vufind-org/vufind/pull/1489|pull request #1489]]), has now been completely removed; use \VuFind\Search\Base\Params::getRawFilters() instead.
Line 47: Line 600:
   * :!: The sitemap generator now uses the search service instead of direct access to the Solr connector; to support this, the constructor signature of \VuFind\Sitemap\Generator has changed, and the service is now constructed using a factory instead of hard-coded controller logic. If you have customized any of this, adjustments may be needed; see [[https://github.com/vufind-org/vufind/pull/1486|pull request #1486]].   * :!: The sitemap generator now uses the search service instead of direct access to the Solr connector; to support this, the constructor signature of \VuFind\Sitemap\Generator has changed, and the service is now constructed using a factory instead of hard-coded controller logic. If you have customized any of this, adjustments may be needed; see [[https://github.com/vufind-org/vufind/pull/1486|pull request #1486]].
   * :!: The way feedback forms do text translation has been refactored; if you have customized this code, you may need to adjust to match. See [[https://github.com/vufind-org/vufind/pull/1565|pull request #1565]].   * :!: The way feedback forms do text translation has been refactored; if you have customized this code, you may need to adjust to match. See [[https://github.com/vufind-org/vufind/pull/1565|pull request #1565]].
 +  * :!: AJAX item status loading has been improved and refactored; in the unlikely event that you have customized or extended this Javascript code, you may need to make adjustments. See [[https://github.com/vufind-org/vufind/pull/1663|pull request #1663]].
 +  * :!: The Javascript cookie management library used by the book bag feature has been replaced with something more up-to-date; see [[https://github.com/vufind-org/vufind/pull/1673|pull request #1673]].
   * :!: Because score values are never used in core code (except when dumped out in non-MARC staff view tabs), the default field list retrieved from Solr has been changed from "*,score" to simply "*". There is now a default_record_fields setting in searches.ini (and other equivalent Solr backend configurations) which can be used to customize the field list. See [[https://github.com/vufind-org/vufind/pull/1568/files|pull request #1568]] for details.   * :!: Because score values are never used in core code (except when dumped out in non-MARC staff view tabs), the default field list retrieved from Solr has been changed from "*,score" to simply "*". There is now a default_record_fields setting in searches.ini (and other equivalent Solr backend configurations) which can be used to customize the field list. See [[https://github.com/vufind-org/vufind/pull/1568/files|pull request #1568]] for details.
   * :!: The SierraRest ILS driver now defaults to API version 5 instead of API version 3 to reflect deprecations in the Sierra platform. See [[https://github.com/vufind-org/vufind/pull/1659|pull request #1659]] for details.   * :!: The SierraRest ILS driver now defaults to API version 5 instead of API version 3 to reflect deprecations in the Sierra platform. See [[https://github.com/vufind-org/vufind/pull/1659|pull request #1659]] for details.
   * :!: Some internals of the Primo Central integration have changed slightly; see [[https://github.com/vufind-org/vufind/pull/1653|pull request #1653]].   * :!: Some internals of the Primo Central integration have changed slightly; see [[https://github.com/vufind-org/vufind/pull/1653|pull request #1653]].
 +  * :!: Some configuration settings have been renamed to use more inclusive terminology: whitelist/blacklist in Voyager.ini and VoyagerRestful.ini are now include_list/exclude_list; domain_whitelist in config.ini is now legal_domains. Legacy values will still be acknowledged for backward compatibility, but new values will take precedence. See [[https://github.com/vufind-org/vufind/pull/1671|pull request #1671]] for details.
   * The EBSCO Discovery Service integration now uses POST instead of GET for search API requests; the legacy GET behavior can still be accessed through an EDS.ini setting. See [[https://github.com/vufind-org/vufind/pull/1627|pull request #1627]] for details.   * The EBSCO Discovery Service integration now uses POST instead of GET for search API requests; the legacy GET behavior can still be accessed through an EDS.ini setting. See [[https://github.com/vufind-org/vufind/pull/1627|pull request #1627]] for details.
   * The \VuFind\RecordTab\TabManager::zendConfig property has been renamed to legacyConfig to prevent Laminas-related confusion; because this property is only used for accessing obsolete configuration settings, the impact of this change is expected to be minimal... but if you have customized the TabManager, you should check for issues. See [[https://github.com/vufind-org/vufind/commit/46e10504b90da88d0b4673a085b19941088f23b4|this commit]] for details.   * The \VuFind\RecordTab\TabManager::zendConfig property has been renamed to legacyConfig to prevent Laminas-related confusion; because this property is only used for accessing obsolete configuration settings, the impact of this change is expected to be minimal... but if you have customized the TabManager, you should check for issues. See [[https://github.com/vufind-org/vufind/commit/46e10504b90da88d0b4673a085b19941088f23b4|this commit]] for details.
  
-===== Release 6.1.2 - coming 7/13/2020 =====+[[changelog:release-7.0|Press Release]] 
 +===== Release 6.1.2 - 7/13/2020 =====
  
   * Minor bug fix / improved accessibility release.   * Minor bug fix / improved accessibility release.
   * :!: Note: when using this release, you may see a warning about MySQL SSL configuration while indexing MARC records; this is a side effect of improved MySQL 8 compatibility, but it is harmless. MySQL SSL configuration will be addressed in more detail in a future release; see [[https://vufind.org/jira/browse/VUFIND-1395|VUFIND-1395]].   * :!: Note: when using this release, you may see a warning about MySQL SSL configuration while indexing MARC records; this is a side effect of improved MySQL 8 compatibility, but it is harmless. MySQL SSL configuration will be addressed in more detail in a future release; see [[https://vufind.org/jira/browse/VUFIND-1395|VUFIND-1395]].
 +  * :!: Because of accessibility improvements/fixes, there are some LESS/CSS and template changes in this release; you should review custom themes in case they are impacted.
 ===== Release 6.1.1 - 3/16/2020 ===== ===== Release 6.1.1 - 3/16/2020 =====
  
Line 170: Line 727:
   * New "SideFacetsDeferred" option to load facet data asynchronously, which may improve performance in some environments (off by default; see [[https://github.com/vufind-org/vufind/pull/1246|pull request #1246]] for details).   * New "SideFacetsDeferred" option to load facet data asynchronously, which may improve performance in some environments (off by default; see [[https://github.com/vufind-org/vufind/pull/1246|pull request #1246]] for details).
   * [[development:plugins:ils_drivers|ILS drivers]] can now report "last pickup" dates for holds (currently supported by SierraRest driver).   * [[development:plugins:ils_drivers|ILS drivers]] can now report "last pickup" dates for holds (currently supported by SierraRest driver).
-  * New [[development:plugins:doi_linkers|DOI Linker]] plugin interface for providing full text links and contextual information based on record DOIs; currently implemented using the [[https://thirdiron.com/academic/|BrowZine]] service. See [[https://github.com/vufind-org/vufind/commit/a595b80d64708f8b3bbb1bedf0ee58cc0a411c90|this commit]] and [[https://github.com/vufind-org/vufind/commit/b7f0864c757a3d26e96c84a119a2410ef5bd5357|this commit]] for more details.+  * New [[development:plugins:doi_linkers|DOI Linker]] plugin interface for providing full text links and contextual information based on record DOIs; currently implemented using the [[https://thirdiron.com/products/browzine/|BrowZine]] service. See [[https://github.com/vufind-org/vufind/commit/a595b80d64708f8b3bbb1bedf0ee58cc0a411c90|this commit]] and [[https://github.com/vufind-org/vufind/commit/b7f0864c757a3d26e96c84a119a2410ef5bd5357|this commit]] for more details.
   * New [[configuration:feedback|Configurable Feedback Forms]], greatly extending the existing feedback functionality.   * New [[configuration:feedback|Configurable Feedback Forms]], greatly extending the existing feedback functionality.
   * New [[development:code_generators#creating_new_plugins|Plugin Code Generator]] to automatically create and configure custom VuFind [[development:plugins|plugins]]; see also [[https://github.com/vufind-org/vufind/pull/1247|pull request #1247]].   * New [[development:code_generators#creating_new_plugins|Plugin Code Generator]] to automatically create and configure custom VuFind [[development:plugins|plugins]]; see also [[https://github.com/vufind-org/vufind/pull/1247|pull request #1247]].
Line 236: Line 793:
     * The factory classes for Search Params and Results objects assume that the Options/Params/Results trio exists in the same namespace. If you override a Params object without overriding the corresponding Options, or if you override Results without also overriding Options and Params, you can set up aliases in your configuration to map the custom namespace to point to the appropriate core classes.     * The factory classes for Search Params and Results objects assume that the Options/Params/Results trio exists in the same namespace. If you override a Params object without overriding the corresponding Options, or if you override Results without also overriding Options and Params, you can set up aliases in your configuration to map the custom namespace to point to the appropriate core classes.
     * Adding a setPluginManager method to a plugin no longer auto-injects the plugin manager; use a factory instead (see [[https://github.com/vufind-org/vufind/pull/1069|pull request #1069]]).     * Adding a setPluginManager method to a plugin no longer auto-injects the plugin manager; use a factory instead (see [[https://github.com/vufind-org/vufind/pull/1069|pull request #1069]]).
-    * A [[https://github.com/vufind-org/vufind/blob/master/module/VuFind/src/VuFind/Search/BackendRegistry.php|VuFind\Search\BackendRegistry]] class has been added to replace the scoped service manager that was previously used (scoped service managers are no longer supported). See [[https://github.com/vufind-org/vufind/pull/1068|pull request #1068]].+    * A [[https://github.com/vufind-org/vufind/blob/dev/module/VuFind/src/VuFind/Search/BackendRegistry.php|VuFind\Search\BackendRegistry]] class has been added to replace the scoped service manager that was previously used (scoped service managers are no longer supported). See [[https://github.com/vufind-org/vufind/pull/1068|pull request #1068]].
     * The initialization of the ResultFeed view helper (used for building RSS feeds) has been adjusted (see [[https://github.com/vufind-org/vufind/pull/1072|pull request #1072]]).     * The initialization of the ResultFeed view helper (used for building RSS feeds) has been adjusted (see [[https://github.com/vufind-org/vufind/pull/1072|pull request #1072]]).
     * The getSuggestions() method has been moved from \VuFind\Autocomplete\PluginManager to a new \VuFind\Autocomplete\Suggester class for cleaner design.     * The getSuggestions() method has been moved from \VuFind\Autocomplete\PluginManager to a new \VuFind\Autocomplete\Suggester class for cleaner design.
Line 298: Line 855:
   * Integration of the [[https://github.com/filp/whoops|Whoops]] error handler for more detailed debug information after unexpected exceptions (only active in development mode).   * Integration of the [[https://github.com/filp/whoops|Whoops]] error handler for more detailed debug information after unexpected exceptions (only active in development mode).
   * More flexible configuration options for permission handling; you can now configure how denied permissions are managed in templates and controllers. See [[https://vufind.org/wiki/configuration:permission_options|Permission Options]] for documentation.   * More flexible configuration options for permission handling; you can now configure how denied permissions are managed in templates and controllers. See [[https://vufind.org/wiki/configuration:permission_options|Permission Options]] for documentation.
-  * [[indexing:alphabetical_heading_browse|Alphabetical browse]] options can now be configured to be included in the default VuFind search options drop-down on every page. See the includeAlphaBrowse setting in [[https://github.com/vufind-org/vufind/blob/master/config/vufind/searchbox.ini|searchbox.ini]].+  * [[indexing:alphabetical_heading_browse|Alphabetical browse]] options can now be configured to be included in the default VuFind search options drop-down on every page. See the includeAlphaBrowse setting in [[https://github.com/vufind-org/vufind/blob/dev/config/vufind/searchbox.ini|searchbox.ini]].
   * [[development:architecture:user_interface#mix-ins|"Mix-in"]] feature allowing discrete packages of templates and assets (JS/CSS/etc.) to be easily shared and incorporated into themes.   * [[development:architecture:user_interface#mix-ins|"Mix-in"]] feature allowing discrete packages of templates and assets (JS/CSS/etc.) to be easily shared and incorporated into themes.
   * Command line [[administration:performance#theme_compiler|theme compiler]] tool which can flatten a hierarchy of themes into a single theme for improved performance.   * Command line [[administration:performance#theme_compiler|theme compiler]] tool which can flatten a hierarchy of themes into a single theme for improved performance.
Line 429: Line 986:
  
   * :!: The new release of SolrMarc has been designed with backward compatibility in mind, but because it is a major revision, watch carefully in case of backward-incompatible changes. As of this writing, the only known differences are some minor changes to the handling of punctuation in the topic and title_sort fields, both of which seem to improve results slightly. Also note that the log4j configuration has been adjusted, so if you have customized your own logging settings, these may need to be re-examined.   * :!: The new release of SolrMarc has been designed with backward compatibility in mind, but because it is a major revision, watch carefully in case of backward-incompatible changes. As of this writing, the only known differences are some minor changes to the handling of punctuation in the topic and title_sort fields, both of which seem to improve results slightly. Also note that the log4j configuration has been adjusted, so if you have customized your own logging settings, these may need to be re-examined.
-  * :!: Indexing of relator terms has become more complex to support the rich data available in some records. If you see warnings during indexing time about "Unknown relators" you may need to make some adjustments to the author* settings in [[https://github.com/vufind-org/vufind/blob/master/import/marc.properties|marc.properties]] and/or the synonym mappings in [[https://github.com/vufind-org/vufind/blob/master/config/vufind/author-classification.ini|author-classification.ini]]. See comments in both of those files for details.+  * :!: Indexing of relator terms has become more complex to support the rich data available in some records. If you see warnings during indexing time about "Unknown relators" you may need to make some adjustments to the author* settings in [[https://github.com/vufind-org/vufind/blob/dev/import/marc.properties|marc.properties]] and/or the synonym mappings in [[https://github.com/vufind-org/vufind/blob/dev/config/vufind/author-classification.ini|author-classification.ini]]. See comments in both of those files for details.
   * :!: Removed getController() method from the Record view helper; this has served no purpose since VuFind 2.4.x, but some meaningless references to it have lingered in templates through 3.0.x. Remove any references from your local custom templates!   * :!: Removed getController() method from the Record view helper; this has served no purpose since VuFind 2.4.x, but some meaningless references to it have lingered in templates through 3.0.x. Remove any references from your local custom templates!
   * :!: Search result and list templates (result-list.phtml and list-entry.phtml in record driver template directories, plus the wrapping templates/search/list-list.phtml) have been switched to use [[http://getbootstrap.com/components/#media|Bootstrap's media objects]]. Visual anomalies may occur if custom templates are not adjusted to utilize new styling. See [[https://github.com/vufind-org/vufind/commit/83a116940c8a534382b0cc6b602c9bddd289ca12|this commit]] for details.   * :!: Search result and list templates (result-list.phtml and list-entry.phtml in record driver template directories, plus the wrapping templates/search/list-list.phtml) have been switched to use [[http://getbootstrap.com/components/#media|Bootstrap's media objects]]. Visual anomalies may occur if custom templates are not adjusted to utilize new styling. See [[https://github.com/vufind-org/vufind/commit/83a116940c8a534382b0cc6b602c9bddd289ca12|this commit]] for details.
Line 1037: Line 1594:
   * LDAP Authentication   * LDAP Authentication
 ---- struct data ---- ---- struct data ----
 +properties.Page Owner : 
 ---- ----
  
changelog.1593599653.txt.gz · Last modified: 2020/07/01 10:34 by demiankatz