See GitHub for detailed change history of this release
Congratulations to Atronoush for his winning design for the banner for this release (here are the other entries).
Performance Improvements
- improved filter execution to use a more efficient linked list structure for intermediate results
- updated widget mechanism to cache the result of parsing macros which don't use text substitution
- updated page templates to use a single VarsWidget instead of several SetVariableWidgets, for improved performance and easier debugging
- updated ListWidget to not initialize parsers for blank
emptyMessage
attributes
Usability Improvements
- renamed "references" to "backlinks" in the tiddler info panel
- added warning message about using the online plugin library with the client-server configuration
- updated favicon for the prerelease edition
- removed normalize.css's styling of search input fields and updated to a modern fork of normalize.css
- removed unneeded editor toolbar buttons when editing SVG tiddlers
- added global keyboard shortcut for switching layouts
- hide the
.tid
exporter when more than one tiddler to export
Import Mechanism Improvements
- added support for renaming tiddlers and a warning about overwriting existing tiddlers
- added colour coding for import items that will overwrite existing tiddlers, and for other warnings
- improved other warnings in the import listing
- fixed content type of imported
.tid
files that do not have atype
field - fixed extraneous system tiddlers created during import process
Palette Improvements
- fixed the $:/PaletteManager to show "indirect" colours (ie, colours defined by another
<<colour>>
macro) - added new "Desert Sand" palette
- added new "Cupertino Dark" palette
- added "Solarized Dark" palette
- updated (and here) the Vanilla theme to optionally use palette colours for the browser selection outline
- updated "Gruvbox" palette readability of toolbar buttons
Keyboard Handling Improvements
- added support for navigating the search and new tag dropdowns via the keyboard. The keyboard-driven-input Macro can be used to add this capability to other dropdowns
- added a tabIndex property to the tiddler editor input area to make it easier to use the tab key to move between edit controls
- added keyboard support for cycling through the tabs in $:/AdvancedSearch
- added keyboard support for navigating the field name dropdown in the Edit Template
- added keyboard support or navigating the
type
field input in the Edit Template - added keyboard support for using the insert wikilink toolbar dropdown in the Edit Template
- added a keyboard shortcut for saving the wiki
- added a keyboard shortcut for deleting a field in the edit template
- added a keyboard shortcut to change the sidebar layout
Widget Improvements
- added EventCatcherWidget for low level event handling
- added new LogWidget and ActionLogWidget to help debugging
- added new ActionConfirmWidget to prompt the user for simple yes/no questions
- extended ButtonWidget and DroppableWidget so that changing the class attribute does not trigger a refresh. This makes it easier to use classes to trigger CSS animations
- extended the RevealWidget to optionally dynamically refresh popup positions when the state tiddler changes
- added support for disabled attribute to EditWidget, EditTextWidget, CheckboxWidget, RadioWidget and RangeWidget
- added support for disabled attribute to ButtonWidget
- extended the MacroCallWidget to be able to optionally render the raw text of the macro (previously the output was always wikified)
- updated the LinkWidget to work within SVG elements
- added accept attribute to the BrowseWidget
- extended the ActionPopupWidget to allow popups to be dismissed
- extended the EditWidget to pass all attributes through to the sub-widget
- extended the LinkCatcherWidget to pass keyboard modifier status to actions
- extended the RadioWidget to support actions
- extended the RangeWidget to support actions
- added autocomplete attribute to the EditTextWidget and EditWidget
- fixed incorrect behaviour of default values with lookup Operator
- fixed has Operator when used with the tags field
- fixed crash when using edition Operator in the browser
- fixed class attribute of DroppableWidget
Filter Improvements
New capabilities:
- added support for multiple operands for filter operators
New filter run prefixes:
- added support for named filter run prefixes
- added new :filter filter run prefix which is analagous to the new filter Operator but applies to a filter run
- added new :intersection filter run prefix to get the intersection of two filter runs
- added new :reduce filter run prefix
New operators:
- added new filter and reduce operators for processing lists of items
- added new power Operator and log Operator
- added new draft Operator to check if a tiddler is a draft of another tiddler
- added new search-replace Operator to search and replace in strings
- added new enlist-input Operator to parse its input titles as a title lists
- added new slugify Operator and duplicateslugs Operator for generating human readable filenames/URLs
- added new sortsub Operator for sorting by a user defined subfilter
- added new format Operator for formatting dates
- added new reduce Operator to apply a subfilter to each input title in turn, accumulating a single value
- added new filter Operator to apply a subfilter to each input title and return the titles that return a non-empty result from the subfilter
- added new toggle Operator to toggle a title in a list
- added new cycle Operator
- added new pad Operator
Other improvements:
- extended the trim Operator to optionally trim a given string instead of whitespace, and trim from front, back, or both sides of input tiddlers
- extended jsonstringify Operator and stringify Operator to support "rawunicode" suffix
Tiddler File Naming Improvements
extended the mechanism for Customising Tiddler File Naming to:
- Save drafts to a special folder for each user
- Allow filters in $:/config/FileSystemPaths to change the path of a tiddler file on disk
- Allow filters in $:/config/FileSystemExtensions to change the extension of a tiddler file on disk
- added
th-make-tiddler-path
hook for low-level control of tiddler path construction - extended tiddlywiki.files Files specification with
isEditableFile
attribute allowing files to be saved back to their original location
Hackability Improvements
- added basic support for switching page templates
- extended the WidgetMessage: tm-scroll message to allow the target element to be specified by a CSS selector, making it possible to scroll to positions within a tiddler
- fixed modals to incorporate a NavigatorWidget so that links work as expected
- extended the Table-of-Contents Macros to support custom link targets
- added new Hyperdrive saver for use with Beaker Browser v1.0
- extended favicon mechanism to support _canonical_uri images
- added support for recording the startup timestamp in $:/info/startup-timestamp (see InfoMechanism)
- added support for SVG favicons
- extended
th-saving-tiddler
hook to include information about the draft tiddler (see https://tiddlywiki.com/dev/#Hook%3A%20th-saving-tiddler) - extended WidgetMessage: tm-rename-tiddler to control whether relinking occurs
- extended WidgetMessage: tm-import-tiddlers to override the title $:/Import and to better control whether the import tiddler is opened automatically
- extended the internal
<$element>
widget to add a hook so that plugins can intercept DOM node creation - added original event to
tm-navigate
event - extended the password prompt to enable it to be customised
- extended syncer to enable syncadaptors to customise the login prompt
- extended the tabs Macro to support
actions
andexplicitState
attributes - updated (and here) filters used for syncing on node.js and saving the single file version to exclude multiple story lists and history lists based on their prefix, as well as multiple tiddlers that might be used for the import process
- added post-render startup actions
- added support for username/password parameters for
tm-login
message - added support for the content type image/jpg (the correct type is image/jpeg but the misspelling is common so most browsers now support it)
- added support for an override saver
- added utility CSS classes to replace use of
to introduce visual separation - added option to configure the tag used for TableOfContents in the menubar
- modified the KeyboardWidget to not trap keys if there are no actions to be invoked
- added buttons to the Edit Template toolbar for the editor-height and the stamp tool for tiddlers of type application/javascript,application/json and application/x-tiddler-dictionary
- updated all instance of the tabs Macro in the core to use the explicitState attribute
- added support for the meta key as a modifier in actions
- added support for $:/info/darkmode to the InfoMechanism, reflecting the browser dark mode vs. light mode setting
- updated
story.js
to remove dependency onwiki.js
for story start up and navigator
Plugin Improvements
JSZip Plugin
extended the JSZip Plugin with the ability to dynamically create Zip files, and thus to conveniently build multi-file static sites within the browser
Consent Banner Plugin
added the new Consent Banner Plugin plugin helps make websites that are compliant with "cookie legislation" such as the EU General Data Protection Regulation. It presents a banner inviting the user to accept or reject cookies, keeping track of their consent in local storage so that the banner can be hidden on subsequent visits.
By default, content embedded with <iframe>, <embed> and <object> is blocked unless the user consents to accept cookies.
Consent status is available via a configuration tiddler so that it is possible to construct content that behaves differently depending upon whether consent has been granted. As an example, a macro is provided for embedding YouTube videos that automatically uses the youtube-nocookie.com variant of video URLs unless the user has accepted cookies.
Please note that using this plugin does not guarantee compliance with any particular legislation. You will need to understand the technical issues specific to your situation, and if necessary seek legal advice.
Freelinks Plugin
- added (and here) support for ignoring case when matching titles
- fixed bug with autolinking within HTML
<a>
elements
Twitter Plugin
- added warning if wiki needs to be saved and reloaded
Dynaview Plugin
CodeMirror Plugin
- fixed issue with
e.toggleComment
being undefined with CodeMirror Sublime keymap - updated CodeMirror plugins to version 5.58.3
Markdown Plugin
- fixed encoding of Markdown image files
- fixed issue with whitespace and linebreaks
- added tc-tiddlylink-external class to external links
- fixed to add
rel="noopener noreferrer"
to external links - updated to use palette colours
Amazon Web Services Plugin
- added a new aws-encodeuricomponent filter that also encodes single quotes
BibTeX Plugin
- updated to a later fork of the underlying third party BibTeX parsing library
Menubar Plugin
- updated so the top margin of the side bar adjusts to the height of the menu
Dynannotate Plugin
- added examples of usage in the View Template
External Attachments Plugin
- fixed a bug with relative paths in the External Attachments Plugin
Highlight Plugin
- updated to use palette colours
Translation Plugins
- added new Arabic (Palestine) translation
- updated Catalan translation
- updated (and here) Chinese translation
- updated Dutch translation
- updated French translation
- updated German translation
Other Bug Fixes
- fixed parsing of dates from 0 to 100CE
- fixed handling of negative dates (see Date Fields and DateFormat)
- fixed "409 conflict" errors with the GitHub saver when saving within 60 seconds of the last save
- fixed behaviour of system tiddler syncing with the client server configuration. By default, changes to system tiddlers are not synced from the server to the client, restoring the behaviour from v5.1.21 and earlier. Bidirectional syncing of system tiddlers can be enabled with the configuration tiddler $:/config/SyncSystemTiddlersFromServer
- fixed hover effect for search dropdown items
- fixed restored missing parameter to
saveTiddler()
method of syncadaptors - fixed MakeLibraryCommand to skip non-directories
- fixed erroneous use of
$tw.wiki
- fixed high CPU usage with animated syncing icon introduced in v5.1.22
- fixed $:/config/NewJournal/Tags appearing in tag dropdowns
- fixed popups not being cancelled when clicking within a text editor
- fixed issue with timeline Macro and invalid date values
- fixed hover colours of tag dropdowns in the sidebar
- fixed alignment of tag pill icons
- fixed crash with droppable widget
- fixed issue with adding tags in $:/Manager
- fixed edit template "type" dropdown positioning
- fixed edit template field dropdown positioning
- fixed (with addendum) syntax error in ScrollableWidget
- fixed problem with headers not being treated case insensitively
- fixed problem with
Content-Type
HTTP header sent asContent-type
- fixed EntityWidget not refreshing correctly
- fixed Markdown Plugin to honour alignment directives
- fixed syncing issues with external JS template
- fixed incorrect base64 encoding of astral plane Unicode text
- fixed server error when saving a new tiddler created by following a tiddler link
- added a
plugin-priority
field to the TiddlyWeb plugin so that language plugins can override its language strings - fixed bug whereby joining an empty list would not return an empty list
- fixed bug exporting tiddlers with double quoted titles
- fixed bug with syncing plugin tiddlers
- fixed bug with the position of the tiddler title when there is no icon in use
- fixed unwanted autosave in the upgrade wizard
- fixed problem whereby
$:/temp
tiddlers were being saved in single file wikis - fixed a bug with the
sortan
filter operator when used with date fields - fixed a bug for location hashes that contain a
#
character - fixed default branch to main for saving to GitHub
- fixed shadow tiddlers not refreshing when their plugin is deleted or modified
- fixed
tc-dirty
class not appearing on external windows - fixed
static.tiddler.html
template to make rendered tiddlers full-width
Contributors
@Jermolene would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: