5.9 - Expected januari 2026
Upgrade notes
- You still need to upgrade to WebHare 4.35 before upgrading to 5.xx
- WebHare 5.9.1 is likely to become an 'unskippable' upgrade before upgrading to WebHare 6.0 - you will not be able to upgrade from any earlier WebHare 5.9
- If you skip over WebHare 5.8 indices may fail to open with '(Invalid stemmer class specified: Dutch_kp)'. You will need to delete and regenerate those indices
Incompatibilities and deprecations
- WebHare 5.9 will immediately report an issue that your database needs upgrading. We recommend snoozing this check until a convenient time. See upgrading postgres for details
- Automated certificates are now requested directly from the WebHare installation, using a configured ACME certificate provider. See https://www.webhare.dev/manuals/webservers/keyscertificates/#automated-certificates for more information.
- 'wh up' will no longer update WebHare, only modules. 'wh umic' still does both
- contenttype
http://www.webhare.net/xmlns/publisher/seosettingsis deprecated and split overplatform:web.metadataandplatform:web.config - drops
<propertyextension>support. Usewh devkit:rewritefor any remaining siteprofiles - editdocumentapi->editcontenttypes has no effect in WH5.9 - types must be properly marked with workflow: true to be shown or modified in editdocument api. note that we infer workflow:true for publishable webdesign files that are initially unpublished (eg RTDs and forms)
- GenerateBrowserScreenshot has been removed as a public API, use puppeteer directly through
@webhare/depsinstead - no longer able to disable the titlefield through 'baseprops', this field is too important for workflows
- removed /webhare/ and /webhare/check/ from the backend site (undocumented endpoints to retrieve some runtime metadata)
- support for
skipnormalrepublish=on<usetemplatehas been dropped. set needstemplate=false on the type. - the jwtPayload parameter has been removed from lookupUser
- The PDF/screenshot APIs have dropped support for the following options: cookies, getlog, getsource, devtoolsurl, invokeifdone. use connectSharedPuppeteer directly if you need more control over PDF generation
- we now require you to explicitly set worfklow=true on types that will be managed in draft/publish workflows
- we will no longer overwrite the target file when you're saving a draft to an unpublished file.
- Apply type ordering has been changed: apply rules set dierctly inside a filetypes/foldertypes are evaluated before other siteprofile rules as they're considerd 'defaults' for the type. This may cause conflicting rules to now overwrite each other, the simplest workaround is often to split off the rules in a
separate
<apply><to type="file" filetype=(and v.v. for foldertype) rule, but ideally you should avoid rules that rely on apply ordering. - WRD JSON fields are now converted to/from snake_case when accessed from HareScript
Planend future deprecations for WebHare 6.0
- Support for uploadtypemapping will be removed. We are already automatically mapping uploaded Word files to downloadable documents if no Word conversion is set up
- Word to HTML conversion will be removed.
- Writing whlib/shtml from WHFS to disk will be removed.
- PostgreSQL versions before 17 will no longer be supported.
Things that are nice to know
- Adds support for friendlycaptcha
- Adds support for loading captcha immediately or on activation into forms, instead of on submit, using
setupForms({ captcha?: "onLoad" | "onActivate" }) - Unpublishable files that use the document editor will now enable 'Publish' to update the final version, and 'Save' just saves a draft
wh runnow passes all prefix options to the script allowingwh run --inspect-brk myfile.tswh webserver resolve <url>gives you the on-disk path for a URLwh wrd describe-logincan be used to inspect onFrontendUserInfo results- adds 'unlisted' property to fs_objects to mark objects that should not appear in navigation
- allow long-press touch to open context menu
- allow preview link in doceditor to select which draft to share (this specific draft or most recent version)
- allows opening AVIF (and WebP) in image editor. It will still be saved as JPEG
- baseProps: isUnlisted - enabled an 'unlisted' checkbox to mark items which shouldn't appear in navigation. SELECT statements in templates need to be updated to honor 'unlisted'
- baseProps: requireTitle - requires all objects to have a title
- captcha field is now shown on the page showing Submit, not on a separate page
- GeneratePDF(fromURL) is now directly based on Puppeteer, fixing some hyphen issues
- isAllowedToLogin now receives the user's ipAddress
- sets up whdata/config/mod with a direct symlink to every available module
- support auto locking a form once a minimum # of signups is reached. note that we don't count deleted users
- support AVIF/WEBP sources in the image cache
- support using the wrdTag when setting domain values
- use
wh removesocketbinderto uninstall the socketbinder if present - use processOpenIdAuth for custom openid handling (blocking, redirecting to signupflows, etc)
- visitResources allows to directly process image resources in RTDs and instance data for eg. resizing
- WebHare's login screen will now follow usermanagement's default new user language for its own language selection
- WHFS JSON member type
- word documents will be given the 'downloadable' type even without an uploadtypemapping, unless mswordconversion is applied
- wrd.auth adds lookup-login and create-api-token
- lists support simple inline formatting (bold, underline, hyperlinks) in cells
TypeScript/JavaScript highlights
- Adds
wh devkit:siteprl2ymlcommand to convert siteprofiles from XML to YML format. - Improves
wh devkit:es2tsautomatic ES - >TS conversions - dompack.create now supports a third children[] argument, accepting both text and elements to use as childnodes
- the language server (LSP) has been integrated into devkit
- The WebHare vscode extension has been integrated into WebHare itself. Run
wh devkit:vscode-extension installto install it
To get the full list of changes between 5.8 and 5.9 yourself, use: git log $(git merge-base master origin/release/5.8)..$(git merge-base master origin/release/5.9)