tiddlywiki 5.2.1 → 5.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.eslintignore +5 -12
- package/.eslintrc.yml +17 -1
- package/.github/workflows/ci.yml +3 -0
- package/bin/build-site.sh +1 -1
- package/bin/build-tw-org.sh +97 -0
- package/boot/boot.js +44 -17
- package/boot/bootprefix.js +1 -0
- package/contributing.md +1 -1
- package/core/copyright.tid +1 -1
- package/core/language/en-GB/ControlPanel.multids +3 -1
- package/core/language/en-GB/Fields.multids +4 -3
- package/core/language/en-GB/Misc.multids +1 -1
- package/core/modules/commands/init.js +1 -1
- package/core/modules/commands/savelibrarytiddlers.js +1 -1
- package/core/modules/commands/savewikifolder.js +1 -1
- package/core/modules/deserializers.js +7 -10
- package/core/modules/editor/operations/text/wrap-lines.js +5 -3
- package/core/modules/filters/crypto.js +27 -0
- package/core/modules/filters/insertbefore.js +1 -1
- package/core/modules/filters/is/draft.js +2 -2
- package/core/modules/filters/listops.js +2 -1
- package/core/modules/filters/lookup.js +29 -6
- package/core/modules/filters/prefix.js +30 -12
- package/core/modules/filters/removeprefix.js +16 -6
- package/core/modules/filters/removesuffix.js +20 -6
- package/core/modules/filters/search.js +1 -0
- package/core/modules/filters/suffix.js +32 -10
- package/core/modules/filters/untagged.js +1 -1
- package/core/modules/filters.js +4 -2
- package/core/modules/parsers/parseutils.js +2 -2
- package/core/modules/pluginswitcher.js +1 -1
- package/core/modules/savers/gitea.js +2 -2
- package/core/modules/savers/github.js +2 -2
- package/core/modules/savers/gitlab.js +2 -2
- package/core/modules/server/routes/put-tiddler.js +1 -1
- package/core/modules/server/server.js +37 -12
- package/core/modules/startup/browser-messaging.js +2 -2
- package/core/modules/startup/render.js +7 -2
- package/core/modules/startup/rootwidget.js +14 -0
- package/core/modules/startup/windows.js +22 -9
- package/core/modules/tiddler.js +3 -3
- package/core/modules/upgraders/plugins.js +1 -1
- package/core/modules/utils/crypto.js +2 -2
- package/core/modules/utils/dom/dragndrop.js +8 -6
- package/core/modules/utils/dom/scroller.js +11 -7
- package/core/modules/utils/edition-info.js +1 -5
- package/core/modules/utils/pluginmaker.js +2 -4
- package/core/modules/widgets/action-listops.js +2 -2
- package/core/modules/widgets/button.js +1 -1
- package/core/modules/widgets/draggable.js +16 -9
- package/core/modules/widgets/eventcatcher.js +34 -30
- package/core/modules/widgets/image.js +10 -0
- package/core/modules/widgets/importvariables.js +1 -1
- package/core/modules/widgets/list.js +3 -0
- package/core/modules/widgets/navigator.js +2 -17
- package/core/modules/widgets/radio.js +2 -2
- package/core/modules/widgets/scrollable.js +11 -9
- package/core/modules/widgets/widget.js +30 -14
- package/core/modules/wiki-bulkops.js +20 -15
- package/core/modules/wiki.js +39 -17
- package/core/templates/tiddlywiki5.html.tid +1 -1
- package/core/ui/ControlPanel/Cascades/FieldEditor.tid +9 -0
- package/core/ui/EditTemplate/body/default.tid +2 -2
- package/core/ui/EditTemplate/fieldEditor-default.tid +3 -0
- package/core/ui/EditTemplate/fields.tid +6 -4
- package/core/ui/EditTemplate/type.tid +1 -1
- package/core/ui/EditTemplate.tid +2 -2
- package/core/ui/MoreSideBar/plugins/Languages.tid +1 -1
- package/core/ui/MoreSideBar/plugins/Plugins.tid +1 -1
- package/core/ui/MoreSideBar/plugins/Theme.tid +1 -1
- package/core/ui/SideBar/Open.tid +2 -2
- package/core/wiki/allfields.tid +1 -1
- package/core/wiki/config/FieldEditorFilters.multids +4 -0
- package/core/wiki/config/OfficialPluginLibrary.tid +1 -1
- package/core/wiki/config/ViewTemplateBodyFilters.multids +2 -1
- package/core/wiki/macros/list.tid +2 -2
- package/core/wiki/tags/ViewTemplateBodyFilter.tid +1 -1
- package/editions/dev/tiddlers/from Heigele and Jurke/Syncadaptor.tid +2 -2
- package/editions/dynaviewdemo/tiddlers/SideBar-Open.tid +1 -1
- package/editions/fr-FR/output/images/Blurry%20Lawn.jpg +0 -0
- package/editions/fr-FR/output/images/Newnham%20Horizon.jpg +0 -0
- package/editions/fr-FR/output/index.html +5051 -0
- package/editions/fr-FR/output/text/Alice%20in%20Wonderland.tid +3709 -0
- package/editions/fr-FR/tiddlers/$ _config_ViewTemplateTitleFilters_fr-default.tid +7 -0
- package/editions/fr-FR/tiddlers/$ _core_ui_ViewTemplate_title_fr-default.tid +8 -0
- package/editions/fr-FR/tiddlers/$__deprecated.tid +9 -0
- package/editions/fr-FR/tiddlers/$__editions_fr-FR_util-macros.tid +1 -0
- package/editions/fr-FR/tiddlers/$__editions_tw5.com_doc-macros.tid +69 -5
- package/editions/fr-FR/tiddlers/$__editions_tw5.com_version-macros.tid +15 -0
- package/editions/fr-FR/tiddlers/$__editions_tw5.com_wikitext-macros.tid +2 -2
- package/editions/fr-FR/tiddlers/Block_Quotes_in_WikiText.tid +15 -8
- package/editions/fr-FR/tiddlers/CamelCase.tid +6 -3
- package/editions/fr-FR/tiddlers/Code Blocks in WikiText.tid +27 -16
- package/editions/fr-FR/tiddlers/Community Links Aggregator.tid +11 -0
- package/editions/fr-FR/tiddlers/Community.tid +6 -4
- package/editions/fr-FR/tiddlers/Creating and editing tiddlers.tid +11 -11
- package/editions/fr-FR/tiddlers/Deprecated - What does it mean.tid +17 -0
- package/editions/fr-FR/tiddlers/Developers.tid +10 -5
- package/editions/fr-FR/tiddlers/Federatial.tid +11 -0
- package/editions/fr-FR/tiddlers/Formatting in WikiText.tid +12 -12
- package/editions/fr-FR/tiddlers/Forums.tid +27 -13
- package/editions/fr-FR/tiddlers/GettingStarted.tid +16 -14
- package/editions/fr-FR/tiddlers/Glossaire en-GB -_ fr-FR.tid +3 -1
- package/editions/fr-FR/tiddlers/HTML in WikiText.tid +77 -28
- package/editions/fr-FR/tiddlers/Headings in WikiText.tid +2 -2
- package/editions/fr-FR/tiddlers/HelloThere.tid +15 -12
- package/editions/fr-FR/tiddlers/How to export tiddlers.tid +31 -0
- package/editions/fr-FR/tiddlers/ImageWidget.tid +33 -0
- package/editions/fr-FR/tiddlers/Images in WikiText.tid +69 -0
- package/editions/fr-FR/tiddlers/Importing Tiddlers.tid +26 -0
- package/editions/fr-FR/tiddlers/JeremyRuston.tid +9 -9
- package/editions/fr-FR/tiddlers/Linking in WikiText.tid +108 -19
- package/editions/fr-FR/tiddlers/ListField.tid +6 -6
- package/editions/fr-FR/tiddlers/Macros in WikiText.tid +5 -5
- package/editions/fr-FR/tiddlers/Macros.tid +17 -8
- package/editions/fr-FR/tiddlers/PermaLinks.tid +19 -19
- package/editions/fr-FR/tiddlers/Philosophy of Tiddlers.tid +2 -2
- package/editions/fr-FR/tiddlers/Saving.tid +63 -4
- package/editions/fr-FR/tiddlers/Share Plugin.tid +15 -0
- package/editions/fr-FR/tiddlers/{Sharing_a_TiddlyWiki_on_Dropbox.tid → Sharing a TiddlyWiki on Dropbox.tid } +12 -4
- package/editions/fr-FR/tiddlers/Sharing your tiddlers with others.tid +18 -0
- package/editions/fr-FR/tiddlers/Structuring TiddlyWiki.tid +6 -6
- package/editions/fr-FR/tiddlers/Styles and Classes in WikiText.tid +11 -10
- package/editions/fr-FR/tiddlers/Tagging.tid +24 -18
- package/editions/fr-FR/tiddlers/TaskManagementExample.tid +3 -1
- package/editions/fr-FR/tiddlers/TiddlerLinks.tid +5 -5
- package/editions/fr-FR/tiddlers/TiddlyFox Apocalypse.tid +46 -0
- package/editions/fr-FR/tiddlers/TiddlyFox.tid +6 -3
- package/editions/fr-FR/tiddlers/TiddlyWiki.tid +6 -4
- package/editions/fr-FR/tiddlers/_TiddlyWiki for Scholars_ by Alberto Molina.tid +2 -2
- package/editions/prerelease/tiddlers/{Release 5.2.2.tid → Release 5.2.3.tid } +15 -11
- package/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +1 -1
- package/editions/prerelease/tiddlers/system/download-empty.tid +1 -0
- package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-horizontal-all.tid +33 -0
- package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-horizontal.tid +43 -0
- package/editions/test/tiddlers/tests/data/tabs-macro/expected-html-tabs-vertical.tid +43 -0
- package/editions/test/tiddlers/tests/test-action-widgets.js +55 -0
- package/editions/test/tiddlers/tests/test-filters.js +225 -64
- package/editions/test/tiddlers/tests/test-html-parser.js +15 -0
- package/editions/test/tiddlers/tests/test-prefixes-filter.js +5 -5
- package/editions/test/tiddlers/tests/test-tags.js +19 -0
- package/editions/test/tiddlers/tests/test-utils.js +10 -0
- package/editions/test/tiddlers/tests/test-wikitext-parser.js +14 -1
- package/editions/test/tiddlers/tests/test-wikitext-tabs-macro.js +86 -0
- package/editions/tw.org/tiddlers/$__DefaultTiddlers.tid +6 -0
- package/editions/tw.org/tiddlers/$__SiteSubtitle.tid +6 -0
- package/editions/tw.org/tiddlers/$__SiteTitle.tid +6 -0
- package/editions/tw.org/tiddlers/$__StoryList.tid +3 -0
- package/editions/tw.org/tiddlers/$__favicon.ico.png +0 -0
- package/editions/tw.org/tiddlers/$__favicon.ico.png.meta +4 -0
- package/editions/tw.org/tiddlers/$__palette.tid +6 -0
- package/editions/tw.org/tiddlers/$__palettes_BlueFlavour +165 -0
- package/editions/tw.org/tiddlers/$__palettes_BlueFlavour.meta +8 -0
- package/editions/tw.org/tiddlers/$__palettes_FlowingSun +165 -0
- package/editions/tw.org/tiddlers/$__palettes_FlowingSun.meta +8 -0
- package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_metrics_bodyfontsize.tid +6 -0
- package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_metrics_bodylineheight.tid +6 -0
- package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_metrics_sidebarwidth.tid +6 -0
- package/editions/tw.org/tiddlers/$__themes_tiddlywiki_vanilla_options_sidebarlayout.tid +6 -0
- package/editions/tw.org/tiddlers/HelloThere.tid +14 -0
- package/editions/tw.org/tiddlers/Table of Contents.tid +11 -0
- package/editions/tw.org/tiddlers/TiddlyWiki.tid +8 -0
- package/editions/tw.org/tiddlywiki.info +30 -0
- package/editions/tw5.com/tiddlers/community/Contributor License Agreement.tid +3 -3
- package/editions/tw5.com/tiddlers/community/Forums.tid +16 -13
- package/editions/tw5.com/tiddlers/community/Signing the Contributor License Agreement.tid +2 -2
- package/editions/tw5.com/tiddlers/community/plugins/TiddlyClip by buggyjay.tid +3 -3
- package/editions/tw5.com/tiddlers/concepts/Cascades.tid +1 -0
- package/editions/tw5.com/tiddlers/concepts/Customizing EditTemplate Field Rendering.tid +31 -0
- package/editions/tw5.com/tiddlers/concepts/Field Editor Cascade.tid +17 -0
- package/editions/tw5.com/tiddlers/concepts/Filters.tid +15 -10
- package/editions/tw5.com/tiddlers/concepts/Macros.tid +1 -3
- package/editions/tw5.com/tiddlers/concepts/Pragma.tid +2 -2
- package/editions/tw5.com/tiddlers/concepts/TiddlerFields.tid +2 -1
- package/editions/tw5.com/tiddlers/demonstrations/Alice in Wonderland.tid +3707 -4
- package/editions/tw5.com/tiddlers/demonstrations/Apple.tid +6 -1
- package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/Styles.tid +1 -0
- package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/Template.tid +1 -0
- package/editions/tw5.com/tiddlers/demonstrations/CustomStoryTiddlerTemplateDemo.tid/TiddlerTemplateFilter.tid +1 -0
- package/editions/tw5.com/tiddlers/features/Importing Tiddlers.tid +1 -1
- package/editions/tw5.com/tiddlers/features/Modals.tid +2 -1
- package/editions/tw5.com/tiddlers/filters/Filter Operators.tid +9 -5
- package/editions/tw5.com/tiddlers/filters/all.tid +2 -2
- package/editions/tw5.com/tiddlers/filters/butlast.tid +3 -1
- package/editions/tw5.com/tiddlers/filters/examples/butlast.tid +4 -3
- package/editions/tw5.com/tiddlers/filters/examples/insertbefore Operator (Examples).tid +28 -0
- package/editions/tw5.com/tiddlers/filters/examples/lookup Operator (Examples).tid +5 -0
- package/editions/tw5.com/tiddlers/filters/examples/prefix.tid +4 -3
- package/editions/tw5.com/tiddlers/filters/examples/removeprefix.tid +2 -1
- package/editions/tw5.com/tiddlers/filters/examples/removesuffix.tid +2 -3
- package/editions/tw5.com/tiddlers/filters/examples/rest.tid +4 -3
- package/editions/tw5.com/tiddlers/filters/examples/search.tid +6 -1
- package/editions/tw5.com/tiddlers/filters/examples/sortan.tid +5 -1
- package/editions/tw5.com/tiddlers/filters/examples/suffix.tid +3 -2
- package/editions/tw5.com/tiddlers/filters/insertbefore Operator.tid +21 -5
- package/editions/tw5.com/tiddlers/filters/lookup Operator.tid +28 -10
- package/editions/tw5.com/tiddlers/filters/prefix.tid +17 -2
- package/editions/tw5.com/tiddlers/filters/removeprefix.tid +18 -3
- package/editions/tw5.com/tiddlers/filters/removesuffix.tid +18 -3
- package/editions/tw5.com/tiddlers/filters/search.tid +10 -9
- package/editions/tw5.com/tiddlers/filters/sha256 Operator.tid +18 -0
- package/editions/tw5.com/tiddlers/filters/subfilter Operator.tid +2 -2
- package/editions/tw5.com/tiddlers/filters/suffix.tid +17 -2
- package/editions/tw5.com/tiddlers/filters/syntax/Cascade Filter Run Prefix.tid +2 -2
- package/editions/tw5.com/tiddlers/filters/syntax/Named Filter Run Prefix.tid +1 -1
- package/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +3 -3
- package/editions/tw5.com/tiddlers/howtos/Concatenating text and variables using macro substitution.tid +4 -14
- package/editions/tw5.com/tiddlers/images/New Release Banner.png +0 -0
- package/editions/tw5.com/tiddlers/macros/list-links-draggable Macro.tid +1 -1
- package/editions/tw5.com/tiddlers/messages/SampleWindowTemplate.tid +2 -2
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-all-windows.tid +20 -0
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-close-window.tid +39 -0
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-download-file.tid +6 -1
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-open-window.tid +16 -12
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-relink-tiddler.tid +26 -0
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-rename-tiddler.tid +4 -2
- package/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-scroll.tid +3 -0
- package/editions/tw5.com/tiddlers/plugins/Highlight Plugin.tid +3 -1
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.21.tid +6 -0
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.22.tid +6 -0
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.1.23.tid +6 -0
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.0.tid +6 -0
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.1.tid +6 -0
- package/editions/tw5.com/tiddlers/releasenotes/Release 5.2.2.tid +162 -0
- package/editions/tw5.com/tiddlers/releasenotes/Releases.tid +4 -2
- package/editions/tw5.com/tiddlers/saving/Saving on Browser with the File System Access API.tid +21 -0
- package/editions/tw5.com/tiddlers/saving/Saving on TidGi.tid +26 -0
- package/editions/tw5.com/tiddlers/saving/Saving via WebDAV.tid +3 -1
- package/editions/tw5.com/tiddlers/saving/Saving with Polly.tid +29 -0
- package/editions/tw5.com/tiddlers/system/doc-macros.tid +25 -1
- package/editions/tw5.com/tiddlers/system/doc-styles.tid +5 -1
- package/editions/tw5.com/tiddlers/system/download-empty.tid +1 -0
- package/editions/tw5.com/tiddlers/system/operator-macros.tid +4 -2
- package/editions/tw5.com/tiddlers/system/operator-template.tid +6 -3
- package/editions/tw5.com/tiddlers/system/style-guide-macros.tid +5 -1
- package/editions/tw5.com/tiddlers/system/variable-macros.tid +4 -2
- package/editions/tw5.com/tiddlers/system/wikitext-macros.tid +17 -3
- package/editions/tw5.com/tiddlers/webserver/Using HTTPS.tid +17 -2
- package/editions/tw5.com/tiddlers/webserver/WebServer API_ Get All Tiddlers.tid +1 -1
- package/editions/tw5.com/tiddlers/webserver/WebServer Authorization.tid +15 -3
- package/editions/tw5.com/tiddlers/webserver/WebServer Parameter_ admin.tid +8 -0
- package/editions/tw5.com/tiddlers/webserver/WebServer Parameter_ required-plugins.tid +8 -0
- package/editions/tw5.com/tiddlers/webserver/WebServer Parameter_ tls-passphrase.tid +10 -0
- package/editions/tw5.com/tiddlers/widgets/$__editions_tw5.com_widget-examples_qualify-transcluded.tid +14 -0
- package/editions/tw5.com/tiddlers/widgets/DraggableWidget.tid +7 -3
- package/editions/tw5.com/tiddlers/widgets/EditTextWidget.tid +1 -1
- package/editions/tw5.com/tiddlers/widgets/EventCatcherWidget.tid +7 -6
- package/editions/tw5.com/tiddlers/widgets/ImageWidget.tid +9 -1
- package/editions/tw5.com/tiddlers/widgets/LinkCatcherWidget.tid +2 -1
- package/editions/tw5.com/tiddlers/widgets/MacroCallWidget.tid +3 -1
- package/editions/tw5.com/tiddlers/widgets/MessageCatcherWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/widgets/QualifyWidget.tid +39 -0
- package/editions/tw5.com/tiddlers/widgets/TranscludeWidget.tid +7 -6
- package/editions/tw5.com/tiddlers/widgets/ViewWidget.tid +26 -8
- package/editions/tw5.com/tiddlers/widgets/WikifyWidget.tid +2 -2
- package/editions/tw5.com/tiddlers/wikitext/HTML in WikiText.tid +30 -4
- package/editions/tw5.com/tiddlers/wikitext/Images in WikiText.tid +3 -3
- package/editions/tw5.com/tiddlers/wikitext/Linking in WikiText.tid +44 -1
- package/editions/tw5.com/tiddlers/wikitext/Macro Calls in WikiText.tid +3 -3
- package/editions/tw5.com/tiddlers/wikitext/Transclusion in WikiText.tid +2 -1
- package/editions/tw5.com/tiddlers/wikitext/Widgets in WikiText.tid +3 -3
- package/editions/tw5.com/tiddlers/wikitext/parser/Block Mode WikiText (Examples).tid +51 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/Block Mode WikiText.tid +35 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/Inline Mode WikiText.tid +26 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/Places where the parser ignores WikiText.tid +14 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/WikiText Parser Modes.tid +16 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode transitions.tid +59 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode_ HTML examples.tid +72 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode_ macro examples.tid +55 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/WikiText parser mode_ transclusion examples.tid +56 -0
- package/editions/tw5.com/tiddlers/wikitext/parser/table-example.tid +8 -0
- package/languages/de-DE/ControlPanel.multids +17 -0
- package/languages/de-DE/Fields.multids +6 -5
- package/languages/de-DE/SideBar.multids +1 -0
- package/languages/pl-PL/ControlPanel.multids +15 -2
- package/languages/zh-Hans/ControlPanel.multids +2 -0
- package/languages/zh-Hans/Fields.multids +4 -2
- package/languages/zh-Hans/Misc.multids +1 -1
- package/languages/zh-Hant/ControlPanel.multids +2 -0
- package/languages/zh-Hant/Fields.multids +4 -2
- package/languages/zh-Hant/Misc.multids +1 -1
- package/license +1 -1
- package/licenses/cla-individual.md +13 -1
- package/package.json +5 -3
- package/plugins/tiddlywiki/dynannotate/examples/viewtemplate.tid +3 -4
- package/plugins/tiddlywiki/highlight/files/default.min.css +9 -0
- package/plugins/tiddlywiki/highlight/files/highlight.min.js +1401 -0
- package/plugins/tiddlywiki/highlight/files/tiddlywiki.files +2 -2
- package/plugins/tiddlywiki/highlight/highlightblock.js +27 -21
- package/plugins/tiddlywiki/highlight/plugin.info +1 -1
- package/plugins/tiddlywiki/highlight/readme.tid +18 -47
- package/plugins/tiddlywiki/highlight/styles.tid +10 -5
- package/plugins/tiddlywiki/highlight/usage.tid +48 -1
- package/plugins/tiddlywiki/highlight-legacy/TypeMappings.multids +8 -0
- package/plugins/tiddlywiki/{highlight → highlight-legacy}/files/default.css +0 -0
- package/plugins/tiddlywiki/{highlight → highlight-legacy}/files/highlight.pack.js +0 -0
- package/plugins/tiddlywiki/highlight-legacy/files/tiddlywiki.files +22 -0
- package/plugins/tiddlywiki/highlight-legacy/highlightblock.js +44 -0
- package/plugins/tiddlywiki/highlight-legacy/license.tid +27 -0
- package/plugins/tiddlywiki/highlight-legacy/plugin.info +7 -0
- package/plugins/tiddlywiki/highlight-legacy/readme.tid +65 -0
- package/plugins/tiddlywiki/highlight-legacy/styles.tid +82 -0
- package/plugins/tiddlywiki/highlight-legacy/usage.tid +28 -0
- package/plugins/tiddlywiki/internals/editpreviews/raw.tid +1 -0
- package/plugins/tiddlywiki/markdown/config_renderWikiTextPragma.tid +1 -1
- package/plugins/tiddlywiki/markdown/wrapper.js +33 -22
- package/plugins/tiddlywiki/menubar/menu.tid +1 -1
- package/readme.md +2 -2
- package/themes/tiddlywiki/snowwhite/base.tid +2 -1
- package/themes/tiddlywiki/vanilla/base.tid +13 -3
- package/themes/tiddlywiki/vanilla/sticky.tid +1 -0
- package/editions/fr-FR/tiddlers/$__core_ui_ViewTemplate_title.tid +0 -46
- package/editions/fr-FR/tiddlers/Images_in_WikiText.tid +0 -48
- package/editions/fr-FR/tiddlers/ImportTiddlers.tid +0 -14
- package/editions/fr-FR/tiddlers/Sharing_your_tiddlers_with_others.tid +0 -16
- package/plugins/tiddlywiki/highlight/howto.tid +0 -10
package/.eslintignore
CHANGED
@@ -1,15 +1,8 @@
|
|
1
|
-
#
|
1
|
+
# Ignore "third party" code whose style we will not change.
|
2
2
|
/boot/sjcl.js
|
3
|
+
/core/modules/utils/base64-utf8/base64-utf8.module.js
|
3
4
|
/core/modules/utils/base64-utf8/base64-utf8.module.min.js
|
4
5
|
/core/modules/utils/diff-match-patch/diff_match_patch.js
|
5
|
-
/
|
6
|
-
/
|
7
|
-
/plugins/tiddlywiki
|
8
|
-
/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/html-hint.js
|
9
|
-
/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/javascript-hint.js
|
10
|
-
/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/show-hint.js
|
11
|
-
/plugins/tiddlywiki/codemirror-autocomplete/files/addon/hint/xml-hint.js
|
12
|
-
/plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/closebrackets.js
|
13
|
-
/plugins/tiddlywiki/codemirror-closebrackets/files/addon/edit/matchbrackets.js
|
14
|
-
/plugins/tiddlywiki/codemirror-closetag/files/addon/edit/closetag.js
|
15
|
-
/plugins/tiddlywiki/codemirror-closetag/files/addon/fold/xml-fold.js
|
6
|
+
/core/modules/utils/diff-match-patch/diff_match_patch_uncompressed.js
|
7
|
+
/core/modules/utils/dom/csscolorparser.js
|
8
|
+
/plugins/tiddlywiki/*/files/
|
package/.eslintrc.yml
CHANGED
@@ -64,7 +64,23 @@ rules:
|
|
64
64
|
init-declarations: 'off'
|
65
65
|
jsx-quotes: error
|
66
66
|
key-spacing: 'off'
|
67
|
-
keyword-spacing:
|
67
|
+
keyword-spacing:
|
68
|
+
- error
|
69
|
+
- before: true
|
70
|
+
after: false
|
71
|
+
overrides:
|
72
|
+
'case':
|
73
|
+
after: true
|
74
|
+
'do':
|
75
|
+
'after': true
|
76
|
+
'else':
|
77
|
+
after: true
|
78
|
+
'return':
|
79
|
+
after: true
|
80
|
+
'throw':
|
81
|
+
after: true
|
82
|
+
'try':
|
83
|
+
after: true
|
68
84
|
line-comment-position: 'off'
|
69
85
|
linebreak-style: 'off'
|
70
86
|
lines-around-comment: 'off'
|
package/.github/workflows/ci.yml
CHANGED
package/bin/build-site.sh
CHANGED
@@ -0,0 +1,97 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
|
3
|
+
# Build tiddlywiki.org assets.
|
4
|
+
|
5
|
+
# Default to the version of TiddlyWiki installed in this repo
|
6
|
+
|
7
|
+
if [ -z "$TWORG_BUILD_TIDDLYWIKI" ]; then
|
8
|
+
TWORG_BUILD_TIDDLYWIKI=./tiddlywiki.js
|
9
|
+
fi
|
10
|
+
|
11
|
+
echo "Using TWORG_BUILD_TIDDLYWIKI as [$TWORG_BUILD_TIDDLYWIKI]"
|
12
|
+
|
13
|
+
# Set up the build details
|
14
|
+
|
15
|
+
if [ -z "$TWORG_BUILD_DETAILS" ]; then
|
16
|
+
TWORG_BUILD_DETAILS="$(git symbolic-ref --short HEAD)-$(git rev-parse HEAD) from $(git remote get-url origin)"
|
17
|
+
fi
|
18
|
+
|
19
|
+
echo "Using TWORG_BUILD_DETAILS as [$TWORG_BUILD_DETAILS]"
|
20
|
+
|
21
|
+
if [ -z "$TWORG_BUILD_COMMIT" ]; then
|
22
|
+
TWORG_BUILD_COMMIT="$(git rev-parse HEAD)"
|
23
|
+
fi
|
24
|
+
|
25
|
+
echo "Using TWORG_BUILD_COMMIT as [$TWORG_BUILD_COMMIT]"
|
26
|
+
|
27
|
+
# Set up the build output directory
|
28
|
+
|
29
|
+
if [ -z "$TWORG_BUILD_OUTPUT" ]; then
|
30
|
+
TWORG_BUILD_OUTPUT=$(mktemp -d)
|
31
|
+
fi
|
32
|
+
|
33
|
+
mkdir -p $TWORG_BUILD_OUTPUT
|
34
|
+
|
35
|
+
if [ ! -d "$TWORG_BUILD_OUTPUT" ]; then
|
36
|
+
echo 'A valid TWORG_BUILD_OUTPUT environment variable must be set'
|
37
|
+
exit 1
|
38
|
+
fi
|
39
|
+
|
40
|
+
echo "Using TWORG_BUILD_OUTPUT as [$TWORG_BUILD_OUTPUT]"
|
41
|
+
|
42
|
+
# Pull existing GitHub pages content
|
43
|
+
|
44
|
+
git clone --depth=1 --branch=main "https://github.com/TiddlyWiki/tiddlywiki.org-gh-pages.git" $TWORG_BUILD_OUTPUT
|
45
|
+
|
46
|
+
# Make the CNAME file that GitHub Pages requires
|
47
|
+
|
48
|
+
echo "tiddlywiki.org" > $TWORG_BUILD_OUTPUT/CNAME
|
49
|
+
|
50
|
+
# Delete any existing static content
|
51
|
+
|
52
|
+
mkdir -p $TWORG_BUILD_OUTPUT/static
|
53
|
+
rm $TWORG_BUILD_OUTPUT/static/*
|
54
|
+
|
55
|
+
# Put the build details into a .tid file so that it can be included in each build (deleted at the end of this script)
|
56
|
+
|
57
|
+
echo -e -n "title: $:/build\ncommit: $TWORG_BUILD_COMMIT\n\n$TWORG_BUILD_DETAILS\n" > $TWORG_BUILD_OUTPUT/build.tid
|
58
|
+
|
59
|
+
######################################################
|
60
|
+
#
|
61
|
+
# tiddlywiki.org distribution
|
62
|
+
#
|
63
|
+
######################################################
|
64
|
+
|
65
|
+
# /index.html Main site
|
66
|
+
# /favicon.ico Favicon for main site
|
67
|
+
# /static.html Static rendering of default tiddlers
|
68
|
+
# /alltiddlers.html Static rendering of all tiddlers
|
69
|
+
# /static/* Static single tiddlers
|
70
|
+
# /static/static.css Static stylesheet
|
71
|
+
# /static/favicon.ico Favicon for static pages
|
72
|
+
node $TWORG_BUILD_TIDDLYWIKI \
|
73
|
+
editions/tw.org \
|
74
|
+
--verbose \
|
75
|
+
--version \
|
76
|
+
--load $TWORG_BUILD_OUTPUT/build.tid \
|
77
|
+
--output $TWORG_BUILD_OUTPUT \
|
78
|
+
--build favicon static index \
|
79
|
+
|| exit 1
|
80
|
+
|
81
|
+
# Delete the temporary build tiddler
|
82
|
+
|
83
|
+
rm $TWORG_BUILD_OUTPUT/build.tid || exit 1
|
84
|
+
|
85
|
+
# Push output back to GitHub
|
86
|
+
|
87
|
+
# Exit script immediately if any command fails
|
88
|
+
set -e
|
89
|
+
|
90
|
+
pushd $TWORG_BUILD_OUTPUT
|
91
|
+
git config --global user.email "actions@github.com"
|
92
|
+
git config --global user.name "GitHub Actions"
|
93
|
+
git add -A .
|
94
|
+
git commit --message "GitHub build: $GITHUB_RUN_NUMBER of $TW5_BUILD_BRANCH ($(date +'%F %T %Z'))"
|
95
|
+
git remote add deploy "https://$GH_TOKEN@github.com/TiddlyWiki/tiddlywiki.org-gh-pages.git" &>/dev/null
|
96
|
+
git push deploy main &>/dev/null
|
97
|
+
popd
|
package/boot/boot.js
CHANGED
@@ -68,6 +68,26 @@ $tw.utils.isArrayEqual = function(array1,array2) {
|
|
68
68
|
});
|
69
69
|
};
|
70
70
|
|
71
|
+
/*
|
72
|
+
Add an entry to a sorted array if it doesn't already exist, while maintaining the sort order
|
73
|
+
*/
|
74
|
+
$tw.utils.insertSortedArray = function(array,value) {
|
75
|
+
var low = 0, high = array.length - 1, mid, cmp;
|
76
|
+
while(low <= high) {
|
77
|
+
mid = (low + high) >> 1;
|
78
|
+
cmp = value.localeCompare(array[mid]);
|
79
|
+
if(cmp > 0) {
|
80
|
+
low = mid + 1;
|
81
|
+
} else if(cmp < 0) {
|
82
|
+
high = mid - 1;
|
83
|
+
} else {
|
84
|
+
return array;
|
85
|
+
}
|
86
|
+
}
|
87
|
+
array.splice(low,0,value);
|
88
|
+
return array;
|
89
|
+
};
|
90
|
+
|
71
91
|
/*
|
72
92
|
Push entries onto an array, removing them first if they already exist in the array
|
73
93
|
array: array to modify (assumed to be free of duplicates)
|
@@ -409,6 +429,19 @@ $tw.utils.parseFields = function(text,fields) {
|
|
409
429
|
return fields;
|
410
430
|
};
|
411
431
|
|
432
|
+
// Safely parse a string as JSON
|
433
|
+
$tw.utils.parseJSONSafe = function(text,defaultJSON) {
|
434
|
+
try {
|
435
|
+
return JSON.parse(text);
|
436
|
+
} catch(e) {
|
437
|
+
if(typeof defaultJSON === "function") {
|
438
|
+
return defaultJSON(e);
|
439
|
+
} else {
|
440
|
+
return defaultJSON || {};
|
441
|
+
}
|
442
|
+
}
|
443
|
+
};
|
444
|
+
|
412
445
|
/*
|
413
446
|
Resolves a source filepath delimited with `/` relative to a specified absolute root filepath.
|
414
447
|
In relative paths, the special folder name `..` refers to immediate parent directory, and the
|
@@ -1081,7 +1114,7 @@ $tw.Wiki = function(options) {
|
|
1081
1114
|
tiddlerTitles = null, // Array of tiddler titles
|
1082
1115
|
getTiddlerTitles = function() {
|
1083
1116
|
if(!tiddlerTitles) {
|
1084
|
-
tiddlerTitles = Object.keys(tiddlers);
|
1117
|
+
tiddlerTitles = Object.keys(tiddlers).sort(function(a,b) {return a.localeCompare(b);});
|
1085
1118
|
}
|
1086
1119
|
return tiddlerTitles;
|
1087
1120
|
},
|
@@ -1134,10 +1167,8 @@ $tw.Wiki = function(options) {
|
|
1134
1167
|
}
|
1135
1168
|
// Save the new tiddler
|
1136
1169
|
tiddlers[title] = tiddler;
|
1137
|
-
// Check we've got
|
1138
|
-
|
1139
|
-
tiddlerTitles.push(title);
|
1140
|
-
}
|
1170
|
+
// Check we've got the title
|
1171
|
+
tiddlerTitles = $tw.utils.insertSortedArray(tiddlerTitles || [],title);
|
1141
1172
|
// Record the new tiddler state
|
1142
1173
|
updateDescriptor["new"] = {
|
1143
1174
|
tiddler: tiddler,
|
@@ -1322,7 +1353,7 @@ $tw.Wiki = function(options) {
|
|
1322
1353
|
var tiddler = tiddlers[title];
|
1323
1354
|
if(tiddler) {
|
1324
1355
|
if(tiddler.fields.type === "application/json" && tiddler.hasField("plugin-type") && tiddler.fields.text) {
|
1325
|
-
pluginInfo[tiddler.fields.title] =
|
1356
|
+
pluginInfo[tiddler.fields.title] = $tw.utils.parseJSONSafe(tiddler.fields.text);
|
1326
1357
|
results.modifiedPlugins.push(tiddler.fields.title);
|
1327
1358
|
}
|
1328
1359
|
} else {
|
@@ -1455,7 +1486,7 @@ $tw.Wiki.prototype.defineTiddlerModules = function() {
|
|
1455
1486
|
}
|
1456
1487
|
break;
|
1457
1488
|
case "application/json":
|
1458
|
-
$tw.modules.define(tiddler.fields.title,tiddler.fields["module-type"]
|
1489
|
+
$tw.modules.define(tiddler.fields.title,tiddler.fields["module-type"],$tw.utils.parseJSONSafe(tiddler.fields.text));
|
1459
1490
|
break;
|
1460
1491
|
case "application/x-tiddler-dictionary":
|
1461
1492
|
$tw.modules.define(tiddler.fields.title,tiddler.fields["module-type"],$tw.utils.parseFields(tiddler.fields.text));
|
@@ -1644,12 +1675,7 @@ $tw.modules.define("$:/boot/tiddlerdeserializer/json","tiddlerdeserializer",{
|
|
1644
1675
|
}
|
1645
1676
|
return true;
|
1646
1677
|
},
|
1647
|
-
data =
|
1648
|
-
try {
|
1649
|
-
data = JSON.parse(text);
|
1650
|
-
} catch(e) {
|
1651
|
-
// Ignore JSON parse errors
|
1652
|
-
}
|
1678
|
+
data = $tw.utils.parseJSONSafe(text);
|
1653
1679
|
if($tw.utils.isArray(data) && isTiddlerArrayValid(data)) {
|
1654
1680
|
return data;
|
1655
1681
|
} else if(isTiddlerValid(data)) {
|
@@ -1689,7 +1715,7 @@ $tw.boot.decryptEncryptedTiddlers = function(callback) {
|
|
1689
1715
|
$tw.crypto.setPassword(data.password);
|
1690
1716
|
var decryptedText = $tw.crypto.decrypt(encryptedText);
|
1691
1717
|
if(decryptedText) {
|
1692
|
-
var json =
|
1718
|
+
var json = $tw.utils.parseJSONSafe(decryptedText);
|
1693
1719
|
for(var title in json) {
|
1694
1720
|
$tw.preloadTiddler(json[title]);
|
1695
1721
|
}
|
@@ -1889,7 +1915,7 @@ filepath: pathname of the directory containing the specification file
|
|
1889
1915
|
$tw.loadTiddlersFromSpecification = function(filepath,excludeRegExp) {
|
1890
1916
|
var tiddlers = [];
|
1891
1917
|
// Read the specification
|
1892
|
-
var filesInfo =
|
1918
|
+
var filesInfo = $tw.utils.parseJSONSafe(fs.readFileSync(filepath + path.sep + "tiddlywiki.files","utf8"));
|
1893
1919
|
// Helper to process a file
|
1894
1920
|
var processFile = function(filename,isTiddlerFile,fields,isEditableFile) {
|
1895
1921
|
var extInfo = $tw.config.fileExtensionInfo[path.extname(filename)],
|
@@ -2019,7 +2045,7 @@ $tw.loadPluginFolder = function(filepath,excludeRegExp) {
|
|
2019
2045
|
console.log("Warning: missing plugin.info file in " + filepath);
|
2020
2046
|
return null;
|
2021
2047
|
}
|
2022
|
-
var pluginInfo =
|
2048
|
+
var pluginInfo = $tw.utils.parseJSONSafe(fs.readFileSync(infoPath,"utf8"));
|
2023
2049
|
// Read the plugin files
|
2024
2050
|
var pluginFiles = $tw.loadTiddlersFromPath(filepath,excludeRegExp);
|
2025
2051
|
// Save the plugin tiddlers into the plugin info
|
@@ -2136,7 +2162,7 @@ $tw.loadWikiTiddlers = function(wikiPath,options) {
|
|
2136
2162
|
pluginFields;
|
2137
2163
|
// Bail if we don't have a wiki info file
|
2138
2164
|
if(fs.existsSync(wikiInfoPath)) {
|
2139
|
-
wikiInfo =
|
2165
|
+
wikiInfo = $tw.utils.parseJSONSafe(fs.readFileSync(wikiInfoPath,"utf8"));
|
2140
2166
|
} else {
|
2141
2167
|
return null;
|
2142
2168
|
}
|
@@ -2649,3 +2675,4 @@ if(typeof(exports) !== "undefined") {
|
|
2649
2675
|
} else {
|
2650
2676
|
_boot(window.$tw);
|
2651
2677
|
}
|
2678
|
+
//# sourceURL=$:/boot/boot.js
|
package/boot/bootprefix.js
CHANGED
package/contributing.md
CHANGED
@@ -1,3 +1,3 @@
|
|
1
|
-
<h1 class="">Contributing to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></h1><p>Here we focus on contributions via <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/GitHub.html">GitHub</a> Pull Requests but there are many other ways that anyone can help the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> project, such as <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/ReportingBugs.html">reporting bugs</a> or helping to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Improving%2520TiddlyWiki%2520Documentation.html">improve our documentation</a>.</p><h1 class="">Rules for Pull Requests</h1><p>PRs must meet these minimum requirements before they can be considered for merging:</p><ul><li>The material in the PR must be free of licensing restrictions. Which means that either:<ul><li>The author must hold the copyright in all of the material themselves</li><li>The material must be licensed under a license compatible with <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>'s BSD license</li></ul></li><li>The author must sign the Contributors License Agreement (see below)</li><li>Each PR should only make a single feature change</li><li>The title of the PR should be 50 characters or less</li><li>The title of the PR should be capitalised, and should not end with a period</li><li>The title of the PR should be written in the imperative mood. See below</li><li>Adequate explanation in the body of the PR for the motivation and implementation of the change. Focus on the <em>why</em> and <em>what</em>, rather than the <em>how</em></li><li>PRs must be self-contained. Although they can link to material elsewhere, everything needed to understand the intention of the PR should be included</li><li>Documentation as appropriate for end-users or developers</li><li>Observe the coding style</li><li>Read the developers documentation</li><li>Please open a consultation issue prior to investing time in making a large PR</li></ul><h2 class="">Imperative Mood for PR Titles</h2><p>The "imperative mood" means written as if giving a command or instruction. See <a class="tc-tiddlylink-external" href="https://chris.beams.io/posts/git-commit/#imperative" rel="noopener noreferrer" target="_blank">this post</a> for more details, but the gist is that the title of the PR should make sense when used to complete the sentence "If applied, this commit will...". So for example, these are good PR titles:</p><ul><li>If applied, this commit will <em>update the contributing guidelines</em></li><li>If applied, this commit will <em>change css-escape-polyfill to a $tw.utils method</em></li><li>If applied, this commit will <em>make it easier to subclass the wikitext parser with a custom rule set</em></li></ul><p>These a poorly worded PR titles:</p><ul><li><strike>If applied, this commit will <em>edit text widgets should use default text for missing fields</em></strike></li><li><strike>If applied, this commit will <em>signing the CLA</em></strike></li><li><strike>If applied, this commit will <em>don't crash if options.event is missing</em></strike></li></ul><p>PR titles may also include a short prefix to indicate the subsystem to which they apply. For example:</p><ul><li><em>Menu plugin: Include menu text in aerial rotator</em></li></ul><h1 class="">Commenting on Pull Requests</h1><p>One of the principles of open source is that many pairs of eyes on the code can improve quality. So, we welcome comments and critiques of pending PRs. <a class="tc-tiddlylink-external" href="https://conventionalcomments.org" rel="noopener noreferrer" target="_blank">Conventional Comments</a> has some techniques to help make comments as constructive and actionable as possible. Notably, they recommend prefixing a comment with a label to clarify the intention:</p><table><tbody><tr class="evenRow"><td align="left">praise</td><td align="left">Praises highlight something positive. Try to leave at least one of these comments per review. Do not leave false praise (which can actually be damaging). Do look for something to sincerely praise</td></tr><tr class="oddRow"><td align="left">nitpick</td><td align="left">Nitpicks are small, trivial, but necessary changes. Distinguishing nitpick comments significantly helps direct the reader's attention to comments requiring more involvement</td></tr><tr class="evenRow"><td align="left">suggestion</td><td align="left">Suggestions are specific requests to improve the subject under review. It is assumed that we all want to do what's best, so these comments are never dismissed as “mere suggestions”, but are taken seriously</td></tr><tr class="oddRow"><td align="left">issue</td><td align="left">Issues represent user-facing problems. If possible, it's great to follow this kind of comment with a suggestion</td></tr><tr class="evenRow"><td align="left">question</td><td align="left">Questions are appropriate if you have a potential concern but are not quite sure if it's relevant or not. Asking the author for clarification or investigation can lead to a quick resolution</td></tr><tr class="oddRow"><td align="left">thought</td><td align="left">Thoughts represent an idea that popped up from reviewing. These comments are non-blocking by nature, but they are extremely valuable and can lead to more focused initiatives and mentoring opportunities</td></tr><tr class="evenRow"><td align="left">chore</td><td align="left">Chores are simple tasks that must be done before the subject can be “officially” accepted. Usually, these comments reference some common process. Try to leave a link to the process description so that the reader knows how to resolve the chore</td></tr></tbody></table><h1 class="">Contributor License Agreement</h1><p>Like other <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/OpenSource.html">OpenSource</a> projects, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> needs a signed contributor license agreement from individual contributors. This is a legal agreement that allows contributors to assert that they own the copyright of their contribution, and that they agree to license it to the <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/UnaMesa.html">UnaMesa</a> Association (the legal entity that owns <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on behalf of the community).</p><ul><li>For individuals use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/
|
1
|
+
<h1 class="">Contributing to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></h1><p>Here we focus on contributions via <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/GitHub.html">GitHub</a> Pull Requests but there are many other ways that anyone can help the <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> project, such as <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/ReportingBugs.html">reporting bugs</a> or helping to <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/Improving%2520TiddlyWiki%2520Documentation.html">improve our documentation</a>.</p><h1 class="">Rules for Pull Requests</h1><p>PRs must meet these minimum requirements before they can be considered for merging:</p><ul><li>The material in the PR must be free of licensing restrictions. Which means that either:<ul><li>The author must hold the copyright in all of the material themselves</li><li>The material must be licensed under a license compatible with <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a>'s BSD license</li></ul></li><li>The author must sign the Contributors License Agreement (see below)</li><li>Each PR should only make a single feature change</li><li>The title of the PR should be 50 characters or less</li><li>The title of the PR should be capitalised, and should not end with a period</li><li>The title of the PR should be written in the imperative mood. See below</li><li>Adequate explanation in the body of the PR for the motivation and implementation of the change. Focus on the <em>why</em> and <em>what</em>, rather than the <em>how</em></li><li>PRs must be self-contained. Although they can link to material elsewhere, everything needed to understand the intention of the PR should be included</li><li>Documentation as appropriate for end-users or developers</li><li>Observe the coding style</li><li>Read the developers documentation</li><li>Please open a consultation issue prior to investing time in making a large PR</li></ul><h2 class="">Imperative Mood for PR Titles</h2><p>The "imperative mood" means written as if giving a command or instruction. See <a class="tc-tiddlylink-external" href="https://chris.beams.io/posts/git-commit/#imperative" rel="noopener noreferrer" target="_blank">this post</a> for more details, but the gist is that the title of the PR should make sense when used to complete the sentence "If applied, this commit will...". So for example, these are good PR titles:</p><ul><li>If applied, this commit will <em>update the contributing guidelines</em></li><li>If applied, this commit will <em>change css-escape-polyfill to a $tw.utils method</em></li><li>If applied, this commit will <em>make it easier to subclass the wikitext parser with a custom rule set</em></li></ul><p>These a poorly worded PR titles:</p><ul><li><strike>If applied, this commit will <em>edit text widgets should use default text for missing fields</em></strike></li><li><strike>If applied, this commit will <em>signing the CLA</em></strike></li><li><strike>If applied, this commit will <em>don't crash if options.event is missing</em></strike></li></ul><p>PR titles may also include a short prefix to indicate the subsystem to which they apply. For example:</p><ul><li><em>Menu plugin: Include menu text in aerial rotator</em></li></ul><h1 class="">Commenting on Pull Requests</h1><p>One of the principles of open source is that many pairs of eyes on the code can improve quality. So, we welcome comments and critiques of pending PRs. <a class="tc-tiddlylink-external" href="https://conventionalcomments.org" rel="noopener noreferrer" target="_blank">Conventional Comments</a> has some techniques to help make comments as constructive and actionable as possible. Notably, they recommend prefixing a comment with a label to clarify the intention:</p><table><tbody><tr class="evenRow"><td align="left">praise</td><td align="left">Praises highlight something positive. Try to leave at least one of these comments per review. Do not leave false praise (which can actually be damaging). Do look for something to sincerely praise</td></tr><tr class="oddRow"><td align="left">nitpick</td><td align="left">Nitpicks are small, trivial, but necessary changes. Distinguishing nitpick comments significantly helps direct the reader's attention to comments requiring more involvement</td></tr><tr class="evenRow"><td align="left">suggestion</td><td align="left">Suggestions are specific requests to improve the subject under review. It is assumed that we all want to do what's best, so these comments are never dismissed as “mere suggestions”, but are taken seriously</td></tr><tr class="oddRow"><td align="left">issue</td><td align="left">Issues represent user-facing problems. If possible, it's great to follow this kind of comment with a suggestion</td></tr><tr class="evenRow"><td align="left">question</td><td align="left">Questions are appropriate if you have a potential concern but are not quite sure if it's relevant or not. Asking the author for clarification or investigation can lead to a quick resolution</td></tr><tr class="oddRow"><td align="left">thought</td><td align="left">Thoughts represent an idea that popped up from reviewing. These comments are non-blocking by nature, but they are extremely valuable and can lead to more focused initiatives and mentoring opportunities</td></tr><tr class="evenRow"><td align="left">chore</td><td align="left">Chores are simple tasks that must be done before the subject can be “officially” accepted. Usually, these comments reference some common process. Try to leave a link to the process description so that the reader knows how to resolve the chore</td></tr></tbody></table><h1 class="">Contributor License Agreement</h1><p>Like other <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/OpenSource.html">OpenSource</a> projects, <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a> needs a signed contributor license agreement from individual contributors. This is a legal agreement that allows contributors to assert that they own the copyright of their contribution, and that they agree to license it to the <a class="tc-tiddlylink tc-tiddlylink-missing" href="https://tiddlywiki.com/static/UnaMesa.html">UnaMesa</a> Association (the legal entity that owns <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki.html">TiddlyWiki</a> on behalf of the community).</p><ul><li>For individuals use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/tiddlywiki-com/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a></li><li>For entities use: <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/tiddlywiki-com/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a></li></ul><h1 class="">How to sign the CLA</h1><p>Create a <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/GitHub.html">GitHub</a> pull request to add your name to <code>cla-individual.md</code> or <code>cla-entity.md</code>, with the date in the format (YYYY/MM/DD).</p><p><strong>step by step</strong></p><ol><li>Navigate to <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/tiddlywiki-com/licenses/cla-individual.md" rel="noopener noreferrer" target="_blank">licenses/CLA-individual</a> or <a class="tc-tiddlylink-external" href="https://github.com/Jermolene/TiddlyWiki5/tree/tiddlywiki-com/licenses/cla-entity.md" rel="noopener noreferrer" target="_blank">licenses/CLA-entity</a> according to whether you are signing as an individual or representative of an organisation</li><li>Ensure that the "branch" dropdown at the top left is set to <code>tiddlywiki-com</code></li><li>Click the "edit" button at the top-right corner (clicking this button will fork the project so you can edit the file)</li><li>Add your name at the bottom<ul><li>eg: <code>Jeremy Ruston, @Jermolene, 2011/11/22</code></li></ul></li><li>Below the edit box for the CLA text you should see a box labelled <strong>Propose file change</strong></li><li>Enter a brief title to explain the change (eg, "Signing the CLA")</li><li>Click the green button labelled <strong>Propose file change</strong></li><li>On the following screen, click the green button labelled <strong>Create pull request</strong></li></ol><hr><p><em>The CLA documents used for this project were created using <a class="tc-tiddlylink-external" href="http://www.harmonyagreements.org" rel="noopener noreferrer" target="_blank">Harmony Project Templates</a>. "HA-CLA-I-LIST Version 1.0" for "CLA-individual" and "HA-CLA-E-LIST Version 1.0" for "CLA-entity".</em>
|
2
2
|
</p><p><em>This file was automatically generated by <a class="tc-tiddlylink tc-tiddlylink-resolves" href="https://tiddlywiki.com/static/TiddlyWiki5.html">TiddlyWiki5</a></em>
|
3
3
|
</p>
|
package/core/copyright.tid
CHANGED
@@ -4,7 +4,7 @@ type: text/plain
|
|
4
4
|
TiddlyWiki created by Jeremy Ruston, (jeremy [at] jermolene [dot] com)
|
5
5
|
|
6
6
|
Copyright (c) 2004-2007, Jeremy Ruston
|
7
|
-
Copyright (c) 2007-
|
7
|
+
Copyright (c) 2007-2022, UnaMesa Association
|
8
8
|
All rights reserved.
|
9
9
|
|
10
10
|
Redistribution and use in source and binary forms, with or without
|
@@ -36,6 +36,8 @@ EditorTypes/Hint: These tiddlers determine which editor is used to edit specific
|
|
36
36
|
EditorTypes/Type/Caption: Type
|
37
37
|
EditTemplateBody/Caption: Edit Template Body
|
38
38
|
EditTemplateBody/Hint: This rule cascade is used by the default edit template to dynamically choose the template for editing the body of a tiddler.
|
39
|
+
FieldEditor/Caption: Field Editor
|
40
|
+
FieldEditor/Hint: This rules cascade is used to dynamically choose the template for rendering a tiddler field based on its name. It is used within the Edit Template.
|
39
41
|
Info/Caption: Info
|
40
42
|
Info/Hint: Information about this TiddlyWiki
|
41
43
|
KeyboardShortcuts/Add/Prompt: Type shortcut here
|
@@ -226,4 +228,4 @@ Tools/Download/Full/Caption: Download full wiki
|
|
226
228
|
ViewTemplateBody/Caption: View Template Body
|
227
229
|
ViewTemplateBody/Hint: This rule cascade is used by the default view template to dynamically choose the template for displaying the body of a tiddler.
|
228
230
|
ViewTemplateTitle/Caption: View Template Title
|
229
|
-
ViewTemplateTitle/Hint: This rule cascade is used by the default view template to dynamically choose the template for displaying the title of a tiddler.
|
231
|
+
ViewTemplateTitle/Hint: This rule cascade is used by the default view template to dynamically choose the template for displaying the title of a tiddler.
|
@@ -3,6 +3,7 @@ title: $:/language/Docs/Fields/
|
|
3
3
|
_canonical_uri: The full URI of an external image tiddler
|
4
4
|
bag: The name of the bag from which a tiddler came
|
5
5
|
caption: The text to be displayed on a tab or button
|
6
|
+
code-body: The view template will display the tiddler as code if set to ''yes''
|
6
7
|
color: The CSS color value associated with a tiddler
|
7
8
|
component: The name of the component responsible for an [[alert tiddler|AlertMechanism]]
|
8
9
|
current-tiddler: Used to cache the top tiddler in a [[history list|HistoryMechanism]]
|
@@ -13,9 +14,9 @@ description: The descriptive text for a plugin, or a modal dialogue
|
|
13
14
|
draft.of: For draft tiddlers, contains the title of the tiddler of which this is a draft
|
14
15
|
draft.title: For draft tiddlers, contains the proposed new title of the tiddler
|
15
16
|
footer: The footer text for a wizard
|
16
|
-
hide-body: The view template will hide bodies of tiddlers if set to
|
17
|
+
hide-body: The view template will hide bodies of tiddlers if set to ''yes''
|
17
18
|
icon: The title of the tiddler containing the icon associated with a tiddler
|
18
|
-
library: Indicates that a tiddler should be saved as a JavaScript library if set to
|
19
|
+
library: Indicates that a tiddler should be saved as a JavaScript library if set to ''yes''
|
19
20
|
list: An ordered list of tiddler titles associated with a tiddler
|
20
21
|
list-before: If set, the title of a tiddler before which this tiddler should be added to the ordered list of tiddler titles, or at the start of the list if this field is present but empty
|
21
22
|
list-after: If set, the title of the tiddler after which this tiddler should be added to the ordered list of tiddler titles, or at the end of the list if this field is present but empty
|
@@ -32,7 +33,7 @@ tags: A list of tags associated with a tiddler
|
|
32
33
|
text: The body text of a tiddler
|
33
34
|
throttle.refresh: If present, throttles refreshes of this tiddler
|
34
35
|
title: The unique name of a tiddler
|
35
|
-
toc-link: Suppresses the tiddler's link in a Table of Contents tree if set to
|
36
|
+
toc-link: Suppresses the tiddler's link in a Table of Contents tree if set to ''no''
|
36
37
|
type: The content type of a tiddler
|
37
38
|
version: Version information for a plugin
|
38
39
|
_is_skinny: If present, indicates that the tiddler text field must be loaded from the server
|
@@ -14,7 +14,7 @@ ConfirmAction: Do you wish to proceed?
|
|
14
14
|
Count: count
|
15
15
|
DefaultNewTiddlerTitle: New Tiddler
|
16
16
|
Diffs/CountMessage: <<diff-count>> differences
|
17
|
-
DropMessage: Drop
|
17
|
+
DropMessage: Drop now (or use the 'Escape' key to cancel)
|
18
18
|
Encryption/Cancel: Cancel
|
19
19
|
Encryption/ConfirmClearPassword: Do you wish to clear the password? This will remove the encryption applied when saving this wiki
|
20
20
|
Encryption/PromptSetPassword: Set a new password for this TiddlyWiki
|
@@ -48,7 +48,7 @@ Command.prototype.execute = function() {
|
|
48
48
|
}
|
49
49
|
// Tweak the tiddlywiki.info to remove any included wikis
|
50
50
|
var packagePath = $tw.boot.wikiPath + "/tiddlywiki.info",
|
51
|
-
packageJson =
|
51
|
+
packageJson = $tw.utils.parseJSONSafe(fs.readFileSync(packagePath));
|
52
52
|
delete packageJson.includeWikis;
|
53
53
|
fs.writeFileSync(packagePath,JSON.stringify(packageJson,null,$tw.config.preferences.jsonSpaces));
|
54
54
|
return null;
|
@@ -69,7 +69,7 @@ Command.prototype.execute = function() {
|
|
69
69
|
$tw.utils.createFileDirectories(pathname);
|
70
70
|
fs.writeFileSync(pathname,JSON.stringify(tiddler),"utf8");
|
71
71
|
// Collect the skinny list data
|
72
|
-
var pluginTiddlers =
|
72
|
+
var pluginTiddlers = $tw.utils.parseJSONSafe(tiddler.text),
|
73
73
|
readmeContent = (pluginTiddlers.tiddlers[title + "/readme"] || {}).text,
|
74
74
|
doesRequireReload = !!self.commander.wiki.doesPluginInfoRequireReload(pluginTiddlers),
|
75
75
|
iconTiddler = pluginTiddlers.tiddlers[title + "/icon"] || {},
|
@@ -151,7 +151,7 @@ WikiFolderMaker.prototype.saveCustomPlugin = function(pluginTiddler) {
|
|
151
151
|
pluginInfo = pluginTiddler.getFieldStrings({exclude: ["text","type"]});
|
152
152
|
this.saveJSONFile(directory + path.sep + "plugin.info",pluginInfo);
|
153
153
|
self.log("Writing " + directory + path.sep + "plugin.info: " + JSON.stringify(pluginInfo,null,$tw.config.preferences.jsonSpaces));
|
154
|
-
var pluginTiddlers =
|
154
|
+
var pluginTiddlers = $tw.utils.parseJSONSafe(pluginTiddler.fields.text).tiddlers; // A hashmap of tiddlers in the plugin
|
155
155
|
$tw.utils.each(pluginTiddlers,function(tiddler) {
|
156
156
|
self.saveTiddler(directory,new $tw.Tiddler(tiddler));
|
157
157
|
});
|
@@ -17,16 +17,13 @@ exports["application/x-tiddler-html-div"] = function(text,fields) {
|
|
17
17
|
};
|
18
18
|
|
19
19
|
exports["application/json"] = function(text,fields) {
|
20
|
-
var
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
text: ""
|
28
|
-
}]
|
29
|
-
}
|
20
|
+
var results = [],
|
21
|
+
incoming = $tw.utils.parseJSONSafe(text,function(err) {
|
22
|
+
return [{
|
23
|
+
title: "JSON error: " + err,
|
24
|
+
text: ""
|
25
|
+
}];
|
26
|
+
});
|
30
27
|
if(!$tw.utils.isArray(incoming)) {
|
31
28
|
incoming = [incoming];
|
32
29
|
}
|
@@ -13,15 +13,17 @@ Text editor operation to wrap the selected lines with a prefix and suffix
|
|
13
13
|
"use strict";
|
14
14
|
|
15
15
|
exports["wrap-lines"] = function(event,operation) {
|
16
|
+
var prefix = event.paramObject.prefix || "",
|
17
|
+
suffix = event.paramObject.suffix || "";
|
16
18
|
// Cut just past the preceding line break, or the start of the text
|
17
19
|
operation.cutStart = $tw.utils.findPrecedingLineBreak(operation.text,operation.selStart);
|
18
20
|
// Cut to just past the following line break, or to the end of the text
|
19
21
|
operation.cutEnd = $tw.utils.findFollowingLineBreak(operation.text,operation.selEnd);
|
20
22
|
// Add the prefix and suffix
|
21
|
-
operation.replacement =
|
23
|
+
operation.replacement = prefix + "\n" +
|
22
24
|
operation.text.substring(operation.cutStart,operation.cutEnd) + "\n" +
|
23
|
-
|
24
|
-
operation.newSelStart = operation.cutStart +
|
25
|
+
suffix + "\n";
|
26
|
+
operation.newSelStart = operation.cutStart + prefix.length + 1;
|
25
27
|
operation.newSelEnd = operation.newSelStart + (operation.cutEnd - operation.cutStart);
|
26
28
|
};
|
27
29
|
|
@@ -0,0 +1,27 @@
|
|
1
|
+
/*\
|
2
|
+
title: $:/core/modules/filters/crypto.js
|
3
|
+
type: application/javascript
|
4
|
+
module-type: filteroperator
|
5
|
+
|
6
|
+
Filter operators for cryptography, using the Stanford JavaScript library
|
7
|
+
|
8
|
+
\*/
|
9
|
+
(function(){
|
10
|
+
|
11
|
+
/*jslint node: true, browser: true */
|
12
|
+
/*global $tw: false */
|
13
|
+
"use strict";
|
14
|
+
|
15
|
+
exports.sha256 = function(source,operator,options) {
|
16
|
+
var results = [],
|
17
|
+
length = parseInt(operator.operand,10) || 20,
|
18
|
+
sha256 = function(text) {
|
19
|
+
return sjcl.codec.hex.fromBits(sjcl.hash.sha256.hash(text)).substr(0,length);
|
20
|
+
};
|
21
|
+
source(function(tiddler,title) {
|
22
|
+
results.push(sha256(title));
|
23
|
+
});
|
24
|
+
return results;
|
25
|
+
};
|
26
|
+
|
27
|
+
})();
|
@@ -20,7 +20,7 @@ exports.insertbefore = function(source,operator,options) {
|
|
20
20
|
source(function(tiddler,title) {
|
21
21
|
results.push(title);
|
22
22
|
});
|
23
|
-
var target = options.widget && options.widget.getVariable(operator.suffix || "currentTiddler");
|
23
|
+
var target = operator.operands[1] || (options.widget && options.widget.getVariable(operator.suffix || "currentTiddler"));
|
24
24
|
if(target !== operator.operand) {
|
25
25
|
// Remove the entry from the list if it is present
|
26
26
|
var pos = results.indexOf(operator.operand);
|
@@ -19,13 +19,13 @@ exports.draft = function(source,prefix,options) {
|
|
19
19
|
var results = [];
|
20
20
|
if(prefix === "!") {
|
21
21
|
source(function(tiddler,title) {
|
22
|
-
if(!tiddler ||
|
22
|
+
if(!tiddler || !tiddler.isDraft()) {
|
23
23
|
results.push(title);
|
24
24
|
}
|
25
25
|
});
|
26
26
|
} else {
|
27
27
|
source(function(tiddler,title) {
|
28
|
-
if(tiddler &&
|
28
|
+
if(tiddler && tiddler.isDraft()) {
|
29
29
|
results.push(title);
|
30
30
|
}
|
31
31
|
});
|
@@ -87,7 +87,8 @@ exports.butlast = function(source,operator,options) {
|
|
87
87
|
source(function(tiddler,title) {
|
88
88
|
results.push(title);
|
89
89
|
});
|
90
|
-
|
90
|
+
var index = count === 0 ? results.length : -count;
|
91
|
+
return results.slice(0,index);
|
91
92
|
};
|
92
93
|
exports.bl = exports.butlast;
|
93
94
|
|
@@ -5,9 +5,11 @@ module-type: filteroperator
|
|
5
5
|
|
6
6
|
Filter operator that looks up values via a title prefix
|
7
7
|
|
8
|
-
[lookup:<field>[<prefix>]]
|
8
|
+
[lookup:<defaultvalue>:<field OR index>[<prefix>],[<field-name OR index-name>]]
|
9
9
|
|
10
|
-
Prepends the prefix to the selected items and returns the specified
|
10
|
+
Prepends the prefix to the selected items and returns the specified
|
11
|
+
field or index value. If the 2nd suffix does not exist, it defaults to field.
|
12
|
+
If the second operand is missing it defaults to "text" for fields, and "0" for indexes
|
11
13
|
|
12
14
|
\*/
|
13
15
|
(function(){
|
@@ -20,10 +22,31 @@ Prepends the prefix to the selected items and returns the specified field value
|
|
20
22
|
Export our filter function
|
21
23
|
*/
|
22
24
|
exports.lookup = function(source,operator,options) {
|
23
|
-
var results = []
|
24
|
-
|
25
|
-
|
26
|
-
|
25
|
+
var results = [],
|
26
|
+
suffixes = operator.suffixes || [],
|
27
|
+
defaultSuffix = suffixes[0] ? (suffixes[0][0] || "") : "",
|
28
|
+
indexSuffix = (suffixes[1] && suffixes[1][0] === "index") ? true : false,
|
29
|
+
target;
|
30
|
+
if(operator.operands.length == 2) {
|
31
|
+
target = operator.operands[1]
|
32
|
+
} else {
|
33
|
+
target = indexSuffix ? "0": "text";
|
34
|
+
}
|
35
|
+
if(indexSuffix) {
|
36
|
+
source(function(tiddler,title) {
|
37
|
+
var data = options.wiki.extractTiddlerDataItem(operator.operands[0]+title,target,defaultSuffix);
|
38
|
+
results.push(data);
|
39
|
+
});
|
40
|
+
} else {
|
41
|
+
source(function(tiddler,title) {
|
42
|
+
var value = defaultSuffix;
|
43
|
+
var targetTiddler = options.wiki.getTiddler(operator.operands[0]+title);
|
44
|
+
if(targetTiddler && targetTiddler.getFieldString(target)) {
|
45
|
+
value = targetTiddler.getFieldString(target);
|
46
|
+
}
|
47
|
+
results.push(value);
|
48
|
+
});
|
49
|
+
}
|
27
50
|
return results;
|
28
51
|
};
|
29
52
|
|