5.0 - 16 August 2022
PLEASE NOTE! YOU NEED TO UPGRADE TO 4.35 BEFORE UPGRADING TO 5.0
IMPORTANT: 5.0.2 drops support for the legacy Consilio indexmanager and requires a full searchindex rebuild (just like would have happened at any unclean indexmanager shutdown). If you have a lot of PDF files or Office documents you can reduce the 'downtime' by upgrading to 4.35.3 first and rebuilding indices there first to fill the Tika cache
Incompatibilities and deprecations
- The
dbserver
(whdb, WebHareDB) has been removed system.fs_instances.id
,system.fs_settings.id
andwrd.entity_settings.id
and any referring columns are nowINTEGER64
s- Deprecations/removals that a dev:rewrite will fix for you:
- Support for the
lib=
attribute a<tolliumcomponent>
has been removed. Merge it into theobjecttype=
- Support for the
- Support for manually configured scheduler tasks has been removed. You should use
<task>
s in moduledefinitions. <authenticationsettings requireauthorization=false>
has been removed. It wasn't properly parsed from the XML anyway and is only acting as the inverse of themanagementmode
property.- Support for
<undoextendproperties>
has been removed. It has already been broken for a while. - You can no longer manage WRD schema metadata through the legacy objectapi.whlib
- Support for the Tollium
rowselect
andborder
attributes has been removed in both XML and HareScript (this does not affect the newerborders
attribute that replacedborder
in WebHare 4.03) - Support for the WebHare dev-agent (formerly Connect-helper) has been completely removed. You can use
wh dev:mount
now to mount a remote WebHare server using WebDav once you've setup a peering connection. "Open in editor" now requires an editor supporting LSP (Language Server Protocol) - NPM v7 restored automatic installation of per dependencies, even if not explicitly selected. We now explicitly disable that again for modules.
- Support for
beforeversion=
andrequireversion=
applicability checks have been removed - usewebhareversion=
with semver-based checks (available since 4.27) TestThrows
has been removed- Support for
role
andgrant
in the moduledefinition<databaseschema>
has been removed. They were never supported by our PostgreSQL integration and only used with the legacy WHDB (dbserver) database. mod::consilio/lib/catalog.whlib
andmod::consilio/lib/queries.whlib
have been removed and all public functions inmod::consilio/lib/queuemgmt.whlib
have now been deprecated, use the equivalent functions inmod::consilio/lib/api.whlib
instead. The(Sessioned)SearchFor(All)
,GetCatalogList
,GetCatalogIdByName
andGetContentSourceIdByTag
functions have been removed frommod::consilio/lib/search.whlib
, useRunConsilioSearch
for searching andmod::consilio/lib/catalogs.whlib
for catalog/contentsource management instead.- The search libraries now support more field types. All fields will be returned in the type that they are specified in the
mapping/empty search record, so manual conversion of search result fields shouldn't be necessary anymore. Please note that
legacy Consilio indices don't support
MONEY
/MONEY ARRAY
,FLOAT
/FLOAT ARRAY
,BOOLEAN
/BOOLEAN ARRAY
orDATETIME ARRAY
queries or relativeINTEGER
/INTEGER64
queries (matchtypes<
,<=
,>
and>=
) and only legacy Consilio indices requireDATETIME
fields to be prefixed withdate_
. - Custom fields that are indexed using
<meta name="consilio-[name]" value="[value]" />
must be specified in the catalog definition before they can be indexed by Opensearch. - Support for INTEGER less/greater than queries for Consilio is dropped, as it didn't work as intended anyway.
- User queries in Opensearch are parsed in Opensearch itself instead of within HareScript, using a
simple_query_string
query. This query format this query type uses is basically the same as HareScript's QueryParser uses, so the results should be the same. Specifically, searching specific fields usingfield:value
queries doesn't work anymore, so use theCQ*
functions to construct a search query instead of constructing a query string programmatically. - The
defaultrequired
option of theCQParseUserQuery
function is removed, userequiremode
instead (available since 4.24). Therequire
variabes (require_allowed
,required_required
andrequired_prohibited
) have been removed as well. - For Opensearch catalogs, the
thesaurusid
setting is deprecated in favor of a simplesynonyms
settings which determines if the synonyms list of the searched catalog should be used or not. - The
analyzer
,search_analyzer
andsearch_quote_analyzer
content source field settings have been removed. For language- specific analysis functions, set the catalog language using<catalog lang="...">
orUpdateCatalog([ lang := "..." ])
. Please note that changing a catalog's language requires the catalog to be rebuilt completely (to reindex all documents using the new language's analysis functionality)! - Support for
editfragment
andeditscreen
widget editors have been removed.wh dev:rewrite
should be able to help rewrite any remaining uses. (The alternativeeditextension=
is available since 4.27) - Users now need to be explicitly granted the system:webdav right to be able to use WebDav URLs. Most users will never need it
- Various optional and/or deprecated
library
attributes have been removed in situations where you can combine it into another macro/function/object attribute by separating library and identifier name with a hash (#
) ongetsources
now receives a STRING parameter with the catalog's tag for which its being invoked
Things that are nice to know
<windowopenaction>
now has alink=
parameter which you can use if the link is hardcoded anyway (no need for a callback)- The 'Send results by email' form handler will set the Reply-To to the recipient address if not otherwise set
- Dashboard panels can now have individual access checks.
- TestThrowsLike and TestRejectedLike now match their exceptions case-insensitively
- The new language construct
FOREVERY [ AWAIT ] (variable YIELD FROM iterator)
has been added, to quickly get the values returned by an iterator - Adds
http://www.webhare.net/xmlns/publisher/widgets/wittyblock
andhttp://www.webhare.net/xmlns/publisher/widgets/wittyinline
widgets to allow users to directly insert witty objects into RTDs. (Use with care!) - You can set the mask parameter of
TestThrowsLike
toREPORT
to get a print of the exception.- Replacing all
TestThrows(
calls withTestThrowsLike("REPORT",
is a quick way to get a list of all exceptions in a test so you can then simply copy them into the test code.
- Replacing all
- WRD has a new type, WHFSLINK, which stores links to files in WHFS (useful you don't want WHFSINTEXTLINKs ability to store external links too)
- Frontend support for the Tollium GetExclusiveAccess screen has been added
wh sql
now has a-r
(raw) option to simply print the results- You can use IsProductionOrAsIf to guard a workflows/dialog which you need to be able to simulate during development
- Adds a "contains widget" search filter to the Publisher search
- We've added
wh debug setsecret
and GetTestSecret for more secure secret management during CI tests. wh debug listflags
gives you a list of debugflags supported by your current modules.- WebHare 4.35 Consilio switched to Tika to scan PDF and Office documents for indexable content. A content-hash based cache has been added to cache the results of previous Tika scans which speeds up rebuilds of the Consilio indices. This cache has also been backported to 4.35.3
Things you should do
- Use the functions from
mod::consilio/lib/api.whlib
instead of those frommod::consilio/lib/catalog.whlib
,mod::consilio/lib/queries.whlib
andmod::consilio/lib/queuemgmt.whlib
- All indexed fields are returned in the type specified in the mapping/empty search record, so any code that does conversion
of field types in search results should be removed if the expected type is not
STRING
. - Add any fields that are indexed using
<meta name="consilio-[name]" value="[value]" />
to the catalog definition. - Remove analyzer settings of content source fields and replace language-specific settings with setting the
lang
attribute of the<catalog>
node. - If you read TESTSECRET_ environment variables directly, consider switch to GetTestSecret.