JBAS-2115 3.2 release notes WIP
authorBill Erickson <berickxx@gmail.com>
Mon, 3 Dec 2018 17:25:53 +0000 (12:25 -0500)
committerBill Erickson <berickxx@gmail.com>
Thu, 21 Mar 2019 19:46:23 +0000 (15:46 -0400)
Signed-off-by: Bill Erickson <berickxx@gmail.com>
KCLS/docs/RELEASE_NOTES_2.12_TO_3.2_KCLS.adoc [new file with mode: 0644]

diff --git a/KCLS/docs/RELEASE_NOTES_2.12_TO_3.2_KCLS.adoc b/KCLS/docs/RELEASE_NOTES_2.12_TO_3.2_KCLS.adoc
new file mode 100644 (file)
index 0000000..418d085
--- /dev/null
@@ -0,0 +1,2658 @@
+= KCLS Evergreen 3.0, 3.1, and 3.2 Release Notes =
+
+:Author: Bill Erickson
+:Email: bserickson@kcls.org
+:Date: 2018-12-03
+:toc:
+:numbered:
+
+== FEATURES ==
+
+=== Circulation ===
+
+Batch Editing of Patron Records
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+There is a now a new interface analogous to the Copy Bucket interface
+to select and group a set of users into a User Bucket.
+The addition of users to a User Bucket is possible from the Patron Search
+interface by the use of a new grid Action, and directly on the User Bucket
+interface by user barcode. It is also possible to add users to a User
+Bucket by uploading a text file that contains a list of user barcodes.
+
+From this interface it is possible to perform a set of specific batch update
+operations on user records.
+
+Editing Users
++++++++++++++
+
+These fields can now be changed in batch via an action on the User Bucket
+grid if the staff user has the `UPDATE_USER` permission:
+
+ * Active flag
+ * Primary Permission Group (group application permissions consulted)
+ * Juvenile flag
+ * Home Library (`UPDATE_USER` checked against both old and new value)
+ * Privilege Expiration Date
+ * Barred flag (`BAR_PATRON` permission consulted)
+ * Internet Access Level
+
+Changes made in this interface can be rolled back.
+
+As a batch process, rather than a direct edit, this mechanism explicitly skips
+processing of Action/Trigger event definitions for user update.
+
+Deleting Users
+++++++++++++++
+
+The batch edit mechanism also allows for the batch deletion of user.  The staff
+user must have both the `UPDATE_USER` and `DELETE_USER` permissions.
+
+Changes made in this interface can be rolled back.
+
+As a batch process, rather than a direct edit, this mechanism explicitly skips
+processing of Action/Trigger event definitions for user deletion.
+
+This mechanism does not use the Purge User functionality, but instead simply
+marks the users as deleted.
+
+Editing Statistical Category Entries
+++++++++++++++++++++++++++++++++++++
+
+All users in the bucket can have their Statistical Category Entries
+modified. Unlike user data field updates, modification of Statistical
+Category Entries is permanent and cannot be rolled back.
+
+As a batch process, rather than a direct edit, this mechanism explicitly skips
+processing of Action/Trigger event definitions for user update.
+
+New Service Requirement
++++++++++++++++++++++++
+
+This new functionality makes use of the QStore service (`open-ils.qstore`), which was previously
+unused in production.  If this service has been removed from the configuration
+of a live Evergreen instances, it will need to be added back in order for
+batch user editing to succeed.
+
+Honor Timezone of the Acting Library
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Summary
++++++++
+
+* Display day-granular due dates in the circulating library's timezone.
+* Only display the date portion of the due date for day-granular circulations.
+* Display the full timestamp, in the client's timezone rather than the circulation library's, for hourly circulations.
+* Provide infrastructure for more advanced formatting of timestamps.
+* Override the built-in AngularJS date filter with an implementation that uses moment.js, providing consistency and better standards compliance.
+
+Details
++++++++
+
+This is a followup to the work done for 2.12, where we added the ability
+for the client to specify a timezone in which timestamps should be interpreted
+in business logic and the database.
+
+Most specifically, this work focuses on circulation due dates and the closed
+date editor. Due dates, where displayed using stock templates (including
+receipt templates) and used for fine calculation, are now manipulated in the
+library's configured timezone. This is controlled by the new 'lib.timezone'
+setting available via the Library Settings Editor, loaded from the server when
+required. Additionally, closings are recorded in the library's timezone so that
+due date calculation is more accurate. The closed date editor is also
+taught how to display closings in the
+closed library's timezone. Closed date entries also explicitly record if they
+are a full day closing, or a multi-day closing. This significantly simplifies
+the editor, and may be useful in other contexts.
+
+To accomplish this, we use the moment.js library and the moment-timezone addon.
+This is necessary because the stock AngularJS date filter does not understand
+locale-aware timezone values, which are required to support DST. A simple
+mapper translates the differences in format values from AngularJS date to
+moment.js.
+
+Of special note are a set of new filters used for formatting timestamps under
+certain circumstances. The new egOrgDateInContext, egOrgDate, and egDueDate
+filters provide the functionality, and autogrid is enhanced to make use of
+these where applicable. egGrid and egGridField are also taught to accept
+default and field-specific options for applying date filters. These filters may
+be useful in other or related contexts.
+
+The egDueDate filter, used for all existing displays of due date via Angular
+code, intentionally interprets timestamps in two different ways WRT timezone,
+based on the circulation duration. If the duration is day-granular (that is,
+the number of seconds in the duration is divisible by 86,400, or 24 hours worth
+of seconds) then the date is interpreted as being in the circulation library's
+timezone. If it is an hourly loan (any duration that does not meet the
+day-granular criterium) then it is instead displayed in the client's timezone,
+just as all other timestamps currently are, because of the previous Evergreen
+timezone work.
+
+The public catalog is adjusted to always display the due date in the circulating
+library's timezone. Because the public catalog displays only the date portion of the due
+date field, this difference is currently considered acceptable. If this proves
+to be a problem in the future, a minor adjustment can be made to match the
+egDueDate filter logic.
+
+Now that due dates are globally stored in the configured timezone of the
+circulating library, the automatic adjustment to day-granular due dates needs
+to take those timezones into account.
+
+An optional SQL command is provided by the upgrade script to retroactively
+adjust existing due dates after library configuration is complete.
+
+
+Enhancements to Hard Due Date Functionality
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+It will now be possible to delete Hard Due Date Values for dates that have
+passed. Also, the Hard Due Date updater will no longer change Ceiling Dates
+to a past date. This allows editing Ceiling Dates directly in a Hard Due Date
+as well as scheduling Ceiling Date changes via Hard Due Date Values.
+
+Patron Search by Birth Date
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+* Now you can include the patron birth year and/or birth month and/or
+  birth day when searching for patrons using the web staff client.
+* Day and month values are exact matches.  E.g. month "1" (or "01")
+  matches January, "12" matches December.
+* Year searches are "contains" searches.  E.g. year "15" matches 2015,
+  1915, 1599, etc.  For exact matches use the full 4-digit year.
+
+
+Patron Search from Place Hold
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+This feature allows staff members, when placing a
+hold on behalf of a patron in the web staff client, to search for
+patrons by names and other searchable patron information, rather than
+relying on barcode alone. In particular, after performing a catalog
+search or going to a specific bib record and clicking the 'Place Hold'
+button, the form now includes a 'Patron Search' button. This button
+will open a dialog allowing the staff member search for and select
+a patron record.
+
+
+
+
+Retrieve Recent Patrons 
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Adds a new library setting 'Number of Retrievable Recent Patrons' 
+('ui.staff.max_recent_patrons') that specifies the number of recently
+retrieved patrons that can be re-fetched from the staff client.
+
+A value of 0 means no recent patrons can be retrieved.
+A value greater than 1 means staff will be able to retrieve multiple
+recent patrons via a new Circulation 'Retrieve Recent Patrons' menu entry.
+
+The default value is 1 for backwards compatibility.
+
+Fuller title in XUL client Simplified Pull List
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The Simplified Pull List in the XUL client will now display subfields 245$n and
+$p in the title field. The addition will make it easier for staff to distinguish
+between different parts or seasons in a series.
+
+
+Transit Cancel Time and Terminology Change
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Transit Cancel Time
++++++++++++++++++++
+
+Previously, Evergreen deleted canceled (aborted) transits from the database.  Now
+the rows in `action.transit_copy`, `action.hold_transit_copy`, and `action.reservation_transit_copy`
+are preserved in the database, though still not visible to the end user in the staff client.
+This allows for better tracking of when transits are canceled for the purposes of knowing
+which staff member canceled the transit, etc.
+
+NOTE: This change may require the re-creation of transit reports to filter out canceled
+transits from the results.  Cloning the template and adding a 'Base Filter' of 'Cancel Time 
+Is NULL' will suffice.
+
+"Canceled Transit" Terminology Change
++++++++++++++++++++++++++++++++++++++
+
+The term "abort" has been replaced with "cancel" in all of the affected user interfaces.
+For internal continuity, however, the following permission codes have not changed:
+
+ * `ABORT_TRANSIT`
+ * `ABORT_REMOTE_TRANSIT`
+ * `ABORT_TRANSIT_ON_LOST`
+ * `ABORT_TRANSIT_ON_MISSING`
+
+Alternate Patron Hold Pickup
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+This feature adds a bit of convenience to a common task: checking out
+an item on hold to another patron (typically a family member or helper).
+
+When you checkout the item, you will get a pop-up window with warnings associated
+with this item.  The "ITEM_ON_HOLDS_SHELF" message is now expanded to
+
+ * Let you know the name of the person who had placed the hold.
+ * Give you the option (in the form of a checkbox) of cancelling the
+   hold placed by the above-named patron.  (Checked = Cancel the hold;
+   Unchecked = Leave the hold in place)
+
+The initial value of the checkbox is derived from the
+`circ.clear_hold_on_checkout` organizational setting.
+
+If the operator has CANCEL_HOLD privilege, then if the checkbox is checked and
+the checkout is allowed to proceed, the hold will be cancelled with a note that
+the item was checked out to another patron.
+
+This feature is available in the browser-based staff client.
+
+New Patron Billing Statement
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The Evergreen web staff client now includes a patron billing statement,
+which summarizes a patron's bills, credits and payments in a familiar
+layout.  This can be found on the "Statement" tab of the Patron Bill
+Details page. (From the Patron Bills page, double-click a row to view
+its details, or choose "Full Details" from the Actions menu.)
+
+Enhanced Billing Timestamp Support
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Previously, billings had to make do with a single timestamp attempting
+to fill two different roles.  In the case of an overdue fine, the
+timestamp represented the *end* of the fine period for that billing,
+while for all other fines, the timestamp was merely the time the bill
+was created.  This setup generally worked, but not without confusion,
+and limited our ability to understand and process the data.
+
+Billings will now have up to three timestamps: a create date, and when
+applicable, a fine period start and a fine period end.  This clarifies
+and simplifies things like backdating, retrospective fine generation,
+account balancing for negative balance avoidance, and billing timeline
+views.
+
+Copy Alerts and Suppression Matrix
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The Copy Alerts feature allows library staff to add customized alert
+messages to copies. The copy alerts will appear when a specific event
+takes place, such as when the copy is checked in, checked out, or
+renewed. Alerts can be temporary or persistent: temporary alerts will be
+disabled after the initial alert and acknowledgement from staff, while
+persistent alerts will display each time the alert event takes place.
+Copy Alerts can be configured to display at the circulating or owning
+library only or, alternatively, when the library at which the alert
+event takes place is not the circulating or owning library.  Copy Alerts
+can also be configured to provide options for the next copy status that
+should be applied to an item.  Library administrators will have the
+ability to create and customize Copy Alert Types and to suppress copy
+alerts at specific org units.
+
+Copy alerts can be added via the volume/creator and the check in,
+check out, and renew pages.  Copy alerts can also be managed at the
+item status page.
+
+Copy alert types can be managed via the Copy Alert Types page in
+Local Administration, and suppression of them can be administered
+via the Copy Alert Suppression page under Local Administration.
+
+Place Multiple Holds At Once
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Users with the appropriate permissions now have the ability to place multiple
+title/metarecords holds at once. This feature is especially beneficial for book
+clubs and reading groups, which need to place holds on multiple copies of a
+title.
+
+In order to use the feature:
+
+  * Set the _Maximum number of duplicate holds allowed_ Library Setting
+    (`circ.holds.max_duplicate_holds`) to a number higher than 1
+  * Log in as a user with the CREATE_DUPLICATE_HOLDS
+
+When placing a title or metarecord hold, a _Number of copies_ field will
+display for these users. This field is not available when placing part, volume
+or copy holds.
+
+This feature does not change the way in which the system fills holds. The
+multiple holds will fill in the same way that they would if the user had placed
+multiple holds separately.
+
+New Notice Columns in Items Out Grid
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The grid in the patron "items out" page in the Evergreen web staff client has two new
+columns indicating the number of notifications generated for a given loan and the date of
+the most recent notification. These columns will allow circulation staff to better respond to
+patron questions about whether they were sent notification about an overdue item.
+
+The columns are based on the number of completed Action Trigger events on the
+loan that have a 'checkout.due' hook. In other words, they would include overdue
+and courtesy notices.
+
+A new library setting, "Exclude Courtesy Notices from Patrons Itemsout Notices Count",
+if set will cause the notice count and date fields to exclude courtesy notices.
+
+Patron Email Addresses Now Clickable In Web Staff Client
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Adds a mailto link to the patron's email in their profile so it can
+be clicked to send and email to the patron. No new settings or
+permissions are included in this feature.
+
+Pickup Library for Staff-placed Holds
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Adds a new library setting, _circ.staff_placed_holds_fallback_to_ws_ou_,
+that helps determine the hold pickup library in cases where patrons don't
+have a preferred hold pickup library in their account and a staff member
+is placing the hold on their behalf.
+
+  * When this setting is true and the patron doesn't have a preferred
+  library listed, the hold pickup library will default to the
+  workstation's organizational unit.
+  * When this setting is false and the patron doesn't have a preferred
+  library listed, the hold pickup library will default to the
+  patron's home library.
+
+Autorenewal of Loans
+^^^^^^^^^^^^^^^^^^^^
+Circulation policies in Evergreen can now be configured to automatically renew
+certain items checked out on patron accounts. Circulations will be renewed
+automatically up to a custom limit (the `max_auto_renewal` field) and patrons
+will not need to log in to their OPAC accounts or ask library staff to manually
+renew materials.
+
+Two new action triggers have been added to Evergreen that permit the Auto-Renew
+feature. They can be found, configured, and enabled in Administration>Local
+Administration>Notifications/Action Triggers. They are named **Autorenew** and
+**AutorenewNotify**.
+
+The **Autorenew** A/T definition uses the `checkout.due` hook to automatically
+validate and renew (in the reactor) circulations on the day they are due,
+grouped by user. The output events of this definition is is the input used by
+the related **AutorenewNotify** A/T that simply uses a new hook called
+`autorenewal` to notify patrons via email of their currently due or
+auto-renewed items.
+
+In the webstaff's Patron Items Out page, the new column `AutoRenewalsRemaining`
+indicates how many autorenewals are available for a particular circulation.
+
+
+Emergency Closing Handler
+^^^^^^^^^^^^^^^^^^^^^^^^
+
+Staff are provided with interfaces and mechanisms to create library closings
+that, in addition to affecting future circulation and booking due dates, and
+hold shelf expirations, will automatically move existing circulation and booking
+due dates and hold shelf expiration times. This new functionality is
+conceptually described as Emergency Closings and business logic implementing it
+as the Emergency Closing Handler. It contains additions and adjustments to the
+user interface, business logic, and database layers. Access to this
+functionality is available through the Closed Dates Editor interface in the
+staff client which has been ported to AngularJS.
+
+Overview
+++++++++
+
+This development has created new business logic code to inspect, in real time,
+existing circulation, booking, and hold records, and modify such date and time
+stamps so that the circulation, booking, or hold will end in the same state it
+would have if the closing had existed at the time the circulation or booking
+occurred, or the hold was placed and captured. Of specific note, hourly loans
+will have their due date adjusted to be the end of the day following the
+closing.
+
+When the Emergency Closing is saved, any fines accrued during the closing may be
+voided, as settings dictate, with the exception of circulations that have been
+marked as LOST or LONG OVERDUE. That is, even for LOST and LONG OVERDUE
+circulations with due dates that fall within the Emergency Closing, no fine
+adjustment will be applied. Emergency Closing processing is permanent, and
+cannot be rolled back.
+
+This functionality is explicitly initiated by staff action. If staff do not
+request an Emergency Closing, existing circulations, bookings, and holds will
+not be processed and adjusted. However, if staff request any Closing that starts
+nearer in time than the length of the longest circulation duration configured
+for use in the Evergreen instance they will be prompted with the option to
+create the closing as an Emergency Closing.
+
+Action/Trigger hooks have been created for circulations and bookings that are
+adjusted by the Emergency Closing Handler. These will facilitate the creation of
+notifications to patrons that the due date has changed and to alert them to
+potential changes in accrued fines.
+
+Booking start dates are explicitly ignored in this implementation. Because an
+Emergency Closing is, by its nature, an unexpected event, it will be up to staff
+to address any bookings which intersect with a new Emergency Closings. Reports
+can be used to identify booking start dates that overlap with a closing and that
+may require staff intervention.
+
+Staff requesting and Emergency Closing must have the new EMERGENCY_CLOSING
+permission.  Some text describing the feature.
+
+
+Patron Preferred Name and Name Search Keywords
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Preferred Name
+++++++++++++++
+
+Adds a new set of patron preferred name fields for prefix, first,
+middle, last, and suffix allowing patrons to provide preferred name
+information.  Preferred names are optional and each acts as an overlay
+to the analogous primary name field, making it possible to provide
+preferred name values for individual fields.
+
+For example, a patron named William Erickson may have a preferred first
+name (pref_first_given_name) of Bill, in which case the preferred name
+would be Bill Erickson.  Note a preferred last name is not required in
+this case as the code uses primary name values as defaults when not
+replaced with a preferred version.
+
+* Patrons will see primary names displayed in the catalog when set.
+* Staff will see both primary name and preferred name in the patron
+  summary side bar.
+* Patron searches for any given name field will search both the primary
+  and preferred name data.
+* Preferred name fields are available in Action/Trigger templates and
+  are present in various patron-focused print templates.
+
+Name Keywords
+++++++++++++++
+
+Adds a new field to store miscellaneous patron name search terms.  These
+values are only for searching and do not appear in any interfaces, apart
+from the patron summary side bar and the patron edit UI.
+
+Included is a new search field in the patron search UI which searches
+keyword values and all other name fields.  It's essentially a global patron
+name keyword search.
+
+
+
+Permission Group Display Entries
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+In some cases, it is useful to have the ability to reorder permission, or to make
+only specific groups available in the permission group selector for specific
+Org Units. An interface has been made available to allow this.
+
+Group Tree Display Entry Interface
+++++++++++++++++++++++++++++++++++
+
+Permission Group Display Entries can be reordered, added, or removed via
+_Administration -> Local Admin -> Permission Tree Display Entries_.
+Select the Org Unit you wish to edit the entries in.
+
+Entries may be added using the Add functionality, creating entries based
+on permission groups that have not been added to the tree for the Org
+Unit you wish to add them to.
+
+image::media/pgtde_01.png[Group Tree Display Entry Admin UI]
+
+Moving an Entry
++++++++++++++++
+Moving an entry will shift its position up or down in the patron profile
+selector for a given Org Unit.
+
+* Select an entry
+* Press either the *Move Up* or *Move Down* button. The entry will be 
+moved up or down, accordingly.
+* Click *Save* to save your edits.  
+
+NOTE: You may only move up or down entries that have sibling entries.
+
+Removing an Entry
++++++++++++++++++
+If you want a particular Org Unit to not have access to specific
+entries, you may remove an entry. Removing an entry will remove it from 
+view. The entry will be removed from the database.
+
+* Select an entry and press the *Remove* button.
+
+Adding an Entry
++++++++++++++++
+You may add entries from permission groups that are not currently
+reflected in the permission group tree. This is useful for moving 
+entries to different parents, or making them root entries.
+
+image::media/pgtde_02.png[Add Entry modal]
+
+* If desired, select an entry to be used as the parent entry. 
+* Press the *Add* button. 
+* Select a permission group from the dropdown.
+* If you've selected a parent entry, you may check the *Add Root Entry*
+box to override that parent and add the entry on the root level. 
+* If you did not select a parent entry, the entry will be added on the root 
+level of the tree.
+
+
+
+More consistent terminology in the client
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Terminology has been updated in the staff client so that we consistently use
+the same name to describe the same thing. The following updates have been made:
+
+  * The term 'item' is now consistently used to describe the barcoded entity
+that had been previously been called both an 'item' and a 'copy'. As a result,
+we now use the terms 'item buckets', 'item tags', and 'item alerts'.
+  * The term 'volume' is no longer used in the client, with the exception of
+serials, where the term is used to describe serial volumes. The term 'call
+number' will replace volume in most other places.
+  * 'Holdings' is a more general term used to describe a combination of items
+and call numbers.
+  * The term 'Shelving Location' is used consistently in favor of 'Copy
+Location.'
+
+
+=== Cataloging ===
+
+Authority Record and Headings Browse Improvements
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Various improvements are made to support for authority records
+and headings browsing:
+
+ * The MARC to MADS XSLT stylesheet is now used as part of parsing
+   headings from authority records. Since the MODS and MADS stylesheets
+   extract headings in similar ways, duplicate browse entries are now
+   much less likely to occur.
+ * A new configuration table, `authority.heading_field`, is now used
+   to specify how headings should be extracted from authority records.
+ * Related headings can now be identified as narrower or broader when
+   browsing in the public catalog.
+ * See references are now more reliably included in the browse list.
+ * Scope (public) notes now display only under the main heading.
+ * There is now a global flag, Display related headings (see-also) in browse,
+   that can be used to control whether related headings (see-alsos) are
+   displayed in the public catalog list.
+ * A complete set of thesauruses are now included in the seed data.  Thesauruses
+   can now be identified using short and long codes.
+ * The labels for see and see-also references in the public catalog are 
+   a bit more patron-friendly, and can now be tweaked via TPAC template
+   customization in the browse.tt2 file.
+
+
+Copy Tags and Digital Bookplates
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Copy tags will allow staff to apply custom, pre-defined labels or tags
+to copies.  Copy tags are searchable in both the staff client and public
+catalog.  This feature was designed to be used for Digital Bookplates to
+attach donation or memorial information to copies, but may be used for
+broader purposes to tag items.
+
+Each copy tag can either be publicly-visible or visible only to staff.
+Copy tags also have types that can be used for restricting catalog
+searches on copy tags to particular types.
+
+Copy tags are displayed in the copy table in the record summary page in
+the public catalog, and a new library setting can be used to add
+a "Digital Bookplate" search field.  Copy tags can also be used
+as a search filter, e.g.,
+
+  * `copy_tag(bookplate, jane smith)`: search for records that have a
+    copy tag of type 'bookplate' whose value contains 'jane smith'.
+  * `copy_tag(*, jane smith)`: search for records that have a
+    copy tag of any type whose value contains 'jane smith'.
+
+All staff-side interfaces related to copy tags exist only in the web
+staff client.  There are two new administration interfaces for managing
+copy tags and copy tag types. The copy editor now has a 'Copy Tags'
+button for applying copy tags to copies; that interface can also be
+used to create new copy tags on the fly. Furthermore, the copy buckets
+interface now has an 'Apply Tags' action for assigning tags to groups
+of copies.
+
+Permissions
++++++++++++
+
+Two new permission are included:
+
+  * `ADMIN_COPY_TAG_TYPES`: required to create a new tag type under
+     'Administration -> Server Administration -> Copy Tag Types'
+  * `ADMIN_COPY_TAG`: required to create a new tag under
+    'Administration -> Local Administration -> Copy Tags'
+
+The existing permission `UPDATE_COPY` controls whether or not a user
+can link copies to tags.
+
+Library Settings
+++++++++++++++++
+A new library setting, 'Enable Digital Bookplate Search', controls
+whether to display a 'Digital Bookplate' field in the search index
+drop-downs in the catalog. A 'Digital Bookplate' search will include
+all records that have a copy that matches the tag specified by the user.
+It should be noted that this library setting does not affect the
+display of copy tags on the catalog record summary page.
+
+
+Include Call Number Prefixes and Suffixes in Export and Z39.50 output
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The call number prefix and suffix, when present, are now included in
+subfields $k and $m of the 852 field when running `marc_export` with
+the `--items` switch. Similarly, when using Evergreen as a Z39.50
+server configured to embed item data in 852 fields, the affixes are now
+included in subfields $k and $m.
+
+Track Record Merges
+^^^^^^^^^^^^^^^^^^^
+When 2 or more bib records are merged, all records involved are stamped
+with a new `merge_date` value.  For any bib record, this field indicates
+the last time it was involved in a merge.  At the same time, all
+subordinate records (i.e. those deleted as a product of the merge) are
+stamped with a `merged_to` value indicating which bib record the source
+record was merged with.
+
+In the browser client bib record display, a warning alert now appears
+along the top of the page (below the Deleted alert) indicating when a
+record was used in a merge, when it was merged, and which record it was
+merge with, rendered as a link to the target record.
+
+
+Asynchronous Vandelay Imports
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+Users of NGINX as a reverse proxy may need to set a suitable
+`client_max_body_size` value in the NGINX configuration so that large
+MARC record uploads are not truncated. Note that this would have
+always been necessary, but since this feature allows larger files
+to be more reliably queued and imported, the need to set `client_max_body_size`
+became more apparent.
+
+
+
+Add UPC to z39.50 search for OCLC and LOC
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Add UPC as a search attribute for both OCLC and LOC targets in
+z39.50 for cataloging.
+
+Support for Last Inventory Date
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Evergreen now provides an option to add an inventory date to items to facilitate
+the process of performing inventory in libraries. Staff can add an inventory
+date to an item in one of the following ways:
+ * From the check in screen, there is now an Update Inventory check in modifier.
+When selected, scanned barcodes will have the current date/time added as the
+inventory date while the item is checked in.
+ * From the Item Status screen, an action is available to add the current 
+date/time as the inventory date to selected items.
+
+This new feature will also store the workstation that was used when the
+inventory date was updated.
+
+
+View Authority Record by Database ID
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+A new interface allows catalogers to retrieve a specific
+authority record using its database ID.  Catalogers can
+find those IDs in subfield $0 of matching fields in
+bibliographic records.
+
+To use the new authority record viewer:
+
+. Click *Cataloging -> Retrieve Authority Record by ID*.
+. Type in the ID number of the authority record you are
+interested in. Don't include any prefixes, just the ID
+number.
+. Click *Submit*.
+. View or edit the authority record as needed.
+
+
+=== Acquisitions ===
+
+Web Staff Client Serials Module
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The serials module has been ported over to the web staff
+client, implementing a unified serials interface that combines
+ideas from both the serial control view and alternate serials
+control view from the old staff client.
+
+In addition to carrying over functionality that was available
+in the old staff client, several new features are included:
+
+* the ability to save prediction pattern codes as templates
+  that can be shared and reused within an Evergreen database
+* a more streamlined interface for managing subscriptions,
+  distributions, and streams
+* it is no longer necessary to create a starting issue in
+  order to predict a run of issues; the dialog box for
+  generating a set of predicted issues now lets you specify
+  the starting point directly.
+* the ability to more directly edit MFHDs
+    
+The new serials interfaces can be accessed from the record
+details page via a Serials drop-down button that links to
+a subscription management page, a quick-receive action, and
+a MFHD management page. There is also a new 'Serials Administration'
+page where prediction pattern and serial copy templates can
+be managed.
+
+
+
+Acq Invoice Reports
+~~~~~~~~~~~~~~~~~~~
+
+Existing Acquisitions report templates that reference the invoice 'complete'
+field should be modified to check whether the new close_date field is NOT NULL
+instead.
+
+At deploy time, all invoices with a 'complete' value of TRUE will have their
+'close_date' field set to NOW.  A value is required, since this field is
+now the source of whether an invoice is open or closed.
+
+However, no values will be applied to the closed_by field for already closed
+invoices.
+
+Acquisitions
+~~~~~~~~~~~~
+
+Auto-Cancel Line items When All Copies Are Canceled
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+When a copy (line item detail) is canceled through the Acquisitions interface, 
+the parent line item is also canceled if all copies for that line item are also 
+canceled.  The cancel reason given will come from:
+
+. The cancel reason for the just-canceled copy if it's a Keep Debits true 
+cancel reason.
+. The cancel reason from any other copy on the lineitem that has a Keep 
+Debits true cancel reason.
+. The cancel reason for the just-canceled copy if no copies have a Keep
+Debits true cancel reason.
+
+
+Invoice Closed Date and Closed By Fields
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Acquisitions invoices have 2 new fields:
+
+* Close Date -- This is set to the time when the ACQ user clicks the "Close"
+  button in the invoice interface.
+  ** This field 'replaces' the existing 'complete' field.  An invoice is
+     considered complete if a close date value is set.
+* Closed By -- This is set to the logged in staff user who performs the 
+  "Close" action.
+
+As with the now-defunct 'complete' field, but new fields are cleared in the 
+event an invoice is reopened.
+
+These new fields are visible in the invoice interface under the 
+'Show Details' action for closed invoices.
+
+Upgrading Invoice Reports
++++++++++++++++++++++++++
+
+Existing report templates that reference the invoice 'complete' field 
+should be modified to check whether the new close_date field is NOT NULL
+instead.
+
+Other Upgrade Considerations
+++++++++++++++++++++++++++++
+
+At deploy time, all invoices with a 'complete' value of TRUE will have their
+'close_date' field set to NOW.  A value is required, since this field is
+now the source of whether an invoice is open or closed.
+
+However, no values will be applied to the closed_by field for already closed
+invoices.
+
+
+
+Patron Acquisitions Requests
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The existing interface for staff-mediated patron acquisition requests has been replaced in the web staff client with a re-implementation written in AngularJS, with some minor bug fixes (including access from the Patron interface) and other improvements.
+
+
+=== Staff Client ===
+
+Offline Circulation Available in Web Staff Client
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Offline circulation is now available in the web staff client. In order to use the
+offline interface, users must first log into the web staff client, perform
+a patron search, select a user from the results, and open the patron editor
+interface to collect all the relevent configuration information for the 
+workstation. In addition, the offline interface available from the Circulation
+menu provides a 'Download block list' button for users who are logged in.
+
+As is the case in the old staff client, users can check materials in and out,
+renew items, and create new patron accounts while offline. The patron fields
+available in the offline patron registration editor are the same ones that
+are available to staff when working online.
+
+
+
+Add Circ Modifier to Record Detail Page in Staff TPAC
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The circulation modifier field is added to the table of copies to make
+more information available to staff without having to open
+the Holdings View.
+
+
+
+
+
+Date+Time Format Settings for Web Client
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This change deprecates the existing 'Format Dates' and 'Format Times' settings
+and adds two settings for use with the webstaff client:
+
+  * 'Format Dates with this pattern'
+  * 'Format Date+Time with this pattern'
+
+These settings use format strings as documented here:
+
+https://docs.angularjs.org/api/ng/filter/date
+
+There is overlap with how the Dojo formats worked, but also some differences.
+
+The original 'Format Dates' and 'Format Times' settings worked together, but the
+new settings work independently.  Certain field elements will use one, and
+certain field elements will use the other.  These distinctions are hard-coded
+in the various UI templates, with the idea being that timestamp fields in
+which the date component alone is sufficient information (for example, date of birth)
+will use the 'Format Dates' setting.  Fields where the time component is
+important (for example, checkout time) will use the 'Format Date+Time' setting.
+
+When the settings 'Format Dates' and 'Format Date+Time' are unset, we will default
+to "shortDate" (M/d/yy) and "short" (M/d/yy h:mm a), respectively.
+
+
+
+
+
+Global Option to Remove Sound for a Specific Event
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+A new `nosound.wav` file has been added to the web client. The file can be used
+to globally disable audio alerts for a specific event on an Evergreen system.
+
+For example, to silence the alert that sounds after a successful patron search:
+
+[source,sh]
+----
+mkdir -p /openils/var/web/audio/notifications/success/patron/
+cd /openils/var/web/audio/notifications/success/patron/
+ln -s ../../nosound.wav by_search.wav
+----
+
+
+Documentation
+~~~~~~~~~~~~~
+
+The official Evergreen manual has been split into eight new manuals, each
+designed for a specific audience. This new approach is designed to make
+the documentation more readable and usable.
+
+The specific audiences for the new manuals are:
+
+* Acquisitions staff
+* Circulation staff
+* Cataloging staff
+* Public services staff who use the public catalog
+* Serials staff
+* System administrators who use the command line
+* System administrators who use the Web client
+* System administrators and programmers who wish to integrate Evergreen
+with other technologies
+
+All manuals are available at http://docs.evergreen-ils.org
+
+=== Catalog ===
+
+Improvements to ebook API
+^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Evergreen now supports checking out and placing holds on
+OverDrive and OneClickdigital ebook titles from within the public
+catalog.  This is an experimental feature.  It is not recommended for production
+use without careful testing.
+
+When ebook integration is enabled, a "Check Out E-Item" link will be
+displayed when viewing an ebook title from a supported vendor in the
+catalog.  Clicking on the link allows the user to check out and download
+that title from the vendor directly within the catalog.
+
+If no copies are available for the title, a "Place Hold on E-Item" link
+is displayed instead, and the user may place a hold on the title.  (Note
+that some vendors require the user's account to have an email address
+before permitting a hold.)
+
+My Account includes the ability to view current ebook checkouts and
+holds, download already-checked-out titles, and cancel holds.
+
+For API integration to work, you need to request API access from the
+vendor, and the vendor must have a way of authenticating your patrons.
+Your Evergreen system also needs to be configured for ebook API
+integration, following the instructions in the command line system
+administration manual
+
+
+This feature assumes that you are importing MARC records supplied by the
+vendor into your Evergreen system, using Vandelay or some other MARC
+import method.  This feature does not search the vendor's online
+collections or automatically import vendor records into your system; it
+merely augments records that are already in Evergreen.
+
+Improvements to Bill Payment Pages
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The bill payment pages in the public catalog have been revamped
+to
+
+ * use the term "charges" instead of "fees"
+ * include images of credit cards accepted
+ * make the default print receipt template match other itemized receipts;
+   note that this change is not automatically applied when upgrading.
+ * display billing type
+ * add button to pay only selected charges
+ * reformat the credit card number input page
+
+
+
+
+
+Clickable Copy Locations
+^^^^^^^^^^^^^^^^^^^^^^^^
+Adds a URL field to the copy locations editor. When a URL is entered in this field, 
+the associated copy location will display as a link in the public catalog summary display.
+This link can be useful for retrieving maps or other directions to the copy
+location to aid users in finding material.
+
+
+
+
+Download Checkout History CSV Fixed for Large Number of Circulations
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Downloading checkout history as a CSV from My Account has been fixed
+for users with a large circulation history.  Previously, this would
+time out for patrons with more than 100 or so circulations.
+
+This feature no longer uses the action/trigger mechanism and the public catalog
+now generates the CSV directly.  The old action/trigger code is still
+present in the database and should be removed at some point in the
+near future.
+
+
+
+
+Google Books Preview Rewrite
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The Google Books Preview functionality in record detail pages has been
+rewritten to modernize its style and optimize its performance:
+
+* The Dojo JavaScript framework is no longer used, saving approximately
+  150K of JavaScript and CSS and four network requests per page load.
+* The Embedded Viewer is not loaded unless a possible preview is found,
+  saving more network and memory overhead.
+* The Google Books Loader is used to load the Embedded Viewer instead of the
+  https://productforums.google.com/forum/#!topic/books-api/lZrq5cWKrTo;context-place=forum/books-api[deprecated
+  Google Loader].
+* All variables are self-contained and do not pollute the global namespace.
+* Event listeners are registered to handle clicks, rather than attaching
+  `href="javascript:function()"` to <a> elements.
+* Book previews are displayed in a panel sized according to the viewport
+  of the browser, improving its appearance on both mobile and desktop
+  browsers.
+* The rewritten code is now served up directly from
+  `/js/ui/default/opac/ac_google_books.js` rather than as a TT2 template.
+
+
+
+
+jQuery for the Public Catalog
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+This release adds optional support for jQuery in the public catalog.  This support
+is enabled by setting the `ctx.want_jquery` variable to a true value in the
+`config.tt2` template.
+
+
+
+
+
+New Popularity Parameters
+^^^^^^^^^^^^^^^^^^^^^^^^^
+New popularity parameters for in-house use over time and for count of distinct
+organizational units that own a title are now available. Evergreen sites
+can use these parameters to create new statistical popularity badges for
+sorting in the catalog by Most Popular or by Popularity-Adjusted Relevance.
+
+The in-house use parameters will apply a badge to titles that have the most
+in-house use activity over time. The organizational unit count parameter
+will apply a badge to titles owned by the most number of libraries in a
+consortium. Ownership is determined by the copy's circulation library.
+
+
+
+
+Option to Suspend Holds at the Time They are Placed
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Users now have the option to suspend a hold at the same time they place the
+hold. The 'Place Hold' screen has a checkbox that can be enabled for users
+who want to suspend a hold at the time it is placed. There is also an option
+to set the activation date at the same time. This option is also available
+when placing holds on a batch of titles from 'My List' and will apply to
+all the titles in the batch.
+
+Public Catalog
+~~~~~~~~~~~~~~
+
+Search Term Highlighting
+^^^^^^^^^^^^^^^^^^^^^^^^
+Evergreen now highlights search terms on the public catalog's main search
+results page, the record detail page, and intermediate pages such as metarecord
+grouped results page. Highlighting search terms will help the user determine why
+a particular record (or set of records) was retrieved.
+
+Highlighting of matched terms uses the same stemming used to accomplish the
+search, as configured per field and class.
+
+This feature will help the user more quickly determine the relevance of a
+particular record by calling their attention to search terms in context. Lastly,
+it will help familiarize the user with how records are searched, including which
+fields are searched as well as exposing concepts like stemming.
+
+You can turn off search term highlighting by uncommenting the line
+`search.no_highlight = 1;` in `config.tt2`.
+
+When highlighting is generally enabled, it may be turned on or off on a per-page
+basis through the use of a UI component which will request the page again
+without highlighting.
+
+Highlighting of terms uses Template::Toolkit-driven CSS. A generic CSS class
+identifying a highlighted term, along with CSS classes identifying the search
+class and each search field are available for use for customization of the
+highlighting. A stock CSS template is provided as a baseline upon which sites
+may expand.
+
+
+Copy Location Filter Displays for System Searches
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The Shelving Location filter now displays on the advanced search page when
+a search is scoped to a library system, not just to an individual branch. If
+a library system is selected as the Search Library, the shelving location
+limiter will display any shelving location that is owned by the selected system
+or by the consortium. It will NOT display shelving locations owned by child
+branches.
+
+Multi-source Attributes
+^^^^^^^^^^^^^^^^^^^^^^^
+We now allow record attribute definitions to extract data using more than
+one strategy (XPath, tag+subfield, fixed field, etc.) as long as the values
+from various sources would, after normalization, have the same shape.
+
+Multilingual Search
++++++++++++++++++++
+This change allows us to configure multilingual search, by extracting values
+from both the 008 controlfield and the 041 datafield.  Because the values
+in each can be normalized to the same controlled list (and, in practice, are
+already from the same normalized value set), catalog searches can now use normal
+boolean search semantics to find records with various combinations of
+language attributes.
+
+E.g., in the concerto test data:
+
+  * `keyword: piano item_lang(eng) item_lang(ita)`
+
+
+Optional Display of Badges in Catalog
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+A new setting controls whether badges (popularity, etc.) are displayed
+in the catalog. If you do not wish badges to be displayed, set the
+`ctx.hide_badge_scores` setting to "true" in `config.tt2`.
+
+Batch Actions In the Public Catalog
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The public catalog now displays checkboxes on the bibliographic and
+metarecord constituents results pages. Selecting one or more titles
+by using the checkboxes will dynamically add those title to the
+temporary list, which is now renamed the cart.
+
+Above the results lists there is now a bar with a select-all checkbox,
+a link to the cart management page that also indicates the number of
+of titles in the cart, and a link to remove from the cart titles that
+are selected on the currently displayed results page.
+
+The search bar now includes an icon of a cart and displays the number
+of titles currently in the cart. Next to that icon is a menu of cart
+actions.
+
+The cart actions available are Place Hold, Print Title Details,
+Email Title Details, Add Cart to Saved List, and Clear Cart. In the
+web staff client, the cart actions also include Add Cart to Bucket.
+When an action is selected from this menu, the user is given an
+opportunity to confirm the action and to optionally empty the cart
+when the action is complete. The action is applied to all titles
+in the cart.
+
+Clicking on the cart icon brings the user to a page listing the
+titles in the cart. From there, the user can select specific records
+to request, print, email, add to a list, or remove from the cart.
+
+The list of actions on the record details page now provides separate
+links for adding the title to a cart or to a permanent list.
+
+The permanent list management page in the public catalog now also
+includes batch print and email actions.
+
+Additional information
+++++++++++++++++++++++
+* The checkboxes do not display on the metarecord results page, as
+  metarecords currently cannot be put into carts or lists.
+* The checkboxes are displayed only if JavaScript is enabled. However,
+  users can still add items to the cart and perform batch actions on
+  the cart and on lists.
+* A template `config.tt2` setting, `ctx.max_cart_size`, can be used to
+  set a soft limit on the number of titles that can be added to the
+  cart. If this limit is reached, checkboxes to add more records to the
+  cart are disabled unless existing titles in the cart are removed
+  first. The default value for this setting is 500.
+
+=== Administration ===
+
+New EDI Order Generator 
+^^^^^^^^^^^^^^^^^^^^^^^
+
+Configuration
++++++++++++++
+
+. New database tables exist for configuring vendor-specific EDI order 
+attributes.
+
+ * `acq.edi_attr .
+  ** List of EDI order generation toggles, e.g. "INCLUDE_COPIES" to add 
+     GIR segments
+ * `acq.edi_attr_set`
+  ** Collection of `edi_attr`s.  Each edi_account may be linked to one
+     `edi_attr_set`.
+  ** One `edi_attr_set` per known vendor is added to the stock data, matching
+     the stock configuration found in the JEDI template.
+ * `acq.edi_attr_set_map`
+  ** Link between `edi_attr`s and `edi_attr_set`s.
+
+. EDI Attribute Sets are manged via a new (browser client only) configuration
+  interface at 'Administration -> Acquisitions Administration -> EDI
+  Attribute Sets'.
+
+. Each `acq.edi_account` should be linked to an `acq.edi_attr_set`.  If a link
+  is not set, default values will be used.  Links between an EDI account
+  and an attribute set are managed in the EDI Accounts configuration 
+  interface.
+
+. Local modifications to the stock EG JEDI template are managed by modifying
+  and/or adding additional `edi_att_set`s as needed.
+
+. A new `edi_order_pusher.pl` script is added which replaces the functionality
+  of `edi_pusher.pl`.  `edi_pusher.pl` is still available.
+
+. After moving to `edi_order_pusher.pl`, the JEDI Action/Trigger event
+  definition is no longer required and can be disabled.
+
+Migration
++++++++++
+
+EDI accounts have a new boolean field 'Use EDI Attributes' (`use_attrs`) that
+specifies whether PO's generated via the account should be built using 
+EDI attributes or fall back to traditional JEDI A/T template generation.
+
+This allows sites to activate EDI attributes on a per-account basis, making 
+it possible to migrate piecemeal to EDI attributes.  For the initial roll
+out of this new feature, no accounts will be configured to use EDI 
+attributes by default.  
+
+
+
+
+
+3 Day Courtesy Notice by SMS
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+New optional SMS text notification to be sent out 3 days prior to the due
+date of any circulating item for patrons who have an SMS text number and
+carrier stored in their accounts. This action trigger is disabled by default,
+but can be enabled and modified by going into 'Administration -> Local Administration ->
+Notifications / Action Triggers'.
+
+You may wish to make use of granularity so that these messages are batched
+and sent at the same time each day.
+
+
+
+
+Add Description Field to Circulation and Hold Configuration Entries
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The circulation and hold policy configuration rules now each have a
+description field. This allows administrators to add comments to
+describe the purpose of each rule.
+
+
+
+
+Apache Internal Port Configuration Option
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Apache configuration now supports a new variable which allows admins to
+specify the port used by Apache to handle HTTP traffic.  The value is
+used for HTTP requests routed from Perl handlers back to the same Apache
+instance, like added content requests.  Use this when running Apache
+with a non-standard port, typical with a proxy setup.  Defaults to "80".
+
+[source,conf]
+-------------------------------------------------------------------
+<Location /eg>
+    ...
+    PerlSetVar OILSWebInternalHTTPPort "7080"
+    ...
+</Location>
+-------------------------------------------------------------------
+
+
+
+
+Configurable Bib Record Display Fields
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+'Administration -> Server Administration -> MARC Search/Facet Fields' have 2 new configuration 
+fields: 'Display Field?' and 'Display XPath'.
+
+When 'Display Field' is set to true, data from the field will be extracted
+from each record and added to a new table of display data for each bib 
+record.  
+
+If a value is present in the 'Display XPath' field, this XPath will be
+applied to the extracted data *after* the base XPath (from the 'XPath' 
+field) is applied to each field.
+
+This data acts as a replacement for the various and sundry ways bib record 
+data is currently extracted, including inline XPath in the TPAC, reporter 
+views, real-time 'MVR' compilation from MODS, etc. and will be available
+to the user interface, notification templates, etc. for rendering bib 
+records.  
+
+The browser client gets a new service 'egBibDisplay' which is capable
+of translating the display field data from various formats into 
+data more suitable for JavaScript usage.
+
+The database gets 3 new views for representing display data in various
+formats:
+
+ * `metabib.flat_display_entry`
+  ** List of all display fields linked to their configuration.
+ * `metabib.compressed_display_entry`
+  ** Same as `metabib.flat_display_entry` except there's one row
+     per display field type, with 'multi' rows compressed into
+     JSON arrays.  Non-multi fields are represented as JSON 
+     strings/numbers.
+ * `metabib.wide_display_entry`
+  ** Tabular view of display field data, one column per well-known
+     field.  Values are represented JSON, consistent with 
+     `metabib.flat_display_entry`.  The view does *not* contain locally
+     configured display fields, as each field must be encoded in
+     the view and IDL definition.  This is essentially a replacement 
+     for `reporter.simple_record`.
+
+Reingesting
++++++++++++
+
+After making changes to display field configuration, it's possible to 
+reingest only display field data in the database using the following:
+
+[source,sql]
+---------------------------------------------------------------------
+SELECT metabib.reingest_metabib_field_entries(id, TRUE, FALSE, TRUE, TRUE, 
+  (SELECT ARRAY_AGG(id)::INT[] FROM config.metabib_field WHERE display_field))
+  FROM biblio.record_entry WHERE NOT deleted AND id > 0;
+---------------------------------------------------------------------
+
+
+
+
+
+Fix COPY_STATUS_LONGOVERDUE.override Permission Typo
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The existing permission was incorrectly created with a code of
+`COPY_STATUS_LONGOVERDUE.override`, while the event thrown requires a
+permission with a code of `COPY_STATUS_LONG_OVERDUE.override`.  This
+update changes the permission code to match what the event requires.
+
+
+
+
+
+Hold Targeter V2 Repairs and Improvements
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+* Make the batch targeter more resilient to a single-hold failure.
+* Additional batch targeter info logging.
+* Set `OSRF_LOG_CLIENT` in `hold_targeter_v2.pl` for log tracing
+* Removes the confusingly named `--target-all` option
+ ** The same behavior can be achieved by using `--retarget-interval "0s"`
+* Removes `--skip-viable` (see `--soft-retarget-interval` below)
+
+New --next-check-interval Option
+++++++++++++++++++++++++++++++++
+Specify how long after the current run time the targeter will retarget
+the currently affected holds. Applying a specific interval is useful
+when the retarget-interval is shorter than the time between targeter
+runs.
+
+For example, if the targeter is run nightly at midnight with a
+`--retarget-interval 36h`, you would set `--next-check-interval` to `48hr`,
+since the holds won't be processed again until 48 hours later. This
+ensures that the org unit closed date checks are looking at the correct
+date. 
+
+This setting overrides the default behavior of calculating the next 
+retarget time from the retarget-interval.
+
+New --soft-retarget-interval Option
++++++++++++++++++++++++++++++++++++
+This is a replacement for (and rebranding of) the `--skip-viable` option. 
+The new option allows for time-based soft-targeting instead simple binary 
+on/off soft-targeting.
+
+How soft-targeting works:
+
+* Update hold copy maps for all affected holds
+* Holds with viable targets (on the pull list) are otherwise left alone.
+* Holds without viable targets are retargeted in the usual manner. 
+
+
+
+
+
+New marc_export --descendants Option
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The `marc_export` script has a new option, `--descendants`.  This option
+takes one argument of an organizational unit shortname.  It works much
+like the existing `--library` option except that it is aware of the
+org. tree and will export records with holdings at the specified
+organizational unit and all of its descendants.  This is handy if you
+want to export the records for all of the branches of a system.  You
+can do that by specifying this option and the system's shortname,
+instead of specifying multiple `--library` options for each branch.
+
+The `--descendants` option can be repeated, as the `--library` option can.
+All of the specified org. units and their descendants will be included
+in the output.  It can also be combined with individual `--library`
+options when necessary.
+
+
+
+
+RTL and LTR Public Catalog Stylesheets Merged
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The RTL stylesheet for the public catalog,
+`templates/opac/css/style-rtl.css.tt2`, has been merged into the LTR
+one (`templates/opac/css/style.css.tt2`). The combined stylesheet
+template will provide RTL or LTR styles based on the value of
+the `rtl` flag of the active locale. An `rtl` variable is also available
+in the template to allow the correct style to be chosen.
+
+
+
+
+Miscellaneous Improvements
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+ * If a filter is in effect in the Library Settings Editor,
+   the filter will continue to be applied after a user 
+   changes the selected library.
+ * Copy templates used for serials now correctly link to age
+   protection rules and MARC item type values (for the
+   "Circ as Type" field). During upgrade, the database update
+   will set to NULL any age protection and circ as type fields
+   in serial copy templates that do not point to defined values.
+
+
+
+
+Obsolete Internal Flag Removed
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+An obsolete and unused `ingest.disable_metabib_field_entry` internal
+flag was removed from the `config.internal_flags` table.  It was
+rendered obsolete by the addition of the 3 flags to control the
+browse, search, and facet indexing.
+
+
+
+
+Tweaks to Caching/Expiry of Public Catalog Assets
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The default cache expiration time for static assets (e.g.,
+CSS, image, and JavaScript files) in the public catalog and
+the Kid's PAC has been increased to one year. Links to all
+such assets now have a cache-busting value tacked on as a
+query parameter. This value is refreshed when `autogen.sh` is
+run, but it can also be manually set by adjusting the
+`ctx.cache_key` Template Toolkit variable.
+
+
+
+
+Action/Trigger Events Data Purging
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+Action/Trigger event definitions have a new field called 'Retention 
+Interval'.  When an optional interval value is applied, events and
+template output data linked to the event definition will be deleted
+from the database once they reach the specified age.
+
+Retention Interval Restrictions for Passive Hooks
++++++++++++++++++++++++++++++++++++++++++++++++++
+
+Restrictions are placed on retention interval values for event definitions
+using passive hooks to prevent data from being deleted while it's still
+needed by the system.
+
+The presence of event data is how the system knows not to send duplicate
+events.  As long as a scenario exists where a duplicate event may be
+generated, the events must be retained.
+
+To apply a retention interval value to a passive-hook event definition:
+
+ * The event definition must have a max_delay value.
+ * The retention interval must be larger than the difference between
+   the `delay` and `max_delay` values.
+
+For example, if the `delay` is 7 days and `max_delay` is 10 days, the retention
+interval must be greater than 3 days to ensure no duplicate events are 
+created between the first event on day 7 and the end of the event validity
+window on day 10.
+
+Deployment
+++++++++++
+
+A new `purge_at_events.sh` script is installed in the bin directory
+(typically `/openils/bin`) which should be added to CRON for regular
+maintenance.
+
+NOTE: On large data sets, this script can take a long time to run and
+create higher than normal I/O load as it churns though the event and
+event_output tables.  You may wish to run the script by hand the first
+time so it can be monitored.  It can be run in psql like so:
+
+[source,sql]
+---------------------------------------------------------------
+SELECT action_trigger.purge_events();
+---------------------------------------------------------------
+
+NOTE: On *very* large data sets (10s to 100s of millions of event and
+event_output rows), it may be advisable to first repopulate the `event`
+and `event_output` tables with only the desired data before starting
+regular purges.  This can be done, for example, using the copy to temp
+table, truncate source table, repopulate source table from temp table
+approach.  This will be much faster than the `purge_events()` function
+in cases where most of the data will be purged.
+
+Hook Data Cleanup
++++++++++++++++++
+
+A number of `action_trigger.hook` entries which have always been treated
+as active hooks, though are configured as passive hooks, have been 
+updated to properly reflect the non-passive-ness.  This allows for 
+simpler configuration of their retention interval values.
+
+
+
+
+
+Remove JSPAC Redirects
+^^^^^^^^^^^^^^^^^^^^^^
+Future versions of Evergreen will no longer contain automatic redirects
+from JSPAC URLs to TPAC URLs, with the exception of `myopac.xml`, given
+that the JSPAC is no longer supported.  Existing sites, however, may
+wish to retain JSPAC redirects in their Apache configuration files since
+JSPAC URLs may still be used in the wild to access their catalogs.
+
+The original JSPAC URL redirects are all retained in the file 
+`Open-ILS/examples/jspac_redirects.conf` for reference.
+
+
+
+
+API
+~~~
+
+
+
+New open-ils.auth.login API
+^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The `open-ils.auth` service has a new API for requesting an authentication
+token.  It performs the same steps as the 
+`open-ils.auth.authenticate.init` and `.complete` APIs in a single call,
+using the bare password.  No intermediate password hashing is required.
+
+The paramaters are the same as the `.complete` call with a few modifications.
+
+1. Using the generic 'identifier' parameter in combination with the
+   'org' parameter allows the API to reliably determine if an identifier
+   value is a username or barcode.  The caller is no longer required to 
+   make that determination up front.  
+
+2. The 'nonce' parameter is no longer used.
+
+
+
+
+
+Batch Patron Contact Invalidation
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The following methods are used to mark patron contact fields
+as invalid by moving the invalid value to a standing penalty:
+
+ * `open-ils.actor.invalidate.email`
+ * `open-ils.actor.invalidate.day_phone`
+ * `open-ils.actor.invalidate.evening_phone`
+ * `open-ils.actor.invalidate.other_phone`
+
+These methods now accept a fifth argument specifying the value
+of the contact field, e.g., a specific phone number or email
+address. If supplied, and if a specific patron ID (the first
+argument) is not supplied, all patrons with that specific contact
+value will have it marked invalid.
+
+
+
+
+Architecture
+~~~~~~~~~~~~
+
+
+
+Pure-SQL catalog searching
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+Public and staff catalog search is now both more accurate and faster
+by redesigning how the visibility of records is calculated.
+
+
+Reports
+~~~~~~~
+
+
+Fix to reporter.classic_current_circ View
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The `reporter.classic_current_circ` view, which is part of some
+extra views defined in `Open-ILS/src/sql/Pg/example.reporter-extension.sql`,
+has been fixed to not exclude loans for patrons who do not have a
+billing address set. Users of this view should rerun
+`Open-ILS/src/sql/Pg/example.reporter-extension.sql` during upgrade.
+
+
+
+
+New Report Source Table Allowing Report of "Last" Deleted copy
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This source table allows you to construct a clever aggregate report template
+which will report bibliographic IDs where a library or a group of libraries 
+no longer have a copy attached but *had* a copy attached. This is especially
+useful when a holdings sync is required with an external vendor.
+
+
+Instructions for creating a report template with this source:
+
+  * Create a new report template using "Library Holdings Count with Deleted" as the source
+  * Add "Has Only Deleted Copies 0/1" (Min) to the Aggregate Filters -> Change Value to "1"
+  * Add "Last Edit Date" (Max) to Aggregate Filters.  In Aggregate Filters, change the operator to "Between"
+  * Add Circulation Library -> "Organizational Unit ID" to Base Filters, with the Raw Data transform.  In the list of Base Filters, change the operator to "In list"
+  * Add "Bib ID" to Displayed Fields
+  * Add "Last Edit Date" to Displayed Fields and Change Transform to Max
+  * Add "Has Only Deleted Copies 0/1" to Displayed Fields and Change Transform to Min
+  * Add "Total copies attached" to Displayed Fields and Change Transform to Sum
+
+
+This template will only output bibliographic IDs where all of the copies for the specified branch(es)
+are deleted. Furthermore, it will only output bibs whose copies were edited (deleted) during the 
+specified date range. Unfortunately the user will have to manually type the date range without the date
+picker. This view will also allow you to answer questions like "Show me bibs where I have one visible
+copy and more than two deleted copies."
+
+
+
+
+Add Provider to Provider Note Link
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The Provider reporting source now includes a link to the Provider Note reporting source.
+
+
+
+
+Link ILS User and Working Location Reporting Sources
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The Working Location reporting source now has labels
+and it is now linked to the ILS User reporting source, allowing
+reports to display or filter on staff working location.
+
+
+
+
+New Circulation Report Source "All Circulation Combined Types"
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+This report source will allow you to create a single report template for all of the following:
+
+ * In-house uses
+ * In-house uses of non-cataloged items
+ * Circulations
+ * Circulations of non-cataloged items
+
+To distinguish between these different types of library use, it's important to display these columns
+in your report templates:
+
+ * Item Type
+ * Circulation Type
+
+
+
+
+
+Reports Template Searching
+^^^^^^^^^^^^^^^^^^^^^^^^^^
+A new form appears along the top of the reports interface for searching
+report templates.  Once found, typical template actions (e.g. create new
+report) are available from within the results interface.
+
+Searches may be performed across selected (visible) folders or all 
+folders visible to the logged in user.
+
+Searches are case-insensitive, any word order, with left-anchored words.  
+All searched words must appear in at least one of the searched fields.
+
+Examples
+++++++++
+
+ * Searching for 'stat cat' matches:
+  ** stat cat
+  ** statistical category
+  ** categories, statistical
+  ** patrons (stat cat)
+ * Searching for 'stat cat' does not match:
+  ** stat 
+   *** both words must be present in the searched field(s)
+  ** stat location
+    *** location contains 'cat' but it's not left-anchored.
+
+Reporter Paging
++++++++++++++++
+
+The templates, reports, and output interfaces now support paging via 
+new 'Next', 'Prev', and 'Start' links next to the output limit selector.
+
+
+
+SIP
+~~~
+
+
+
+SIP Bugfix Changes How Encoding Is Determined in Configuration
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The combined fix for the above mentioned SIP bugs alters the way that
+SIPServer looks up the output encoding in the configuration file (typically
+`oils_sip.xml`).  SIPServer now looks for the encoding in the following
+places:
+
+1. An +encoding+ attribute on the +account+ element for the currently active SIP account.
+2. The +encoding+ element that is a child of the +institution+ element of the currently active SIP account.
+3. The +encoding+ element that is a child of the +implementation_config+ element that is itself a child of the +institution+ element of the currently active SIP account.
+4. If none of the above exist, then the default encoding (ASCII) is used.
+
+Number 3 is provided to ease the transition to the new code.  It is
+the current location of the +encoding+ element in the sample
+configuration file and as such, where it is likely to be found in
+actual files.  It is recommended that you alter your configuration to
+move this element out of the +implementation_config+ element and into
+its parent +institution+ element.  Ideally, SIPServer should *not* look into
+the implementation config, and this check may be removed at some time
+in the future.
+
+Administration
+~~~~~~~~~~~~~~
+
+New Latency Tester Tool
+^^^^^^^^^^^^^^^^^^^^^^^
+The Evergreen Web Staff Client now includes a section called *Tests* linked from
+*Administration -> Workstation*. The *Tests* page houses a simple tool
+that can be used to test the latency of the websocket connection between the
+client and the server (via the `opensrf.echo` service).
+
+This page displays which Evergreen host server is being queried. Upon hitting
+the blue "Start Test" button for the first time, it will issue 10 sequentially
+fired requests in order to get a solid initial average. Clicking the button a
+second time will take one more measurement and recalculate the average
+latency. The results can be copied to clipboard for troubleshooting purposes
+and also cleared from display.
+
+marc_export --uris option
+^^^^^^^^^^^^^^^^^^^^^^^^^
+The marc_export support script now has a `--uris` option (short form:
+`-u`) to export records with located URIs (i.e. electronic resources).  When
+used by itself, it will export only records that have located URIs.  When
+used in conjunction with `--items`, it will add records with located URIs
+but no items/copies to the output.  If combined with a `--library` or
+`--descendants` option, this option will limit its output to those
+records with URIs at the designated libraries.  The best way to use
+this option is in combination with the `--items` and one of the
+`--library` or `--descendants` options to export *all* of a library's
+holdings both physical and electronic.
+
+
+Architecture
+~~~~~~~~~~~~
+
+Sample Data Includes Surveys
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+The Concerto sample data set now includes patron surveys, questions,
+answers, and responses.
+
+Virtual Index Definitions
+^^^^^^^^^^^^^^^^^^^^^^^^^
+The practical purpose of Virtual Index Definitions is to supply an Evergreen
+administrator with the ability to control the weighting and field inclusion of
+values in the general keyword index, commonly referred to as "the blob,"
+without requiring tricky configuration that has subtle semantics, an
+over-abundance of index definitions which can slow search generally, or the
+need to reingest all records on a regular basis as experiments are performed
+and the configuration refined. Significant results of recasting keyword indexes
+as a set of one or more Virtual Index Definitions will be simpler search
+configuration management, faster search speed overall, and more practical
+reconfiguration and adjustment as needed.
+
+Previously, in order to provide field-specific weighting to
+keyword matches against titles or authors, an administrator must duplicate many
+other index definitions and supply overriding weights to those duplicates. This
+not only complicates configuration, but slows down record ingest as well as
+search. It is also fairly ineffective at achieving the goal of weighted keyword
+fields. Virtual Index Definitions will substantially alleviate the need for
+these workarounds and their consequences.
+
+  * A Virtual Index Definition does not require any configuration for
+extracting bibliographic data from records, but instead can become a sink for
+data collected by other index definitions, which is then colocated together to
+supply a search target made up of the separately extracted data. Virtual Index
+Definitions are effectively treated as aggregate definitions, matching across
+all values extracted from constituent non-virtual index definitions.  They can
+further make use of the Combined class functionality to colocate all values in a
+class together for matching even across virtual fields.
+
+  * Configuration allows for weighting of constituent index definitions that
+participate in a Virtual Index Definition. This weighting is separate from the
+weighting supplied when the index definition itself is a search target.
+
+  * The Evergreen QueryParser driver returns the list of fields actually
+searched using every user-supplied term set, including constituent expansion
+when a Virtual Index Definition is searched. In particular, this will facilitate
+Search Term Highlighting described below.
+
+  * Stock configuration changes make use of pre-existing, non-virtual index
+definitions mapped to new a Virtual Index Definition that implements the
+functionality provided by the `keyword|keyword` index definition. The
+`keyword|keyword` definition is left in place for the time being, until more data
+can be gathered about the real-world effect of removing it entirely and
+replacing it with Virtual Index Definition mappings.
+
+  * New system administration functions will be created to facilitate
+modification of Virtual Index Definition mapping, avoiding the need for a full
+reingest when existing index definitions are added or removed from a virtual
+field.
+
+Increased use of Metabib Display Fields
++++++++++++++++++++++++++++++++++++++++
+We use Metabib Display Fields (newly available in 3.0) to render catalog search
+results, intermediate metarecord results, and record detail pages. This requires
+the addition of several new Metabib Display Field definitions, as well as Perl
+services to gather and render the data.
+
+We also use more Metabib Display Fields in the client. As a result,
+bibliographic fields will display in proper case in more client interfaces and
+in Evergreen reports.
+
+Interfaces
+++++++++++
+A new AngularJS "MARC Search/Facet Fields" interface has been created to replace
+the Dojo version, and both have been extended to support Virtual Index
+Definition data supplier mapping and weighting.
+
+Settings & Permissions
+++++++++++++++++++++++
+The new Virtual Index Definition data supplier mapping table,
+`config.metabib_field_virtual_map`, requires the same permissions as the
+MARC Search/Facet Fields interface: CREATE_METABIB_FIELD, UPDATE_METABIB_FIELD,
+DELETE_METABIB_FIELD, or ADMIN_METABIB_FIELD for all actions
+
+Backend
++++++++
+There now exist several new database tables and functions primarily in support
+of search highlighting. Additionally, the QueryParser driver for Evergreen has
+been augmented to be able to return a data structure describing how the search
+was performed, in a way that allows a separate support API to gather a
+highlighted version of the Display Field data for a given record.
+
+Default Weights
++++++++++++++++
+By default, the following fields will be weighted more heavily in keyword
+searches. Administrators can change these defaults by changing the values in the
+ "All searchable fields" virtual index in the "MARC Search/Facet Fields"
+interface.
+
+  * Title proper
+  * Main title (a new index limited to the words in the 245a)
+  * Personal author
+  * All subjects
+
+In addition, note indexes and the physical description index will receive
+less weight in default keyword searches.
+
+Re-ingest or Indexing Dependencies
+++++++++++++++++++++++++++++++++++
+With the addition and modification of many Index Definitions, a full reingest is
+recommended.  However, search will continue to work as it did previously
+for those records that have not yet been reingested. Therefore a slow, rolling
+reingest is recommended.
+
+Performance Implications or Concerns
+++++++++++++++++++++++++++++++++++++
+Because the Metabib Display Fields infrastructure will eventually replace
+functionality that is significantly more CPU-intensive in the various forms of
+XML parsing, XSLT transformation, XPath calculation, and
+Metabib Virtual Record construction, it is expected that the overall CPU load
+will be reduced by this development, and ideally the overall time required to
+perform and render a search will likewise drop. It is unlikely that the speed
+increase will be visible to users on a per-search basis, but that search in
+aggregate will become a smaller consumer of resources.
+
+Fixes to patron name/username search indexes
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+When using pg_restore to restore an Evergreen database, some of the
+indexes used to speed up patron searches on names and usernames
+could be lost.
+
+This release fixes the underlying issue and re-creates the indexes
+in question.
+
+Details
++++++++
+When using pg_restore to restore an affected database, the
+"unaccent" indexes on actor.usr would not be created due to an
+unqualified function reference in `evergreen.unaccent_and_squash`.
+
+The function will be replaced to resolve the search path issue,
+and the following indexes on actor.usr will be dropped and then
+re-created:
+
+  * actor_usr_first_given_name_unaccent_idx;
+  * actor_usr_second_given_name_unaccent_idx;
+  * actor_usr_family_name_unaccent_idx;
+  * actor_usr_usrname_unaccent_idx;
+
+This will be done even if the indexes are already present, and may
+take a few minutes on a database with many patrons.
+
+Administration
+~~~~~~~~~~~~~~
+
+Hold Targeter Script has been Replaced
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+The original hold_targeter.pl script has been renamed to
+"hold_targeter_legacy.pl", and the new-style hold targeting
+script has been renamed to "hold_targeter.pl".  Administrators
+will want to change their crontab files to reflect this.
+
+.Previous Syntax
+[source,bash]
+---------------------------------------------------------------------
+-*/15 * * * *   . ~/.bashrc && $EG_BIN_DIR/hold_targeter.pl $SRF_CORE
+---------------------------------------------------------------------
+
+.New Syntax
+[source,bash]
+-----------------------------------------------------------------------------------
+-*/15 * * * *   . ~/.bashrc && $EG_BIN_DIR/hold_targeter.pl --osrf-config
+$SRF_CORE
+-----------------------------------------------------------------------------------
+
+The sample crontab file at `Open-ILS/examples/crontab.example` reflects
+this change.
+
+
+Browser Client Settings & Preferences Stored on the Server
+^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+Browser client settings and preferences that should persist over time are
+now stored as settings on the server.  This allows settings to follow
+users and workstations and reduces problems associated with losing settings 
+as a result of clearing browser data.
+
+The browser client honors setting values stored as user settings, workstation
+settings, and org unit settings, depending on which setting types are
+locally configured.
+
+Setting Types
++++++++++++++
+
+* No setting can be both a user and workstation setting.  They are mutually
+  exclusive.
+* Any setting can be an org unit setting in addition to being a user or
+  workstation setting.
+
+Read-Only Settings
+++++++++++++++++++
+
+Read-only settings are useful for defining values that staff can use but
+not modify.  For example, admins may wish to prevent users from locally
+modifying the grid configuration for a given interface so it remains
+consistent for all users.
+
+A setting is read-only when an org unit setting type exists (regardless of 
+whether a value is applied) and no user or workstation setting type exists.
+
+Server-Stored Workstation Settings Workstation Admin View
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
+
+There's a new "Server Workstation Prefs" tab to the stored preferences
+workstation admin interface.  From here, users can view which
+preferences are stored as server-stored workstation preferences and
+delete select values.
+
+Upgrade Notes
++++++++++++++
+
+A new permission APPLY_WORKSTATION_SETTING has been added to control who
+may apply values to workstation settings.  Use something like the following
+to apply the permission to all staff accounts (mileage may vary):
+
+[source,sh]
+--------------------------------------------------------------------------
+INSERT INTO permission.grp_perm_map (grp, perm, depth) 
+VALUES (
+    (SELECT id FROM permission.grp_tree WHERE name = 'Staff'), -- name may vary
+    (SELECT id FROM permission.perm_list WHERE code = 'APPLY_WORKSTATION_SETTING'),
+    0 -- or 1, 2, etc.
+);
+--------------------------------------------------------------------------
+
+Workstation setting types matching values previously stored in the browser
+(via localStorage or Hatch) are created as part of this feature.  During
+upgrade, admins should consider whether any of these new setting types 
+should be transferred to user and/or org unit settings instead.  Setting
+type changes can be made at any time, but when a setting type is deleted
+all of its data is deleted, so a change in type means re-applying the 
+settings in the browser client.
+
+Values stored in the browser will automatically migrate to server settings
+as each setting is accessed in the browser client.  Once migrated, the
+in-browser copies are deleted.  
+
+If a setting type does not exist where the browser expects one, the 
+value is stored in-browser instead and a warning is issued in the console.
+
+
+
+== BUG FIXES == 
+
+=== 3.0 ===
+
+* Removes the tooltip feature when you mouse over a grid cell because this feature degraded performance.
+* Fixes an issue with adding two or more copies in cataloging.
+* Fixes the inability to add copies from Item Status and Holdings View.
+* Fixes an issue that caused catalog searches to fail after a new library was added to the org tree.
+* When you mouse over a grid cell in the client, a tooltip will display the full contents of the cell.
+* Fixes issues with columns in the Item Status, Holdings View, Checkout, Patron Bill, Recent Circ History,
+* Fixes various misspellings and capitalization issues in the interface.
+* Circulation staff can now override a patron block that is placed from Messages/Apply Penalty.
+* Fixes an issue with checking in hourly loans.
+* Staff can now approve pending patron addresses in the patron edit interface.
+* Prevents patron records from being merged with themselves.
+* Fixes a bug where the patron card dialog would not allow the user to change the primary barcode under certain circumstances.
+* Fixes issues with duplicate transit records.
+* Adds the transit cancel time to the Most Recent Transits section of the Item Status Holds / Transit tab.
+* Improvements to the Item Attribute Editor.
+* Staff can now set a default search box in the Z39.50 search interface.
+* Staff can now delete copy notes.
+* Fixes an issue in which transferring items and vol/items caused statistical categories to disappear.
+* In the MARC editor, the 007 physical characteristics wizard now has a different icon than the authority linker.
+* Protects backordered acquisitions items from having their catalog items deleted.
+* Fixes problems that occur when cloning a report template created in the XUL client.
+* Fixes bugs that caused activity metric data when performing searches.
+* Fixes an issue where the "Predict New Issues" button in the Serials module did not use the correct pattern. 
+* The KPAC now respects the `opac.holds.org_unit_not_pickup_lib` setting.
+* Several strings are now displayed in the correct translation.
+* Right clicking in grids results in more intuitive behavior.
+* Usernames and barcodes containging the _%_ character no longer
+experience problems logging in.
+* Fixes cases in which the web client stops loading after the toolbar.
+* Fixes problems in which using the web client in multiple tabs leads
+to data inconsistency.
+* Fixes an issue that caused authentication session checks to spam
+the system and needlessly fill up logs.
+* Boolean fields within grid views now say "Yes"/"No" instead of 
+"true"/"false".
+* Fixes sorting issues in the patron search.
+* Staff can now choose to print out only a selection of items out,
+instead of having to print them all.
+* The patron triggered event screen now respects the
+`circ.staff.max_visible_event_age` library setting.
+* Fixes an issue which caused an exception to be thrown during
+non-cataloged item checkout.
+* Fixes permission issues related to merging users.
+* The bibliographic record summary now displays the call number that
+matches the library's classification system.
+* The copy editor now makes shelving locations visible to catalogers
+from other libraries as needed.
+* Once a record is overlayed in the Z39.50 screen, it is no longer
+marked for overlay.
+* Several fixes to the filters on the Holdings View screen.
+* Several fixes to how empty volumes are created and displayed.
+* Fixes to item and call number transfers.
+* Fixes several issues with the item status list view.
+* When adding new copies, the circulation library now defaults to the
+call number's owning library.
+* Fixes display issues with the Print Item Labels page.
+* Fixes an issue in which the staff client and the OPAC displayed
+different counts of available items.
+* Fixes right-click issues with the Web client grids
+* Fixes an issue with the Default SMS Carrier in the patron edit form.
+* Fixes an issue that allowed overdue notices to be sent to a patron
+whose long overdue item has been paid for.
+* Checking in precat items now displays the "Route to Cataloging" alert each
+time the item is checked in.
+* Fixes an issue in which the Adjust to Zero feature
+does not close a checked-in lost circ.
+* Deleted copies that are still checked out can now be checked in.
+* Fixes a mislabeled column in the patron checkout grid.
+* Fixes an error with the missing pieces functionality.
+* Courier codes now display in the transit slip receipt preview.
+* The Item Status grid now displays OU shortnames instead of full names
+for the "Circulation Library" column.
+* The Volume/Copy editor now allows users to remove a value from the Age
+Hold Protection field.
+* Barcode completion now works in copy buckets.
+* The Z39.50 interface now notices when another record has been marked
+for overlay.
+* Fixes a display issue for the Remove MARC Field Groups checkboxes in
+the Z39.50 interface.
+* Fixes a performance issue for the Validate button in the MARC Editor.
+* Fixes an incorrect close tag in the Print Item Labels toolbar.
+* Better scoping of copy tags in search results.
+* Electronic Resource links now open in a new tab.
+* Fixes an issue with the fiscal year close-out operation.
+* Improves serials item deletes.
+* Fixes specific cases in which deleted records appear in search results.
+* Fixes a performance issue with deleting patrons.
+* The hold shelf dialog popup now lists the patron's notification
+preferences.
+* Fixes an issue that prevented editing items when a monograph part
+is present.
+* Patron information is now available for use in the bills_current
+and bills_historical receipt templates.
+* The browser's "This page may contain unsaved data" warning now 
+appears when users click the update
+expire date button in a patron account and attempt to navigate away
+without saving.
+* The holds tab of the patron record now includes a monograph part
+column.
+* The barcode box in the checkout screen
+no longer hovers above patron record tabs when
+staff users scroll down.
+* Fixes an issue with the date of birth in the patron edit scren.
+* Fixes an issue with the dropdown of billing type options.
+* The Item Status screen now includes as a floating group column.
+* The MARC editor now handles 008 fields better.
+* Adds spaces between subfields when suggesting a call
+number for a new volume.
+* MarcXML exports from the MARC Batch Import/Export ->
+Export Records screen now downloads the file, rather than opening
+it in the browser.
+* The Item Status Circulation Library column now displays a 
+shortname rather than the full library name.
+* The Item Status Remaining Renewals column now displays
+correctly.
+* The Item Status now has a "Last Renewal Workstation" column
+available.
+* Fixes the circulation counts displayed in Item Status Details.
+* Fixes an issue where multiple copies with different values for required
+statistical categories could not be edited and saved in batch.
+* Add an option to remove floating in the copy editor.
+* Fixes an issue with the floating dropdown in the copy editor.
+* Fixes a problem in which the copy template didn't properly copy
+certain objects.
+* Reduces the number of API calls that the MARC Editor requires.
+* Fixes an issue that prevented the offline patron registration
+screen from loading.
+* Fixes an issue with searching patrons by permission group.
+* The barcodes in the patron search are now clickable.
+* Staff members can now manually override the patron juvenile
+flag value, regardless of the patron's date of birth.
+* Checkboxes on patron registration screen are now properly aligned
+with other fields.
+* The user permission group dropdowns in the patron registration,
+edit, and search interfaces now have scrollbars.
+* The date picker on the checkout screen is now hidden unless
+circ staff activates a specific due date option.
+* The check-in screen now includes a copy status column.
+* The Merge Patrons interface now displays the date of birth.
+* The user bucket screen now displays the Bucket ID.
+* The payment button on patron bills screen is now inactive if the
+Payment Received field is blank.
+* The Bill History receipt now includes a Finish date and a Last
+Payment date.
+* When a patron summary contains an image of the patron,
+that image tag now has a null alt attribute to remove it from
+the flow of a screen reader.
+* Corrects an issue that caused the transit dialog to show the
+wrong branch.
+* Corrects an issue with printing transit lists.
+* "Find another target" on transiting hold no longer leaves the 
+copy "in-transit".
+* The images now display to distinguish hold and transit slips.
+* The Clearable Holds list printout now only shows holds that have
+expired.
+* Restores the call number prefix and suffix fields to the holds
+pull list.
+* The documentation at the top of the hold shelf slip template
+adds `patron.alias`.
+* The cursor in the in-house use screen now automatically goes
+to the barcode field.
+* The in-house use screen now shows a copy status column.
+* Add support for converting change to patron credit in the patron bills
+interface, consistent with the XUL feature.
+* Fixes a bug that caused pickup/request library fields to be
+blank sometimes.
+* Fixes a bug in the offline org unit tree.
+* The novelist entry in `eg_vhost.conf` includes two new
+parameters.
+* Corrects an issue with the `--max-sleep` argument on the
+`action_trigger_runner.pl` support script.
+* Corrects an issue with how the `eg_pbx_allocator.pl` script
+detects an existing lock file.
+* The 3.0.2-3.0.3 upgrade script disables triggers before
+recalculating bib visibility.
+* Fixes an issue that caused records with located URIs to be
+retrieved in Copy Location and Copy Location Group searches.
+* Fixes an error message that appeared in the search box
+in the public catalog while placing hold after an advanced search.
+* Restores the display of copy information for the user's
+preferred library in the public catalog.
+* Fixes regression errors in the search results page.
+* Removes redundant call numbers from the Show More Details
+search results.
+* The cast field in the catalog is now taken from the 511 field
+when first indicator = 1, rather than the 508.
+* Fixes a display issue caused by editing holds.
+* Fixes an issue that prevented users from searching for
+receivable issues using Database ID or ISSN in the Serials
+Batch Receive interface.
+* Adds some padding to the bottom of Web Client interfaces.
+* Logins now honor all org unit timeout settings.
+* Evergreen will now identify and handle invalid timezones.
+* Fixes an issue where a column header in some interfaces were automatically
+highlighted in green when retrieving the interface.
+* The parts column in the Item Status screen now displays parts data.
+* Fixes a performance issue with the Patron Billing History screen and
+other screens that cause Flattener.pm to re-create joins
+unnecessarily.
+* Fixes an issue that prevented patron alerts from showing to staff at
+other libraries.
+* Corrects the "Holdable" attribute display on the Item Status detailed
+view.
+* Fixes the ability to delete multiple copies from Item Status.
+* When using 'Selection Lists -> Edit MARC Order Record' in the web
+  staff client, now only one click is required to save the MARC
+  record rather than two.
+* The volume/copy editor in the web staff client now better handles
+  editing multiple items that have different sets of statistical
+  category values assigned to them.
+* The act of merging bibliographic records now updates bookbags
+  that referred to the source bibliographic record rather than
+  effectively deleting entries for that record.
+* Additional columns were added to the Holds Pull List in the
+  web staff client.
+* The patron registration form in the web staff client now correctly
+  manages setting user preferences.
+* An error in a pgTAP unit test was corrected.
+* The MARC Editor in the Web staff client now wraps long fields.
+* The MARC Editor no longer allows catalogers to enter new lines
+into MARC subfields.
+* Fixes an issue that prevented serials items from being deleted or
+modified.
+* The Web staff client Check In screen no longer reloads the whole
+page multiple times each time an item is scanned.
+* Fixes an issue that displayed the oldest -- rather than the newest
+-- transit in the Web staff client Item Status page.
+* Fixes an issue that prevented the reports module from being displayed
+in the Web client.
+* Fixes an issue in the Web staff client reports module that caused
+syntax errors in reports that use virtual fields and joins.
+* Fixes an issue that prevented several dropdown menus in the Web staff
+client from activating.
+* Fixes an issue that created duplicate copy data when copies or
+volumes with parts were transferred.
+* Fixes the Trim List feature in the Web staff client Check In screen.
+* The Item Status grid now displays the Circulation Modifier.
+* Restores missing data from the Profile column in Place Hold patron
+search results.
+* Fixes an issue with the http -> https redirect on Apache 2.4.
+* Fixes an color contrast accessibility issue in the Web staff
+client and adds underlining to links in grid cells for added accessibility.
+* Adds automated regression and unit tests for the Web staff client
+reports module.
+* Adds a process for spell-checking the official documentation.
+* Adds a script that simplifies the release process related to translations.
+* Fixes a bug that caused all searches limited by shelving location to
+return 0 results.
+* Fixes a bug that caused EDI orders to be sent with the vendor's SAN,
+rather than the ordering agency's SAN.
+* Fixes a bug that prevented Safari/iOS users from logging in to the
+web client.
+* Fixes a bug that prevented users from using the browse interface.
+* Fixes a bug in the Item Status List view that caused incorrect due
+dates to display.
+* Approval code is now a required field in the web client's patron
+credit card payment form.
+* Fixes a bug with credit card payments that caused a receipt to print
+showing that the patron paid the bill when the payment had not actually
+been applied.
+* Fixes a bug that prevented the EDI translator from being installed on
+Ubuntu 16.04.
+* Fixes a bug that caused entries to show up multiple times in the
+Items Out and Holds tabs in the patron record.
+* Fixes a bug that caused grids on Bills and Patron Messages
+screens to not display properly.
+* The following fields are now available for the Checkout and Items Out
+receipt templates:
+** first_given_name
+** second_given_name
+** family_name
+** suffix
+** barcode
+** money_summary.balance_owed
+** money_summary.total_paid
+** money_summary.total_owed
+** expire_date
+** alias
+** has_email
+** has_phone
+* The following fields are now available on the Bill Payment receipt templates:
+** first_given_name
+** second_given_name
+** family_name
+** suffix
+** barcode
+** expire_date
+** alias
+** has_email
+** has_phone
+* Payment type is now a column in the payments tab of the patron record
+Bill History section.
+* The "Replace Barcode" function now makes it more difficult for staff
+members to attempt to create blank patron barcodes.
+* The patron bills screen now prevents staff members from double-clicking
+on the Apply Payment button (which otherwise would apply two payments).
+* Fixes a bug that prevented patrons attached to statistical categories
+from displaying in the patron search-to-hold dialog.
+* Fixes a performance issue related to uploading CSV files of barcodes
+to the item status and patron bucket interfaces.
+* Fixes several small bugs in the Spanish translation.
+* Fixes a performance bug related to patrons logging in by barcode.
+* Fixes several issues related to the display of located URIs and records with
+bib sources in search results.
+* Setting `opac_visible` to false for a copy location group now hides only
+the location group itself, rather than also hiding every single copy in the
+group.
+* Fixes a bug that prevented the copy editor from displaying the _fine level_
+and _loan duration_ fields.
+* The "Edit Items" grid action in the Item Status interface will now open
+in the combined volume/copy editor in batch.  This makes the behavior
+consistent with the "Edit Selected Items" grid action in the copy
+buckets interface.
+* Staff members are now required to choose a billing type when creating a
+bill on a user account.
+* The Web client now provides staff users with an alert and option to
+override when an item with the Lost and Paid status is checked in.
+* Fixes a bug where the Web client offline circ interface was not able
+to set its working location.
+* Fixes an issue that prevented the ADMIN_COPY_TAG permission from being
+granted.
+* The MARC editor in the Web staff client now presents bib sources in
+alphabetical order.
+* Both circulation and grocery bills are now printed when a staff user selects
+a patron account and clicks "Print Bills".
+* Fixes an issue in the XUL serials interface the "Receive move/selected"
+action from succeeding.
+* Fixes a typo in the user password testing interface.
+* Copy templates created in XUL Holdings Maintenance will now be
+automatically converted and displayed in the web staff client's
+volume/copy editor.
+* The list of report templates now includes a column indicating whether
+the template was originally created in the XUL staff client or the web
+staff client; staff need to know this since report templates created in
+one interface cannot be edited in the other.
+* Call number prefixes and suffixes are now displayed in various grids
+in the web staff client, including
+** Pending Copy Buckets
+** Copy Buckets
+** Checkin/Capture Holds
+** Holds Shelf
+** Patron Bills History
+** Patron Checkout
+** Patron Holds
+** Patron Items Out
+** Copy Editor
+** In-House Uses
+** Renew Items
+** Bib Record View Holds
+** Transit List
+* Many patron fields have been redacted from the web staff client's patron
+and record holds grids, leaving patron name, username, and ID.
+* Fixes two bugs where patron records could fail to be saved upon editing.
+* The web staff patron editor now better warns staff users about
+duplicate names, IDs, phone numbers, and email addresses.
+* Human readable labels are now displayed for certain fields in standing
+penalty records.
+* The patron summary in the web staff client now correctly displays
+primary and secondary ID values.
+* The web staff client's billing full details page now displays
+information about the staff user that created a payment.
+* The web staff client now requires staff users to explicitly set a
+billing type when adding a manual bill.
+* The web staff client's patron bill annotation modal now works.
+* Patron barcode search completion in the web staff client now allows
+the user to select from all of the matching patron records.
+* The Hold Shelf Slip print template in the web staff client now has
+access to the call number.
+* The Checkout Receipt print template in the web staff client now can
+include summary financial information, incuding current balance, total
+paid on outstanding fines, and total owed.
+* The web staff print templates for current and historical bills can
+now include copy barcode and title.
+* Fixes a bug that resulted in some catalog searches unexpectedly
+timing out.
+* Fixes a bug that resulted in catalog searches that specify a location
+limit returning incorrect results.
+* Fixes a bug where deleted copies could make records visible in the
+public catalog.
+* Fixes a bug where certain queries on copies used in the public catalog
+could be very slow.
+* Fixes a bug place a hold request in the public catalog could result
+in "forgetting" the type and library of the user's previous search.
+* The web staff client now respects staff user session timeouts, and
+will log out all open tabs if a user's session has timed out.
+* The web staff Z39.50 page will now give the staff user an alert if
+they attempt to import a record with a duplicate TCN.
+* Fixes a bug that prevented copy notes, copy tags, and copy bucket
+entries from being deleted.
+* Fixes a bug that made using the volume/copy editor to change a copy's
+price problematic.
+* The administration interface for hard due dates now ensures that
+new (or edited) ceiling dates have their time component set to end
+of day, resolving an issue where ceiling dates would not be applied
+during the ceiling date itself.
+* The web staff client can now include dynamic information in browser
+tab titles, e.g., "Smith, Jane - Checkout".
+* The Concerto sample data set now includes data allowing for testing
+placing holds on monographic parts.
+* Asset merging during bibliographic record merging now correctly
+recognizes call number prefixes and suffixes and deletes disused
+call number records.
+* Fixes a bug where displaying user surveys could result in PCRUD
+drone starvation.
+* Fixes a bug where pg_restore of an Evergreen database could fail
+to create certain indexes on the `actor.usr` table.
+* Fixes a bug in the web staff client that prevented initials from being
+stored with copy notes.
+* Adds billing types that may have been missed by systems that were 
+running Evergreen prior to the 1.4 release.
+* Fixes a web staff client bug with the CSV export option available from
+the Import Queue in the MARC Batch Import/Export interface.
+* Adds the missing copy alert field in the web client's volume/copy
+editor.
+* Fixes a bug where the setting to require date of birth in patron
+registration was not being honored in the web staff client.
+* Fixes a bug in the web staff client patron registration form where the 
+password wasn't generating from the last four digits of the patron's
+phone number.
+* Fixes an issue in the web staff client where the complete barcode did
+not display in some interfaces when partial barcodes were scanned.
+* Fixes an HTML error in the new copy tags that display on the record
+summary page.
+* Fixes a web staff client bug where recording a large number of in-house
+uses at one time doesn't display a confirmation dialog once it hits the 
+correct threshold.
+* Adds a _Print Full Grid_ action in the web staff client
+holds pull list to allow staff to print the entire pull list as it
+displays on the screen. This change also changes the _Export CSV_ action
+to an _Export Full CSV_ option.
+* Fixes an issue with the Patron Messages interface that prevented it
+from saving column configuration changes in the web staff client.
+* Fixes a bug in the web staff client where a billing prompt did not
+correctly display after marking an item damaged in those systems that
+have enabled the setting to bill for damaged items.
+* Adds an option to the specific due date feature that allows saving
+that due date until logout. This allows all circulations from a given
+workstation to be due on the same date. 
+
+=== 3.1 ===
+
+* Adds several columns to the items out grid.
+* Adds the ability to copy patron addresses to the clipboard.
+* Fixes several issues with adding new items and call numbers.
+* Adds links to catalog records from the query and pending tabs of the Record Buckets interface.
+* Corrects the date format used in several bucket interfaces.
+* Adds a loading spinner to interfaces that are embedded in the web staff client via iframe
+(such as the catalog).
+* Fixes an issue that caused catalog searches to fail after a new library was added to the org tree.
+* When you mouse over a grid cell in the client, a tooltip will display the full contents of the cell.
+* Fixes issues with columns in the Item Status, Holdings View, Checkout, Patron Bill, Recent Circ History,
+* Fixes various misspellings and capitalization issues in the interface.
+* Circulation staff can now override a patron block that is placed from Messages/Apply Penalty.
+* Fixes an issue with checking in hourly loans.
+* Staff can now approve pending patron addresses in the patron edit interface.
+* Prevents patron records from being merged with themselves.
+* Fixes a bug where the patron card dialog would not allow the user to change the primary barcode under certain circumstances.
+* Fixes issues with duplicate transit records.
+* Adds the transit cancel time to the Most Recent Transits section of the Item Status Holds / Transit tab.
+* Adds the "Show in Catalog" action back to the Item Status grid.
+* Improvements to the Item Attribute Editor.
+* Staff can now set a default search box in the Z39.50 search interface.
+* Staff can now delete copy notes.
+* Fixes an issue in which transferring items and vol/items caused statistical categories to disappear.
+* In the MARC editor, the 007 physical characteristics wizard now has a different icon than the authority linker.
+* Protects backordered acquisitions items from having their catalog items deleted.
+* Fixes a problem where EDI ORDERS message were not visible in the EDI Messages interface.
+* Fixes problems that occur when cloning a report template created in the XUL client.
+* Fixes bugs that caused activity metric data when performing searches.
+* Fixes an issue where the "Predict New Issues" button in the Serials module did not use the correct pattern. 
+* The KPAC now respects the `opac.holds.org_unit_not_pickup_lib` setting.
+* Several strings are now displayed in the correct translation.
+* Right clicking in grids results in more intuitive behavior.
+* Usernames and barcodes containging the _%_ character no longer
+experience problems logging in.
+* Fixes cases in which the web client stops loading after the toolbar.
+* Fixes problems in which using the web client in multiple tabs leads
+to data inconsistency.
+* Fixes an issue that caused authentication session checks to spam
+the system and needlessly fill up logs.
+* Boolean fields within grid views now say "Yes"/"No" instead of 
+"true"/"false".
+* Fixes sorting issues in the patron search.
+* Staff can now choose to print out only a selection of items out,
+instead of having to print them all.
+* The patron triggered event screen now respects the
+`circ.staff.max_visible_event_age` library setting.
+* Fixes an issue which caused an exception to be thrown during
+non-cataloged item checkout.
+* Fixes permission issues related to merging users.
+* The bibliographic record summary now displays the call number that
+matches the library's classification system.
+* The copy editor now makes shelving locations visible to catalogers
+from other libraries as needed.
+* Once a record is overlayed in the Z39.50 screen, it is no longer
+marked for overlay.
+* Fixes several issues with the item status list view.
+* When adding new copies, the circulation library now defaults to the
+call number's owning library.
+* Fixes display issues with the Print Item Labels page.
+* Fixes an issue in which the staff client and the OPAC displayed
+different counts of available items.
+* Fixes right-click issues with the Web client grids
+* Fixes an issue with the Default SMS Carrier in the patron edit form.
+* Fixes an issue that allowed overdue notices to be sent to a patron
+whose long overdue item has been paid for.
+* Checking in precat items now displays the "Route to Cataloging" alert each
+time the item is checked in.
+* Fixes an issue where alerts that had been cleared by a check-in continued
+to display.
+* Fixes an issue in which the Adjust to Zero feature
+does not close a checked-in lost circ.
+* Deleted copies that are still checked out can now be checked in.
+* Fixes a mislabeled column in the patron checkout grid.
+* Grocery bills are no longer styled the same way as overdue bills.
+* Fixes an error with the missing pieces functionality.
+* Courier codes now display in the transit slip receipt preview.
+* Fixes several issues related to adding volumes.
+* Fixes several issues related to empty volumes.
+* Fixes several issues related to item and volume transfers.
+* Fixes several issues with checkboxes in the volume/copy editor.
+* The Item Status grid now displays OU shortnames instead of full names
+for the "Circulation Library" column.
+* The Volume/Copy editor now allows users to remove a value from the Age
+Hold Protection field.
+* Barcode completion now works in copy buckets.
+* The Z39.50 interface now notices when another record has been marked
+for overlay.
+* Fixes a display issue for the Remove MARC Field Groups checkboxes in
+the Z39.50 interface.
+* Fixes a performance issue for the Validate button in the MARC Editor.
+* Fixes an incorrect close tag in the Print Item Labels toolbar.
+* Better scoping of copy tags in search results.
+* Prevents sending invalid search.highlight_display_fields calls.
+* Electronic Resource links now open in a new tab.
+* Fixes an issue with the fiscal year close-out operation.
+* Fixes specific cases in which deleted records appear in search results.
+* Fixes a performance issue with deleting patrons.
+* The hold shelf dialog popup now lists the patron's notification
+preferences.
+* Fixes an issue that prevented editing items when a monograph part
+is present.
+* Patron information is now available for use in the bills_current
+and bills_historical receipt templates.
+* The browser's "This page may contain unsaved data" warning now 
+appears when users click the update
+expire date button in a patron account and attempt to navigate away
+without saving.
+* The holds tab of the patron record now includes a monograph part
+column.
+* The barcode box in the checkout screen
+no longer hovers above patron record tabs when
+staff users scroll down.
+* Fixes an issue with the date of birth in the patron edit scren.
+* The patron account bills grid are now color-coded by the item's
+status.
+* Fixes an issue with the dropdown of billing type options.
+* The Item Status screen now includes as a floating group column.
+* The MARC editor now handles 008 fields better.
+* Adds spaces between subfields when suggesting a call
+number for a new volume.
+* MarcXML exports from the MARC Batch Import/Export ->
+Export Records screen now downloads the file, rather than opening
+it in the browser.
+* The Item Status Circulation Library column now displays a 
+shortname rather than the full library name.
+* The Item Status Remaining Renewals column now displays
+correctly.
+* The Item Status now has a "Last Renewal Workstation" column
+available.
+* Fixes the circulation counts displayed in Item Status Details.
+* Removes an error that got thrown in the Holdings View when a call number
+contains no copy.
+* Fixes an issue where multiple copies with different values for required
+statistical categories could not be edited and saved in batch.
+* Add an option to remove floating in the copy editor.
+* Fixes an issue with the floating dropdown in the copy editor.
+* Fixes a problem in which the copy template didn't properly copy
+certain objects.
+* Reduces the number of API calls that the MARC Editor requires.
+* The order of the Z39.50 servers on the Z39.50 import screen
+no longer relies on capitalization.
+* Fixes an issue that prevented the offline patron registration
+screen from loading.
+* Fixes an issue with searching patrons by permission group.
+* The barcodes in the patron search are now clickable.
+* Staff members can now manually override the patron juvenile
+flag value, regardless of the patron's date of birth.
+* Checkboxes on patron registration screen are now properly aligned
+with other fields.
+* The user permission group dropdowns in the patron registration,
+edit, and search interfaces now have scrollbars.
+* The date picker on the checkout screen is now hidden unless
+circ staff activates a specific due date option.
+* The check-in screen now includes a copy status column.
+* The Merge Patrons interface now displays the date of birth.
+* The user bucket screen now displays the Bucket ID.
+* The payment button on patron bills screen is now inactive if the
+Payment Received field is blank.
+* The Bill History receipt now includes a Finish date and a Last
+Payment date.
+* When a patron summary contains an image of the patron,
+that image tag now has a null alt attribute to remove it from
+the flow of a screen reader.
+* Corrects an issue that caused the transit dialog to show the
+wrong branch.
+* Corrects an issue with printing transit lists.
+* "Find another target" on transiting hold no longer leaves the 
+copy "in-transit".
+* The images now display to distinguish hold and transit slips.
+* The Clearable Holds list printout now only shows holds that have
+expired.
+* Restores the call number prefix and suffix fields to the holds
+pull list.
+* The documentation at the top of the hold shelf slip template
+adds `patron.alias`.
+* The cursor in the in-house use screen now automatically goes
+to the barcode field.
+* The in-house use screen now shows a copy status column.
+* Add support for converting change to patron credit in the patron bills
+interface, consistent with the XUL feature.
+* Fixes a bug that caused pickup/request library fields to be
+blank sometimes.
+* Fixes a bug in the offline org unit tree.
+* The novelist entry in `eg_vhost.conf` includes two new
+parameters.
+* Corrects an issue with the `--max-sleep` argument on the
+`action_trigger_runner.pl` support script.
+* Corrects an issue with how the `eg_pbx_allocator.pl` script
+detects an existing lock file.
+* The 3.0.2-3.0.3 upgrade script disables triggers before
+recalculating bib visibility.
+* Fixes an issue that caused records with located URIs to be
+retrieved in Copy Location and Copy Location Group searches.
+* Fixes an error message that appeared in the search box
+in the public catalog while placing hold after an advanced search.
+* Restores the display of copy information for the user's
+preferred library in the public catalog.
+* Author and contributor names are no longer highlighted in 
+search results when the user has turned off highlighting.
+* Fixes regression errors in the search results page.
+* Removes redundant call numbers from the Show More Details
+search results.
+* The cast field in the catalog is now taken from the 511 field
+when first indicator = 1, rather than the 508.
+* Fixes a display issue caused by editing holds.
+* Repairs broken author search links on the catalog record page.
+* Fixes an issue that prevented users from searching for
+receivable issues using Database ID or ISSN in the Serials
+Batch Receive interface.
+* Pins AngularJS support to version 1.6, which prevents unsupported
+AngularJS versions (such as 1.7) from breaking the build process.
+* Adds some padding to the bottom of Web Client interfaces.
+* Logins now honor all org unit timeout settings.
+* Evergreen will now identify and handle invalid timezones.
+* Fixes an issue where a column header in some interfaces were automatically
+highlighted in green when retrieving the interface.
+* The parts column in the Item Status screen now displays parts data.
+* Fixes a performance issue with the Patron Billing History screen and
+other screens that cause Flattener.pm to re-create joins
+unnecessarily.
+* Fixes an issue that prevented patron alerts from showing to staff at
+other libraries.
+* Corrects the "Holdable" attribute display on the Item Status detailed
+view.
+* Fixes the ability to delete multiple copies from Item Status.
+
+=== 3.2 ===
+
+* Adds several columns to the items out grid.
+* Adds the ability to copy patron addresses to the clipboard.
+* Fixes several issues with adding new items and call numbers.
+* Adds links to catalog records from the query and pending tabs of the Record Buckets interface.
+* Corrects the date format used in several bucket interfaces.
+* Adds a loading spinner to interfaces that are embedded in the web staff client via iframe
+(such as the catalog).
+* The new Angular 6 interfaces now use the correct favicon.
+