diff --git a/core/ui/EditTemplate/Preview/output.tid b/core/ui/EditTemplate/Preview/output.tid
index 4e5bf0e33..5c53d8c22 100644
--- a/core/ui/EditTemplate/Preview/output.tid
+++ b/core/ui/EditTemplate/Preview/output.tid
@@ -2,7 +2,7 @@ title: $:/core/ui/EditTemplate/body/preview/output
tags: $:/tags/EditPreview
caption: {{$:/language/EditTemplate/Body/Preview/Type/Output}}
-\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]] [all[shadows+tiddlers]tag[$:/tags/Macro/View/Body]!has[draft.of]]
+\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Macro/View/Body]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global/View]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global/View/Body]!is[draft]]
<$set name="tv-tiddler-preview" value="yes">
<$transclude tiddler={{{ [
] :cascade[all[shadows+tiddlers]tag[$:/tags/ViewTemplateBodyFilter]!is[draft]get[text]] :and[!is[blank]else[$:/core/ui/ViewTemplate/body/default]] }}} />
diff --git a/core/ui/PageStylesheet.tid b/core/ui/PageStylesheet.tid
index f7df349e9..0b32df5f8 100644
--- a/core/ui/PageStylesheet.tid
+++ b/core/ui/PageStylesheet.tid
@@ -1,6 +1,6 @@
title: $:/core/ui/PageStylesheet
-\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
+\import [subfilter{$:/core/config/GlobalImportFilter}]
\whitespace trim
<$set name="currentTiddler" value={{$:/language}}>
diff --git a/core/ui/PageTemplate.tid b/core/ui/PageTemplate.tid
index 892e1b166..f0ab4852a 100644
--- a/core/ui/PageTemplate.tid
+++ b/core/ui/PageTemplate.tid
@@ -4,7 +4,7 @@ description: {{$:/language/PageTemplate/Description}}
icon: $:/core/images/layout-button
\whitespace trim
-\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
+\import [subfilter{$:/core/config/GlobalImportFilter}]
<$vars
tv-config-toolbar-icons={{$:/config/Toolbar/Icons}}
diff --git a/core/ui/StoryTiddlerTemplate.tid b/core/ui/StoryTiddlerTemplate.tid
index 7379f00b1..7cc26a849 100644
--- a/core/ui/StoryTiddlerTemplate.tid
+++ b/core/ui/StoryTiddlerTemplate.tid
@@ -1,3 +1,3 @@
title: $:/core/ui/StoryTiddlerTemplate
-<$transclude tiddler={{{ [] :cascade[all[shadows+tiddlers]tag[$:/tags/StoryTiddlerTemplateFilter]!is[draft]get[text]] :and[!is[blank]else{$:/config/ui/ViewTemplate}] }}} />
+<$transclude tiddler={{{ [] :cascade[all[shadows+tiddlers]tag[$:/tags/StoryTiddlerTemplateFilter]!is[draft]get[text]] :and[has[title]else[$:/core/ui/ViewTemplate]] }}} />
diff --git a/core/ui/ViewTemplate.tid b/core/ui/ViewTemplate.tid
index f0aba9c97..dcba5c953 100644
--- a/core/ui/ViewTemplate.tid
+++ b/core/ui/ViewTemplate.tid
@@ -5,10 +5,10 @@ title: $:/core/ui/ViewTemplate
$:/state/folded/$(currentTiddler)$
\end
\define cancel-delete-tiddler-actions(message) <$action-sendmessage $message="tm-$message$-tiddler"/>
-\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]
+\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global/View]!is[draft]]
<$vars storyTiddler=<> tiddlerInfoState=<>>
> data-tags={{!!tags}} class={{{ [all[shadows+tiddlers]tag[$:/tags/ClassFilters/TiddlerTemplate]!is[draft]] :map:flat[subfilter{!!text}] tc-tiddler-frame tc-tiddler-view-frame [is[tiddler]then[tc-tiddler-exists]] [is[missing]!is[shadow]then[tc-tiddler-missing]] [is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [is[system]then[tc-tiddler-system]] [{!!class}] [tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}} role="article">
-<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!has[draft.of]]" variable="listItem">
+<$list filter="[all[shadows+tiddlers]tag[$:/tags/ViewTemplate]!is[draft]]" variable="listItem">
<$transclude tiddler=<>/>
$list>
diff --git a/core/ui/ViewTemplate/body.tid b/core/ui/ViewTemplate/body.tid
index 86d83bf30..34e6aaa38 100644
--- a/core/ui/ViewTemplate/body.tid
+++ b/core/ui/ViewTemplate/body.tid
@@ -1,7 +1,7 @@
title: $:/core/ui/ViewTemplate/body
tags: $:/tags/ViewTemplate
-\import [all[shadows+tiddlers]tag[$:/tags/Macro/View/Body]!has[draft.of]]
+\import [all[shadows+tiddlers]tag[$:/tags/Macro/View/Body]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global/View/Body]!is[draft]]
<$reveal tag="div" class="tc-tiddler-body" type="nomatch" stateTitle=<> text="hide" retain="yes" animate="yes">
diff --git a/core/wiki/config/GlobalImportFilter.tid b/core/wiki/config/GlobalImportFilter.tid
new file mode 100644
index 000000000..4d07e3f37
--- /dev/null
+++ b/core/wiki/config/GlobalImportFilter.tid
@@ -0,0 +1,2 @@
+title: $:/core/config/GlobalImportFilter
+text: [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global]!is[draft]]
diff --git a/editions/dev/tiddlers/new/dragndropinterop.html b/editions/dev/tiddlers/new/dragndropinterop.html
index ecd7aba12..ecadca603 100644
--- a/editions/dev/tiddlers/new/dragndropinterop.html
+++ b/editions/dev/tiddlers/new/dragndropinterop.html
@@ -15,6 +15,10 @@
Drag me to a TiddlyWiki window
+
+
\ No newline at end of file
diff --git a/editions/dynaviewdemo/tiddlers/ViewTemplate.tid b/editions/dynaviewdemo/tiddlers/ViewTemplate.tid
index cbf6eca2a..91bcfae86 100644
--- a/editions/dynaviewdemo/tiddlers/ViewTemplate.tid
+++ b/editions/dynaviewdemo/tiddlers/ViewTemplate.tid
@@ -5,7 +5,7 @@ title: $:/core/ui/ViewTemplate
$:/state/folded/$(currentTiddler)$
\end
\define cancel-delete-tiddler-actions(message) <$action-sendmessage $message="tm-$message$-tiddler"/>
-\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!has[draft.of]]
+\import [all[shadows+tiddlers]tag[$:/tags/Macro/View]!is[draft]] [all[shadows+tiddlers]tag[$:/tags/Global/View]!is[draft]]
<$vars storyTiddler=<> tiddlerInfoState=<>>
> data-tags={{!!tags}} class={{{ tc-tiddler-frame tc-tiddler-view-frame [
is[tiddler]then[tc-tiddler-exists]] [is[missing]!is[shadow]then[tc-tiddler-missing]] [is[shadow]then[tc-tiddler-exists tc-tiddler-shadow]] [is[shadow]is[tiddler]then[tc-tiddler-overridden-shadow]] [is[system]then[tc-tiddler-system]] [{!!class}] [tags[]encodeuricomponent[]addprefix[tc-tagged-]] +[join[ ]] }}}>
<$set name="state" value={{{ [[$:/state/viewtemplate/visibility/]addsuffix] }}}>
diff --git a/editions/fr-FR/tiddlers/ReadMe.tid b/editions/fr-FR/tiddlers/ReadMe.tid
index b02b564cb..aedcfd423 100644
--- a/editions/fr-FR/tiddlers/ReadMe.tid
+++ b/editions/fr-FR/tiddlers/ReadMe.tid
@@ -5,7 +5,7 @@ type: text/vnd.tiddlywiki
\define tv-wikilink-template() https://tiddlywiki.com/static/$uri_doubleencoded$.html
-<$importvariables filter="[[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]">
+<$importvariables filter={{$:/core/config/GlobalImportFilter}}>
Bienvenue sur <>, un carnet de notes personnel web et non-linéaire que tout le monde peut utiliser et conserver, sans dépendre d'une quelconque entreprise.
diff --git a/editions/prerelease/tiddlers/Release 5.3.0.tid b/editions/prerelease/tiddlers/Release 5.3.0.tid
index 63a57cd4d..4c9e9b916 100644
--- a/editions/prerelease/tiddlers/Release 5.3.0.tid
+++ b/editions/prerelease/tiddlers/Release 5.3.0.tid
@@ -1,19 +1,19 @@
caption: 5.3.0
-created: 20230419103154368
-modified: 20230419103154368
+created: 20230506164543446
+modified: 20230506164543446
tags: ReleaseNotes
title: Release 5.3.0
type: text/vnd.tiddlywiki
-//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/master...parameterised-transclusions]]//
+//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.2.7...master]]//
-! About v5.3.0
+! Overview of v5.3.0
-This pre-release introduces a number of significant improvements and new features related to some of TiddlyWiki's most fundamental components: macros, widgets, operators and transclusion.
+This release introduces a number of significant improvements and new features related to some of TiddlyWiki's most fundamental components: macros, widgets, operators and transclusion. v5.3.0 also contains several other bug fixes and improvements.
-! Introduction to v5.3.0
+! Introduction to Parameterised Transclusion, Procedures, Functions and Custom Widgets
-The motivation of these changes is to fix one of ~TiddlyWiki 5's early design flaws: the reliance on macros using textual substitution as the primary way to modularise and reuse wikitext and filters.
+<<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6666">> The motivation of these changes is to fix one of ~TiddlyWiki 5's early design flaws: the reliance on macros using textual substitution as the primary way to modularise and reuse wikitext and filters.
Experience has shown that while macros are a good match for a small number of tasks, they are brittle and error prone for many common operations. See [[Macro Pitfalls]] for a discussion of the problems that accompany this approach. Over the years we have introduced mitigations for the worst problems but these have come at a cost of increased complexity.
@@ -32,7 +32,8 @@ The new transclusion architecture is not by itself sufficient to enable us to fu
! Plugin Improvements
-*
+* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/7260">> Dynannotate pugin to support three additional search modes
+* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7365">> problem with [[BrowserStorage Plugin]] unnecessarily saving shadow tiddlers
! Translation improvement
@@ -54,30 +55,52 @@ Improvements to the following translations:
! Filter improvements
-*
+* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/7292">> [[format Operator]] to support converting Unix timestamps to TiddlyWiki's native date format
! Hackability Improvements
-*
+* <<.link-badge-extended "https://github.com/Jermolene/TiddlyWiki5/pull/7413">> [[Core Icons]] to allow the size to be controlled with a parameter
+** <<.warning """This change can cause problems with non-standard usage of the core icons where the text is directly rendered instead of being transcluded""">>
+* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7182">> new [[thisTiddler Variable]] that refers to the tiddler currently being rendered
+* <<.link-badge-improved "https://github.com/Jermolene/TiddlyWiki5/pull/7332">> [[Story Tiddler Template Cascade]] handling to fall back to the default template if the output of the cascade is not valid
+* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7378">> missing file extensions for "audio/mpeg" files
! Bug Fixes
-*
+* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7215">> importing tiddlers by pasting tiddler data
+* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7400">> unneeded 14px bottom border for textareas with autoheight enabled
+* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7380">> crashes when using an invalid CSS selector for [[WidgetMessage: tm-focus-selector]] and [[WidgetMessage: tm-scroll]]
+* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7401">> bug whereby scrolling occurs if the linkcatcher widget triggers an action-navigate and the $scroll attribute is set to "no"
+* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/7409">> problem switching between LTR and RTL text
! Developer Improvements
-*
+* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/6699">> support for a `destroy()` method for widgets, giving them a chance to dispose of any resources
! Node.js Improvements
-*
+* <<.link-badge-added "https://github.com/Jermolene/TiddlyWiki5/pull/7253">> support for `filepath` source attribute to [[tiddlywiki.files Files]]
! Performance Improvements
-*
+* <<.link-badge-fixed "https://github.com/Jermolene/TiddlyWiki5/pull/4624">> module execution to reuse the same sandbox, saving memory and improving performance
+
! Acknowledgements
[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki:
<<.contributors """
+Arlen22
+btheado
+donmor
+flibbles
+GameDungeon
+kookma
+linonetwo
+Marxsal
+michsa
+muzimuzhi
+pmario
+saqimtiaz
+yaisog
""">>
diff --git a/editions/server-external-js/tiddlers/config/$__DefaultTiddlers.tid b/editions/server-external-js/tiddlers/config/$__DefaultTiddlers.tid
new file mode 100644
index 000000000..a1f1a0a27
--- /dev/null
+++ b/editions/server-external-js/tiddlers/config/$__DefaultTiddlers.tid
@@ -0,0 +1,7 @@
+created: 20230314153132081
+modified: 20230314153243008
+title: $:/DefaultTiddlers
+type: text/vnd.tiddlywiki
+
+GettingStarted
+[[Using the external JavaScript template]]
diff --git a/editions/server-external-js/tiddlers/config/$__config_SaveWikiButton_Filename.tid b/editions/server-external-js/tiddlers/config/$__config_SaveWikiButton_Filename.tid
new file mode 100644
index 000000000..071c85fe9
--- /dev/null
+++ b/editions/server-external-js/tiddlers/config/$__config_SaveWikiButton_Filename.tid
@@ -0,0 +1,4 @@
+title: $:/config/SaveWikiButton/Filename
+type: text/vnd.tiddlywiki
+
+external-<>.html
\ No newline at end of file
diff --git a/editions/server-external-js/tiddlers/external/tiddlywiki.files b/editions/server-external-js/tiddlers/external/tiddlywiki.files
new file mode 100644
index 000000000..73474d2ce
--- /dev/null
+++ b/editions/server-external-js/tiddlers/external/tiddlywiki.files
@@ -0,0 +1,8 @@
+{
+ "tiddlers": [
+ {
+ "file": "../../../tw5.com/tiddlers/webserver/Using the external JavaScript template.tid",
+ "isTiddlerFile": true
+ }
+ ]
+}
\ No newline at end of file
diff --git a/editions/server-external-js/tiddlywiki.info b/editions/server-external-js/tiddlywiki.info
index b8d4c37ee..cb02accd5 100644
--- a/editions/server-external-js/tiddlywiki.info
+++ b/editions/server-external-js/tiddlywiki.info
@@ -2,8 +2,7 @@
"description": "Client-server edition with external tiddlywiki.js",
"plugins": [
"tiddlywiki/tiddlyweb",
- "tiddlywiki/filesystem",
- "tiddlywiki/highlight"
+ "tiddlywiki/filesystem"
],
"themes": [
"tiddlywiki/vanilla",
@@ -13,7 +12,7 @@
"listen": [
"--listen","root-tiddler=$:/core/save/all-external-js","use-browser-cache=yes"],
"index": [
- "--render","$:/core/save/offline-external-js","index.html","text/plain",
+ "--render","$:/core/save/offline-external-js","[[external-]addsuffixaddsuffix[.html]]","text/plain",
"--render","$:/core/templates/tiddlywiki5.js","[[tiddlywikicore-]addsuffixaddsuffix[.js]]","text/plain"],
"static": [
"--render","$:/core/templates/static.template.html","static.html","text/plain",
diff --git a/editions/test/tiddlers/tests/data/this-tiddler/Simple.tid b/editions/test/tiddlers/tests/data/this-tiddler/Simple.tid
new file mode 100644
index 000000000..4aad83c98
--- /dev/null
+++ b/editions/test/tiddlers/tests/data/this-tiddler/Simple.tid
@@ -0,0 +1,29 @@
+title: ThisTiddler/Simple
+description: Simple usage of thisTiddler variable
+type: text/vnd.tiddlywiki-multiple
+tags: [[$:/tags/wiki-test-spec]]
+
+title: Output
+
+\whitespace trim
+\import Macro
+\define print-this-tiddler()
+<$text text=<>/>
+\end
+
+(<$text text=<>/>)
+
+(<>)
+
+(<>)
+
++
+title: Macro
+
+\define imported-print-this-tiddler()
+<$text text=<>/>
+\end
++
+title: ExpectedResult
+
+(Output)
(Output)
(Output)
\ No newline at end of file
diff --git a/editions/test/tiddlers/tests/test-filters.js b/editions/test/tiddlers/tests/test-filters.js
index e00d0bf8d..49a790166 100644
--- a/editions/test/tiddlers/tests/test-filters.js
+++ b/editions/test/tiddlers/tests/test-filters.js
@@ -1060,6 +1060,9 @@ Tests the filtering mechanism.
expect(wiki.filterTiddlers("[[Hello There]] [[GettingStarted]] +[format:titlelist[]]").join(" ")).toBe("[[Hello There]] GettingStarted");
expect(wiki.filterTiddlers("[title[Hello There]] +[format:titlelist[]]").join(" ")).toBe("[[Hello There]]");
expect(wiki.filterTiddlers("[title[HelloThere]] +[format:titlelist[]]").join(" ")).toBe("HelloThere");
+ expect(wiki.filterTiddlers("0 +[format:timestamp[]]").join(",")).toBe("19700101000000000");
+ expect(wiki.filterTiddlers("1603188514443 +[format:timestamp[]]").join(",")).toBe("20201020100834443");
+ expect(wiki.filterTiddlers("void +[format:timestamp[]]").join(",")).toBe("");
});
it("should handle the deserializers operator", function() {
diff --git a/editions/tw5.com/tiddlers/customising/Customising TiddlyWiki's user interface.tid b/editions/tw5.com/tiddlers/customising/Customising TiddlyWiki's user interface.tid
index 78990f453..bf3357fae 100644
--- a/editions/tw5.com/tiddlers/customising/Customising TiddlyWiki's user interface.tid
+++ b/editions/tw5.com/tiddlers/customising/Customising TiddlyWiki's user interface.tid
@@ -45,7 +45,7 @@ Special tags assign special behaviour or appearance to all of the tiddlers to wh
For example:
-* $:/tags/Macro causes the macros defined in a tiddler to be available globally
+* $:/tags/Global causes the definitions in a tiddler to be available globally
* $:/tags/Stylesheet causes the tiddler to be interpreted as a CSS stylesheet
* $:/tags/SideBar causes the tiddler to be displayed as a sidebar tab
diff --git a/editions/tw5.com/tiddlers/demonstrations/ImageGallery Example.tid b/editions/tw5.com/tiddlers/demonstrations/ImageGallery Example.tid
index c9df4ac0b..e702b16b7 100644
--- a/editions/tw5.com/tiddlers/demonstrations/ImageGallery Example.tid
+++ b/editions/tw5.com/tiddlers/demonstrations/ImageGallery Example.tid
@@ -1,6 +1,5 @@
created: 20140809113603449
modified: 20211022195248529
-tags: Learning
title: ImageGallery Example
type: text/vnd.tiddlywiki
diff --git a/editions/tw5.com/tiddlers/features/Core Icons.tid b/editions/tw5.com/tiddlers/features/Core Icons.tid
new file mode 100644
index 000000000..9799f48d7
--- /dev/null
+++ b/editions/tw5.com/tiddlers/features/Core Icons.tid
@@ -0,0 +1,41 @@
+title: Core Icons
+tags: Features
+modified: 20230423103154329
+created: 20230423103154329
+
+
+!! Introduction
+
+TiddlyWiki includes over 100 custom vector icons. They feature in the user interface and are also available for authors to use in their own applications. See [[Icon Gallery]] for a complete listing.
+
+!! Usage
+
+The core icons are used by transcluding them. For example:
+
+<>
+
+The core icons are parameterised. The first parameter `size` specified the size at which the icon should be rendered:
+
+<
+""">>
+
+Here is an example of dynamically resizing icons:
+
+<
+<$text text={{{ [addsuffix[px]] }}} />
+<$transclude $tiddler="$:/core/icon" size=<>/>
+$list>
+""">>
+
+Some icons take further parameters to customise how they are rendered. For example, the $:/core/images/new-journal-button icon takes an additional parameter `day` that specifies the day of the month that should be shown on the calendar. It defaults to the current date if not specified
+
+<
+""">>
+
+The core icons are implemented as embedded [[SVG elements|Using SVG]], and not as full-blown SVG images. This means that they can be styled using CSS. For example, the CSS property `fill` can be used to change the colour of the icons. For example:
+
+<{{$:/core/images/opacity}}
+""">>
diff --git a/editions/tw5.com/tiddlers/features/StartupActions.tid b/editions/tw5.com/tiddlers/features/StartupActions.tid
index 29edb8378..596b92564 100644
--- a/editions/tw5.com/tiddlers/features/StartupActions.tid
+++ b/editions/tw5.com/tiddlers/features/StartupActions.tid
@@ -36,7 +36,7 @@ The initial startup actions are useful for customising TiddlyWiki according to e
Note that global macros are not available within initial startup action tiddlers by default. If you need to access them then you'll need to explicitly include them with an [[Pragma: \import]] at the top of the tiddler:
```
-\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
+\import [subfilter{$:/core/config/GlobalImportFilter}]
```
!! Post-Render Startup Actions
diff --git a/editions/tw5.com/tiddlers/filters/examples/format Operator (Examples).tid b/editions/tw5.com/tiddlers/filters/examples/format Operator (Examples).tid
index c1d79ea8c..b6ad505a1 100644
--- a/editions/tw5.com/tiddlers/filters/examples/format Operator (Examples).tid
+++ b/editions/tw5.com/tiddlers/filters/examples/format Operator (Examples).tid
@@ -1,5 +1,5 @@
created: 20201020102735123
-modified: 20220611104737314
+modified: 20230226135641976
tags: [[Operator Examples]] [[format Operator]]
title: format Operator (Examples)
type: text/vnd.tiddlywiki
@@ -15,20 +15,23 @@ Created date with a format string supplied as operator parameter:
Modified date shown as a relative date:
<<.operator-example 3 "[[HelloThere]get[modified]format:relativedate[]]">>
+Get the date and time exactly 24 hours (86,400,000 milliseconds) from now:
+<<.operator-example 4 "[format:date[TIMESTAMP]add[86400000]format:timestamp[DDth mmm YYYY 0hh:0mm:0ss]]">>
+
A tiddler title with spaces formatted as a title list:
-<<.operator-example 4 """[[Hello There]format:titlelist[]]""">>
+<<.operator-example 5 """[[Hello There]format:titlelist[]]""">>
All tiddler titles tagged with <> formatted as a title list:
-<<.operator-example 5 """[tag[TableOfContents]format:titlelist[]]""">>
+<<.operator-example 6 """[tag[TableOfContents]format:titlelist[]]""">>
A JSON string formatted as JSON – note how the JSON string is normalised to remove the duplicated properties:
-<<.operator-example 6 """[[{"one":"first","one":"another","two":"second"}]format:json[]]""">>
+<<.operator-example 7 """[[{"one":"first","one":"another","two":"second"}]format:json[]]""">>
<<.tip "To create a string to save a [[title list|Title List]] into a list field, use `format:titlelist[]` with the [[join operator|join Operator]]">>
-<<.operator-example 6 """[tag[TableOfContents]format:titlelist[]join[ ]]""">>
+<<.operator-example 8 """[tag[TableOfContents]format:titlelist[]join[ ]]""">>
For example, to save titles tagged `TableOfContents` to the titles field of the tiddler [[format titlelist test]]:
<$macrocall $name='wikitext-example-without-html'
-src='<$button> test
+src='<$button>Try it
<$action-setfield $tiddler="format titlelist test" titles={{{ [tag[TableOfContents]format:titlelist[]join[ ]] }}}/>
$button>'/>
diff --git a/editions/tw5.com/tiddlers/filters/format.tid b/editions/tw5.com/tiddlers/filters/format.tid
index e5b12b134..d62a82169 100644
--- a/editions/tw5.com/tiddlers/filters/format.tid
+++ b/editions/tw5.com/tiddlers/filters/format.tid
@@ -20,8 +20,11 @@ The suffix <<.place B>> is one of the following supported string formats:
|^`date` |The input string is interpreted as a UTC date and displayed according to the DateFormat specified in the optional operator operand. (Defaults to "YYYY MM DD 0hh:0mm") |
|^`json` |<<.from-version "5.2.4">> The input string is interpreted as JSON and displayed with standard formatting. The optional operator operand specifies the number of spaces to use for indenting, or a string to use for indenting. Nothing is returned if the input string is not valid JSON |
|^`relativedate` |The input string is interpreted as a UTC date and displayed as the interval from the present instant. Any operator parameters are ignored |
+|^`timestamp` |<<.from-version "5.3.0">> The input string is interpreted as number of milliseconds since the [[ECMAScript epoch|https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#the_ecmascript_epoch_and_timestamps]], 1 January 1970, and displayed according to the DateFormat specified in the optional operator operand. (Defaults to "[UTC]YYYY0MM0DD0hh0mm0ss0XXX") |
|^`titlelist` |<<.from-version "5.2.0">> The input string wrapped in double square brackets if it contains a space. Appropriate for use in a [[title list|Title List]]. |
+Invalid input strings are dropped by the <<.op format>> operator.
+
<<.warning """The [[Title List]] format cannot reliably represent items that contain certain specific character sequences such as `]] `. Thus it should not be used where there is a possibility of such sequences occurring.""">>
<<.operator-examples "format">>
diff --git a/editions/tw5.com/tiddlers/howtos/How to create keyboard shortcuts.tid b/editions/tw5.com/tiddlers/howtos/How to create keyboard shortcuts.tid
index 16243cd54..a149b7539 100644
--- a/editions/tw5.com/tiddlers/howtos/How to create keyboard shortcuts.tid
+++ b/editions/tw5.com/tiddlers/howtos/How to create keyboard shortcuts.tid
@@ -77,11 +77,11 @@ In the [[Keyboard Shortcuts Tab|$:/core/ui/ControlPanel/KeyboardShortcuts]] the
> If the tiddler has the tag <>, the field ''key'' with the [[Keyboard Shortcut Descriptor]] as its value and some actions in its text field, the actions will be triggered when the mechanism detects the configured key-combination
-<$macrocall $name=".tip" _="""''Macros'' defined ''outside'' a global keyboard-shortcut (through a tiddler tagged `$:/tags/Macro`) need to be ''imported'' in order to be accessible.
+<$macrocall $name=".tip" _="""''Macros'' defined ''outside'' a global keyboard-shortcut (through a tiddler tagged `$:/tags/Global`) need to be ''imported'' in order to be accessible.
The [[import pragma|Pragma]] can be used for that"""/>
-\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]]
+\import [subfilter{$:/core/config/GlobalImportFilter}]
If the tiddler that contains the macro definition is known and - for example - titled `my-macro-tiddler`
diff --git a/editions/tw5.com/tiddlers/images/Icon Gallery.tid b/editions/tw5.com/tiddlers/images/Icon Gallery.tid
index 9985cbc0f..acd710a05 100644
--- a/editions/tw5.com/tiddlers/images/Icon Gallery.tid
+++ b/editions/tw5.com/tiddlers/images/Icon Gallery.tid
@@ -1,6 +1,6 @@
created: 20211013132515594
modified: 20211018102307833
-tags: Learning
+tags: Learning [[Core Icons]]
title: Icon Gallery
type: text/vnd.tiddlywiki
diff --git a/editions/tw5.com/tiddlers/images/Reddit Logo.tid b/editions/tw5.com/tiddlers/images/Reddit Logo.tid
index 76bb6bf7c..f4153ebb0 100644
--- a/editions/tw5.com/tiddlers/images/Reddit Logo.tid
+++ b/editions/tw5.com/tiddlers/images/Reddit Logo.tid
@@ -1,6 +1,7 @@
title: Reddit Logo
-