From 496610aa490a5dc33613b9117faf1499d1af3777 Mon Sep 17 00:00:00 2001 From: donmor Date: Thu, 30 May 2019 16:42:57 +0800 Subject: [PATCH 01/80] Signing the CLA for @donmor (#3957) --- licenses/cla-individual.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index cf8c61298..fb9a592a9 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -354,4 +354,6 @@ Jesse Weinstein, @JesseWeinstein, 2019/01/14 Adam Sherwood, @admls, 2019/01/27 -Joshua Fontany, @joshuafontany, 2019/03/07 \ No newline at end of file +Joshua Fontany, @joshuafontany, 2019/03/07 + +Dong Zhihong, @donmor, 2019/05/29 From 6c08fec2ee814715610fb7f2533b27d3f71a3d77 Mon Sep 17 00:00:00 2001 From: twMat Date: Fri, 31 May 2019 17:05:35 +0200 Subject: [PATCH 02/80] Update Saving on TiddlySpot.tid (#3960) Included mention of community created (i.e created by me) "shortcut" to set up new TW5 on TS. --- .../tiddlers/saving/Saving on TiddlySpot.tid | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid b/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid index 607ae87ae..af1ce8957 100644 --- a/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid +++ b/editions/tw5.com/tiddlers/saving/Saving on TiddlySpot.tid @@ -8,9 +8,17 @@ method: save caption: TiddlySpot description: Free online service for hosting TiddlyWiki files -TiddlySpot is a free hosting service for TiddlyWiki documents from Simon and Daniel Baird. The easiest way to get started is to sign up for a new wiki at http://tiddlyspot.com - by default you'll get the latest release of TiddlyWiki Classic. +[[TiddlySpot|http://tiddlyspot.com]] is a free hosting service for TiddlyWiki documents from Simon Baird and Daniel Baird. -You can upload an existing TiddlyWiki5 document from your local disc to TiddlySpot by following these steps: +! Setting up a TiddlyWiki on TiddlySpot +To set up a [[TiddlyWiki Classic|TiddlyWikiClassic]], you merely create a new wiki at http://tiddlyspot.com + +!!TiddlyWiki5 on TiddlySpot +~TiddlyWiki5 also functions well on ~TiddlySpot but this version is not offered directly in the TiddlySpot set-up. + +The simplest way to create a new ~TiddlySpot with ~TiddlyWiki5 is probably through the community created site http://tiddlywiki5.tiddlyspot.com + +Alternatively, you can upload an existing ~TiddlyWiki5 document from your local disc to ~TiddlySpot by following these steps: # Sign up for a new wiki at http://tiddlyspot.com/, and remember the wiki name and password # Open your locally stored TiddlyWiki document in your browser @@ -43,4 +51,4 @@ The upgrade operation falls foul of a security restriction in Firefox. Until thi * After you've uploaded your local document once, further editing and saving of the online version hosted on TiddlySpot should work with any modern browser of your choice. ** Don't forget to fill in the TiddlySpot wikiname and password in your TiddlySpot TiddlyWiki control panel for any new browser you want to use for saving changes -* //See also : [[Upgrading]]// \ No newline at end of file +* //See also : [[Upgrading]]// From 736ac9052d3f67ef042799e0ada7840abe9d5290 Mon Sep 17 00:00:00 2001 From: LordRatte Date: Fri, 31 May 2019 19:11:17 +0200 Subject: [PATCH 03/80] Update TiddlyDrive info on Tiddlywiki.com (#3961) * Update TiddlyDrive info * Accept Licence --- .../TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid | 5 +++-- licenses/cla-individual.md | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid b/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid index 211ed4519..5fee9c4cf 100644 --- a/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid +++ b/editions/tw5.com/tiddlers/community/resources/TiddlyDrive Add-on for Google Drive by Joshua Stubbs.tid @@ -3,14 +3,15 @@ created: 20171109172705241 delivery: Google Drive Add-on description: Google Drive add-on to save TiddlyWiki files method: save -modified: 20171113134317867 +modified: 20190531161707260 tags: Saving plugins Resources Android Chrome Firefox InternetExplorer iOS Linux Mac Opera PHP Safari Windows title: TiddlyDrive Add-on for Google Drive by Joshua Stubbs type: text/vnd.tiddlywiki -url: https://chrome.google.com/webstore/detail/tiddly-drive/oaphhjhbbabdjnpjpiliepphpmnioolo +url: https://lordratte.gitlab.io/tiddlydrive/#installation-guide An add-on for Google Drive that allows TiddlyWiki files stored there to be opened and saved directly +To find out how to add it to your account, go to the project's info page: {{!!url}} <<< diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index fb9a592a9..90dd309e0 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -357,3 +357,5 @@ Adam Sherwood, @admls, 2019/01/27 Joshua Fontany, @joshuafontany, 2019/03/07 Dong Zhihong, @donmor, 2019/05/29 + +Joshua Stubbs, @LordRatte, 2019/05/31 From 1e8a56768f502f4598a6429f22f57ebaa63a23c5 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Sat, 8 Jun 2019 17:34:06 +0100 Subject: [PATCH 04/80] Update ListWidget docs Fixes #3964 --- editions/tw5.com/tiddlers/widgets/ListWidget.tid | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/ListWidget.tid b/editions/tw5.com/tiddlers/widgets/ListWidget.tid index 12a4b6577..272df8d87 100644 --- a/editions/tw5.com/tiddlers/widgets/ListWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/ListWidget.tid @@ -1,6 +1,6 @@ caption: list created: 20131024141900000 -modified: 20181013230425882 +modified: 20190608162410684 tags: Widgets Lists title: ListWidget type: text/vnd.tiddlywiki @@ -68,7 +68,14 @@ See GroupedLists for how to generate nested and grouped lists using the ListWidg ! Content and Attributes -The content of the `<$list>` widget is an optional template to use for rendering each tiddler in the list. Alternatively, the template can be specified as a tiddler title in the ``template`` attribute. As a fallback, the default template just displays the tiddler title. +The content of the `<$list>` widget is an optional template to use for rendering each tiddler in the list. + +The action of the list widget depends on the results of the filter combined with several options for specifying the template: + +* If the filter evaluates to an empty list, the text of the ''emptyMessage'' attribute is rendered, and all other templates are ignored +* Otherwise, if the ''template'' attribute is specified then it is taken as the title of a tiddler to use as a template for rendering each item of the list +* Otherwise, if the list widget content is not blank, it is used as a template for rendering each item of the list +* Otherwise, a default template is used consisting of a `` or `
` element wrapped around a link to the item |!Attribute |!Description | |filter |The [[tiddler filter|Filters]] to display | From 1a08430a0c63c958f35728fffa580205f22b2be4 Mon Sep 17 00:00:00 2001 From: twMat Date: Wed, 12 Jun 2019 23:03:01 +0200 Subject: [PATCH 05/80] Docs: Fix typo in TextReference.tid (#3978) minor correction - or am I mistaken? --- editions/tw5.com/tiddlers/concepts/TextReference.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/concepts/TextReference.tid b/editions/tw5.com/tiddlers/concepts/TextReference.tid index 4b9a9d2f7..474149b88 100644 --- a/editions/tw5.com/tiddlers/concepts/TextReference.tid +++ b/editions/tw5.com/tiddlers/concepts/TextReference.tid @@ -18,7 +18,7 @@ A TextReference consists of several parts: Most of the parts of a text reference can be optional: -* `tiddlerTitle` - the text [[field|TiddlerFields]] of the specified tiddler +* `tiddlerTitle` - the title [[field|TiddlerFields]] of the specified tiddler * `tiddlerTitle!!field` - a [[tiddler field|TiddlerFields]] (eg, `modified`, `modifier`, `type` etc) * `!!field` - a [[field|TiddlerFields]] of the current tiddler * `tiddlerTitle##propertyIndex` - extracts a named property from DataTiddlers From a4dcc20797ff242129f24c44c48b7a5c57de7af5 Mon Sep 17 00:00:00 2001 From: Robin Munn Date: Mon, 17 Jun 2019 12:31:54 -0500 Subject: [PATCH 06/80] Signing the CLA as rmunn (#3992) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 90dd309e0..8677707d9 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -359,3 +359,5 @@ Joshua Fontany, @joshuafontany, 2019/03/07 Dong Zhihong, @donmor, 2019/05/29 Joshua Stubbs, @LordRatte, 2019/05/31 + +Robin Munn, @rmunn, 2019/06/16 From 6fd70f9c11a15981f4d8586c49f7533331f5872c Mon Sep 17 00:00:00 2001 From: twMat Date: Tue, 18 Jun 2019 11:49:52 +0200 Subject: [PATCH 07/80] Docs: Update CheckBox example (#3996) --- editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid index 60f1b389b..ec6e2162f 100644 --- a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid @@ -63,7 +63,7 @@ It is often necessary to use triple quotes with the `actions` attribute. Alterna <$macrocall $name='wikitext-example-without-html' src='<$fieldmangler> <$set filter="[[Features]] [[Encryption]] +[tags[]]" name="tag"> -<$checkbox actions="""<$action-setfield $field="tags" $value=<> /><$action-sendmessage $message="tm-add-tag" $param=<> />""" field="checked" checked="YES" unchecked="NO" > +<$checkbox actions="""<$action-setfield $field="tags" $value=<> ><$action-sendmessage $message="tm-add-tag" $param=<> />""" field="checked" checked="YES" unchecked="NO" > Add tags from tiddlers [[Features]] and [[Encryption]] From d8b79723cd3f3ecbdc307a39ade6dbebae2b3cb9 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Wed, 19 Jun 2019 15:56:07 +0100 Subject: [PATCH 08/80] Docs: Remove broken example of checkbox actions attribute See https://github.com/Jermolene/TiddlyWiki5/pull/3996#issuecomment-503596160 --- .../tw5.com/tiddlers/widgets/CheckboxWidget.tid | 17 ----------------- 1 file changed, 17 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid index ec6e2162f..053eebab5 100644 --- a/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/CheckboxWidget.tid @@ -52,20 +52,3 @@ To use the checkbox widget in index mode set the ''index'' attribute to the inde The example below creates a checkbox that is checked if the index by the name of this tiddler in the tiddler ExampleData is equal to ''selected'' and unchecked if the index is an empty string. If the index is undefined then it defaults to an empty string, meaning the checkbox will be unchecked if the index is missing. <$macrocall $name="wikitext-example-without-html" src="""<$checkbox tiddler="ExampleData" index=<> checked="selected" unchecked="" default=""> Selected?"""/> - -!! `actions` Attribute - -This example of using the `actions` attribute shows both the [[Action Set Field Widget|ActionSetFieldWidget]] and [[Action Send Message Widget|ActionSendMessageWidget]] to demonstrate two actions. - -The [[Set Widget|SetWidget]] uses a filter value to set the value of variable `tag`. The [[Action Send Message Widget|ActionSendMessageWidget]] joins all the tags into one large tag. The [[Action Set Field Widget|ActionSetFieldWidget]] appends the tags as individual tags. In this example, the [[Field Mangler Widget|FieldManglerWidget]] is required for the [[Action Send Message Widget|ActionSendMessageWidget]] but not for [[Action Set Field Widget|ActionSetFieldWidget]]. Be aware that the action occurs whether you check or uncheck. - -It is often necessary to use triple quotes with the `actions` attribute. Alternatively, the attribute can be assigned directly from a variable with `actions=<>`. - -<$macrocall $name='wikitext-example-without-html' src='<$fieldmangler> -<$set filter="[[Features]] [[Encryption]] +[tags[]]" name="tag"> -<$checkbox actions="""<$action-setfield $field="tags" $value=<> ><$action-sendmessage $message="tm-add-tag" $param=<> />""" field="checked" checked="YES" unchecked="NO" > - Add tags from tiddlers [[Features]] and [[Encryption]] - - -' /> - From ceb2d9f119a6b01a885578c6fc8b608258185867 Mon Sep 17 00:00:00 2001 From: twMat Date: Fri, 21 Jun 2019 09:36:09 +0200 Subject: [PATCH 09/80] Update StartupActions.tid (#4002) Regarding the bulleted tag pills; they should probably also be removed in place of text but I see value in keeping them for the sake of being able to easily peek at what they tag. We should probably have a section under Ctrlpanel>Settings where any startupaction-tiddlers are listed but since we don't yet, then the mentioned tag pills could perhaps remain.... except for the one in the PR. --- editions/tw5.com/tiddlers/features/StartupActions.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/features/StartupActions.tid b/editions/tw5.com/tiddlers/features/StartupActions.tid index e1aa53204..c7a392174 100644 --- a/editions/tw5.com/tiddlers/features/StartupActions.tid +++ b/editions/tw5.com/tiddlers/features/StartupActions.tid @@ -10,7 +10,7 @@ During startup, TiddlyWiki executes any ActionWidgets found in tiddlers with the * <> (only executed when running in the browser) * <> (only executed when running under Node.js) -Startup actions are useful for customising TiddlyWiki according to environmental factors such as the screen size. For example, the following action widgets when placed in a tiddler tagged <> will cause the sidebar to be hidden by default when the screen width is less than 1000 pixels: +Startup actions are useful for customising TiddlyWiki according to environmental factors such as the screen size. For example, the following action widgets when placed in a tiddler tagged `$:/tags/StartupAction/Browser` will cause the sidebar to be hidden by default when the screen width is less than 1000 pixels: ``` <$reveal type="lt" state="$:/info/browser/screen/width" text="3000"> From 02b141f97f0beb4dc702c62cb3968f5a050854fc Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 2 Jul 2019 15:35:11 +0100 Subject: [PATCH 10/80] Docs: typo in "Using the external JavaScript template" --- .../webserver/Using the external JavaScript template.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/tw5.com/tiddlers/webserver/Using the external JavaScript template.tid b/editions/tw5.com/tiddlers/webserver/Using the external JavaScript template.tid index c6c2373cb..122a30629 100644 --- a/editions/tw5.com/tiddlers/webserver/Using the external JavaScript template.tid +++ b/editions/tw5.com/tiddlers/webserver/Using the external JavaScript template.tid @@ -12,7 +12,7 @@ tiddlywiki editions/tw5.com-server/ --listen host=0.0.0.0 "root-tiddler=$:/core/ !! Background -TiddlyWiki in the single file configuration ordinarily packs everything into a single file: your data, and the JavaScript, CSS and HTML comprising TiddlyWiki itself. This lack of dependencies is usually very convenient: it means that it is impossible for the parts of a TiddlyWiki to become separated, and enormously improves the changes of it still functioning in the future. +TiddlyWiki in the single file configuration ordinarily packs everything into a single file: your data, and the JavaScript, CSS and HTML comprising TiddlyWiki itself. This lack of dependencies is usually very convenient: it means that it is impossible for the parts of a TiddlyWiki to become separated, and enormously improves the chances of it still functioning in the future. However, there is some inefficiency in this arrangement because the core code is repeatedly loaded and saved every time the content of the wiki is saved. This inefficiency is partially ameliorated when working in the client server configuration because once the wiki is loaded by the browser the synchronisation process only transmits individual tiddlers back and forth to the server. From 8a53cca00dfaec478c65b206f6bc7c2d3932657f Mon Sep 17 00:00:00 2001 From: morosanuae Date: Mon, 15 Jul 2019 20:09:40 +0300 Subject: [PATCH 11/80] Adding the "Font Awesome 5 Free SVGs for TiddlyWiki" resource site (#4112) --- ...nt Awesome 5 Free SVGs for TiddlyWiki by morosanuae | 10 ++++++++++ 1 file changed, 10 insertions(+) create mode 100644 editions/tw5.com/tiddlers/community/resources/Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae diff --git a/editions/tw5.com/tiddlers/community/resources/Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae b/editions/tw5.com/tiddlers/community/resources/Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae new file mode 100644 index 000000000..681a45f0b --- /dev/null +++ b/editions/tw5.com/tiddlers/community/resources/Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae @@ -0,0 +1,10 @@ +created: 20190710085450262 +modified: 20190710090131976 +tags: SVG Images [[Font Awesome 5]] Resources +title: "Font Awesome 5 Free SVGs for TiddlyWiki" by morosanuae +type: text/vnd.tiddlywiki +url: http://fa5-free-svg.tiddlyspot.com + +The ''Font Awesome 5 Free'' SVG images collection converted to tiddlers that you can easily import (drag'n'drop) in your wiki. + +{{!!url}} From 27b75f39225f72f77129d1fd519794c26834dff5 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 16 Jul 2019 15:43:18 +0100 Subject: [PATCH 12/80] Fix missing .tid extension from #4112 --- ... => Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae.tid} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename editions/tw5.com/tiddlers/community/resources/{Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae => Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae.tid} (100%) diff --git a/editions/tw5.com/tiddlers/community/resources/Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae b/editions/tw5.com/tiddlers/community/resources/Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae.tid similarity index 100% rename from editions/tw5.com/tiddlers/community/resources/Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae rename to editions/tw5.com/tiddlers/community/resources/Font Awesome 5 Free SVGs for TiddlyWiki by morosanuae.tid From 803c2c749f9f112f244fbd1a16ecad0a3581b02b Mon Sep 17 00:00:00 2001 From: Bram Chen Date: Wed, 7 Aug 2019 04:05:35 +0800 Subject: [PATCH 13/80] Add chinese translations for Saving/GitService (#4137) --- languages/zh-Hans/ControlPanel.multids | 21 ++++++++++++--------- languages/zh-Hant/ControlPanel.multids | 21 ++++++++++++--------- 2 files changed, 24 insertions(+), 18 deletions(-) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index a43cf7f43..c528c3120 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -92,15 +92,18 @@ Saving/DownloadSaver/Hint: 这些设置适用于兼容 HTML5 的下载保存模 Saving/General/Caption: 通用 Saving/General/Hint: 这些设置适用于所有已载入的保存模块 Saving/Hint: 用于通过保存模块将整个 TiddlyWiki 保存为单个文件的设置 -Saving/GitHub/Branch: 用于保存的目标分支 (默认值为 `master`) -Saving/GitHub/Caption: ~GitHub 保存模块 -Saving/GitHub/Description: 这些设定仅用于保存到 ~GitHub -Saving/GitHub/ServerURL: 服务器网址 (默认值为 `https://api.github.com`) -Saving/GitHub/Filename: 目标文件的文件名称 (例如,`index.html`) -Saving/GitHub/Password: 密码、OAUTH 令牌,或个人存取的令牌 -Saving/GitHub/Path: 目标文件的路径 (例如,`/wiki/`) -Saving/GitHub/Repo: 目标存储库 (例如,`Jermolene/TiddlyWiki5`) -Saving/GitHub/UserName: 用户名称 +Saving/GitService/Branch: 用于保存的目标分支 +Saving/GitService/CommitMessage: 由 TiddlyWiki 保存 +Saving/GitService/Description: 这些设置仅用于保存至 <> +Saving/GitService/Filename: 目标文件的文件名称 (例如,`index.html`) +Saving/GitService/Path: 目标文件的路径 (例如,`/wiki/`) +Saving/GitService/Repo: 目标存储库 (例如,`Jermolene/TiddlyWiki5`) +Saving/GitService/ServerURL: 服务器 API 网址 +Saving/GitService/UserName: 用户名称 +Saving/GitService/GitHub/Caption: ~GitHub 保存模块 +Saving/GitService/GitHub/Password: 密码、OAUTH 令牌,或个人存取令牌 (详见 [[GitHub 帮助页面|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]]) +Saving/GitService/GitLab/Caption: ~GitLab 保存模块 +Saving/GitService/GitLab/Password: 个人存取令牌的 API (详见 [[GitLab 帮助页面|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html for details]]) Saving/TiddlySpot/Advanced/Heading: 高级设置 Saving/TiddlySpot/BackupDir: 备份文件夹 Saving/TiddlySpot/Backups: 备份 diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index 664ad121a..57aa727a5 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -92,15 +92,18 @@ Saving/DownloadSaver/Hint: 這些設定適用於相容 HTML5 的下載儲存模 Saving/General/Caption: 通用 Saving/General/Hint: 這些設定適用於所有已載入的儲存模組 Saving/Hint: 用於通過儲存模組將整個 TiddlyWiki 儲存為單個檔案的設定 -Saving/GitHub/Branch: 用於儲存的目標分支 (預設值為 `master`) -Saving/GitHub/Caption: ~GitHub 儲存模組 -Saving/GitHub/Description: 這些設定僅用於儲存到 ~GitHub -Saving/GitHub/ServerURL: 伺服器網址 (預設值為 `https://api.github.com`) -Saving/GitHub/Filename: 目標檔案的檔案名稱 (例如,`index.html`) -Saving/GitHub/Password: 密碼、OAUTH 令牌,或個人存取的令牌 -Saving/GitHub/Path: 目標檔案的路徑 (例如,`/wiki/`) -Saving/GitHub/Repo: 目標存儲庫 (例如,`Jermolene/TiddlyWiki5`) -Saving/GitHub/UserName: 使用者名稱 +Saving/GitService/Branch: 用於儲存的目標分支 +Saving/GitService/CommitMessage: 由 TiddlyWiki 儲存 +Saving/GitService/Description: 這些設定僅用於儲存至 <> +Saving/GitService/Filename: 目標檔案的檔案名稱 (例如,`index.html`) +Saving/GitService/Path: 目標檔案的路徑 (例如,`/wiki/`) +Saving/GitService/Repo: 目標存儲庫 (例如,`Jermolene/TiddlyWiki5`) +Saving/GitService/ServerURL: 伺服器 API 網址 +Saving/GitService/UserName: 使用者名稱 +Saving/GitService/GitHub/Caption: ~GitHub 儲存模組 +Saving/GitService/GitHub/Password: 密碼、OAUTH 令牌,或個人存取令牌 (詳見 [[GitHub 說明頁面|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]]) +Saving/GitService/GitLab/Caption: ~GitLab 儲存模組 +Saving/GitService/GitLab/Password: 個人存取令牌的 API (詳見 [[GitLab 說明頁面|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html for details]]) Saving/TiddlySpot/Advanced/Heading: 進階設定 Saving/TiddlySpot/BackupDir: 備份資料夾 Saving/TiddlySpot/Backups: 備份 From 59264bbf2a366e8a6cdb316eab39c20532389947 Mon Sep 17 00:00:00 2001 From: Xavier Cazin Date: Wed, 7 Aug 2019 19:01:02 +0200 Subject: [PATCH 14/80] fr-FR translation updates (#4167) * Typo in GitLab saver link * Improve fr-FR DateFormat for ViewTemplate subtitles * Update fr-FR translations for Saving/GitService --- core/language/en-GB/ControlPanel.multids | 2 +- languages/fr-FR/ControlPanel.multids | 23 +++++++++++++---------- languages/fr-FR/Misc.multids | 2 +- 3 files changed, 15 insertions(+), 12 deletions(-) diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index 4ccb30787..faa4d73c5 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -102,7 +102,7 @@ Saving/GitService/UserName: Username Saving/GitService/GitHub/Caption: ~GitHub Saver Saving/GitService/GitHub/Password: Password, OAUTH token, or personal access token (see [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] for details) Saving/GitService/GitLab/Caption: ~GitLab Saver -Saving/GitService/GitLab/Password: Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html for details]] for details) +Saving/GitService/GitLab/Password: Personal access token for API (see [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] for details) Saving/TiddlySpot/Advanced/Heading: Advanced Settings Saving/TiddlySpot/BackupDir: Backup Directory Saving/TiddlySpot/Backups: Backups diff --git a/languages/fr-FR/ControlPanel.multids b/languages/fr-FR/ControlPanel.multids index 2813e6092..d2f61d283 100644 --- a/languages/fr-FR/ControlPanel.multids +++ b/languages/fr-FR/ControlPanel.multids @@ -87,16 +87,19 @@ Saving/DownloadSaver/Caption: Enregistreur de téléchargement Saving/DownloadSaver/Hint: Ces paramètres s'appliquent à l'enregistreur de téléchargement compatible HTML5 Saving/General/Caption: Général Saving/General/Hint: Ces paramètres s'appliquent à tous les enregistreurs chargés -Saving/Hint: Paramètres pour enregistrer le ~TiddlyWiki complet dans un seul fichier, via un module enregistreur -Saving/GitHub/Branch: Branche cible dans laquelle enregistrer (`master` par défaut) -Saving/GitHub/Caption: Enregistreur ~GitHub -Saving/GitHub/Description: Ces paramètres ne sont utilisés que pour l'enregistrement sur ~GitHub -Saving/GitHub/ServerURL: URL du serveur (`https://api.github.com` par défaut) -Saving/GitHub/Filename: Nom du fichier cible (par ex. `index.html`) -Saving/GitHub/Password: Mot de passe, jeton OAUTH, ou //personal access token// -Saving/GitHub/Path: Chemin vers le fichier cible (par ex. `/wiki/`) -Saving/GitHub/Repo: //Repository// cible (par ex. `Jermolene/TiddlyWiki5`) -Saving/GitHub/UserName: Nom d'utilisateur +Saving/Hint: Paramètres pour enregistrer l'intégralité du TiddlyWiki dans un seul fichier, selon le module d'enregistrement choisi +Saving/GitService/Branch: Branche cible où doit s'effectuer l'enregistrement +Saving/GitService/CommitMessage: Enregistré depuis TiddlyWiki +Saving/GitService/Description: Ces paramètres ne sont utilisés que pour l'enregistrement sur <> +Saving/GitService/Filename: Nom du fichier cible (par ex. `index.html`) +Saving/GitService/Path: Chemin vers le fichier cible (par ex. `/wiki/`) +Saving/GitService/Repo: //Repository// cible (par ex. `Jermolene/TiddlyWiki5`) +Saving/GitService/ServerURL: URL du serveur d'API +Saving/GitService/UserName: Nom d'utilisateur +Saving/GitService/GitHub/Caption: Enregistreur ~GitHub +Saving/GitService/GitHub/Password: Mot de passe, jeton OAUTH, ou //personal access token// (voir [[GitHub help page|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] pour de plus amples détails) +Saving/GitService/GitLab/Caption: Enregistreur ~GitLab +Saving/GitService/GitLab/Password: //Personal access token// pour cette API (voir [[GitLab help page|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] pour de plus amples details) Saving/TiddlySpot/Advanced/Heading: Paramètres avancés Saving/TiddlySpot/BackupDir: Dossier des //sauvegardes// Saving/TiddlySpot/Backups: Sauvegardes diff --git a/languages/fr-FR/Misc.multids b/languages/fr-FR/Misc.multids index c18ce3cb6..499b9c24d 100644 --- a/languages/fr-FR/Misc.multids +++ b/languages/fr-FR/Misc.multids @@ -68,6 +68,6 @@ TagManager/Count/Heading: Total TagManager/Icon/Heading: Icône TagManager/Info/Heading: Info TagManager/Tag/Heading: Tag -Tiddler/DateFormat: DD MMM YYYY à hhhmm +Tiddler/DateFormat: DD MMM YYYY à 0hhhmm UnsavedChangesWarning: Vos dernières modifications n'ont pas été sauvegardées dans votre TiddlyWiki Yes: Oui From 2be09f23eb39496eb23fdeef76545c46db187b2f Mon Sep 17 00:00:00 2001 From: Bram Chen Date: Thu, 8 Aug 2019 16:55:49 +0800 Subject: [PATCH 15/80] Corrected typo in help link for GitLab saver (#4169) * for zh-Hant and zh-Hans --- languages/zh-Hans/ControlPanel.multids | 2 +- languages/zh-Hant/ControlPanel.multids | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index c528c3120..108946d94 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -103,7 +103,7 @@ Saving/GitService/UserName: 用户名称 Saving/GitService/GitHub/Caption: ~GitHub 保存模块 Saving/GitService/GitHub/Password: 密码、OAUTH 令牌,或个人存取令牌 (详见 [[GitHub 帮助页面|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]]) Saving/GitService/GitLab/Caption: ~GitLab 保存模块 -Saving/GitService/GitLab/Password: 个人存取令牌的 API (详见 [[GitLab 帮助页面|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html for details]]) +Saving/GitService/GitLab/Password: 个人存取令牌的 API (详见 [[GitLab 帮助页面|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]]) Saving/TiddlySpot/Advanced/Heading: 高级设置 Saving/TiddlySpot/BackupDir: 备份文件夹 Saving/TiddlySpot/Backups: 备份 diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index 57aa727a5..888f8b4bf 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -103,7 +103,7 @@ Saving/GitService/UserName: 使用者名稱 Saving/GitService/GitHub/Caption: ~GitHub 儲存模組 Saving/GitService/GitHub/Password: 密碼、OAUTH 令牌,或個人存取令牌 (詳見 [[GitHub 說明頁面|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]]) Saving/GitService/GitLab/Caption: ~GitLab 儲存模組 -Saving/GitService/GitLab/Password: 個人存取令牌的 API (詳見 [[GitLab 說明頁面|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html for details]]) +Saving/GitService/GitLab/Password: 個人存取令牌的 API (詳見 [[GitLab 說明頁面|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]]) Saving/TiddlySpot/Advanced/Heading: 進階設定 Saving/TiddlySpot/BackupDir: 備份資料夾 Saving/TiddlySpot/Backups: 備份 From a91ae1a877a3898f292493729a94bd78884d2436 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 8 Aug 2019 15:22:57 +0100 Subject: [PATCH 16/80] More Catalan updates --- languages/ca-ES/ControlPanel.multids | 38 ++++++++++++++------- languages/ca-ES/Docs/PaletteColours.multids | 18 +++++----- languages/ca-ES/EditTemplate.multids | 2 +- languages/ca-ES/Misc.multids | 4 +-- 4 files changed, 37 insertions(+), 25 deletions(-) diff --git a/languages/ca-ES/ControlPanel.multids b/languages/ca-ES/ControlPanel.multids index f02196f3a..ce761302b 100644 --- a/languages/ca-ES/ControlPanel.multids +++ b/languages/ca-ES/ControlPanel.multids @@ -85,19 +85,31 @@ Plugins/Themes/Caption: Temes Plugins/Themes/Hint: Connectors del tema Saving/Caption: Desa Saving/DownloadSaver/AutoSave/Description: Permet que el gestor de baixades desi automàticament -Saving/DownloadSaver/AutoSave/Hint: Habiliteu el desat automàtic pel gestor de baixades +Saving/DownloadSaver/AutoSave/Hint: Activa el desat automàtic pel gestor de baixades Saving/DownloadSaver/Caption: Gestor de baixades Saving/DownloadSaver/Hint: Aquesta configuració s’aplica al gestor de baixades compatible amb HTML5 Saving/General/Hint: Aquests valors s'apliquen a tots els gestors de baixades carregats -Saving/GitHub/Branch: Branca destí a on desar (per omissió és `master`) +Saving/GitHub/Branch: Branca destinació a on desar (per omissió és `master`) Saving/GitHub/Caption: Gestor de baixades de ~GitHub Saving/GitHub/Description: Aquests valors només s’utilitzen quan es desa a ~ GitHub Saving/GitHub/Filename: Nom del fitxer destinació (per exemple, `index.html`) Saving/GitHub/Password: Contrasenya, clau OAUTH o clau d'accés personal Saving/GitHub/Path: Ruta al fitxer destinació (per exemple, `/wiki/`) -Saving/GitHub/Repo: Repositori destí (per exemple, `Jermolene/TiddlyWiki5`) -Saving/GitHub/ServerURL: URL del servidor (per omissió és `https://api.github.com`) +Saving/GitHub/Repo: Repositori destinació (per exemple, `Jermolene/TiddlyWiki5`) +Saving/GitHub/ServerURL: URL del servidor (per omissió és `https://api.github.com`) Saving/GitHub/UserName: Nom d'usuari +Saving/GitService/Branch: Branca destinació a on desar +Saving/GitService/CommitMessage: Desat per TiddlyWiki +Saving/GitService/Description: Aquests paràmetres només s'utilitzen quan es desa a <> +Saving/GitService/Filename: Nom del fitxer destinació (per exemple `index.html`) +Saving/GitService/GitHub/Caption: Gestor de baixades de ~GitHub +Saving/GitService/GitHub/Password: Contrasenya, clau OAUTH o clau d'accés personal (veieu els detalls a la [[pàgina d'ajuda del GitHub|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] ) +Saving/GitService/GitLab/Caption: Gestor de baixades de ~GitLab +Saving/GitService/GitLab/Password: Clau d'accés personal de l'API (veieu els detalls a la [[pàgina d'ajuda del GitLab|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] ) +Saving/GitService/Path: Ruta del fitxer destinació (e.g. `/wiki/`) +Saving/GitService/Repo: Repositori destinació (e.g. `Jermolene/TiddlyWiki5`) +Saving/GitService/ServerURL: URL de l'API del servidor +Saving/GitService/UserName: NomDUsuari Saving/Heading: S'està desant Saving/Hint: Configuració que s’utilitza per desar tot el TiddlyWiki com a un únic fitxer amb un mòdul de desar Saving/TiddlySpot/Advanced/Heading: Paràmetres avançats @@ -116,7 +128,7 @@ Settings/AutoSave/Disabled/Description: No desis els canvis de forma automàtica Settings/AutoSave/Enabled/Description: Desa els canvis de forma automàtica Settings/AutoSave/Hint: Desa els canvis de forma automàtica mentre s'està editant Settings/CamelCase/Caption: Enllaços wiki tipus CamelCase -Settings/CamelCase/Description: Habilita l'enllaç automàtic de ~CamelCase +Settings/CamelCase/Description: Activa l'enllaç automàtic de ~CamelCase Settings/CamelCase/Hint: Podeu desactivar l’enllaç automàtic de les frases ~CamelCase globalment. Cal que es torni a carregar per tenir efecte Settings/Caption: Paràmetres Settings/DefaultMoreSidebarTab/Caption: Pestanya Més de la barra lateral per omissió @@ -134,8 +146,8 @@ Settings/InfoPanelMode/Sticky/Description: El tauler d’informació del Tiddler Settings/LinkToBehaviour/Caption: Comportament d'obertura del tiddler Settings/LinkToBehaviour/InsideRiver/Hint: Navegació des de //dins de// la cronologia Settings/LinkToBehaviour/OpenAbove: Obre per sobre del tiddler actual -Settings/LinkToBehaviour/OpenAtBottom: Obriu a la part inferior de la cronologia -Settings/LinkToBehaviour/OpenAtTop: Obriu a la part superior de la cronologia +Settings/LinkToBehaviour/OpenAtBottom: Obre a la part inferior de la cronologia +Settings/LinkToBehaviour/OpenAtTop: Obre a la part superior de la cronologia Settings/LinkToBehaviour/OpenBelow: Obre per sota del tiddler actual Settings/LinkToBehaviour/OutsideRiver/Hint: Navegació des de //fora de//la cronologia Settings/MissingLinks/Caption: Enllaços Wiki @@ -144,19 +156,19 @@ Settings/MissingLinks/Hint: Escolliu si voleu enllaçar els tiddlers que encara Settings/NavigationAddressBar/Caption: Barra d'adreces de navegació Settings/NavigationAddressBar/Hint: Comportament de la barra d'adreces en navegar cap a un tiddler: Settings/NavigationAddressBar/No/Description: No actualitzis la barra d'adreces -Settings/NavigationAddressBar/Permalink/Description: Inclou el tiddler destí -Settings/NavigationAddressBar/Permaview/Description: Inclou el tiddler destí i la seqùència actual +Settings/NavigationAddressBar/Permalink/Description: Inclou el tiddler destinació +Settings/NavigationAddressBar/Permaview/Description: Inclou el tiddler destinació i la seqùència actual Settings/NavigationHistory/Caption: Històrial de navegació Settings/NavigationHistory/Hint: Actualitza l'històrial del navegador en navegar cap a un tiddler: Settings/NavigationHistory/No/Description: No actualitzis la cronologia Settings/NavigationHistory/Yes/Description: Actualitza la cronologia Settings/NavigationPermalinkviewMode/Caption: Mode enllaç permanent/vista permanent -Settings/NavigationPermalinkviewMode/CopyToClipboard/Description: Copieu l’URL de l'enllaç permanent/vista permanent al portapapers +Settings/NavigationPermalinkviewMode/CopyToClipboard/Description: Copia l’URL de l'enllaç permanent/vista permanent al portapapers Settings/NavigationPermalinkviewMode/Hint: Trieu com es gestiona l'enllaç permanent/vista permanent Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description: Actualitzeu la barra d’adreça amb l’URL de l'enllaç permanent/vista permanent -Settings/PerformanceInstrumentation/Caption: Instrumentació del rendiment -Settings/PerformanceInstrumentation/Description: Habilita la instrumentació del rendiment -Settings/PerformanceInstrumentation/Hint: Mostra estadístiques de rendiment a la consola del desenvolupador del navegador. Cal tornar-ho a carregar per que tingui efecte +Settings/PerformanceInstrumentation/Caption: Instruments del rendiment +Settings/PerformanceInstrumentation/Description: Activa els instruments del rendiment +Settings/PerformanceInstrumentation/Hint: Mostra les estadístiques de rendiment a la consola del desenvolupador del navegador. Cal tornar-ho a carregar per que tingui efecte Settings/TitleLinks/Caption: Títols dels Tiddlers Settings/TitleLinks/Hint: Mostra opcionalment els títols de tiddler com a enllaços Settings/TitleLinks/No/Description: No mostris els títols dels tiddlers com a enllaços diff --git a/languages/ca-ES/Docs/PaletteColours.multids b/languages/ca-ES/Docs/PaletteColours.multids index 0247f21d2..83a739405 100644 --- a/languages/ca-ES/Docs/PaletteColours.multids +++ b/languages/ca-ES/Docs/PaletteColours.multids @@ -20,7 +20,7 @@ dragger-foreground: Primer plà de l'arrossegador dropdown-background: Fons de la llista desplegable dropdown-border: Vora de la llista desplegable dropdown-tab-background: Fons de la pestanya de la llista desplegable -dropdown-tab-background-selected: Fons de la pestanya de la llista desplegable per les etiquetes seleccionades +dropdown-tab-background-selected: Fons de la pestanya de la llista desplegable per les pestanyes seleccionades dropzone-background: Fons de la zona d'aterratge external-link-background: Fons de l'enllaç extern external-link-background-hover: Fons de la bafarada de l'enllaç extern @@ -33,7 +33,7 @@ message-background: Fons de la capsa de text message-border: Vora de la capsa de text message-foreground: Primer plà de la capsa de text modal-backdrop: Zona d'aterratge dels diàlegs modals -modal-background: Fons dels diàlegs modals per les etiquetes seleccionades +modal-background: Fons dels diàlegs modals modal-border: Vora dels diàlegs modals modal-footer-background: Fons del peu dels diàlegs modals modal-footer-border: Vora del peu dels diàlegs modals @@ -55,23 +55,23 @@ sidebar-foreground-shadow: Ombra del primer plà de la barra lateral sidebar-muted-foreground: Primer plà de la barra lateral silenciada sidebar-muted-foreground-hover: Primer plà de la bafarada de la barra lateral silenciada sidebar-tab-background: Fons de la pestanya de la barra lateral -sidebar-tab-background-selected: Fons de la pestanya de la barra lateral per les etiquetes seleccionades -sidebar-tab-border: Vora de la pestanya de la barra lateraletiqueta -sidebar-tab-border-selected: Vora de la pestanya de la barra lateral per les etiquetes seleccionadesetiqueta +sidebar-tab-background-selected: Fons de la pestanya de la barra lateral per les pestanyes seleccionades +sidebar-tab-border: Vora de la pestanya de la barra lateral +sidebar-tab-border-selected: Vora de la pestanya de la barra lateral per les pestanyes seleccionades sidebar-tab-divider: Divisor de la pestanya de la barra lateral sidebar-tab-foreground: Primer plà de la pestanya de la barra lateral -sidebar-tab-foreground-selected: Primer plà de la pestanya de la barra lateral per les etiquetes seleccionades +sidebar-tab-foreground-selected: Primer plà de la pestanya de la barra lateral per les pestanyes seleccionades sidebar-tiddler-link-foreground: Primer plà de l'enllaç del tiddler de la barra lateral sidebar-tiddler-link-foreground-hover: Primer plà de la bafarada de l'enllaç del tiddler de la barra lateral site-title-foreground: Primer pla del títol del lloc static-alert-foreground: Primer plà de l'avís estàtic tab-background: Fons de la pestanya -tab-background-selected: Fons de la pestanya per les etiquetes seleccionades +tab-background-selected: Fons de la pestanya per les pestanyes seleccionades tab-border: Vora de la pestanya -tab-border-selected: Vora de la pestanya per les etiquetes seleccionades +tab-border-selected: Vora de la pestanya per les pestanyes seleccionades tab-divider: Divisor de la pestanya tab-foreground: Primer plà de la pestanya -tab-foreground-selected: Primer plà de la pestanya per les etiquetes seleccionades +tab-foreground-selected: Primer plà de la pestanya per les pestanyes seleccionades table-border: Vora de la taula table-footer-background: Fons del peu de la taula table-header-background: Fons de la capçalera de la taula diff --git a/languages/ca-ES/EditTemplate.multids b/languages/ca-ES/EditTemplate.multids index 6af9caad0..452715f03 100644 --- a/languages/ca-ES/EditTemplate.multids +++ b/languages/ca-ES/EditTemplate.multids @@ -20,7 +20,7 @@ Tags/Add/Placeholder: nom de l'etiqueta Tags/Dropdown/Caption: llista d'etiquetes Tags/Dropdown/Hint: Mostra la llista d'etiquetes Title/BadCharacterWarning: Avís: eviteu qualsevol dels caràcters <> al títol d'un tiddler -Title/Exists/Prompt: El tiddler destí ja existeix +Title/Exists/Prompt: El tiddler destinació ja existeix Title/References/Prompt: Les referències següents cap aquest tiddler no s'actualitzaran automàticament: Title/Relink/Prompt: Actualitza ''<$text text=<>/>'' cap a ''<$text text=<>/>'' a les //etiquetes// i a la //lista// de camps d'altres tiddlers Type/Delete/Caption: suprimeix el tipus de contingut diff --git a/languages/ca-ES/Misc.multids b/languages/ca-ES/Misc.multids index dac9291f7..12e82a572 100644 --- a/languages/ca-ES/Misc.multids +++ b/languages/ca-ES/Misc.multids @@ -33,10 +33,10 @@ Error/SavingToTWEdit: S'ha produït un error en desar a TWEdit Error/WhileSaving: S'ha produït un error en desar Error/XMLHttpRequest: Codi d'error XMLHttpRequest InternalJavaScriptError/Hint: Bé, això és compromès. Es recomana que reinicieu TiddlyWiki actualitzant el navegador -InternalJavaScriptError/Title: Error de JavaScript intern +InternalJavaScriptError/Title: S'ha produït un error intern de JavaScript InvalidFieldName: Hi ha caràcters il·legals al nom del camp "<$text text=<>/>". Els camps només poden utilitzar minúscules, digits i els caràcters subratllat (`_`), guió (`-`) i punt (`.`) LazyLoadingWarning:

S'està tractant de carregar contingut extern de ''<$text text={{!!_canonical_uri}}/>''

Si aquest missatge no desapareix, o bé el tipus de contingut del tiddler no coincideix amb el tipus de contingut extern o bé esteu utilitzant un navegador que no admet contingut extern per als wikis carregats com a fitxers independents. Mireu https://tiddlywiki.com/#ExternalText

-LoginToTiddlySpace: Inicieu sessió a TiddlySpace +LoginToTiddlySpace: Inicieu la sessió a TiddlySpace Manager/Controls/FilterByTag/None: (cap) Manager/Controls/FilterByTag/Prompt: Filtra per etiqueta: Manager/Controls/Order/Prompt: Ordre invers From 9244a2f4fd89da9a9d6dc112568905cc4551b26f Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 9 Aug 2019 10:30:26 +0100 Subject: [PATCH 17/80] Bring over remaining scripts from build.jermolene.github.io --- bin/npm-publish.sh | 7 +++++++ bin/quick-bld.sh | 8 ++++++++ bin/verbump.sh | 17 +++++++++++++++++ 3 files changed, 32 insertions(+) create mode 100755 bin/npm-publish.sh create mode 100755 bin/quick-bld.sh create mode 100755 bin/verbump.sh diff --git a/bin/npm-publish.sh b/bin/npm-publish.sh new file mode 100755 index 000000000..c37de5c24 --- /dev/null +++ b/bin/npm-publish.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +# publish to npm + +./bin/clean.sh + +npm publish || exit 1 diff --git a/bin/quick-bld.sh b/bin/quick-bld.sh new file mode 100755 index 000000000..bc11208f2 --- /dev/null +++ b/bin/quick-bld.sh @@ -0,0 +1,8 @@ +#!/bin/bash + +# Abbreviated build script for building prerelease + +tiddlywiki editions/prerelease \ + --verbose \ + --build favicon index \ + || exit 1 diff --git a/bin/verbump.sh b/bin/verbump.sh new file mode 100755 index 000000000..ae4b0da80 --- /dev/null +++ b/bin/verbump.sh @@ -0,0 +1,17 @@ +#!/bin/bash + +# Bump to a new version number + +if [ -z "$1" ] + then + echo "Missing version (eg '5.1.38-prerelease')" + exit 1 +fi + +# Set the new version number (will also commit and tag the release) + +npm version $1 -m "Version number update for $1" || exit 1 + +# Make sure our tags are pushed to the origin server + +git push origin --tags || exit 1 From 762810361f7def1c2070f4dfc05e44be6896485a Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 9 Aug 2019 14:08:13 +0100 Subject: [PATCH 18/80] Docs: Update the build docs --- .../Releasing a new version of TiddlyWiki.tid | 40 +++++++++++-------- .../Releasing new content for TiddlyWiki.tid | 12 +++--- 2 files changed, 30 insertions(+), 22 deletions(-) diff --git a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid index 6070d5d32..8b6e62e42 100644 --- a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid +++ b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid @@ -1,27 +1,35 @@ +created: 20190809095728085 +modified: 20190809123445125 title: Releasing a new version of TiddlyWiki +type: text/vnd.tiddlywiki -# Verify the version numbers in [[$:/config/OfficialPluginLibrary]] (both in `editions/tw5.com` and `editions/prerelease/tiddlers/system`) +!! Preparation on master + +# Update `master` from `tiddlywiki-com` +# Verify the version numbers in [[$:/config/OfficialPluginLibrary]] in `editions/tw5.com` # Move the latest release note from the prerelease edition into the tw5.com edition # Adjust the release date and the ''released'' field of the latest release tiddler (eg, [[Release 5.1.3]]) # Ensure [[TiddlyWiki Releases]] has the new version as the default tab # Adjust the modified time of HelloThere -# Make sure ''Jermolene/TiddlyWiki5'' is fully committed +# Make sure ''Jermolene/TiddlyWiki5-master'' is fully committed + +!! Update Readmes + # Edit `package.json` to the new version number -# Run `../build.jermolene.github.io/readme-bld.sh` to build the readme files -# Commit the new readme files in `TiddlyWiki5` +# Run `./bin/readme-bld.sh` to build the readme files +# Commit the new readme files to `master` # Restore `package.json` to the previous version number -# Run `../build.jermolene.github.io/verbump "5.1.3"` (substituting the correct version number) to update the version number, assign it a tag -# Run `../build.jermolene.github.io/npm-publish.sh` to publish the release to npm -# Update the `package.json` for `build.jermolene.github.io` to the new version + +!! Make New Release + +# Run `./bin/verbump "5.1.3"` (substituting the correct version number) to update the version number, assign it a tag +# Run `./bin/npm-publish.sh` to publish the release to npm # Verify that the new release of TiddlyWiki is available at https://www.npmjs.org/package/tiddlywiki -# Change current directory to the `build.jermolene.github.io` directory -# Run `npm install` to install the correct version of TiddlyWiki -# Change current directory to the `TiddlyWiki5` directory -# Run `../build.jermolene.github.io/bld.sh` to build the content files -# Verify that the files in the `jermolene.github.io` directory are correct -# Run `../build.jermolene.github.io/github-push.sh` to push the new files to GitHub # Tweet the release with the text "TiddlyWiki v5.x.x released to https://tiddlywiki.com #newtiddlywikirelease" -# Preparation for the next release: -## Adjust version number in [[$:/config/OfficialPluginLibrary]] (both in `editions/tw5.com` and `editions/prerelease/tiddlers/system`) and [[$:/config/LocalPluginLibrary]] -## Adjust version number in https://github.com/Jermolene/build.jermolene.github.io in `prerelease-bld.sh`, `bld.sh` and `make-library-bld.sh` +!! Preparation for the next release + +# Adjust version number in package.json +# Adjust version number in [[$:/config/OfficialPluginLibrary]] (both in `editions/tw5.com` and `editions/prerelease/tiddlers/system`) and [[$:/config/LocalPluginLibrary]] +# Create the release note for the new release +# Adjust version number in https://github.com/Jermolene/build.jermolene.github.io in `prerelease-bld.sh`, `bld.sh` and `make-library-bld.sh` diff --git a/editions/dev/tiddlers/build/Releasing new content for TiddlyWiki.tid b/editions/dev/tiddlers/build/Releasing new content for TiddlyWiki.tid index 662fbdf41..78230c40e 100644 --- a/editions/dev/tiddlers/build/Releasing new content for TiddlyWiki.tid +++ b/editions/dev/tiddlers/build/Releasing new content for TiddlyWiki.tid @@ -1,8 +1,8 @@ +created: 20190809094421578 +modified: 20190809104210288 title: Releasing new content for TiddlyWiki +type: text/vnd.tiddlywiki -# Change current directory to the `TiddlyWiki5` directory -# Run `../build.jermolene.github.io/bld.sh` to build the content files -# Run `../build.jermolene.github.io/readme-bld.sh` to build the readmes -# Commit the readmes to `TiddlyWiki5` and `build.jermolene.github.io` if necessary -# Verify that the files in the `jermolene.github.io` directory are correct -# Run `../build.jermolene.github.io/github-push.sh` to push the new files to GitHub +To update https://tiddlywiki.com with new content, make a Pull Request with the updated tiddlers to the `tiddlywiki-com` branch. As soon as the PR is merged, the [[Continuous Deployment]] system will automatically rebuild the site. + +Note that the PR should only include updates within the `editions` folder of the repo. \ No newline at end of file From 2a3ea144373b347138fbf6a37f8c2236309fadf3 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 9 Aug 2019 14:09:15 +0100 Subject: [PATCH 19/80] Docs: More updates to build docs --- .../Releasing a new version of TiddlyWiki.tid | 18 +++++++++++++----- 1 file changed, 13 insertions(+), 5 deletions(-) diff --git a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid index 8b6e62e42..606420172 100644 --- a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid +++ b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid @@ -5,19 +5,19 @@ type: text/vnd.tiddlywiki !! Preparation on master -# Update `master` from `tiddlywiki-com` +# Update ''master'' with changes from ''tiddlywiki-com'' # Verify the version numbers in [[$:/config/OfficialPluginLibrary]] in `editions/tw5.com` # Move the latest release note from the prerelease edition into the tw5.com edition # Adjust the release date and the ''released'' field of the latest release tiddler (eg, [[Release 5.1.3]]) # Ensure [[TiddlyWiki Releases]] has the new version as the default tab # Adjust the modified time of HelloThere -# Make sure ''Jermolene/TiddlyWiki5-master'' is fully committed +# Make sure ''master'' is fully committed !! Update Readmes # Edit `package.json` to the new version number # Run `./bin/readme-bld.sh` to build the readme files -# Commit the new readme files to `master` +# Commit the new readme files to ''master'' # Restore `package.json` to the previous version number !! Make New Release @@ -25,11 +25,19 @@ type: text/vnd.tiddlywiki # Run `./bin/verbump "5.1.3"` (substituting the correct version number) to update the version number, assign it a tag # Run `./bin/npm-publish.sh` to publish the release to npm # Verify that the new release of TiddlyWiki is available at https://www.npmjs.org/package/tiddlywiki + +!! Update tiddlywiki.com release + +# Update ''tiddlywiki-com'' from ''master'' and push to ~GitHub + +!! Cleaning Up + # Tweet the release with the text "TiddlyWiki v5.x.x released to https://tiddlywiki.com #newtiddlywikirelease" -!! Preparation for the next release +!! Preparation for the next release in ''master'' -# Adjust version number in package.json +# Adjust version number in `package.json` # Adjust version number in [[$:/config/OfficialPluginLibrary]] (both in `editions/tw5.com` and `editions/prerelease/tiddlers/system`) and [[$:/config/LocalPluginLibrary]] # Create the release note for the new release # Adjust version number in https://github.com/Jermolene/build.jermolene.github.io in `prerelease-bld.sh`, `bld.sh` and `make-library-bld.sh` +# Commit changes to ''master'' and push to ~GitHub From ad175e222b691d4d03aaf7f8ffb286b65abe3416 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 9 Aug 2019 14:16:39 +0100 Subject: [PATCH 20/80] Preparing for v5.1.20 release --- core/wiki/config/OfficialPluginLibrary.tid | 2 +- .../tiddlers/build/Releasing a new version of TiddlyWiki.tid | 1 + editions/tw5.com/tiddlers/hellothere/HelloThere.tid | 2 +- .../tiddlers/releasenotes}/Release 5.1.20.tid | 5 +++-- readme.md | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) rename editions/{prerelease/tiddlers => tw5.com/tiddlers/releasenotes}/Release 5.1.20.tid (99%) diff --git a/core/wiki/config/OfficialPluginLibrary.tid b/core/wiki/config/OfficialPluginLibrary.tid index ccbaf94dc..b43c69610 100644 --- a/core/wiki/config/OfficialPluginLibrary.tid +++ b/core/wiki/config/OfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: https://tiddlywiki.com/library/v5.1.19/index.html +url: https://tiddlywiki.com/library/v5.1.20/index.html caption: {{$:/language/OfficialPluginLibrary}} {{$:/language/OfficialPluginLibrary/Hint}} diff --git a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid index 606420172..f0228bb7e 100644 --- a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid +++ b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid @@ -37,6 +37,7 @@ type: text/vnd.tiddlywiki !! Preparation for the next release in ''master'' # Adjust version number in `package.json` +# Adjust version number in `bin/build-site.sh` # Adjust version number in [[$:/config/OfficialPluginLibrary]] (both in `editions/tw5.com` and `editions/prerelease/tiddlers/system`) and [[$:/config/LocalPluginLibrary]] # Create the release note for the new release # Adjust version number in https://github.com/Jermolene/build.jermolene.github.io in `prerelease-bld.sh`, `bld.sh` and `make-library-bld.sh` diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index c5342909f..a6079ab1d 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -1,6 +1,6 @@ created: 20130822170200000 list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] [[HelloThumbnail - TWEUM2017]] -modified: 20181220163418974 +modified: 20190809141328809 tags: TableOfContents title: HelloThere type: text/vnd.tiddlywiki diff --git a/editions/prerelease/tiddlers/Release 5.1.20.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.20.tid similarity index 99% rename from editions/prerelease/tiddlers/Release 5.1.20.tid rename to editions/tw5.com/tiddlers/releasenotes/Release 5.1.20.tid index 2babb8d9f..a56247222 100644 --- a/editions/prerelease/tiddlers/Release 5.1.20.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.20.tid @@ -1,6 +1,7 @@ caption: 5.1.20 -created: 20181220163418974 -modified: 20190305165612365 +created: 20190809141328809 +modified: 20190809141328809 +released: 20190809141328809 tags: ReleaseNotes title: Release 5.1.20 type: text/vnd.tiddlywiki diff --git a/readme.md b/readme.md index d26bd8fdb..e7c813301 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,7 @@

Welcome to TiddlyWiki, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.

TiddlyWiki is a complete interactive wiki in JavaScript. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable WikiText.

Learn more and see it in action at https://tiddlywiki.com/

Developer documentation is in progress at https://tiddlywiki.com/dev/

Join the Community

Users

The TiddlyWiki discussion groups are mailing lists for talking about TiddlyWiki: requests for help, announcements of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.

Developers

New releases of TiddlyWiki, TiddlyDesktop and TiddlyFox are announced via the discussion groups and Twitter (you can also subscribe to an Atom/RSS feed of TiddlyWiki releases from GitHub)

Documentation

There is also a discussion group specifically for discussing TiddlyWiki documentation improvement initiatives: http://groups.google.com/group/tiddlywikidocs

-

Installing TiddlyWiki on Node.js

  1. Install Node.js
    • either from your favourite package manager: typically apt-get install nodejs on Debian/Ubuntu Linux or Termux for Android, or brew install node on a Mac
    • or directly from http://nodejs.org
  2. Open a command line terminal and type:

    npm install -g tiddlywiki

    If it fails with an error you may need to re-run the command as an administrator:

    sudo npm install -g tiddlywiki (Mac/Linux)

  3. Check TiddlyWiki is installed by typing:

    tiddlywiki --version

  4. In response, you should see TiddlyWiki report its current version (eg "5.1.20-prerelease"; you may also see other debugging information reported)
  5. Try it out:
    1. tiddlywiki mynewwiki --init server to create a folder for a new wiki that includes server-related components
    2. tiddlywiki mynewwiki --listen to start TiddlyWiki
    3. Visit http://127.0.0.1:8080/ in your browser
    4. Try editing and creating tiddlers
  6. Optionally, make an offline copy:
<$list filter="[!is[shadow]!is[system]fields[]search:title{$:/temp/newfieldname}sort[]] -created -creator -draft.of -draft.title -modified -modifier -tags -text -title -type" variable="currentField"> <$link to=<>> -<> +<$text text=<>/>
@@ -81,7 +81,7 @@ $value={{$:/temp/newfieldvalue}}/>
<$list filter="[fields[]search:title{$:/temp/newfieldname}sort[]] -[!is[shadow]!is[system]fields[]]" variable="currentField"> <$link to=<>> -<> +<$text text=<>/> From 82d18ad1fa56adf8e0e08f29e7ec1ba695c2dfbd Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 30 Aug 2019 15:34:26 +0100 Subject: [PATCH 35/80] Update release note for v5.1.21 --- .../prerelease/tiddlers/Release 5.1.21.tid | 40 ++++++------------- 1 file changed, 12 insertions(+), 28 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.21.tid b/editions/prerelease/tiddlers/Release 5.1.21.tid index 2aca5e6a2..6cde13f01 100644 --- a/editions/prerelease/tiddlers/Release 5.1.21.tid +++ b/editions/prerelease/tiddlers/Release 5.1.21.tid @@ -7,44 +7,28 @@ type: text/vnd.tiddlywiki //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.20...v5.1.21]]// -!! Plugin Improvements - -New and improved plugins: - -* - -!! Translation Improvements - -New and improved translations: - -* - -!! Performance Improvements - -* - -!! Usability Improvements - -* +This is a minor bug fix release for [[Release 5.1.20]]. !! Hackability Improvements -* +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/pull/4189]] the ''Open'' sidebar tab to use the `tv-config-story-list` variable !! Bug Fixes -* +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/a170210069bbec265992b365a61e0722b480ab1d]] crash with ActionDeleteFieldWidget and a missing ''tiddler'' attribute +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4087]] edge cases where some tiddler lists were not valid when interpreted as a filter +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/471b73158a887d2f060194741739c1da8b5d44d8]] problem with too many alerts when upgrading a wiki containing an overwritten core module +* [[Reverted|https://github.com/Jermolene/TiddlyWiki5/commit/83386f34b50a9d93171df133957d489b5de629ef]] inadvertently switching on performance instrumentation +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/4218]] bug with WikiText within field names -!! Node.js Bug Fixes and Improvements +!! Node.js Bug Fixes -* - -!! Developer Bug Fixes and Improvements - -* +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4174]] bug with [[customised tiddler file naming|Customising Tiddler File Naming]] ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: -* +* [[@BurningTreeC|https://github.com/BurningTreeC]] +* [[@flibbles|https://github.com/flibbles]] +* [[@hoelzro|https://github.com/hoelzro]] From 1c5b3e3d8d1adc9dea87281586b2c08f37a4ca7a Mon Sep 17 00:00:00 2001 From: Nils-Hero Lindemann Date: Fri, 30 Aug 2019 18:20:16 +0200 Subject: [PATCH 36/80] Remove duplicate code from transcludeblock parser (#4221) --- core/modules/parsers/wikiparser/rules/transcludeblock.js | 2 -- 1 file changed, 2 deletions(-) diff --git a/core/modules/parsers/wikiparser/rules/transcludeblock.js b/core/modules/parsers/wikiparser/rules/transcludeblock.js index 1a5df1e06..56a4f63b8 100644 --- a/core/modules/parsers/wikiparser/rules/transcludeblock.js +++ b/core/modules/parsers/wikiparser/rules/transcludeblock.js @@ -27,8 +27,6 @@ exports.init = function(parser) { }; exports.parse = function() { - // Move past the match - this.parser.pos = this.matchRegExp.lastIndex; // Move past the match this.parser.pos = this.matchRegExp.lastIndex; // Get the match details From c81bf497044f89b621e74891a8cc6da9a045c078 Mon Sep 17 00:00:00 2001 From: Simon Huber Date: Sun, 1 Sep 2019 11:00:09 +0200 Subject: [PATCH 37/80] fix "Open" SideBar tab --- core/ui/SideBar/Open.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/SideBar/Open.tid b/core/ui/SideBar/Open.tid index 1dac11b19..14e53ed40 100644 --- a/core/ui/SideBar/Open.tid +++ b/core/ui/SideBar/Open.tid @@ -6,7 +6,7 @@ caption: {{$:/language/SideBar/Open/Caption}} \define lingo-base() $:/language/CloseAll/ \define drop-actions() -<$action-listops $tiddler=<> $subfilter="+[insertbefore:currentTiddler]"/> +<$action-listops $tiddler=<> $subfilter="+[insertbefore:currentTiddler]"/> \end \define placeholder() From 8053cf1806cb6108f71d0f525a9342e5e3b169d4 Mon Sep 17 00:00:00 2001 From: markkerrigan <53887732+markkerrigan@users.noreply.github.com> Date: Mon, 2 Sep 2019 07:50:39 -0700 Subject: [PATCH 38/80] Signing the CLA (#4197) --- licenses/cla-individual.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 17492465a..01aedbe81 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -364,4 +364,7 @@ Joshua Stubbs, @LordRatte, 2019/05/31 Robin Munn, @rmunn, 2019/06/16 +Mark Kerrigan, @markkerrigan, 2019/08/24 + Stefan Schuster-Teupke, @StefanSTFG, 2019/08/26 + From 2008a617b569851a956c30c0990336cb11aa8a0b Mon Sep 17 00:00:00 2001 From: Nils-Hero Lindemann Date: Mon, 2 Sep 2019 16:55:24 +0200 Subject: [PATCH 39/80] Signing the CLA (#4204) --- licenses/cla-individual.md | 1 + 1 file changed, 1 insertion(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 01aedbe81..916056c08 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -368,3 +368,4 @@ Mark Kerrigan, @markkerrigan, 2019/08/24 Stefan Schuster-Teupke, @StefanSTFG, 2019/08/26 +Nils-Hero Lindemann, @heronils, 2019/08/26 From 1873785ef6832b0d791612c001bfd22123d61b7c Mon Sep 17 00:00:00 2001 From: Simon Huber Date: Mon, 2 Sep 2019 19:07:45 +0200 Subject: [PATCH 40/80] Fix whitespace around field inputs (#4227) --- core/ui/EditTemplate/fields.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/core/ui/EditTemplate/fields.tid b/core/ui/EditTemplate/fields.tid index b37d63236..be4e54176 100644 --- a/core/ui/EditTemplate/fields.tid +++ b/core/ui/EditTemplate/fields.tid @@ -58,12 +58,12 @@ $value={{$:/temp/newfieldvalue}}/> <$fieldmangler>
-<> +< <$edit-text tiddler="$:/temp/newfieldname" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}/> -<$button popup=<> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}} +<$button popup=<> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}  <$reveal state=<> type="nomatch" text="" default="">
<$set name="tv-show-missing-links" value="yes"> @@ -90,7 +90,7 @@ $value={{$:/temp/newfieldvalue}}/> <$edit-text tiddler="$:/temp/newfieldvalue" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Value/Placeholder}} class="tc-edit-texteditor" tabindex={{$:/config/EditTabIndex}}/> - <$macrocall $name="new-field"/> From ab24d58b1134c83dd72c3bc51b7a32299abad927 Mon Sep 17 00:00:00 2001 From: markstegeman Date: Mon, 2 Sep 2019 19:27:06 +0200 Subject: [PATCH 41/80] Signing the CLA --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index 916056c08..e7af6b888 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -369,3 +369,5 @@ Mark Kerrigan, @markkerrigan, 2019/08/24 Stefan Schuster-Teupke, @StefanSTFG, 2019/08/26 Nils-Hero Lindemann, @heronils, 2019/08/26 + +Mark Stegeman, @markstegeman, 2019/08/31 From dd09266b467173e45d75c172b2e82fd542f682fe Mon Sep 17 00:00:00 2001 From: Mark Stegeman Date: Sat, 31 Aug 2019 16:00:34 +0200 Subject: [PATCH 42/80] Fix inverted default HTML-class for items in toc and toc-expandable 5d36b484c6 swapped the "emptyValue" and "value" that determine the HTML-class for toc items, but did not change the default values for "itemClassFilter" in "toc" and "toc-expandable" to reflect this. --- core/wiki/macros/toc.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/core/wiki/macros/toc.tid b/core/wiki/macros/toc.tid index 7d1ea80ea..7602793f1 100644 --- a/core/wiki/macros/toc.tid +++ b/core/wiki/macros/toc.tid @@ -28,7 +28,7 @@ tags: $:/tags/Macro \end -\define toc(tag,sort:"",itemClassFilter:" ") +\define toc(tag,sort:"",itemClassFilter:"") <$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> /> \end @@ -87,7 +87,7 @@ tags: $:/tags/Macro <$macrocall $name="toc-linked-expandable-body" tag=<> sort=<> itemClassFilter=<> exclude=<> path=<>/> \end -\define toc-expandable(tag,sort:"",itemClassFilter:" ",exclude,path) +\define toc-expandable(tag,sort:"",itemClassFilter:"",exclude,path) <$vars tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}> <$set name="excluded" filter="""[enlist<__exclude__>] [<__tag__>]""">
    From 6496107a32220e3a2638974489cf7e3035709902 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 3 Sep 2019 09:47:55 +0100 Subject: [PATCH 43/80] Docs: Clarify that webserver API get all tiddlers only returns non-system tiddlers Fixes #4212 --- .../tiddlers/webserver/WebServer API_ Get All Tiddlers.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/webserver/WebServer API_ Get All Tiddlers.tid b/editions/tw5.com/tiddlers/webserver/WebServer API_ Get All Tiddlers.tid index ae39eca7d..98119804c 100644 --- a/editions/tw5.com/tiddlers/webserver/WebServer API_ Get All Tiddlers.tid +++ b/editions/tw5.com/tiddlers/webserver/WebServer API_ Get All Tiddlers.tid @@ -1,10 +1,10 @@ created: 20181002131215403 -modified: 20181003174025431 +modified: 20190903094711346 tags: [[WebServer API]] title: WebServer API: Get All Tiddlers type: text/vnd.tiddlywiki -Gets an array of all raw tiddlers, excluding the ''text'' field. +Gets an array of all raw non-system tiddlers, excluding the ''text'' field. ``` GET /recipes/default/tiddlers.json @@ -19,4 +19,4 @@ Response: * 200 OK *> `Content-Type: application/json` -*> Body: array of tiddlers in [[TiddlyWeb JSON tiddler format]] +*> Body: array of all non-system tiddlers in [[TiddlyWeb JSON tiddler format]] From 9305881efba1d2ffb2a74f54db2958550c937c14 Mon Sep 17 00:00:00 2001 From: Bimba Laszlo Date: Tue, 3 Sep 2019 10:49:17 +0200 Subject: [PATCH 44/80] Syncadapter uses different conditions for loading and saving (#4211) The description was ambiguous. --- editions/dev/tiddlers/from Heigele and Jurke/Syncadaptor.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/editions/dev/tiddlers/from Heigele and Jurke/Syncadaptor.tid b/editions/dev/tiddlers/from Heigele and Jurke/Syncadaptor.tid index c488b7712..377bc47e5 100644 --- a/editions/dev/tiddlers/from Heigele and Jurke/Syncadaptor.tid +++ b/editions/dev/tiddlers/from Heigele and Jurke/Syncadaptor.tid @@ -7,4 +7,4 @@ title: Syncadaptor A module with ``module-type: syncadaptor`` provides functionality to get a list of tiddlers (this list is provided as ~SkinnyTiddlers, which are normal tiddlers without the text field) and to load, save and delete single tiddlers. A syncadaptor can also provide functions to login and logout so that syncadaptor modules can be used to synchronize tiddlers with a remote server. -The syncer module only uses one syncadaptor and honours a special [[system tiddler|System Tiddlers]] [[$:/config/SyncFilter]] containing a [[filter string|Tags and Filter Mechanism]]. Tiddlers matching this filter string are not synced with a syncadapter. \ No newline at end of file +The syncer module only uses one syncadaptor and honours a special [[system tiddler|System Tiddlers]] [[$:/config/SyncFilter]] containing a [[filter string|Tags and Filter Mechanism]]. Tiddlers matching this filter string are not saved to the server with a syncadapter. It uses the [[WebServer API|https://tiddlywiki.com/#WebServer%20API%3A%20Get%20All%20Tiddlers]] to load modified tiddlers from the server, which returns only non-system tiddlers. \ No newline at end of file From 6fb2a33847bab330a4472ce533729099e814e046 Mon Sep 17 00:00:00 2001 From: Simon Huber Date: Tue, 3 Sep 2019 10:50:24 +0200 Subject: [PATCH 45/80] Add missing foreground color to tc-btn-invisible (#4203) --- themes/tiddlywiki/vanilla/base.tid | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 92b804651..021660e6e 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -431,7 +431,8 @@ button svg, button img, label svg, label img { margin: 0; background: none; border: none; - cursor: pointer; + cursor: pointer; + color: <>; } .tc-btn-boxed { From 9e67be5b6cf744243c2f0f2a856ac6fb710969f6 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 3 Sep 2019 19:25:00 +0100 Subject: [PATCH 46/80] Fix date for "Hidden Setting: Sync Polling Interval" --- .../hiddensettings/Hidden Setting SyncPollingInterval.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SyncPollingInterval.tid b/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SyncPollingInterval.tid index 7fc05923c..7a3c5ca52 100644 --- a/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SyncPollingInterval.tid +++ b/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SyncPollingInterval.tid @@ -1,5 +1,5 @@ -created: 20191029084535805 -modified: 20191029084535805 +created: 20190903192324700 +modified: 20190903192324700 tags: [[Hidden Settings]] title: Hidden Setting: Sync Polling Interval type: text/vnd.tiddlywiki From 6899be59e249e68e4dbb813ff47126734474833d Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 3 Sep 2019 19:26:23 +0100 Subject: [PATCH 47/80] Fix date and time for for "Hidden Setting: Sync Polling Interval" --- .../hiddensettings/Hidden Setting SyncPollingInterval.tid | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SyncPollingInterval.tid b/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SyncPollingInterval.tid index 7fc05923c..7a3c5ca52 100644 --- a/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SyncPollingInterval.tid +++ b/editions/tw5.com/tiddlers/hiddensettings/Hidden Setting SyncPollingInterval.tid @@ -1,5 +1,5 @@ -created: 20191029084535805 -modified: 20191029084535805 +created: 20190903192324700 +modified: 20190903192324700 tags: [[Hidden Settings]] title: Hidden Setting: Sync Polling Interval type: text/vnd.tiddlywiki From ef5c53bf9ac82dc6501b60d6a4c4838a9aa036f4 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Wed, 4 Sep 2019 16:04:33 +0100 Subject: [PATCH 48/80] Release note updates --- editions/prerelease/tiddlers/Release 5.1.21.tid | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.21.tid b/editions/prerelease/tiddlers/Release 5.1.21.tid index 6cde13f01..ae7b9b906 100644 --- a/editions/prerelease/tiddlers/Release 5.1.21.tid +++ b/editions/prerelease/tiddlers/Release 5.1.21.tid @@ -11,7 +11,7 @@ This is a minor bug fix release for [[Release 5.1.20]]. !! Hackability Improvements -* [[Updated|https://github.com/Jermolene/TiddlyWiki5/pull/4189]] the ''Open'' sidebar tab to use the `tv-config-story-list` variable +* [[Updated|https://github.com/Jermolene/TiddlyWiki5/pull/4189]] the ''Open'' sidebar tab to use the `tv-story-list` variable !! Bug Fixes @@ -20,6 +20,9 @@ This is a minor bug fix release for [[Release 5.1.20]]. * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/471b73158a887d2f060194741739c1da8b5d44d8]] problem with too many alerts when upgrading a wiki containing an overwritten core module * [[Reverted|https://github.com/Jermolene/TiddlyWiki5/commit/83386f34b50a9d93171df133957d489b5de629ef]] inadvertently switching on performance instrumentation * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/4218]] bug with WikiText within field names +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/dd09266b467173e45d75c172b2e82fd542f682fe]] problem with classes in the [[Table-of-Contents Macros]] +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4203]] missing foreground colour for buttons with class `tc-btn-invisible` +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4227]] whitespace around field editor inputs !! Node.js Bug Fixes @@ -29,6 +32,10 @@ This is a minor bug fix release for [[Release 5.1.20]]. [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: +* [[@bimlas|https://github.com/bimlas]] * [[@BurningTreeC|https://github.com/BurningTreeC]] * [[@flibbles|https://github.com/flibbles]] +* [[@heronils|https://github.com/heronils]] * [[@hoelzro|https://github.com/hoelzro]] +* [[@markstegeman|https://github.com/markstegeman]] +* [[@StefanSTFG|https://github.com/StefanSTFG]] From bb036ced933ecb36f5d93693fb4f6e7aa2748df7 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 6 Sep 2019 15:40:36 +0100 Subject: [PATCH 49/80] Translators plugin: Minor layout fixes --- .../translators/macros/translatableStringEditor.tid | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/plugins/tiddlywiki/translators/macros/translatableStringEditor.tid b/plugins/tiddlywiki/translators/macros/translatableStringEditor.tid index a762f9f55..ec1a9585a 100644 --- a/plugins/tiddlywiki/translators/macros/translatableStringEditor.tid +++ b/plugins/tiddlywiki/translators/macros/translatableStringEditor.tid @@ -3,20 +3,20 @@ tags: $:/tags/Macro \define translatableStringEditorInner(tiddlerTitle) - + <$link><$list filter=<>><$text text=<>/> - + <$list filter="""$(editFieldsFilter)$""" variable="editorField"> <$edit-text tag="$(editorTagName)$" field=<> type="text" class="tc-edit-texteditor" minHeight="10px"/> - +
    <$button class="tc-btn-invisible" popup=<>> {{$:/core/images/down-arrow}} -<$reveal state=<> type="popup" position="belowleft" text="" default=""> +<$reveal state=<> type="popup" position="belowleft" positionAllowNegative="yes" text="" default="">

    Original en-GB text: From 996ee52cf9f5e15d95deaf0acf4206959d34432a Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 6 Sep 2019 17:40:03 +0100 Subject: [PATCH 50/80] External-attachments plugin: Fix bug on Windows Fixes #4237 --- .../external-attachments/startup.js | 84 +++++++++++-------- 1 file changed, 49 insertions(+), 35 deletions(-) diff --git a/plugins/tiddlywiki/external-attachments/startup.js b/plugins/tiddlywiki/external-attachments/startup.js index 174f43ff2..4967921c5 100644 --- a/plugins/tiddlywiki/external-attachments/startup.js +++ b/plugins/tiddlywiki/external-attachments/startup.js @@ -26,15 +26,15 @@ exports.startup = function() { test_makePathRelative(); $tw.hooks.addHook("th-importing-file",function(info) { if(document.location.protocol === "file:" && info.isBinary && info.file.path && $tw.wiki.getTiddlerText(ENABLE_EXTERNAL_ATTACHMENTS_TITLE,"") === "yes") { - var locationPathParts = document.location.pathname.split("/").slice(0,-1), - filePathParts = info.file.path.split(/[\\\/]/mg).map(encodeURIComponent); +console.log("Wiki location",document.location.pathname) +console.log("File location",info.file.path) info.callback([ { title: info.file.name, type: info.type, "_canonical_uri": makePathRelative( - filePathParts.join("/"), - locationPathParts.join("/"), + info.file.path, + document.location.pathname, { useAbsoluteForNonDescendents: $tw.wiki.getTiddlerText(USE_ABSOLUTE_FOR_NON_DESCENDENTS_TITLE,"") === "yes", useAbsoluteForDescendents: $tw.wiki.getTiddlerText(USE_ABSOLUTE_FOR_DESCENDENTS_TITLE,"") === "yes" @@ -50,29 +50,47 @@ exports.startup = function() { }; /* -Given a source absolute path and a root absolute path, returns the source path expressed as a relative path from the root path. +Given a source absolute filepath and a root absolute path, returns the source filepath expressed as a relative filepath from the root path. + +sourcepath comes from the "path" property of the file object, with the following patterns: + /path/to/file.png for Unix systems + C:\path\to\file.png for local files on Windows + \\sharename\path\to\file.png for network shares on Windows +rootpath comes from document.location.pathname with urlencode applied with the following patterns: + /path/to/file.html for Unix systems + /C:/path/to/file.html for local files on Windows + /sharename/path/to/file.html for network shares on Windows */ function makePathRelative(sourcepath,rootpath,options) { options = options || {}; + // First we convert the source path from OS-dependent format to generic file:// format + if(options.isWindows || $tw.platform.isWindows) { + sourcepath = sourcepath.replace(/\\/g,"/"); + // If it's a local file like C:/path/to/file.ext then add a leading slash + if(sourcepath.charAt(0) !== "/") { + sourcepath = "/" + sourcepath; + } + // If it's a network share then remove one of the leading slashes + if(sourcepath.substring(0,2) === "//") { + sourcepath = sourcepath.substring(1); + } + } + // Split the path into parts var sourceParts = sourcepath.split("/"), rootParts = rootpath.split("/"), outputParts = []; - // Check that each path started with a slash - if(sourceParts[0] || rootParts[0]) { - throw "makePathRelative: both paths must be absolute"; - } + // urlencode the parts of the sourcepath + $tw.utils.each(sourceParts,function(part,index) { + sourceParts[index] = encodeURI(part); + }); // Identify any common portion from the start - var c = 1, + var c = 0, p; while(c < sourceParts.length && c < rootParts.length && sourceParts[c] === rootParts[c]) { c += 1; } - // Return "." if there's nothing left - if(c === sourceParts.length && c === rootParts.length ) { - return "." - } - // Use an absolute path if required - if((options.useAbsoluteForNonDescendents && c < rootParts.length) || (options.useAbsoluteForDescendents && c === rootParts.length)) { + // Use an absolute path if there's no common portion, or if specifically requested + if(c === 1 || (options.useAbsoluteForNonDescendents && c < rootParts.length) || (options.useAbsoluteForDescendents && c === rootParts.length)) { return sourcepath; } // Move up a directory for each directory left in the root @@ -87,25 +105,21 @@ function makePathRelative(sourcepath,rootpath,options) { } function test_makePathRelative() { - var msg = "makePathRelative test failed"; - if(makePathRelative("/Users/me/something","/Users/you/something") !== "../../me/something") { - throw msg; - } - if(makePathRelative("/Users/me/something","/Users/you/something",{useAbsoluteForNonDescendents: true}) !== "/Users/me/something") { - throw msg; - } - if(makePathRelative("/Users/me/something/else","/Users/me/something") !== "else") { - throw msg; - } - if(makePathRelative("/Users/me/something","/Users/me/something/new") !== "..") { - throw msg; - } - if(makePathRelative("/Users/me/something","/Users/me/something/new",{useAbsoluteForNonDescendents: true}) !== "/Users/me/something") { - throw msg; - } - if(makePathRelative("/Users/me/something","/Users/me/something") !== ".") { - throw msg; - } + var test = function(sourcepath,rootpath,result,options) { + if(makePathRelative(sourcepath,rootpath,options) !== result) { + throw "makePathRelative test failed: makePathRelative(" + sourcepath + "," + rootpath + "," + JSON.stringify(options) + ") is not equal to " + result; + } + }; + test("/Users/me/something/file.png","/Users/you/something","../../me/something/file.png"); + test("/Users/me/something/file.png","/Users/you/something","/Users/me/something/file.png",{useAbsoluteForNonDescendents: true}); + test("/Users/me/something/else/file.png","/Users/me/something","else/file.png"); + test("/Users/me/something/file.png","/Users/me/something/new","../file.png"); + test("/Users/me/something/file.png","/Users/me/something/new","/Users/me/something/file.png",{useAbsoluteForNonDescendents: true}); + test("/Users/me/something/file.png","/Users/me/something","file.png"); + test("C:\\Users\\me\\something\\file.png","/C:/Users/me/something","file.png",{isWindows: true}); + test("\\\\SHARE\\Users\\me\\something\\file.png","/SHARE/Users/me/somethingelse","../something/file.png",{isWindows: true}); + test("\\\\SHARE\\Users\\me\\something\\file.png","/C:/Users/me/something","/SHARE/Users/me/something/file.png",{isWindows: true}); } + })(); From fff97e73261c9fdbcf957d6ddb86b420b864a696 Mon Sep 17 00:00:00 2001 From: Jan-Oliver Kaiser Date: Sat, 7 Sep 2019 10:06:19 +0200 Subject: [PATCH 51/80] Signing the CLA (#4244) --- licenses/cla-individual.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/licenses/cla-individual.md b/licenses/cla-individual.md index e7af6b888..60c397c11 100644 --- a/licenses/cla-individual.md +++ b/licenses/cla-individual.md @@ -371,3 +371,5 @@ Stefan Schuster-Teupke, @StefanSTFG, 2019/08/26 Nils-Hero Lindemann, @heronils, 2019/08/26 Mark Stegeman, @markstegeman, 2019/08/31 + +Jan-Oliver Kaiser, @janno, 2019/09/06 From 19d2aab6b9a9f8e26b8eb99988ee05c3feaa16e5 Mon Sep 17 00:00:00 2001 From: Simon Huber Date: Sat, 7 Sep 2019 10:27:00 +0200 Subject: [PATCH 52/80] Remove text-shadow for tags in sidebar (#4245) For consistency with tags in the main story river --- themes/tiddlywiki/vanilla/base.tid | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 021660e6e..e6a19d013 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -649,6 +649,10 @@ button.tc-tag-label, span.tc-tag-label { border-radius: 1em; } +.tc-sidebar-scrollable .tc-tag-label { + text-shadow: none; +} + .tc-untagged-separator { width: 10em; left: 0; From 00fb4190f2970c0ee939681813486fb0b99d5892 Mon Sep 17 00:00:00 2001 From: Simon Huber Date: Mon, 9 Sep 2019 15:17:32 +0200 Subject: [PATCH 53/80] Fix whitespace around fields inputs (II) (#4240) --- core/ui/EditTemplate/fields.tid | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/ui/EditTemplate/fields.tid b/core/ui/EditTemplate/fields.tid index be4e54176..4b5ab5d4b 100644 --- a/core/ui/EditTemplate/fields.tid +++ b/core/ui/EditTemplate/fields.tid @@ -62,7 +62,7 @@ $value={{$:/temp/newfieldvalue}}/> <$edit-text tiddler="$:/temp/newfieldname" tag="input" default="" placeholder={{$:/language/EditTemplate/Fields/Add/Name/Placeholder}} focusPopup=<> class="tc-edit-texteditor tc-popup-handle" tabindex={{$:/config/EditTabIndex}}/> - +  <$button popup=<> class="tc-btn-invisible tc-btn-dropdown" tooltip={{$:/language/EditTemplate/Field/Dropdown/Hint}} aria-label={{$:/language/EditTemplate/Field/Dropdown/Caption}}>{{$:/core/images/down-arrow}}  <$reveal state=<> type="nomatch" text="" default="">

    From 85da202ccaa989be04f2b6a5aa74e0f8bba47d77 Mon Sep 17 00:00:00 2001 From: Xavier Cazin Date: Mon, 9 Sep 2019 15:28:56 +0200 Subject: [PATCH 54/80] fr-FR: small fix in tiddler date format (#4250) --- languages/fr-FR/Misc.multids | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/languages/fr-FR/Misc.multids b/languages/fr-FR/Misc.multids index 499b9c24d..4fa120e08 100644 --- a/languages/fr-FR/Misc.multids +++ b/languages/fr-FR/Misc.multids @@ -68,6 +68,6 @@ TagManager/Count/Heading: Total TagManager/Icon/Heading: Icône TagManager/Info/Heading: Info TagManager/Tag/Heading: Tag -Tiddler/DateFormat: DD MMM YYYY à 0hhhmm +Tiddler/DateFormat: DD MMM YYYY à hhh0mm UnsavedChangesWarning: Vos dernières modifications n'ont pas été sauvegardées dans votre TiddlyWiki Yes: Oui From f74e4c520d5da90bbecc925fc9d22360cfc4a44b Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 9 Sep 2019 14:38:29 +0100 Subject: [PATCH 55/80] Add docs for tm-rename-tiddler Fixes #4246 --- .../messages/WidgetMessage_ tm-rename-tiddler.tid | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-rename-tiddler.tid diff --git a/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-rename-tiddler.tid b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-rename-tiddler.tid new file mode 100644 index 000000000..f97a9aaee --- /dev/null +++ b/editions/tw5.com/tiddlers/messages/WidgetMessage_ tm-rename-tiddler.tid @@ -0,0 +1,14 @@ +caption: tm-rename-tiddler +created: 20190909133618113 +modified: 20190909133618113 +tags: Messages navigator-message +title: WidgetMessage: tm-rename-tiddler +type: text/vnd.tiddlywiki + +The `tm-rename-tiddler` message renames a tiddler by deleting it and recreating it with a new title. The rename tiddler message requires the following properties on the `event` object: + +|!Name |!Description | +|from |Current title of tiddler | +|to |New title of tiddler | + +The rename tiddler message is usually generated with the ButtonWidget and is handled by the NavigatorWidget. From 953038f0b2a29a0201a0d278a6e64868db764f36 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 9 Sep 2019 14:47:27 +0100 Subject: [PATCH 56/80] Don't use field indexer when looking for blank/missing fields Fixes #4247 --- core/modules/filters/field.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/filters/field.js b/core/modules/filters/field.js index 7480a87cb..fc8223555 100644 --- a/core/modules/filters/field.js +++ b/core/modules/filters/field.js @@ -53,7 +53,7 @@ exports.field = function(source,operator,options) { } }); } else { - if(source.byField) { + if(source.byField && operator.operand) { indexedResults = source.byField(fieldname,operator.operand); if(indexedResults) { return indexedResults From fb12807a339510845e5a8a1b0a7feeb0f534053b Mon Sep 17 00:00:00 2001 From: Cameron Fischer Date: Mon, 9 Sep 2019 09:56:40 -0400 Subject: [PATCH 57/80] Reverting changes to stringifyList (#4249) I (Flibbles) changed it so that lists generated by stringifyList would always be compatible with a filter parser, but since lists are not, and never will be, a subset of filters, there isn't a point. More importantly, wrapping negative numbers like "-7" in brackets would mess up some math stuff. --- boot/boot.js | 2 +- editions/test/tiddlers/tests/test-utils.js | 11 ++++++++++- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/boot/boot.js b/boot/boot.js index de5cc259b..82583c594 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -317,7 +317,7 @@ $tw.utils.stringifyList = function(value) { var result = new Array(value.length); for(var t=0, l=value.length; t{{{ [add[2]] }}}"}); + // X shouldn't be wrapped in brackets. If it is, math filters will treat it as zero. + expect(wiki.renderTiddler("text/plain","test")).toBe("-5"); + }); + it("should handle formatting a date string", function() { var fds = $tw.utils.formatDateString, // nov is month: 10! From ff6070f03354374f15bd6444a292bb620913b680 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 9 Sep 2019 16:48:12 +0100 Subject: [PATCH 58/80] Update release note --- editions/prerelease/tiddlers/Release 5.1.21.tid | 17 ++++++++++------- 1 file changed, 10 insertions(+), 7 deletions(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.21.tid b/editions/prerelease/tiddlers/Release 5.1.21.tid index ae7b9b906..05766fa21 100644 --- a/editions/prerelease/tiddlers/Release 5.1.21.tid +++ b/editions/prerelease/tiddlers/Release 5.1.21.tid @@ -1,17 +1,13 @@ caption: 5.1.21 -created: 20190809153802329 -modified: 20190809153802329 +created: 20190909164647824 +modified: 20190909164647824 tags: ReleaseNotes title: Release 5.1.21 type: text/vnd.tiddlywiki //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.20...v5.1.21]]// -This is a minor bug fix release for [[Release 5.1.20]]. - -!! Hackability Improvements - -* [[Updated|https://github.com/Jermolene/TiddlyWiki5/pull/4189]] the ''Open'' sidebar tab to use the `tv-story-list` variable +This is a bug fix release for [[Release 5.1.20]]. !! Bug Fixes @@ -23,6 +19,12 @@ This is a minor bug fix release for [[Release 5.1.20]]. * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/dd09266b467173e45d75c172b2e82fd542f682fe]] problem with classes in the [[Table-of-Contents Macros]] * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4203]] missing foreground colour for buttons with class `tc-btn-invisible` * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4227]] whitespace around field editor inputs +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/bb036ced933ecb36f5d93693fb4f6e7aa2748df7]] layout problems with the [[translators edition|Translate TiddlyWiki into your language]] +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/996ee52cf9f5e15d95deaf0acf4206959d34432a]] crash with the [[External Attachments Plugin]] on Windows +* [[Removed|https://github.com/Jermolene/TiddlyWiki5/pull/4245]] inconsistent shadow for tag pills in the sidebar +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/4247]] regression with the [[field Operator]] and blank operands +* [[Reverted|https://github.com/Jermolene/TiddlyWiki5/pull/4249]] erroneous change in v5.1.20 in the way that lists are stringified +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4189]] the ''Open'' sidebar tab to use the `tv-story-list` variable !! Node.js Bug Fixes @@ -39,3 +41,4 @@ This is a minor bug fix release for [[Release 5.1.20]]. * [[@hoelzro|https://github.com/hoelzro]] * [[@markstegeman|https://github.com/markstegeman]] * [[@StefanSTFG|https://github.com/StefanSTFG]] +* [[@xcazin|https://github.com/xcazin]] From 3732c83ad476fbf8d2c0536da715ed9df456517a Mon Sep 17 00:00:00 2001 From: Bimba Laszlo Date: Tue, 10 Sep 2019 15:16:06 +0200 Subject: [PATCH 59/80] Fix GitLab saver Base64 encoding (#4255) --- core/modules/savers/gitlab.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/modules/savers/gitlab.js b/core/modules/savers/gitlab.js index fcb3b51e8..505face43 100644 --- a/core/modules/savers/gitlab.js +++ b/core/modules/savers/gitlab.js @@ -71,7 +71,7 @@ GitLabSaver.prototype.save = function(text,method,callback) { } var data = { commit_message: $tw.language.getRawString("ControlPanel/Saving/GitService/CommitMessage"), - content: $tw.utils.base64Encode(text), + content: text, branch: branch, sha: sha }; From b5e4cc0cc886b02340e643a2cddaeb8182dd9f0e Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 10 Sep 2019 16:07:36 +0100 Subject: [PATCH 60/80] Docs: Clarify reveal widget animation requirements --- editions/tw5.com/tiddlers/widgets/RevealWidget.tid | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid index a44a84eb4..754f05598 100644 --- a/editions/tw5.com/tiddlers/widgets/RevealWidget.tid +++ b/editions/tw5.com/tiddlers/widgets/RevealWidget.tid @@ -1,7 +1,7 @@ caption: reveal created: 20131024141900000 jeremy: tiddlywiki -modified: 20190704145627537 +modified: 20190910150520583 tags: Widgets title: RevealWidget type: text/vnd.tiddlywiki @@ -36,13 +36,13 @@ The content of the `<$reveal>` widget is displayed according to the rules given |position |The position used for the popup when the type is ''popup''. Can be ''left'', ''above'', ''aboveright'', ''right'', ''belowleft'' or ''below'' | |positionAllowNegative |Set to "yes" to prevent computed popup positions from being clamped to be above zero | |default |Default value to use when the state tiddler is missing | -|animate |Set to "yes" to animate opening and closure (defaults to "no") | +|animate |Set to "yes" to animate opening and closure (defaults to "no"; requires "retain" to be set to "yes") | |retain |Set to "yes" to force the content to be retained even when hidden (defaults to "no") | <<.tip """<$macrocall $name=".from-version" version="5.1.18"/> <$macrocall $name=".attr" _="stateTitle"/>, <$macrocall $name=".attr" _="stateField"/> and <$macrocall $name=".attr" _="stateIndex"/> attributes allow specifying Tiddler states ''directly'', without interpreting them as [[TextReferences|TextReference]]. This is useful for edge-cases where titles may contain characters that are used to denote Tiddler fields or indices (`!!`, `##`)""">> -<<.tip """Retaining the content when hidden can give poor performance since the hidden content requires refresh processing even though it is not displayed. On the other hand, the content can be revealed much more quickly. Note that setting ''animate="yes"'' will also force ''retain="yes"''""">> +<<.tip """Retaining the content when hidden can give poor performance since the hidden content requires refresh processing even though it is not displayed. On the other hand, the content can be revealed much more quickly. Note that setting ''animate="yes"'' will also require ''retain="yes"''""">> ! Examples From b8129b6e369e374ab94e694c5a1957ff918cae8d Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 10 Sep 2019 16:21:37 +0100 Subject: [PATCH 61/80] Update release note --- editions/prerelease/tiddlers/Release 5.1.21.tid | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.21.tid b/editions/prerelease/tiddlers/Release 5.1.21.tid index 05766fa21..c9f2dd580 100644 --- a/editions/prerelease/tiddlers/Release 5.1.21.tid +++ b/editions/prerelease/tiddlers/Release 5.1.21.tid @@ -7,7 +7,7 @@ type: text/vnd.tiddlywiki //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.20...v5.1.21]]// -This is a bug fix release for [[Release 5.1.20]]. +This is a bug fix release that resolves issues introduced in the recent [[Release 5.1.20]]. !! Bug Fixes @@ -25,6 +25,7 @@ This is a bug fix release for [[Release 5.1.20]]. * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/issues/4247]] regression with the [[field Operator]] and blank operands * [[Reverted|https://github.com/Jermolene/TiddlyWiki5/pull/4249]] erroneous change in v5.1.20 in the way that lists are stringified * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4189]] the ''Open'' sidebar tab to use the `tv-story-list` variable +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4255]] problem [[saving to GitLab|Saving to a Git service]] !! Node.js Bug Fixes From 42060acb43b329036b7436ee154bf605e90efa8e Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 10 Sep 2019 16:32:30 +0100 Subject: [PATCH 62/80] Preparing for release of v5.1.21 --- .../Releasing a new version of TiddlyWiki.tid | 1 + .../prerelease/tiddlers/Release 5.1.22.tid | 14 ++++++++++++++ .../tiddlers/hellothere/HelloThere.tid | 2 +- .../tiddlers/images/New Release Banner.jpg | Bin 32772 -> 29896 bytes .../tiddlers/releasenotes}/Release 5.1.21.tid | 5 +++-- readme.md | 2 +- 6 files changed, 20 insertions(+), 4 deletions(-) create mode 100644 editions/prerelease/tiddlers/Release 5.1.22.tid rename editions/{prerelease/tiddlers => tw5.com/tiddlers/releasenotes}/Release 5.1.21.tid (97%) diff --git a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid index f20b8fcae..5ceccb6ba 100644 --- a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid +++ b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid @@ -5,6 +5,7 @@ type: text/vnd.tiddlywiki !! Preparation on master +# Ensure the new release banner image is up to date # Update ''master'' with changes from ''tiddlywiki-com'' # Verify the version numbers in [[$:/config/OfficialPluginLibrary]] in `editions/tw5.com` # Move the latest release note from the prerelease edition into the tw5.com edition diff --git a/editions/prerelease/tiddlers/Release 5.1.22.tid b/editions/prerelease/tiddlers/Release 5.1.22.tid new file mode 100644 index 000000000..78c9407c3 --- /dev/null +++ b/editions/prerelease/tiddlers/Release 5.1.22.tid @@ -0,0 +1,14 @@ +caption: 5.1.22 +created: 20190910152413608 +modified: 20190910152413608 +tags: ReleaseNotes +title: Release 5.1.22 +type: text/vnd.tiddlywiki + +//[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.21...v5.1.22]]// + +! Contributors + +[[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: + +* \ No newline at end of file diff --git a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid index a6079ab1d..8eb1a6672 100644 --- a/editions/tw5.com/tiddlers/hellothere/HelloThere.tid +++ b/editions/tw5.com/tiddlers/hellothere/HelloThere.tid @@ -1,6 +1,6 @@ created: 20130822170200000 list: [[A Gentle Guide to TiddlyWiki]] [[Discover TiddlyWiki]] [[Some of the things you can do with TiddlyWiki]] [[Ten reasons to switch to TiddlyWiki]] Examples [[What happened to the original TiddlyWiki?]] [[HelloThumbnail - TWEUM2017]] -modified: 20190809141328809 +modified: 20190910152313608 tags: TableOfContents title: HelloThere type: text/vnd.tiddlywiki diff --git a/editions/tw5.com/tiddlers/images/New Release Banner.jpg b/editions/tw5.com/tiddlers/images/New Release Banner.jpg index 98cd725194266403c14b983f812f4af6aa9a699a..9ce97287501a7f99360a497fced36f648c2473f5 100644 GIT binary patch literal 29896 zcmex=sI5{}ExHx(Fc=&jQ1qB2Ig=Iv< zM8rg7w58>xrRAly)$~-ARrSPKf)lxz`(!`aw!8GFfuW-u(Gjp{J+J(0g-vPfFXf_k%33RfPsa9 zfgz!Rfx!W!+(CeWiSYu6g@hd#I3!qj8W;o_82A_%o4_(WOkj$Ep-DO`a;D-Gv)jIE zhmsl$91k#XCTcoocnK6gmoQ{!I_$fUS8;Xiyq=?F@tO@SrvqjsY`Zt3+_>q~we(pz zGqYZo-kZ9O-EiH|bQvFtm3)Od0J zi(MHdr7~H{4o%^g|8nOs?qJB9Z|m$LuzeP{+U-}fraZgRIO~*ZTk@vEy5b9TSKLn9 zEqp%9<%QuS@f#1{zEmsRrI2v;+{Zf&<_w}+zaE~P_Mo9TcZ+%P%ks?Vu4Bo~MvN16 zJih#SaZ|ixUd}?(j07jHFLL+x>Bfe0wJ|R7`D*UOcz}g#j?AUc!49mdDRN)*fp3@(g)N@(G}<8Lec214iKe_Bfx!=Te)KW2 zrEQp0ytVu)S6+5@$8%4H1FEn0YHU7qZReTdx!+k&1|2GiTQu3o^3dZuo@|d&Y;Rl1 z`LA(Es+pwYR1kBA*-M7ud6n7AFAi1v&s3T)nJ#_TeD}#YWfys^dzaJ09B;?_x4qwN zlRsZz$M2V&WpRgXeaf-AeI+Nhe$uU8 zvwW?h^CO#|O)-_+iQ#thW~;7>QP<3O`g6k4=G*j3Qe8gx^rt>Qz#w1qK2fB*F*}>% z)uIBQU2_B0ecO*5#*G zzu7JNPkTb&`rFH#PKKmfnzdh?WHZHFZo-Wwjz;&Tozaf12UDXNnAzmN{Qc9V;}aV6lCne+3w>{J?({nn%*5>hq zFY8u5+vxkW@=9Oxg2%q!{PyPsXwT`5UDU~L**Njosnb_Yz65T*(;Itxp{1IbxLV9q zS?OJ#4{c6l{N>H&jr`L#|NO+M`nw{3zWaT_yzA_9@l&6eH_ex{_xlpLNH(WT>#Lz+ zaPjSVd~=^Kun=QlcwT*9*7~QErH!E!TW#=jnSd8_SFRJ*UKoDzSx`#p_KGLbe)lWx zi(c`1RQd6Kk<78<*QXn`RD3;=bWF!vhQzIrh?FlN1b@0@2$=~?l@9cFt=&wOJFwbwPgR%m%Pf6cuql4%ofYizu+_`v#} zGq0n!3B8M-98vbx-27>D^^Ko%x(|oms(ExVZ`a((lIxsp-z-nQe|6osQs``15SvaZ^|2-B$}^)k8O_ z6ur{*liI>Jcj?21lHNB_c0pTQ6%smQ`%cYn*{$W}!>E73I$ccK$CTrvV)67W!}7WN z*n&N?j~D%lYh1jpenwD4>Mf=_A&gsJ=s&X5-CFX6b*aK%iGn@L6KfjM(r=ZOUz#GM z-Ow#AKVkmV#j@;+c6*=Q^vFGOrkOs&#jp(%78~69Ew+uX_}uHuCKFUP&0Bq`IWByb zkLKf^5W^#UDoTV%ZIRfj_2WU-ui7J_KhN9OP2f4HdSkm# z^3JD6+?yqX`yMYYWj|!IQLOMzZtgC>x>G(s-?c28W;MUL@lja63bO)7>Deu9(+_=G zC%BZ$VcVNoQ@7c)9d9VV+- z+2*bPoV+Zf?XtgJ)w<1#IqY0d-ktC{C~rB%YGp3SY(VraNRxzOy-Udf6-EV$*P0rmAjke{RuX9rMWH*U%`toG63raU#I1>=1a^upu%`dNWDYiTdy~WoU zKKtJ5t08ZmU7f4Va_w`z!#oO9Ug^7FWhluqM%$;oAu?jCRILv9qJZsvs!k3^TugAHY|4Ok%{i& z*4et>YtOVDIY+Htt8{Ew?X&J?`Jw{NS$ zNtMY_cY^yQp3U8N?OWFCTSZZkxhr@Nu3dB9x$cpYsnp3A-QmHW@j_BM%Wp=V*A`#- z!K5(lRDiln07u}gX^Yyq*494V%hGBnq*}u!){!;WNLRF)D@agI*i1l zK5ei%@A`CRroKevtZ5r=-E0*SS{4y^FY4^HdsA;H?Nk2zbe8st2M5=$ZkLMfS?wK} z${1)gWrLWs^Uj%1Z+xps5}LAAYRVChiE;BYODogfaD5ZkcCOTYy14(vyNR>UUw2f0 zvphCpztE&*%QVBcJziR@F*D01>Zbnl-+$ieWV=`t#?Q^IUAV1EG$&E7bn2e1E4_`4 zKZ)*N(66Q&pEhgSyuM8n+s>|DtsHb^`;;jYg6`VPU#?jB_vLr-?`4a2t!;mH>sI9H zz*!9pXU@n^iTUEN_L)SR;*nZ|=$zR`m!fwqHkV=aIns6JwO#KfpR$Bdm*C5~>viIS zdYIW5S(({HpDDd>J+)z{MNqPD&!Kxk_b2AsUiRiSxbs?i_370i;aeA-aow z400R@gWJ&H1~iiZ0|NtN1ITCw2?dn|9)|-A2^mBPq|^J5O&aF(hM$U z2W9icEN<4vW;LV>Rx{5_%+Ga;e0@dY^Lg`y`U@ndS;mKU92UL0V7ghYRaf@(*-O?f zJF?U0{=%kbUH1+=o4bYM@_e@JD;H$Celb{HzSUB^>x$A(gT2|ymhOBmch;C|ZiHKC zwQt(T$JbsjTDtSpUtRg^#meK_*B3BPx80sl{CwL&3(*Ce&o5fu?)`EDUuksXnXXNi z=4x9mTkK8m`tmAa$J;4qe*Q}H-O}@Mt(m{%&5yR3vB#t}OE*QPMnzYqynAg|^{TIQ z(e7J5Mb%RL61o@9Gn_Pi^>oJW-8#p3xr)0y1ca1!l|4Uid%Cpp$poV)Cl62N`?(cQ zHsnle5V)h^?40{@Z;|U3)*TBcO?}RsBkA|9C&~2E%RN6^6sIegm)u~sDCs*LY|J6S zyK5N(1LO0zQ*ZFaT9q7YU|?W)aOqz1>`N~s7}RDcFxV4{LuODMPE%lDU}R=sP~E8` zz`!I0isghO6AT*|7%mGO5Lm&|R?rtA%Z9 zaaUrMKUb5@T&>nt`aUDJHY0b66) zOLH7&#T77?a#}4>3{A7^=y|Xt;|k**4wF|;=ZY1EEPZb{Df!hwQSG=s_q2k{tVCU@ zSZ?)Y!PUi6o|}AGvMg+h=Ik4Xw$J(6amHllWP^)amcDgPHaeWk^DJnxm&eS#ncGav z7*9*(#ypv9zLY1Gb5rAuN#|#ouWIAGa4?AD>RpvXsi`gBLZ+x{UAmBbYAdUzs=6TELFkbuU=fAL}_T5qNb{*0|STr($iNBCP}p{3t(ViVyNpA4OHuv z2?m8X1ONXc4C(?5jI0cdEKHyb#s~^?CPq;2l!0A9P)JxrR7}CZLA(H*(HI#RnHc^v zJo{&@-L0{PW%ulE!yK`TdD9)D60g*SaR2qWmUTW_b=#lw&%+&dnOAqV(x~u%mycAb zUexQ?%I~IklFD&@^{PwADE|1j%W&eD>kR!ixbLZ(7 z+($&R_Uju>e_89;*>KvnVS3o(c<;zrQ_gSSB(?MTX)#&zi~kvlqkhfm+Oy_vkVd_n zwR+m+C2fzn!~WGBGIhFtU~bsPF#UrcYwG1!6-m#CUMCd)eBPSQgcA66_B-?}%Y^75ig4H;2CrOHn$ zlpn|({i+bY^{yAk*=s@b^uMgXTptiK{nhE&UW|)QxG_7$`J8VvE8`EJd^)mb_VLM% zKbLO$9r;YjE2;eSC*`w#uTqrc6s0@j9_usa`QN@-_&8^l-uDlW#ePjK?40Ct{`E<} ztq0}jTbxbG<(=%W&M9QHF+Xtqf-hlLY-==rM#$?@mAb=_nWW&XAo-An15=M-5p-nvQJ89dn4|v_Aa&y z?mg7oJ9)@>Ulo7 zU|PtDYf&1DSYn-Q0e%-B2YipEwnk=leKG_Gy z%S!h?m^-sDw`$kaD~E5-4{-Ze`}Z|Tv{ zpoeA;GFn!%&CC><6~p2YnsuxAS<~Grlbg)zy{4O;PYuhdk>}_+xz74=N5$P(f0iZt z{P)UzkSqSZuGw4mQs1QfAh%`qSyKLgmh297Jy-5`uII;=bE~Gyl=;k-mbIRwGV#}+ zLfI_VmW8>F?6OPOMLhes=iNTvE!HQq|EP=qIOF&@FG8(l@p-M+5_eXuT>Y~Cg;d<^ zZ!e!_teD*KR%Kb)M9W#{1D>ysf7{URCfjJU(r%5^48x|ohAaG9TbLTlJK_GRlzp6X$e^9I}YatU_ zJ-g2>+SKl@QMXxj`c?JcsWVrzPs;rxy?60cfrPCFKNQZ^MX{dS`D5p*jw4KaF5Ejg z@5Y<-isxQ8UM>D3m-dSNhhUtz%H%z&O7lk@tJ?jQ{O1@t7blq%)OI& zH*4puZnrQ7TgUose48feP0E~`eS5e0#GSqBCuKD^g$t#fd1kt5N}OQs@?#o8dTXpp zF7~b1f2!k3&lcMWDJF|9=Q&n}_wi1;Ui5Ukb;&+?)h|DOW#?WtpZO%9OUZinybzy@ z5vM1w4S%FsQk50+d3C8k_P#dGU(-|$PHkFn?8UUAEcGVm_W9@IU#Ok?cy9jThV!Q@ z3q#KA4A1+1E^n)O&C#XBg8h4@7QXP?!LPKi_to`7d%AMB`cK-zU7p|eAuU^jZ`&>n zx47IFp=*xC{n9*gXTMB!a+FfdkC;;jnvb~J>Ynn*+F!Kih|}Y($QF2U0u9)`V_~QbtgB^G&*Hkn?cy(^t_yYq_y^RrSo1C$^b(H?LlzbouUQ%Y$#UGajC8VNZGgk?B+F_nO7# zy4U*yos4$dX;#Laa9PpSV;XbVC+>(qFU!uymoHzwek^S5lH|s_6?;s@Wt26u3-z|1 z-@LeZTY1El*2r7Zd)+fWvF1NH!u^@GnWG#)6ZUeDcSC!@lxy07$Sn9$Vf#>w{tMJ>If z4n!Vq5<7GA<88IbZ{I%Otq!_wE^|z~IJw)$&Go~X@42FnX82tSHaT4rC$5ujsdMLp zjU>;tho7aASwyDHtJdf4SoP)uU+mgfpI%igpBf;t(!$8G^6`vkj_n8A?xdHBF=zkb z(pqm*^;l`!{YD}Aj=7faqSnqX(@fY_@;3cIg^Zt7P?pq^m#*`xpeD@S*NAK==iJu0`z9X`pL9c(!31fQeS%OY`Kwv_S} ziv6PQvtDZkL|7Ecx1UOC4hovzBINVb>%7;SnmFsDY?a*o%4aQk0(Q&^56ikab#?JS zmnxo`Ps?rA=Phxta17Y_>HI&*RTW>mW!YSFwUdtoKHc+HTC4QrSDmXptY$97ekr$d z*9q>(JD{~ObL*9pOIP=u*y5$j6Di|%P`bSJRye~fu~~(@x=*xU{XAW8HN4@}A&#k2 z3Qsk6?A>$T`&)$7Hkl3qwLANlBrQ_$dbUugFnreKX4x~PxlB{rrkl>~JHC68&J4*5 zLGDUT44YoX>-#PIY5b`0#(kUgxnaM>1yeuBB)-=xnCv`Jry(`wtjhwc!nJwQ1@}97 zo*Y=g5^uZo*6r}7t5#>EPf1)6$z`k9tQWG{!6~IsP(Hs+Z2jM?AGwXz?-j#b4BR4e zKlO@Ux#)hV_|UhxN*1dp#{FEhTs9!c(36$-xkXIv?Ica1dmRUzc5bznuyp?@pq-s` zIPgu^>-`?9W*j#Sl)bHa>m1 zNHRX_wQgaMod5p6lRx*KXcZCCDm?BQwZ(A0+#deE!nAWjfjS?&R{gOR;#CT>pTlvi zXY#vMw`OqbHG7#&N<5GuC0c%G=Yp9Z4l+JY`FO0yJ%I3ae3Zx z9!r^yvk63$%-+-7o%q%D&7A4F(rk<~8U8GPTv<;yOuxwH-_gU)wJ3a%JwaUD9_UeYrV{OJh$Fh{%L}$FcGB^46;;XW|Is!NL z_xGk-{+QVFv{i4d(4Okwr=CpgOyX8#-H^MyR&+blKFcY2THhxm@Ed+mR^yhGj})3W z@zn2YXMc)GyQytE6r`58ihWgQz$xtuOSZf|o@ZsatK{awe3fgaJ^vXVU)_H~cGoSP zuankko-1E&IDMl3`RS~#VZln5wH#kd_q#k=z0S*Cpto9G&8tgZ(`HlbhKUPegYM1Q zd2ZK!Zl@a??x?10F}@^atY7i&zZN8QN ztx9fx&bOASy9AE2so7Z=H*@AhhCbc8XKwT_6Ejws@83VQw7z|_{N0>S-A_e1mRiiu&8@(c29t{R#A*1KZu|D*p{JGaBG=Vj~fZo6%H z;kbDh&y4go;qTo`%EPKwRz-X7->r6i*}7F(y~zwpKOgBQKGM=!KSf=2?(JE@mzobw zNnS4atK^vHvc=~LZz-|(MG9{{7!sNGVzEK*uj%sU&vw>T8{M0C@%DV(0OLL$hZMI7 z3Uep#N?U(#)BJ*}={dJIXq(QNJl~+>s_Wtij#u0Am!~```!MH2k<2bztrw2lKAtJL zXYUtzVynn<>#8cHc~j4(Xc>D)UFPUK-^Lykdt3Rw%wLvy3-+&-JkGf0v&FNG6Fw#S zOpxDRUG$$JDCMh6*}MC5rWC}uN2=up{mu7!v!3hiZT;R2F8i%4F7ZrdKj>-Qd{Osz zu4z~AWsSY&$x5f$4R5ELwC8@6KE1g+S>tMvNkdcf9|NB~X9D@fN&+`Idl|%RsL%Nx z^rY1G-Xi;Dg&!>5uQ@a`YTv!!j(x5Hd#7C4^NT~F!y@ybw_)AE8NP{&OAeX)%{XOt zd756l^;+p~xATpzS*|%9y5jyS_Vw%6_f>p+d_3ckqkv1O&Kvc-C2!>B1O+@ft`-(( zv-(M>_tY$fhQ^1i%*XrVohOyESDC%JZr*U_@y|CwUPsR|?>c|umcv=|=I+j<9tlU6 zkB^UkeSG{YujsbuM`{lr$dwdZh!nZcU?mV6if_;@*+vX76C|ElafDk9>SRgsv?^Vo=2 zVv`}8kduU_OjMlCl8x30lg?Gnn|JKxZV55t-j65GMebiRadD*Xv&ALv%;e-MlB<4v ze0=<`{tC{;p0~Za_>A6W9EebsnX+u^#K^|YQ~EELRps-u9hH*wse1UiHp#LFLl)%uKkB^6CtxUuP=inEKTfk|-lMKOos$%_I)l0yqNU3v%|yI{6w_|Nd|mEqYd)kmZC zEg#9{X&vq zp)>w71oOWZO|rau_}9_QyW2PX+ZYw`yq5j7=#u`gAO5Ync>LFoI@3k{Uq6O**k4ya zaIMY$TK}c13pXA=9a7oEnz?C1$lk`zC(QkGrim5Z*)@&BEbz?LhxtLLr z{=U}vU+n$^*OuPR|HYd%_XGd0(pBGl#dm34{m<}x{l5!qQ~ooo`k{1f^ZBR#zr>dN zuGigl_4mnFTQjQ`cPuXJNzG_g+-Pv>a&C9_=FcxvVHJt-`wH|zOkKRWiv zoYzN=3r5EgfosFAld1BZ8d_MEF)vQluebIOpIfpU) zl9|uv`DV%Ce%^*t<_l$o-Fa^N<>oi@)qjP4sZ0vbX3z1K&J#bHCEal;A~jO5%~|t= ziKw^m21(OIwW_6hI}a#M>pl8%m&PG82L7!*A;sFR%t`JyJtZvTviE1Mo^eiP;*|2q zUTd5>qmOrs{%3epf8G6` zw>VqSB+h`Jxz#GHS}J=Hg{P-BPN*N{z3 z8Rd*mv|coJcb2_*Y^rDQ?%y}Hwv}rlZ|qqr6n;=?uWSVu{}fjRX^W!cXS#M=e1Gp= zQl#OrK1-|eFLz&*cbqhqc5;{{RHnQqwDnA6$I1zx+Izhx-fxVOIp*CxS9R(SPaE#T ze~MQou|!W$bez`bz}zZ(_iJL6_uhp;FC>f^`m8&YCoU6+DJ?ov*R$!UrQS`MQ(Hw| zN6JQMzP~SWV!;WgNk$@{mD=wuu)C^Pp4`>1&U3~1%%$f0;lE^i%;c52Dg?LbJh6z{ zblv2|`Zf18ehXAC=F6(Tv&rR6_mP91%=`9*=bbLjvD$VbB~^X;+$!6;jWgFIXxUD1 z=i^-cgWEsn+G`e%#VwPMHU=4jUL#N{u(UZL~>$rJ09NWra%zAgS zt0CiK8^@{B&sMwo@?P2CbU-J)WxJ8b>TS=BL+=FXOuXaKw_NL0f#V0It;fG@jXwOJ zA#&BX`gOZzIho1iMgLrO%%V@@`@Bx2(u%nguRJlDBN(=F@loAB-~G#s<_PjkJD#c5 zeQv2vDpy2tLe#o>rV|dHXX%vTmzsOMQ#5x+%qfdhy`#O+*Q>s>stpz7eQ zbz<{mlYW^6u}5xrCwrIud7PW6MjWT>mW3+r%2#yuzf0OaPrHsiy`YkJdd`z8%SzS! zSRNb{UA(YOQa?FZIZ?FFVrKb)vu=-~L)rBO6*oHMUAUuFDEeB?XywGmfv$=k3a=S{ zyKW5r7PgsmCCaNAmaL0eUEWnGv3X;fy2{*N{^urX3O-I+w?tHVL)X45UtU{Y675wBQT@-r zXKrdRVaC+E?$xYn>vWYWd1r>noi;AyuZ)V;4b)%8;;K8FQ$kxrs6T1Z)rB_fLOtwG zMehAmV_ubgxVc+tqOgEWYP06?RacAI*4On)^GVKDm*uHs4w@GTsvT;@V_&(nPnSD# zZDH2aC_TgPlMBObe(mpMTK>-Q*=wKLl}YihqrP}~drzr8EgKeRa9fehFs^$yd)L9F z33*&nSGN2y&^DUnY~fIRcS2?8!qiEb!fU<-6nqR_qN}p4G00`^ocAYxJFMo7_n02O zwTJu3`M9}jy>sqH#+z@5*C_EcpETxi2KA0yu_-4{5NMLsOqJ}V}9Uv^%m!dpdO$Fz&t zRYp2_J72#&b}xaeEv4xZr+F%GU&QLj6!S?Z+ETikA`Yj{D0aGPndDqh&cf)h`sMs4 zwVAhf7Wu!8dNXIOzVxrStvb>f8&9}0UIvcod-^Ge0U%2u{L;=XSA$z{FE zLlx6+%hkIMbpP2}B{M%ctlq3s`y#7!X88M`@21pq$MxuMesSCU`JVbWtQjlcROzSx zE%v#ZdCK11Wa(%3{HH5FzsmUKRT;$`HFLYUxxKP?cE@4232sVuAGYSnx2ya<>*N-4 zMNlKXfUR)9n|2jTN%!kAj*7I{i>qAcS*W)QvuVA3pryUn?%9n=EDaw;@4Ub3y-ci6 zwQk8Wmwu1s>1@+Ct~5MzseD%d$IyLzmx^vrx9V9man84{UAj!@Cp)o~{#zl@4KZ5hWtWkrxk_>!NeZ%ll2X=(Q1+g*2S-YKmOe(S${{oFgD zWoEVhUh&pj)-XiJUHp69a&?^VOS1_!ON;;LX0Co)6}aq=iv6uEdH20^{$BLTzWDFH z=cDh@-ce?g*WQeEd?{?He;^>*s-1ruuSM*E&uVkN@%Nfpa_!o7MK6ELi^P%{!ls+w zNbbJ2?p+*jhN z@kr0$%oBc{2VtGOTf{Zfy319Ldaqw4!PWh)?yJOq2HlJlL8%&Ti$nS^7eDmf&K-KI zmAg=bd4qN6)pv7s%8iV-2o6FFtW2b6)SqSzlYrYL2)4y7x)r zAWy-+m5K8{ckQbXJi8-5zBE+x)#US4*Gw&SnQG=q1jux%g{+bb4!`1NOlKVoa+I(r_6?622Ol|Q-OMYMc+ zNb!S>YpWFIzuap6d6KEjOsPH!+#PCSt`DR8rtoJq*%6RS;jRW~w~u77K1zS`-Oi(&daudd5mqwAKvEVnzn zQgOnaU_!;-LH~F50<>&v6~Q%HwHToVoXVLl2&c<*&c~xGpo2f9|T=7-~kBi3v z=3DH!sS)XtBIh~#w5PRBs9LAp^xSX5W8EtUk9fYXvamDlIK(>8( z&4v3Wd%rHvE;EXbS@onp@Z&BiGx6_XJqLS&L{Gdu8hJNwbN_zqoV#ZOuN5o z%hLZ0>fcR2d7oU!%sprQbeG_}`y(2gmS?P1Jay0hlGeF<=bptavJd3^=2}x6ct7^M z@H&sinQVWqE$TXT?HF)CdV%D-hFTITNTVJA@JiBOB#BXH@ zrft&K%9t%y&-~VRFHC)!z?^HlwMu)lKCZ7`xz>$EXJN|mq^ti{7v#Q8I@3IB*44{O z?%RBdA5C#pj&(`yQJso^)`1thvNlGi`DJb{VS9IzKT$d zOmy)Sc^c{V;M)3?@n&<&%_A(h7e8QI+8b`Y-A&-yv(5TDE()atR7~7`+|jhvBq6Lw zVukgGo(Y+3H`bo~2aWyC&3oMkv#A-R#U? zo~wU{zt&A^5ZQ{~hf6s8XZ7p;B`ulEEhl;MK)`{?J}s*?S!4vt7Q7Kz zE@;#0$o*l<#>uzD)kWEp`CFau|7SS1u9SOrX%}ZtzJg4W@gei~OFWJwe3Dr3`@Pj$V= ze}=zdDu24V|LFSWGDPODOP%sNFXo!NrT^@$dQ023bScS~xlK@Xe!tpRz+;-Q%J%Eb z;zmxzQX0P*zRlV>HAX~k(^Q+CQrnMRkgvYBd~wI4Z5+8*PfJ9r2xb3Wn9X`qMdy?R z--FCRcRq&Y6Mu-j4OqLyY;DkuIlh{*Be-%R4mn^@>8rA&ONZwrj+meXH zOFm3SjDi+6=ZnKHvKQ}`l93J%Th?OWU#fXiIo-}7ZPDJ%-C@~t&T6`6Y;F>mBPC^0 z{!Q#fBRkWv8$3={Pu{!Uww=@7@SmZuuu@saU{4SGrp4-Nt$lOTvwI{SIAm;5;d`a# zuD;>Q_gQPt&Y5tyqv~ku$F|ik7R?iX^`KI~t$1V2`>sn5B79pW?zWn!&Zy4A?|W_M zilgalH}Bq;j9Q+=nFTTFO>@3H|Sy$J+3zIeTVc5x%T;E&eD1B@1xn-%D%seVx zg$L|;v(_Bh^11p>*M93Q@81^(Z@lOKujEem@?(oU?r}bq;VD{@7r5$r``YP2+gv`V z&VCpWQ(ACXF+zz&@6O3*zAp7=vO47Q1M2L1BVOLvH0_Rh#BYB$&(o8iI&d90TRN$A zq3D#t!UXG8v$kKpckx=G`Pyq!*%LA=4molin!O_A{Qk$E_tYhutzEwT@!3+rTN=L~ zn@(Lk>%oP5f!ZArA>G+L4g%7KpWi$W|8*oy+(?UoYsW!m6WyhTWh)ha_gU$Gt=_tI zbIa~|=^Ndvr7kPE<~lv{eDXHLhBL0Kpx{5l=DmNDpH1Sf)cev_e8A{}<@uMk<~eo| z(+X|e3V7D|1*}aA`?O|hX{Mg##?@+l-~QY__j%1L5p_Ok+nY;wZMvco!7%TPHpAi0 zgSJNkwr{=kMDO-NB0apSeeb@P%peBlXDT)paQ?zda6rRqBxCthrx^>_-` ztF_N8pGq$IX}Z~5o{!_kgNe@r4v0xxRL$+QOgjE3bM~#InzQnAA4e|G+;v3zyi(UK zWplf=8Bcy*3+b}gT<~p=`=m2l^pt~7bL?0;$++x^Xqc9R?6PKS0R!XDwn}@qwLMg7 z6>{a-liwUQuQglr=#vSell)jilKlNVL^Fi0CPnTzq%T>qgFzurrB62 zD|vnK#Y+dUQnk&8T@sXn_QpK(3-#kS@5Uab5z zds%3%*XK?#i?@;GlBef|)HzE}3wtfIL9xP7)`lUV;P{SfS9ezi{EXdQZtoUy@%2kN z>3xP%1+Pq(a*2p&DcpF+EM~r7_{(CI{|xHMTr0l*)~=h&`(|y*F3&UPg*HF(;hFU% zw*KPo$`e;#94fl>*eM}k-tCy71#!oa}8_0?pCO-kKl)4N;h>q6o?mqvG=xUx}j*ShBxhrWfm z*ctUTH^)esEjsd_Vbaw?rAU9lp0C0(O&JGQ+;I_=dEUP!?!w(E@}YYZZyWz-FlAl0 zIJ3~o_^8OLH>=OIt~Gy?Ii3CNv?W(dtykYP;#ubrRD5V})4Kfixo_7_*s{rji&f%b zFXzb+hWUz~#V>8&GoI*BsrxE=REb||Cg1Fw+-3c3_iP^d2c)F4lwW&O#l308Ge1_- zBfH9GggGl**>JG!i7ML;^KT#9XWZY|=dklZ*jN5HT32sbye+vI_2l?=wv*G>hU=+D zD004)RPU|dt5CE#dsd7K&wI`M2cdJ9Eibf@+Pd|2he4QXeX#o8R;QAPMY|_1Zu6Y3 z(>?9f^~GHL(y#RDIb7GWq_`#)xmTaD->}-_ujr)e?6mf${D<4>Y$jA>M5`{{5TB%Y z`IWquV(R&NxA;5R!fw@bv#U;+c1rvRlF*lOedNb>VwtbSonytv{%Fk$HMsQd&Wn$W zI5uDZ+VcBo{)PNfZ|$7)H8UL-FfeaO+A>$+nEpB!HwUjC;aOi2D`P$G1)5e_?AaG| zFYwyT6)(lNgewoBPr%rUW zcC}=0PgC}!9j;Fp->Y1`GilGH4VkjthUfhJo|}sN+B?g)Txi}_4la*Bcwb)Ed(_6NY+~wlLmS(ihMvZ`2SjIYvps$J z)%K|civ!ok|MC?|<|?SV@-Le==EX{j1>2_UoIb*2=3Z;K@pi%{8U3;>&svE+3}#l# zo-Mh??|#ZwG1B8}LhJp->#zTsP}U?8U!DKi&sQbz#i{T@ndpQ`Rt7QieqDH*VtBf0 zj`Mu}wP99G)3)yLG(5w+W6`V}jUA`YX$Q9ZZEK2OTDO@|{M{9^U#wRI4=SxXwerZ3 z{J8C|?^-`C+wAe{<`jMDo)3*teH&Nantgiu%zG)!9dC@PSqt1&S&MMJ-mAG+cH)}M z4{_6Tvm~E(YfRkS<8srKr)$@6oA_#b>a1hh zvi^ys#>)p^YM;EF^z>}ut7`_|RJXr7dm-&cmyJEpt2etyow;u9x2kEJahi)$ zCh|!}Bs5<<_G<6a22q=+r9EoT-YjUd_~G!&X4N~-7qf0AZD>3-Gh|Ood5LfOis;kA z0u=}B6s}$|7c2Yr%+y%#PvGi5#(opmsL2>jJm$gB>`@Y3G4sBS_bY>UqB@f%b%@qP zgdCr};K!`U_}2A8_F}M*TtY;SZzs6pOYlnrJO; zu`to-Zk*Mg)w@=GVq0e#TNJ5#w~$Yiud*QY$cu(M2X=H{Q$1kgQq0s;W#^K|9@jBL z%c8$hZ9|uJ!|LwaE!(&E?CHt6?cQu{dzwGa|Bcpd_hxl|YyKencUh1AJ$!ZV(Tua4P zM0cbY-B_b(T3Vv8Z(Hx2MFl4oE#W;BxMTOmy|MnqqEGL*DmY0x7Z-=~uXZeXHP?xi z`}InDuBPf6N=^qOR}z5e4B&(PrV*CDlzbh+?Rbe&Emj2(W#F<-fEklsLuGS($VAi z_mw$o)=Ap!OAxd^E&n@s$JSPZ$mBld`}2M|+V)Oju-fuCzwYoNi7hQV1^c$86{Zo{!1t!<}RbKRdzY}MjE6}#=^I}w+; zQF9yaO*-zgYge7u?vV2E)3!&1c2ECyBt7xHOlzb{zRIQz0Y-k3g~7TnXE`0atI8Ta zYm#3`$gj00=cS#_6XA2LlK2*UIk@js*0kRto43ULRXIJux^Y35ND%|0SC>-{&zE0k zG)^q7K3cFar%Ujz*2K4OBLlLFFR@M5n%t+vsxm8fPjv3i;K#9klUJO0FnhJve&PDmJXV$_q%&~z+a)Wt6#p9JY4#!_&h^?c-pIC`_Mz24-fsi_c_L)(OLTH zzVla(PpbUT)phP%b-RL2hHnA;o>`(3m(QN~W7eeD05=JZM|RBIu3z<5?95wbD))JB z0^{YQEAE{9uDEWw@7~Gp4m|(%vs=^b z<;mmCi~TNtxg8yxYi*O+rYx~Ke&g~}HFv`AUam6=y?*oZBe}e+{|tefr(J#f(4{W5 zcwXnde<_b`y%cgPuE(16-#fN^%a<&>rKk2x*D}(2`Y!PK{>eR62Ml%CtbOBSvY4)E z?s{i;e}j9r)Hd?Uw3cN^Curf_(V496c}hZH`{*dXNi*XeRQbjth7RE+KXB59$6>`oqNs@bTcyg zw!X#%uIO5^=e18{nD1YZk8VA$aq-r)M@+AFaC!B9o^^Cb@~!MVfy(PFfq}aw+;DlK z;v!ji>u$HF>KO+;rELN4jOUmqU5W86N|<;;hcoWoH?@7C^~L7*it5so_D|nCHG9t0unb zdzGvbs9?d)TEORCu#|mO#9a~nHS2HrJ(*zk^HKMP&^xot#LV@MNX8axcgnP%FACCv7mFt!7z-of`WLIU^ZKvJDlU~sXqIyb+}yqLfKhTs z<35MwKjr3fuViQ4C3ZY~+thOclX{ga`6*QcO7WO5_rS>; zyyvGD+;WWxn#Hm4`9{wb(++(y-FWzvYWdC+=LJo=nQm*ZNYhn3a9;AAoztw#-a9w8 znZJHwk$yviy*RSW&fYlq@}i2h>JQv<=7&gKUBA%a&fU$&JX8x9Za*{AQ&FB7DyrG+ z=js$%F>{}Y*GRi=iHTVzLZ1?3wa%LlPf(W=$^3VcB2E|+-uuR&mUbO z{^0GJlB7GcDolRf^pjY}zOQ#qYMWS?gzE49yf2gQJ)F<7o-=W)TPfc>RLU!|;#H++LI%&1M_XnKRNY>h{>J6&taV>)4okdR`|riGd$q<# zoQ{9uCCBc*gsj{W@DS=lbP!zlH<9K9;@eNV@#lXEuSO22(_ z#j1jdCuTXG>1wE-u~lZ?=`QuR;g3wqYYV1*n_#nP=b;sAjomg~vRL50_c2rC?pxbL zo1Lr!o=>n`JLN~oJ8i}lllG;}%nSJbBC;MM*hU^zkq2`d*Cd|ln1Y5dbj7Ko8-%BdvGt|@l2kx zIiS6tWu9^zQ?J~wk3TnONwpXpTe2eIlHAci=k@L9Hu)BKmp(ZDeW7aap=6tY9Y4DA z_6D;vZk(?iptVqNy_oHqe3zifN3u>CSbVwRUEX)UH$7uPpS^e(gfBb$LCwlbAoc|1_W}L4*?L^MI z%@A;nS-PTTOT8z@r_Q{z!>3gXV>37WQ>(gB!m{c9yZ$@Z zx%d^MOY-)WZVu8ja&=WX7(VOC#po4k^671R(WkYRnoKXYOJOWFIy$JPh0x!|LuW+$}d=Y`{EV&0#c zZq0S_g^2Q{fDa63-W+QSc|6^Hy?Lj|9(LuNpktpjkA=DY^K}*a9dT5vcjdoRT{~?$ zM9pezkGdF64q)6a_&ucjnWvnYpqkWg>C<>zOZPJOdD?e;N;GcfpdRqWGw zi|%Ih3v8a3!>@BW;=r~d*$V|nj{NqH*Sc=cW7zurOG=~T!-vdCC+vT6opk*Zf86iz zxjw1>n3}UypXX~m-WIm#rF5ByNR+}pllq(AUG%(;dB}yX5I7p6sN1t*$s~@u2huH7 z=AQhyrgEcQ`htKLqOw~j%%3y4!M|aBobuyH)6T2=IoFlEUweDX@3Q%a!^88LWKzTH z8ZWRi6>uzjANYRR`^EPIPapZzRQRUvu=5kUUk6@%y?-W5x&Bn<(Id|#gOvr}n<{=w z4h$ETop}31=*|BOs;#l|8(96-EklA;x@JC7Ntfx(H0PWe>D|*7mgm+Ic2LZqL54wN z>y5gnw$?j89_7f%OR??9&?(yVJLIFJ&!xiM^D3TLukPUC3T4mQewnjPL1l;X^rWBH zm)?4^;O5a%HGh*+3hO;eSf;+)+Fc!N$hzp{#2a1vUvccnRKLx5>*{4W%Oy6&$4)EQ z-Di6u6&|y4nWt`t1+PKy2ek<^`pRC51Q-d=bAFa=Qg!OE|GRbCF_jk$-S=;b2p42( zzI|@SvmOo4;wy9dmnrSq@$rb?PZ7`m4284O3%blr#QnC(o?^|hvQ2&ASik)HjJS!# zbEMdBI%UNOc?1R-9@@Av;+?ODrEt)4n^|+-C`awzJ<~CcJJ@F~x|VBy`^C85)1H7+aQe6qOA zG+$*wO@E``F`su@N585k8fk5DNZ;G)Uea`R5-a(MlA6;<68 zb&yjg_17^u?trYt>$dkQ?mQM{xM{CH%N=326A#{TtW<54Z|Lc}wY7i%A2#_nM41!@~?9>H?C-v zPjuh6pwcc-XqERZw}Z!fozf~EE9~0N&3ONA5Z?lu82+P^mKSL*iZj@${hINScEGN- zN__)k^%V@qS6@DVBK)I+-QO<;&-a915d66!@l&ODWEJl$kFDC94m`8&WcYExx-3AX z(OXDMRI;3D?R0w&tvluOOI>Pb+?o`-@lZzJ-IWznL-(dBFh2Jd-O1amcv5Zi@}rku z^L3xzJ)3=d=ls>ZpAUz>IN~AcVWIFqYR}Zr9ozCEvr4s=Ropy(GiKHU>67yny{umv z8O{8>g5f_yn}4fP6O+a#k+gsXzm6oWOU$r(G1L2Tk>RXYZ<1u~);gwUUh|zN^lAq? zd)5A?CwERX95y_Yzw!14nZO+tMYhw<>U46B<;=z65+K6$ z`0J9VH@5O|ea&(&V|ACi*rR{*7=zgc8>#{Zq_rzL?Sf?>mUWqv~bHz{H!b!zW zy*~HOPV@W8~k2&)uX&1{kdRiH1&V^=mP~FTW0-USz4)HOXQs z<5BN_S9X^4i0C&szFQz>cw*IsY2{P5tK>$$S$9d>Yoku&w}D{I+dh`{?u`?VzS>`O`B$9adl6v(EjkQ^DONk2ky5Nz0$rY-Ny8U~qR| zeNpwygj>frIbWMupY^`7b?Xt=2elo_H&<^g{3mK$ttchrFt;%ZELBJRw)?5^{Cp0U4)(8}M-`ok9Q z&0L!nlJI8TbIY8LD^jg&N+KeLkbVC_s<#&6+P$ zcU8X-a-ZbsBw)^1>~N>xv4pkM(!TPMtfdaQ^ z+p88 z!S7&;c*R>;+}swq3j#JCnIU>j;Qi?h0iv@)n!=8+5_lVMuXERu#H$88{FJ}kh)gp+6R-jPLR64h@xJIJJren-2-<{{>XsIv6I9+w~p7RxN?)@8Je8hOeQPU%z{f;LcZ?|n~ z{TS=@*O;xCC;ja|Wly2x1lAbOH!A|~U9DKGt>RPNp%6H|QNOnH+FfoZ{Ykscq3~R@gSgCj!9~+9=ohSg&2@Z- z)XpopOSU@a%ClQaYyEo@dM5a!%o^{N2QANKu4p_GGGX_X>lzN7C*B|R+F)4usA1~O zInPC3^iElCdgr?MXW?o0xqRd9F0iue&t7(`%hGtUQ&B6zjHAUD!piT@r=9up}WV{CQmR_mHsfV?$skdD~@)V zbBCH#Ds88zY@RCq?#b^JOV}Ki?hx+i=knz7v1r<_+@v|dKrbRarzfGrcInnL)sGS^ z{6G7y%$l~%`DWSa#~azL`Zxjwofc^XSU0RwzGnZW>$q0(ZO0CaJ7t$|`wEIZb4ar8 znLOtK57(rOW}6zF)4RTh^KSbpb*XgoJRzg!bA=W+@>^~03!9rLTh7mHV0mNCqurBQ zK6rBH9x+>-y53)8cIk&V)i-$y78IY5eXV8X`gui9v(&eV8&kumM{}6(WJhkj zrR$ckzhq9=)x36|@1Kpnt*}x4wpzhiLgeQa1!fs9_Ni`rZo0Z8Cv0crPv(&cUuGU| zZWtZwlGNukH>qL4^(C_$X8nqFRh2G0RCMs9g~%a}9c|JrDHUHdZzwVsp13qUruLLz z{MxUZ<{7F>GPQ?n65MCRTG)JaUj~DLndsiqu*v%$C@o3<=IdG2ttB9n=$YHN+T`A| z7xND_ZJBLTD#mrj?#jHaaVjUcm7K~H*$mx2J-ji0u}_PLY307yik(~Bz6x)0lfO01 zgn@xU&Y5ZH^o+^M?`2zK=AL2A0Z5R^;ugL#3s5%7`rRQDfvnly8V2Tbt+Zx&RLP7e+7Yi zdL6_yl|(-zc3sM8e61IHf0M=EGJCEo`4LOE%{eXK&ET8;xv1}+{h1@zHY*%{lXEuj68M_)PQo*7SY8kvZ?4%sM_JSJ7!=e zJ5)|r+ka6r{4y5Bf#D&NDT z^V57I4)8M>9xqsH9J+trG1ZcJMg{V3Ti1js>VEI{U%?^bH0$y9?~MNWT6f&cWsX;@ z$a88bJbG*Sj5QaHwhD3B9-F(sPpHV6UHQ4MAg2abXl?l$(Rn>x5qtGo3k(ErX1AH; zJzXae{%rHT4UfOgPjp!!d#GE(_J|bkYbnPVqgnlH`HeR69GN`H;oa&O#`!m{Zoe;@ zeRi3Hji0vnT&Jyf9Ga&lJP@^gw1{iN-Sd*liAEb9<{RF~l4KVNQfB@hA+^2H+t;M9 z@yuq%u)@u*$voTnzh6mY&D!Lxa`8s$opD6L2xhIesrYc4l4I<<>IE+uQak??`c*qpAF6V}3th zcKBTP$VxMNp7ftN!N!_X-^HK3>KfU5c31jGW80`hB3f=c-g;cAw_KgV-aF&xPNpq0 zc7C<|E*w=;t*HKKt@AfUyU#)MQ$<1#-tL!kT55Ntr}pc-Tk6|d!X}^bJJE9aZk4O< z#iv5X)wdc%cnm*$(!M0x$9C3vf{4{V;d`190BuWz;GXPdooT`Mo6R)8 zTBo+8m0zx6%7Z!b$tNx`u$StWCRCej`*m-A4V!>D%RJw$>`vAa$&dXKUpsk^-D=LBs(_k%n8?Ml<6TP5%O zV^Lf8^w(Uwr+<#IW`APt7InP$KI+o^rISqmELu1J_RRhR;h85*UcNDmS8_F;cy!w5 zdrNP$Sclw{2zJuXbB*~X9KP+5Wy$NSI&YK=Ch&Pa3EHc_^LTWHa{L+gk5SVXH$VLx z-+A?}P(;5vd(QKXtx?B3+W55g7TgWpu(mF_HE5?@=u6ovb9fEecWnQ=I&R0^yEncw z)bG>!c+vaB!G41X#=x>&&*gN(9Np!Ne+cMie$;A~Jk-E0EOlwYou#|xmu61r;bi>a z7?%C!uyW;t;K^UgUa?opTzy@X8n3!~`?uwjX6{{d{LJ;n#h;Dc7aUxCqT#(Z>teC# zC zv#uInPmX{mvOBxdl8UOt%&l|%bzUD=czP^=E6OWq*`$h_GC5h^rqS8g&Ln3%|M0Hv z6-#>%pSwY2Ujw5`18Zj3oPwj}(q|vOW(+V{$+l@hZvQU+ySmD5d$Q?~B8kO1PiJ~a>s{S& za`CF8A~rP~{YT2qX1;!VTDvka+p9CAW_GvCj!x4hx3>#+-SzM1&6xI1*?i*kHzBO& z|1(Hko_-@T{%)6i()D|1!{6|;ht2bzbyeoq_56O`RpED^BtOfx<#t}scgxbk|!A(pg1v(IzsLT6^%FN?QLDZ7;Cxx&J+rt-Py^5f@9)0R7{CAdYOPRjP#CLfwNFVXSuYme^aN~Zq|p>D5Kdaq7xb7r34?z(L{N2b?I z=^IWCXJa=eiudyFY)_`SkO~fa7mZ zbw6{>oG{1q(tO=l2kX|R)R$?!3Q5`8+}MB1`s%xtRokbZc%3KT+x@vXf`Kt6+^1S3 zX@ixhc~;M-+?O|29dEj)F0x^r>O@BN_hIwpD%LIj@obITiIn0y9a-;cxNFVI7@kbt zTIFiKaru(^xvMWl*6yC6{Acy7eYNXMEhWnJt|qA!>i(a;G0aBZLX|t#+8I>5S62Sebak22QYUXs*~3heRN15> z{xhuo{(~{<$ZppI`#4&z?X}Rk9HZ6GCv{CvX${m=!9u8h_83b@`IV9hY-23^Q5(8?{+R=z7r*H~^0(QV^;$7U~&e5S-vK=rBPGuOx-w|c`LdnCFfdy4nvoO@F&%1Uu#E+JcT*# zIYEo2*-T0K$u;TODeIXbY*VH&l&9xS6MKF5{2KX#tIOn8O-(%6XenAgO~2~xya%kA z=bk?0d-AU6>f(c^ZYe$w)0e0aGTPnKc-PBX`_P19h0p~-awW{?wsb@k-dC&P&Dij% za>=KtOP3XOW&S0xGD)xA+L;|Z^P~7dp{*~s2bx)*d?>m$M*p_;`?IUVcJv5quYdSJ zY2EzHl>ADjMeNsioXtEuYyJzytOEs&e1&0Vk8ORjA36N{y3~2|y#xDXoPURP%~`Jh zGi27KXL3tVvAvrz<8^$o#>QDzVnq$_-DSe(hd{Qp&rn)!Tmsa0jxoy6Do1Of#y_!1@&er_T zuu?bHj_3PEepTJ5sN}V~=J_{qeJQ*BSIWGnCu+;;#4iC(^QUUv)Vk^s@Ug!xOX!T? z&5hs1O;^P{e)3Ito4?tO@Fm|Rj~F`f>%5Ozb9VOHkjA?bN7d$}D?Pn)!tIUutpz11 zHJc_jX<1AR6wzA2z<7h*KfX|^tTgZbj@2hVY`>%5tm9~tYCBnOQto58N*l{6jyCq|K{tL;qRZlkR z7C5|pq8&ZsH+%7|n``5OjMlK#y^XQ^eB!}(wxjxLGZK1aJ586}b_?k<@;6#+x?FuD z+rP9m4^Nj0>USRam+iVm-gm{V;}23qU!1W#`g6*6S83DC?#ZmJPj8EqnH^VlcWJb#1-=_FD5DAO16ln#|tQ_n%?LQJ-poI?)%RJ^^M5(5-#IW%;7&Q&s!B;+-$#s|NgXf($#An#Se;X z&D3z5R{8XYZk1&YqnO}E*-b)Mm)-7h=HdJ)5W4Gg)z+T$PKWoV`G=>d_A4IJ4xHT* zedFAdZxbBWd#$VOu6Xz{>)KL{^eax^TSar5uirVVs9yWpt#L=|3iV@a6(#!aik}FO zY2}~idSpql;DR5M!}Y&T(`(=B!Tca|sid$QhnCZ}Gv!a?R=wZA)NpeBw`q&?R1Uhf z9B+=QagCf}D95zrt4*wjX{Oj;pX_H0|FXTCGxgVAKHQW3ZN2N;Ps;p@2}O~J#tSTioSF`f1P3eyr`KQ@=7%>9~9V{ z5%@P}y3p@KU0;fBmt0Q#T(dRv+YUijraBkqA1g#;b{_a1IxFSlvU{f4^F)%4?-X1A zj!$9J+~1qGRt1*q^fv9cT^l#S=jM+6A+o2mgc|%SwXaQ zb9~({W!B%~2dfxXyQ=HV{4N~!_^oi*#E+>L3-4Xcl5Vl{e;AbYDdDc~ocF)EzRY^b z=`F`}r#pPfclr3Tjm@r`Kh1S=Un|8|xO?6=(`Ald%L@BT-Q_n+^(+2om~tlP?xz#= zKa<)^lRlkEmYiuni@i$ntf$^mkw_cCLk2cc{iP=5LdJn_OePmjFWO^!*yQ2ibw5mP zuXxSK(KwwS)G^nQC3*X%UXMEy`**G5zj1utmFKr6vhQ2`cFKI!6~7gy?$3I+J@A?5 zLZJ`Ws-!mVHjqmf%@p5iHDCADg`9==PZq`(-It%cI&jV-iQ=CETdTq=-$cbc_$S90 zH}U+Qw=(tfe6H(Hd6oU2!OQA`((#DPXP^C8@2*=A?%RC!xZvN{ep@B_S9I_l36(z@ zrFQh@-W&h2&Y7MI|23=k-=f?{4-D6+-fb%~Kd?Az>(MXVsgeZ~4eiTy<0hXua<*V& zbCCTXzs1UxQWqaRlYQ;gd}E8x_lW@u4!JaxGhWcBf7-DA!v(n?SLT~ZF3|o{H-|m< z(0>LK_gtxS>(!f7bG`M9C-z-*jh$lVR%Urr;^Os=d~b$Qp$Ysp3ifA(Y(t9pcblrG zFy9aQzUU`cp09C;^StPDi)9vzREsV4&%9DOYfD_w`rTFA<&G4Y?-qG{v(^1s)>S=z z9>F=^-6gZW%zMoeb+>Y#vglgxX5)k673KQg+v8VOFYepIv2TOF{`0B}Z#Q1e+`umu zr~hniqC}YMhXD3BTe-e%{JTozom_5M;db_jrMoAjEiFDQy7%z&ogV8w)*Tf4Wiu~7 zZdS}3kBY5^n{|x7o zIQvWT{{*;%$}})Pbm32#_2_EJ!k)Ck3))tDk59U=G$BjPRO;>Fz$bEyE_@N9T-8Mj zKAWcOe^yu*IIE@FVCUys%brYB_-wg0?)j^viThPtt}ivO{xhk7Kc`1%YbJy7*?jrE zbFO$c>;CDfp2*a7S@7Uop2Z&x*UDYtTkW?!rfdrPchg*<2PT;hcKo}V)2w3wn%7nSEeF0FDcybJ*HONu zW$Ln1v*jw@Da&6CQ%+5wm7Cas5YkN9|euai{6hsK%?A-(EgGpmodeYlq%V^$f>SDZETo9oOyB1v0s&-rSmQ+(^d^`+Cbn}iIq11HPY zEj#_wH*+UjWy-WI5qx16JwLAY*m(8!v3=eSMGQ3u|1(U;Q=Vk_pJAG8?he~c>0egn zH8whA&kFyy-0}UA{|x!ZD%gCuXE~~!*w3Z7=->*q*)J2_zwW!#9A>ycGm~phaY$f9 z5Zl#_izh#IW?JS@ky`pmC3sKD?rFA9o-H{jlY4&O(w{ELYx2^!?O4Yz_OF!L@=+(> z-&I<77(0~ZFKLF~WC+*)H~*j7?O*>H{@Kd^Kf<6d$iT$Jz{fewfcT3IIT>YTQ<@sg1NA5=N4NKnl%~US=d0XX|%%h!YOOpJ3atiFRhs~CGJt-Zc*dpeQXz{A*{BN6Tuy{|rymGmXCA2%4_RIs1zrpHoOuk*nT6j@s4B1zk-;Jm0zqvRu9I zyz9o~64%=)+^J8svI|uv_O`w<-79>!ux(1>?!!(c`b?`{<}Nv^cJSfpgU)?A z8fvcJ6eE!}X_L&p?uGAea$Hh8@3PZd(>F*}+hG3YZ*~DYm5+sW3#+^o-QwwXOZ1kw zti|eyORfsO{VDFUIluIPi)ipt28`%J5yGZh7+MNEQJJ$Y~YT)QcvXJxo_ z*-h?D&Kl0Z%Hr8!eo}>EEoG99X={f!;JDgW_@4&$+3FI)RITlvwlc@S94xe z9N3-Hr#vUOr#Z~h<*IP#haS%;@6+x&4^xhOub)_Z`l;x9A@9~pceUkrWVG8_{FoZ( zUu2(k($h8C)+PIg+DEA!lZx|}+++=Omc21|V*i|_B6sgS3ORA^R^-y)i4S7B``R_u zy*Pg4s;6zohfUqflaA%?ZSATMc3_BFK=<&wkiK^N_w?nk+)c;;L+LDn}dZWt2aHpUwCNV^vS86Q6d>$ z6H|Y>+;!>B)BLHhmZ#Y=RpQiTm+*~s9IF=IRy@iv&qTcNk=i$(?z}Z^7oDa(S#V`; z*PJ!GlT&F|Zlm6fbSJiLql-~FJ&8GV&9{rInT*<3aH)HafiNEc0ZXc`@(*60WX+`{G{@tfT zb5Fifj$Hdg&-L`l{F5t+HqCw$Z2zV^F7j9U?k#~u|3Zph2b(P2?UKCprL5wPKO0X@ zpZ4>ziT8npPZxWA3h}Iz-m64?y1BhgH~y$pq2$Z+yOWws7Cn9t zs7PgWK3_qTzliyBv-xX+Yhe%q2<3}!?U9;f4aGpTEdg2 zgZg|a_JgY*O3j#ZbCLV9qiwAm>kfI=X4Kvc zds15F>N#c4ba~!sd!%mWeor;i@c43L!-WlxG?w1}<57FlC0XE;)34L7>i-{M&;l2W zY)njyEX?5B7{JA%fRKWsp(AskaH5ftQ&6FSLqHR_L}Z4Pi1SnbGc?zjn_qadEZF?m zme7nvTf#)!ZmpKOer#FW#Hfr@rp~bsBi2a06(EXfWU0eLz6dkM7ds8B>NlPbe$f#O;N-ERLytL^} zRhWKHm~4kfRl=I;%o^Eb$(Xpb^43eqM|rw7Dz$w%Ua462Ve9f^E6t3)s8(4C+4fA{ zrYmP;t^K{ZWaA!%?HlbcHeXn|(aycM)9gizF6VxCPVT0PxQucYmd2cZt*@YvdvX-OTYYd?YmKSF7E=<^I3Kp z3zfZV``ERu{j@}9Vv1Sjq^JFbLQhg`ifZMB-_8tDJuP+Xw6E)W=dD6JWZgGg#iz`# z2;3!bHEgx=R^Hwr%goplpYh}IpPmU?ay_dr8L3{9-{cl0KwTb>0eU`tOwIX)6>Y;>eJn8)_s=rwKTZ%}M#-gr+ z^TK~DstCT>eO&ob?R?p?l(;h+wd{IUUs(Jl&@J>^kn5t0yZ?hf6`rKx2zXP)Xgvz`~l#xrN;oY^~H#eZs*{50pu6^fc=8_v8=u{W)@ zOZ#Q#Idkco`?obdE}h*g7MYf^+j!ybGS{sKi&O1x{tAC*e31XtF6U1tiYLF>zLvi& zP~zW|O64G-x}Hs6^kw=x=L<@xwk|qz=Fa+@JnfBs%(M1R{A75}f7AV+f%-=u${$mi zB5x8Rn6XFW{)^mdnMeH-tL)rg)Ol9R%ziKZpTSZ1PaJn6|HN)K@4r*(|K9`vF{y?1 literal 32772 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 Ge-i*MVv5NC diff --git a/editions/prerelease/tiddlers/Release 5.1.21.tid b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.21.tid similarity index 97% rename from editions/prerelease/tiddlers/Release 5.1.21.tid rename to editions/tw5.com/tiddlers/releasenotes/Release 5.1.21.tid index c9f2dd580..d1df30a41 100644 --- a/editions/prerelease/tiddlers/Release 5.1.21.tid +++ b/editions/tw5.com/tiddlers/releasenotes/Release 5.1.21.tid @@ -1,6 +1,7 @@ caption: 5.1.21 -created: 20190909164647824 -modified: 20190909164647824 +created: 20190910152313608 +modified: 20190910152313608 +released: 20190910152313608 tags: ReleaseNotes title: Release 5.1.21 type: text/vnd.tiddlywiki diff --git a/readme.md b/readme.md index e7c813301..d7f266e90 100644 --- a/readme.md +++ b/readme.md @@ -1,7 +1,7 @@

    TiddlyWiki is a complete interactive wiki in JavaScript. It can be used as a single HTML file in the browser or as a powerful Node.js application. It is highly customisable: the entire user interface is itself implemented in hackable WikiText.

    Learn more and see it in action at https://tiddlywiki.com/

    Developer documentation is in progress at https://tiddlywiki.com/dev/

    Join the Community

    Users

    The TiddlyWiki discussion groups are mailing lists for talking about TiddlyWiki: requests for help, announcements of new releases and plugins, debating new features, or just sharing experiences. You can participate via the associated website, or subscribe via email.

    Developers

    New releases of TiddlyWiki, TiddlyDesktop and TiddlyFox are announced via the discussion groups and Twitter (you can also subscribe to an Atom/RSS feed of TiddlyWiki releases from GitHub)

    Documentation

    There is also a discussion group specifically for discussing TiddlyWiki documentation improvement initiatives: http://groups.google.com/group/tiddlywikidocs

    -

    Installing TiddlyWiki on Node.js

    1. Install Node.js
      • either from your favourite package manager: typically apt-get install nodejs on Debian/Ubuntu Linux or Termux for Android, or brew install node on a Mac
      • or directly from http://nodejs.org
    2. Open a command line terminal and type:

      npm install -g tiddlywiki

      If it fails with an error you may need to re-run the command as an administrator:

      sudo npm install -g tiddlywiki (Mac/Linux)

    3. Check TiddlyWiki is installed by typing:

      tiddlywiki --version

    4. In response, you should see TiddlyWiki report its current version (eg "5.1.20"; you may also see other debugging information reported)
    5. Try it out:
      1. tiddlywiki mynewwiki --init server to create a folder for a new wiki that includes server-related components
      2. tiddlywiki mynewwiki --listen to start TiddlyWiki
      3. Visit http://127.0.0.1:8080/ in your browser
      4. Try editing and creating tiddlers
    6. Optionally, make an offline copy:
      • click the +

        Installing TiddlyWiki on Node.js

        1. Install Node.js
          • either from your favourite package manager: typically apt-get install nodejs on Debian/Ubuntu Linux or Termux for Android, or brew install node on a Mac
          • or directly from http://nodejs.org
        2. Open a command line terminal and type:

          npm install -g tiddlywiki

          If it fails with an error you may need to re-run the command as an administrator:

          sudo npm install -g tiddlywiki (Mac/Linux)

        3. Check TiddlyWiki is installed by typing:

          tiddlywiki --version

        4. In response, you should see TiddlyWiki report its current version (eg "5.1.21"; you may also see other debugging information reported)
        5. Try it out:
          1. tiddlywiki mynewwiki --init server to create a folder for a new wiki that includes server-related components
          2. tiddlywiki mynewwiki --listen to start TiddlyWiki
          3. Visit http://127.0.0.1:8080/ in your browser
          4. Try editing and creating tiddlers
        6. Optionally, make an offline copy:
          • click the From 165538180ef6a89a5f35ae9aa2d764e59f1f6191 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 10 Sep 2019 16:32:45 +0100 Subject: [PATCH 63/80] Version number update for 5.1.21 --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index d05ad4db1..25574ec31 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tiddlywiki", "preferGlobal": "true", - "version": "5.1.21-prerelease", + "version": "5.1.21", "author": "Jeremy Ruston ", "description": "a non-linear personal web notebook", "contributors": [ From 1631f21a6bf683c12951cd75701f4197c1e6f2a7 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 10 Sep 2019 17:20:36 +0100 Subject: [PATCH 64/80] Preparation for v5.1.22-prerelease --- bin/build-site.sh | 2 +- core/wiki/config/OfficialPluginLibrary.tid | 2 +- .../Releasing a new version of TiddlyWiki.tid | 1 - .../system/PrereleaseLocalPluginLibrary.tid | 2 +- .../PrereleaseOfficialPluginLibrary.tid | 2 +- .../tiddlers/images/New Release Banner.jpg | Bin 29896 -> 143816 bytes package.json | 2 +- 7 files changed, 5 insertions(+), 6 deletions(-) diff --git a/bin/build-site.sh b/bin/build-site.sh index 5cb0d13a3..ba2fd80ec 100755 --- a/bin/build-site.sh +++ b/bin/build-site.sh @@ -5,7 +5,7 @@ # Default to the current version number for building the plugin library if [ -z "$TW5_BUILD_VERSION" ]; then - TW5_BUILD_VERSION=v5.1.20 + TW5_BUILD_VERSION=v5.1.21 fi echo "Using TW5_BUILD_VERSION as [$TW5_BUILD_VERSION]" diff --git a/core/wiki/config/OfficialPluginLibrary.tid b/core/wiki/config/OfficialPluginLibrary.tid index f2ed50c1f..39717937d 100644 --- a/core/wiki/config/OfficialPluginLibrary.tid +++ b/core/wiki/config/OfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: https://tiddlywiki.com/library/v5.1.21/index.html +url: https://tiddlywiki.com/library/v5.1.22/index.html caption: {{$:/language/OfficialPluginLibrary}} {{$:/language/OfficialPluginLibrary/Hint}} diff --git a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid index 5ceccb6ba..1bfabebd2 100644 --- a/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid +++ b/editions/dev/tiddlers/build/Releasing a new version of TiddlyWiki.tid @@ -42,5 +42,4 @@ type: text/vnd.tiddlywiki # Adjust version number in [[$:/config/OfficialPluginLibrary]] (both in `editions/tw5.com` and `editions/prerelease/tiddlers/system`) and [[$:/config/LocalPluginLibrary]] # Adjust new release banner # Create the release note for the new release -# Adjust version number in https://github.com/Jermolene/build.jermolene.github.io in `prerelease-bld.sh`, `bld.sh` and `make-library-bld.sh` # Commit changes to ''master'' and push to ~GitHub diff --git a/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid index 6b3ecb0f9..d32a95711 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseLocalPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/LocalPluginLibrary tags: $:/tags/PluginLibrary -url: http://127.0.0.1:8080/prerelease/library/v5.1.21/index.html +url: http://127.0.0.1:8080/prerelease/library/v5.1.22/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease Local) A locally installed version of the official ~TiddlyWiki plugin library at tiddlywiki.com for testing and debugging. //Requires a local web server to share the library// diff --git a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid index 63029fddc..9b2794ef0 100644 --- a/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid +++ b/editions/prerelease/tiddlers/system/PrereleaseOfficialPluginLibrary.tid @@ -1,6 +1,6 @@ title: $:/config/OfficialPluginLibrary tags: $:/tags/PluginLibrary -url: https://tiddlywiki.com/prerelease/library/v5.1.21/index.html +url: https://tiddlywiki.com/prerelease/library/v5.1.22/index.html caption: {{$:/language/OfficialPluginLibrary}} (Prerelease) The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. diff --git a/editions/tw5.com/tiddlers/images/New Release Banner.jpg b/editions/tw5.com/tiddlers/images/New Release Banner.jpg index 9ce97287501a7f99360a497fced36f648c2473f5..c9a4d7e17cc0ad310d68cf08fff2f3267d75151c 100644 GIT binary patch literal 143816 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

            -Rrh|Ht-BZL>kN=jWT!`z4rdo;2{;p0|{IkpJ+w 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

            +Vh8DJypTowKi^hBd}6x$A4un{CU?3iEV>FRts0 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 literal 29896 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 diff --git a/package.json b/package.json index 25574ec31..2fc00f9ee 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,7 @@ { "name": "tiddlywiki", "preferGlobal": "true", - "version": "5.1.21", + "version": "5.1.22-prerelease", "author": "Jeremy Ruston ", "description": "a non-linear personal web notebook", "contributors": [ From 11506e9acf9fccee96f569dd7c6cc13890f29a80 Mon Sep 17 00:00:00 2001 From: Jan-Oliver Kaiser Date: Wed, 11 Sep 2019 11:21:31 +0200 Subject: [PATCH 65/80] Fix gitlab saver (#4243) This fixes the HTTP request sent to gitlab that is meant to see if the target file already exists. It did not follow the official gitlab v4 api documentation. That documentation dictates both `path` and `branch` to be passed via corresponding GET parameters. --- core/modules/savers/gitlab.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/core/modules/savers/gitlab.js b/core/modules/savers/gitlab.js index 505face43..cce69099c 100644 --- a/core/modules/savers/gitlab.js +++ b/core/modules/savers/gitlab.js @@ -48,12 +48,9 @@ GitLabSaver.prototype.save = function(text,method,callback) { var uri = endpoint + "/projects/" + encodeURIComponent(repo) + "/repository/"; // Perform a get request to get the details (inc shas) of files in the same path as our file $tw.utils.httpRequest({ - url: uri + "tree/" + encodeURIComponent(path.replace(/^\/+|\/$/g, '')), + url: uri + "tree/?path=" + encodeURIComponent(path.replace(/^\/+|\/$/g, '')) + "&branch=" + encodeURIComponent(branch.replace(/^\/+|\/$/g, '')), type: "GET", headers: headers, - data: { - ref: branch - }, callback: function(err,getResponseDataJson,xhr) { var getResponseData,sha = ""; if(err && xhr.status !== 404) { From 68163684a2e57108e160295e445c194268b873c5 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Wed, 11 Sep 2019 11:40:45 +0100 Subject: [PATCH 66/80] Fix publishFilter in save templates Fixes #4252 --- core/templates/external-js/save-all-external-js.tid | 1 + core/templates/save-all.tid | 1 + plugins/tiddlywiki/tiddlyweb/save-offline.tid | 1 + 3 files changed, 3 insertions(+) diff --git a/core/templates/external-js/save-all-external-js.tid b/core/templates/external-js/save-all-external-js.tid index 31476e663..8eff8b9e6 100644 --- a/core/templates/external-js/save-all-external-js.tid +++ b/core/templates/external-js/save-all-external-js.tid @@ -1,5 +1,6 @@ title: $:/core/save/all-external-js +\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]] \define saveTiddlerFilter() [is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/core]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$ \end diff --git a/core/templates/save-all.tid b/core/templates/save-all.tid index 52ef0fb2c..d622f9c52 100644 --- a/core/templates/save-all.tid +++ b/core/templates/save-all.tid @@ -1,5 +1,6 @@ title: $:/core/save/all +\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]] \define saveTiddlerFilter() [is[tiddler]] -[prefix[$:/state/popup/]] -[[$:/HistoryList]] -[[$:/boot/boot.css]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] +[sort[title]] $(publishFilter)$ \end diff --git a/plugins/tiddlywiki/tiddlyweb/save-offline.tid b/plugins/tiddlywiki/tiddlyweb/save-offline.tid index 0cc4d55cc..b2bfdbdd1 100644 --- a/plugins/tiddlywiki/tiddlyweb/save-offline.tid +++ b/plugins/tiddlywiki/tiddlyweb/save-offline.tid @@ -1,5 +1,6 @@ title: $:/plugins/tiddlywiki/tiddlyweb/save/offline +\import [[$:/core/ui/PageMacros]] [all[shadows+tiddlers]tag[$:/tags/Macro]!has[draft.of]] \define saveTiddlerFilter() [is[tiddler]] -[[$:/boot/boot.css]] -[[$:/HistoryList]] -[type[application/javascript]library[yes]] -[[$:/boot/boot.js]] -[[$:/boot/bootprefix.js]] -[[$:/plugins/tiddlywiki/filesystem]] -[[$:/plugins/tiddlywiki/tiddlyweb]] +[sort[title]] $(publishFilter)$ \end From b44dc39299d0f110186c16218f7546492bb66f94 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Wed, 11 Sep 2019 12:10:33 +0100 Subject: [PATCH 67/80] Update Dutch translation Thanks @gernert --- languages/nl-NL/Buttons.multids | 1 + languages/nl-NL/ControlPanel.multids | 24 ++++++++++++++++++++++++ languages/nl-NL/Fields.multids | 2 ++ languages/nl-NL/Filters.multids | 1 + languages/nl-NL/Help/deletetiddlers.tid | 8 ++++++++ languages/nl-NL/Help/savewikifolder.tid | 19 +++++++++++++++++++ languages/nl-NL/Import.multids | 2 ++ 7 files changed, 57 insertions(+) create mode 100644 languages/nl-NL/Help/deletetiddlers.tid create mode 100644 languages/nl-NL/Help/savewikifolder.tid diff --git a/languages/nl-NL/Buttons.multids b/languages/nl-NL/Buttons.multids index 44b7a66af..16f594dec 100644 --- a/languages/nl-NL/Buttons.multids +++ b/languages/nl-NL/Buttons.multids @@ -171,6 +171,7 @@ Timestamp/Off/Caption: tijdstempels zijn uit Timestamp/Off/Hint: Werk tijdstempels niet bij als tiddlers veranderd zijn Timestamp/On/Caption: tijdstempels zijn aan Timestamp/On/Hint: Werk tijdstempels bij als tiddlers veranderd zijn +ToggleSidebar/Hint: 'Toggle' de sideba Transcludify/Caption: transclusie Transcludify/Hint: Zet selectie tussen accolades Underline/Caption: onderstreept diff --git a/languages/nl-NL/ControlPanel.multids b/languages/nl-NL/ControlPanel.multids index 75770bc41..e3fa522fc 100644 --- a/languages/nl-NL/ControlPanel.multids +++ b/languages/nl-NL/ControlPanel.multids @@ -47,6 +47,8 @@ LoadedModules/Hint: Dit zijn de nu geladen tiddler modules gekoppeld aan hun bro Palette/Caption: Palet Palette/Editor/Clone/Caption: kloon Palette/Editor/Clone/Prompt: Het wordt aanbevolen dit schaduwpalet te klonen alvorens het te wijzigen. +Palette/Editor/Delete/Hint: verwijder deze invoer van het huidige palet +Palette/Editor/Names/External/Show: Toon namen van kleuren die niet tot het huiddige palet behoren Palette/Editor/Prompt: Wijzigen Palette/Editor/Prompt/Modified: Dit schaduwpalet is gewijzigd Palette/Editor/Reset/Caption: reset @@ -89,6 +91,27 @@ Saving/DownloadSaver/Caption: Opslagmodule Saving/DownloadSaver/Hint: Deze instellingen gelden voor de HTML5 compatibele opslagmodule Saving/General/Caption: Algemeen Saving/General/Hint: Deze instellingen gelden voor alle geladen opslagmodules +Saving/GitHub/Branch: 'Tak' (branch) voor opslaan (standaard `master`) +Saving/GitHub/Caption: ~GitHub opslagmodule +Saving/GitHub/Description: Deze instellingen worden alleen gebruikt voor opslaan bij ~GitHub +Saving/GitHub/Filename: Bestandsnaam van doelbestand (b.v. `index.html`) + +Saving/GitHub/Password: Wachtwoord, OAUTH token of persoonlijk toegangstoken +Saving/GitHub/Path: Pad naar doelbestand (b.v. `/wiki/`) +Saving/GitHub/Repo: Opslagplaats (b.v. `Jermolene/TiddlyWiki5`) +Saving/GitHub/ServerURL: Server URL (standaard `https://api.github.com`) +Saving/GitHub/UserName: Gebruikersnaam +Saving/GitService/Branch: Doeltak (branch) voor opslaan +Saving/GitService/CommitMessage: Opgeslagen door TiddlyWiki +Saving/GitService/Description: Deze instellingen worden alleen gebruikt bij opslaan naar <> +Saving/GitService/Filename: Bestandsnaam van doelbestand (b.v. `index.html`) +Saving/GitService/GitHub/Password: Wachtwoord, OAUTH token, of persoonlijk toegangs-token (zie [[GitHub help-pagina|https://help.github.com/en/articles/creating-a-personal-access-token-for-the-command-line]] voor details) +Saving/GitService/GitLab/Caption: ~GitLab opslagmodule +Saving/GitService/GitLab/Password: Persoonlijk toegangs-token voor API (zie [[GitLab help-pagina|https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html]] voor details) + +Saving/GitService/Path: Pad naar doelbestand (b.v. `/wiki/`) +Saving/GitService/Repo: Opslagdoel (b.v. `Jermolene/TiddlyWiki5`) +Saving/GitService/UserName: Gebruikersnaam Saving/Heading: Opslaan Saving/Hint: Instellingen voor opslaan van de gehele TiddlyWiki als één bestand via een opslagmodule Saving/TiddlySpot/Advanced/Heading: Geavanceerde instellingen @@ -141,6 +164,7 @@ Settings/NavigationHistory/Caption: Navigeer-geschiedenis Settings/NavigationHistory/Hint: Werk de browsergeschiedenis bij als er naar een tiddler genavigeerd wordt: Settings/NavigationHistory/No/Description: Werk de browsergeschiedenis niet bij Settings/NavigationHistory/Yes/Description: Werk de browsergeschiedenis bij +Settings/NavigationPermalinkviewMode/Caption: Permalink/permaview modus Settings/NavigationPermalinkviewMode/CopyToClipboard/Description: Kopieer permalink/permaview URL naar klembord Settings/NavigationPermalinkviewMode/Hint: Kies hoe permalink/permaview wordt behandeld: Settings/NavigationPermalinkviewMode/UpdateAddressBar/Description: Werk de adresbalk bij met permalink/permaview URL diff --git a/languages/nl-NL/Fields.multids b/languages/nl-NL/Fields.multids index 14556084d..16b2f41d1 100644 --- a/languages/nl-NL/Fields.multids +++ b/languages/nl-NL/Fields.multids @@ -14,6 +14,7 @@ draft.of: Voor concepttiddlers; bevat de titel van de te maken tiddler draft.title: Voor concepttiddlers; bevat de voorgestelde titel van de tiddler footer: De voettekst van een 'wizard' hack-to-give-us-something-to-compare-against: Een tijdelijk opslagveld dat in [[$:/core/templates/static.content]] gebruikt wordt +hide-body: Als 'yes' ingevuld is, wordt de tekst van de tiddler niet weergegeven icon: De titel van de pictogramtiddler die met deze tiddler gekoppeld is library: Als 'yes' ingevuld is, dient de tiddler als JavaScript-bibliotheek opgeslagen te worden list: Een geordende lijst van tiddlertitels gekoppeld met een tiddler @@ -31,5 +32,6 @@ subtitle: De tekst van de ondertitel van een wizard tags: Een lijst van labels gekoppeld met een tiddler text: De tekst van een tiddler title: De unieke naam van een tiddler +toc-link: Als 'no' ingevuld is, is de tiddler geen link meer in de Inhoudsopgave type: Inhoudstype van een tiddler version: Versieinformatie van een plugin diff --git a/languages/nl-NL/Filters.multids b/languages/nl-NL/Filters.multids index c60073392..ff54435f4 100644 --- a/languages/nl-NL/Filters.multids +++ b/languages/nl-NL/Filters.multids @@ -8,6 +8,7 @@ Orphans: Weestiddlers OverriddenShadowTiddlers: Overschreven schaduwtiddlers RecentSystemTiddlers: Onlangs gewijzigde tiddlers inclusief systeemtiddlers RecentTiddlers: Onlangs gewijzigde tiddlers +SessionTiddlers: Tiddlers gewijzigf nadat de wiki geleaden werd ShadowTiddlers: Schaduwtiddlers StoryList: Tiddlers in de 'story river' behalve <$text text="$:/AdvancedSearch"/> SystemTags: Systeemlabels diff --git a/languages/nl-NL/Help/deletetiddlers.tid b/languages/nl-NL/Help/deletetiddlers.tid new file mode 100644 index 000000000..5c38bcf62 --- /dev/null +++ b/languages/nl-NL/Help/deletetiddlers.tid @@ -0,0 +1,8 @@ +title: $:/language/Help/deletetiddlers +description: Deletes a group of tiddlers + +<<.from-version "5.1.20">> Verwijdert een gefilterde groep tiddlers. + +``` +--deletetiddlers +``` diff --git a/languages/nl-NL/Help/savewikifolder.tid b/languages/nl-NL/Help/savewikifolder.tid new file mode 100644 index 000000000..06ea81fd8 --- /dev/null +++ b/languages/nl-NL/Help/savewikifolder.tid @@ -0,0 +1,19 @@ +title: $:/language/Help/savewikifolder +description: Saves a wiki to a new wiki folder + +<<.from-version "5.1.20">> Slaat de wiki als een wiki-folder op inclusief tiddlers, plugins en configuratie: + +``` +--savewikifolder [] +``` + +* De doel wiki folder moet leeg zijn of niet bestaan +* Het filter geeft aan welke tiddlers opgeslagen worden. Het filter is optioneel; standaard is `[all[tiddlers]]` +* Plugins uit de officiële plugin-bibliotheek worden vervangen door referenties naar deze plugins in het `tiddlywiki.info` bestand +* Andere plugins worden uitgepakt in hun eigen folder + +Kan worden gebruikt om een TiddlyWiki HTML-bestand in een wiki-folder om te zetten: + +``` +tiddlywiki --load ./mywiki.html --savewikifolder ./mywikifolder +``` diff --git a/languages/nl-NL/Import.multids b/languages/nl-NL/Import.multids index 526c84e6d..f08222ad7 100644 --- a/languages/nl-NL/Import.multids +++ b/languages/nl-NL/Import.multids @@ -17,5 +17,7 @@ Upgrader/Plugins/Suppressed/Incompatible: Geblokkeerde plugin (incompatibel of v Upgrader/Plugins/Suppressed/Version: Geblokkeerde plugin (te importeren <> ouder dan bestaande <>) Upgrader/Plugins/Upgraded: Plugin opgewaardeerd van <> naar <> Upgrader/State/Suppressed: Geblokkeerde tijdelijke statustiddler +Upgrader/System/Alert: Je staat op het punt om om een tiddler te importeren die een 'core module' tiddler zal overschrijven. Dit wordt niet aanbevolen daar het systeem instabiel kan worden Upgrader/System/Suppressed: Geblokkeerde systeemtiddler +Upgrader/System/Warning: 'Core module' tiddler Upgrader/ThemeTweaks/Created: Gemigreerde thema-aanpassing van <$text text=<>/> From 1c230592045727263c5f84a86d70ba688e54e99a Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 16 Sep 2019 12:15:39 +0100 Subject: [PATCH 68/80] Dynamic loading/unloading of plugins (#4259) * First pass at dynamic loading/unloading * Show warning for changes to plugins containing JS modules * Use $:/config/RegisterPluginType/* for configuring whether a plugin type is automatically registered Where "registered" means "the constituent shadows are loaded". * Fix the info plugin The previous mechanism re-read all plugin info during startup * Don't prettify JSON in the plugin library * Indicate in plugin library whether a plugin requires reloading * Display the highlighted plugin name in the plugin chooser And if there's no name field fall back to the part of the title after the final slash. --- boot/boot.js | 55 +++++++++++++----- core/language/en-GB/ControlPanel.multids | 1 + core/language/en-GB/Misc.multids | 2 +- core/modules/commands/makelibrary.js | 2 +- core/modules/commands/savelibrarytiddlers.js | 10 +++- core/modules/startup/info.js | 8 ++- core/modules/startup/plugins.js | 59 ++++++++++++++++++++ core/modules/wiki.js | 20 +++++++ core/ui/ControlPanel/Modals/AddPlugins.tid | 3 +- core/ui/PageTemplate/pluginreloadwarning.tid | 2 +- core/wiki/config/RegisterPluginTypes.multids | 7 +++ 11 files changed, 145 insertions(+), 24 deletions(-) create mode 100644 core/modules/startup/plugins.js create mode 100644 core/wiki/config/RegisterPluginTypes.multids diff --git a/boot/boot.js b/boot/boot.js index 82583c594..9f867c48a 100644 --- a/boot/boot.js +++ b/boot/boot.js @@ -1237,15 +1237,39 @@ $tw.Wiki = function(options) { return null; }; - // Read plugin info for all plugins - this.readPluginInfo = function() { - for(var title in tiddlers) { - var tiddler = tiddlers[title]; - if(tiddler.fields.type === "application/json" && tiddler.hasField("plugin-type")) { - pluginInfo[tiddler.fields.title] = JSON.parse(tiddler.fields.text); + // Get an array of all the currently recognised plugin types + this.getPluginTypes = function() { + var types = []; + $tw.utils.each(pluginTiddlers,function(pluginTiddler) { + var pluginType = pluginTiddler.fields["plugin-type"]; + if(pluginType && types.indexOf(pluginType) === -1) { + types.push(pluginType); } + }); + return types; + }; - } + // Read plugin info for all plugins, or just an array of titles. Returns the number of plugins updated or deleted + this.readPluginInfo = function(titles) { + var results = { + modifiedPlugins: [], + deletedPlugins: [] + }; + $tw.utils.each(titles || getTiddlerTitles(),function(title) { + var tiddler = tiddlers[title]; + if(tiddler) { + if(tiddler.fields.type === "application/json" && tiddler.hasField("plugin-type")) { + pluginInfo[tiddler.fields.title] = JSON.parse(tiddler.fields.text); + results.modifiedPlugins.push(tiddler.fields.title); + } + } else { + if(pluginInfo[title]) { + delete pluginInfo[title]; + results.deletedPlugins.push(title); + } + } + }); + return results; }; // Get plugin info for a plugin @@ -1253,14 +1277,15 @@ $tw.Wiki = function(options) { return pluginInfo[title]; }; - // Register the plugin tiddlers of a particular type, optionally restricting registration to an array of tiddler titles. Return the array of titles affected + // Register the plugin tiddlers of a particular type, or null/undefined for any type, optionally restricting registration to an array of tiddler titles. Return the array of titles affected this.registerPluginTiddlers = function(pluginType,titles) { var self = this, registeredTitles = [], checkTiddler = function(tiddler,title) { - if(tiddler && tiddler.fields.type === "application/json" && tiddler.fields["plugin-type"] === pluginType) { + if(tiddler && tiddler.fields.type === "application/json" && tiddler.fields["plugin-type"] && (!pluginType || tiddler.fields["plugin-type"] === pluginType)) { var disablingTiddler = self.getTiddler("$:/config/Plugins/Disabled/" + title); if(title === "$:/core" || !disablingTiddler || (disablingTiddler.fields.text || "").trim() !== "yes") { + self.unregisterPluginTiddlers(null,[title]); // Unregister the plugin if it's already registered pluginTiddlers.push(tiddler); registeredTitles.push(tiddler.fields.title); } @@ -1278,19 +1303,19 @@ $tw.Wiki = function(options) { return registeredTitles; }; - // Unregister the plugin tiddlers of a particular type, returning an array of the titles affected - this.unregisterPluginTiddlers = function(pluginType) { + // Unregister the plugin tiddlers of a particular type, or null/undefined for any type, optionally restricting unregistering to an array of tiddler titles. Returns an array of the titles affected + this.unregisterPluginTiddlers = function(pluginType,titles) { var self = this, - titles = []; + unregisteredTitles = []; // Remove any previous registered plugins of this type for(var t=pluginTiddlers.length-1; t>=0; t--) { var tiddler = pluginTiddlers[t]; - if(tiddler.fields["plugin-type"] === pluginType) { - titles.push(tiddler.fields.title); + if(tiddler.fields["plugin-type"] && (!pluginType || tiddler.fields["plugin-type"] === pluginType) && (!titles || titles.indexOf(tiddler.fields.title) !== -1)) { + unregisteredTitles.push(tiddler.fields.title); pluginTiddlers.splice(t,1); } } - return titles; + return unregisteredTitles; }; // Unpack the currently registered plugins, creating shadow tiddlers for their constituent tiddlers diff --git a/core/language/en-GB/ControlPanel.multids b/core/language/en-GB/ControlPanel.multids index faa4d73c5..d1fd8f374 100644 --- a/core/language/en-GB/ControlPanel.multids +++ b/core/language/en-GB/ControlPanel.multids @@ -78,6 +78,7 @@ Plugins/NoInfoFound/Hint: No ''"<$text text=<>/>"'' found Plugins/NotInstalled/Hint: This plugin is not currently installed Plugins/OpenPluginLibrary: open plugin library Plugins/ClosePluginLibrary: close plugin library +Plugins/PluginWillRequireReload: (requires reload) Plugins/Plugins/Caption: Plugins Plugins/Plugins/Hint: Plugins Plugins/Reinstall/Caption: reinstall diff --git a/core/language/en-GB/Misc.multids b/core/language/en-GB/Misc.multids index 0f267186e..599b575eb 100644 --- a/core/language/en-GB/Misc.multids +++ b/core/language/en-GB/Misc.multids @@ -59,7 +59,7 @@ MissingTiddler/Hint: Missing tiddler "<$text text=<>/>" -- click No: No OfficialPluginLibrary: Official ~TiddlyWiki Plugin Library OfficialPluginLibrary/Hint: The official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. -PluginReloadWarning: Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to plugins to take effect +PluginReloadWarning: Please save {{$:/core/ui/Buttons/save-wiki}} and reload {{$:/core/ui/Buttons/refresh}} to allow changes to ~JavaScript plugins to take effect RecentChanges/DateFormat: DDth MMM YYYY SystemTiddler/Tooltip: This is a system tiddler SystemTiddlers/Include/Prompt: Include system tiddlers diff --git a/core/modules/commands/makelibrary.js b/core/modules/commands/makelibrary.js index bb149fd16..ce7150f0c 100644 --- a/core/modules/commands/makelibrary.js +++ b/core/modules/commands/makelibrary.js @@ -59,7 +59,7 @@ Command.prototype.execute = function() { title: upgradeLibraryTitle, type: "application/json", "plugin-type": "library", - "text": JSON.stringify({tiddlers: tiddlers},null,$tw.config.preferences.jsonSpaces) + "text": JSON.stringify({tiddlers: tiddlers}) }; wiki.addTiddler(new $tw.Tiddler(pluginFields)); return null; diff --git a/core/modules/commands/savelibrarytiddlers.js b/core/modules/commands/savelibrarytiddlers.js index 44feea071..b1874c9b5 100644 --- a/core/modules/commands/savelibrarytiddlers.js +++ b/core/modules/commands/savelibrarytiddlers.js @@ -65,10 +65,11 @@ Command.prototype.execute = function() { // Save each JSON file and collect the skinny data var pathname = path.resolve(self.commander.outputPath,basepath + encodeURIComponent(title) + ".json"); $tw.utils.createFileDirectories(pathname); - fs.writeFileSync(pathname,JSON.stringify(tiddler,null,$tw.config.preferences.jsonSpaces),"utf8"); + fs.writeFileSync(pathname,JSON.stringify(tiddler),"utf8"); // Collect the skinny list data var pluginTiddlers = JSON.parse(tiddler.text), readmeContent = (pluginTiddlers.tiddlers[title + "/readme"] || {}).text, + doesContainJavaScript = !!$tw.wiki.doesPluginInfoContainModules(pluginTiddlers), iconTiddler = pluginTiddlers.tiddlers[title + "/icon"] || {}, iconType = iconTiddler.type, iconText = iconTiddler.text, @@ -76,7 +77,12 @@ Command.prototype.execute = function() { if(iconType && iconText) { iconContent = $tw.utils.makeDataUri(iconText,iconType); } - skinnyList.push($tw.utils.extend({},tiddler,{text: undefined, readme: readmeContent, icon: iconContent})); + skinnyList.push($tw.utils.extend({},tiddler,{ + text: undefined, + readme: readmeContent, + "contains-javascript": doesContainJavaScript ? "yes" : "no", + icon: iconContent + })); }); // Save the catalogue tiddler if(skinnyListTitle) { diff --git a/core/modules/startup/info.js b/core/modules/startup/info.js index 1ebf568f4..7efaa5b0e 100644 --- a/core/modules/startup/info.js +++ b/core/modules/startup/info.js @@ -18,6 +18,8 @@ exports.before = ["startup"]; exports.after = ["load-modules"]; exports.synchronous = true; +var TITLE_INFO_PLUGIN = "$:/temp/info-plugin"; + exports.startup = function() { // Collect up the info tiddlers var infoTiddlerFields = {}; @@ -32,15 +34,15 @@ exports.startup = function() { }); } }); - // Bake the info tiddlers into a plugin + // Bake the info tiddlers into a plugin. We use the non-standard plugin-type "info" because ordinary plugins are only registered asynchronously after being loaded dynamically var fields = { - title: "$:/temp/info-plugin", + title: TITLE_INFO_PLUGIN, type: "application/json", "plugin-type": "info", text: JSON.stringify({tiddlers: infoTiddlerFields},null,$tw.config.preferences.jsonSpaces) }; $tw.wiki.addTiddler(new $tw.Tiddler(fields)); - $tw.wiki.readPluginInfo(); + $tw.wiki.readPluginInfo([TITLE_INFO_PLUGIN]); $tw.wiki.registerPluginTiddlers("info"); $tw.wiki.unpackPluginTiddlers(); }; diff --git a/core/modules/startup/plugins.js b/core/modules/startup/plugins.js new file mode 100644 index 000000000..5dd03bbf1 --- /dev/null +++ b/core/modules/startup/plugins.js @@ -0,0 +1,59 @@ +/*\ +title: $:/core/modules/startup/plugins.js +type: application/javascript +module-type: startup + +Startup logic concerned with managing plugins + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +// Export name and synchronous status +exports.name = "plugins"; +exports.after = ["load-modules"]; +exports.synchronous = true; + +var TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE = "$:/status/RequireReloadDueToPluginChange"; + +var PREFIX_CONFIG_REGISTER_PLUGIN_TYPE = "$:/config/RegisterPluginType/"; + +exports.startup = function() { + $tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: "no"}); + $tw.wiki.addEventListener("change",function(changes) { + var changesToProcess = [], + requireReloadDueToPluginChange = false; + $tw.utils.each(Object.keys(changes),function(title) { + var tiddler = $tw.wiki.getTiddler(title), + containsModules = $tw.wiki.doesPluginContainModules(title); + if(containsModules) { + requireReloadDueToPluginChange = true; + } else if(tiddler) { + var pluginType = tiddler.fields["plugin-type"]; + if($tw.wiki.getTiddlerText(PREFIX_CONFIG_REGISTER_PLUGIN_TYPE + (tiddler.fields["plugin-type"] || ""),"no") === "yes") { + changesToProcess.push(title); + } + } + }); + if(requireReloadDueToPluginChange) { + $tw.wiki.addTiddler({title: TITLE_REQUIRE_RELOAD_DUE_TO_PLUGIN_CHANGE,text: "yes"}); + } + // Read or delete the plugin info of the changed tiddlers + if(changesToProcess.length > 0) { + var changes = $tw.wiki.readPluginInfo(changesToProcess); + if(changes.modifiedPlugins.length > 0 || changes.deletedPlugins.length > 0) { + // (Re-)register any modified plugins + $tw.wiki.registerPluginTiddlers(null,changes.modifiedPlugins); + // Unregister any deleted plugins + $tw.wiki.unregisterPluginTiddlers(null,changes.deletedPlugins); + // Unpack the shadow tiddlers + $tw.wiki.unpackPluginTiddlers(); + } + } + }); +}; + +})(); diff --git a/core/modules/wiki.js b/core/modules/wiki.js index a4bc7b650..c531440a3 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -1450,5 +1450,25 @@ exports.invokeUpgraders = function(titles,tiddlers) { return messages; }; +// Determine whether a plugin by title contains JS modules. +exports.doesPluginContainModules = function(title) { + return this.doesPluginInfoContainModules(this.getPluginInfo(title) || this.getTiddlerDataCached(title)); +}; + +// Determine whether a plugin info structure contains JS modules. +exports.doesPluginInfoContainModules = function(pluginInfo) { + if(pluginInfo) { + var foundModule = false; + $tw.utils.each(pluginInfo.tiddlers,function(tiddler) { + if(tiddler.type === "application/javascript" && $tw.utils.hop(tiddler,"module-type")) { + foundModule = true; + } + }); + return foundModule; + } else { + return null; + } +}; + })(); diff --git a/core/ui/ControlPanel/Modals/AddPlugins.tid b/core/ui/ControlPanel/Modals/AddPlugins.tid index b7f84a3c6..0fe8af20d 100644 --- a/core/ui/ControlPanel/Modals/AddPlugins.tid +++ b/core/ui/ControlPanel/Modals/AddPlugins.tid @@ -7,6 +7,7 @@ subtitle: {{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/ <$list filter="[get[original-title]get[version]]" variable="installedVersion" emptyMessage="""{{$:/language/ControlPanel/Plugins/Install/Caption}}"""> {{$:/language/ControlPanel/Plugins/Reinstall/Caption}} +<$reveal stateTitle=<> stateField="contains-javascript" type="match" text="yes">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}} \end @@ -35,7 +36,7 @@ $:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$

    Welcome to TiddlyWiki, a non-linear personal web notebook that anyone can use and keep forever, independently of any corporation.

    -

    <$view tiddler=<> field="description"/>

    +

    <$text text={{{ [get[name]] ~[get[original-title]split[/]last[1]] }}}/>: <$view tiddler=<> field="description"/>

    <$view tiddler=<> field="original-title"/>

    <$view tiddler=<> field="version"/>
    diff --git a/core/ui/PageTemplate/pluginreloadwarning.tid b/core/ui/PageTemplate/pluginreloadwarning.tid index d7aa21fe4..4ac44ddc9 100644 --- a/core/ui/PageTemplate/pluginreloadwarning.tid +++ b/core/ui/PageTemplate/pluginreloadwarning.tid @@ -3,7 +3,7 @@ tags: $:/tags/PageTemplate \define lingo-base() $:/language/ -<$list filter="[has[plugin-type]haschanged[]!plugin-type[import]limit[1]]"> +<$list filter="[{$:/status/RequireReloadDueToPluginChange}match[yes]]"> <$reveal type="nomatch" state="$:/temp/HidePluginWarning" text="yes"> diff --git a/core/wiki/config/RegisterPluginTypes.multids b/core/wiki/config/RegisterPluginTypes.multids new file mode 100644 index 000000000..d2113728b --- /dev/null +++ b/core/wiki/config/RegisterPluginTypes.multids @@ -0,0 +1,7 @@ +title: $:/config/RegisterPluginType/ + +plugin: yes +theme: yes +language: yes +info: no +import: no From 0017d441d9c74bc96bfe73131239e77e130d72cc Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 16 Sep 2019 12:21:20 +0100 Subject: [PATCH 69/80] Update release note --- .../prerelease/tiddlers/Release 5.1.22.tid | 19 ++++++++++++++++++- 1 file changed, 18 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.22.tid b/editions/prerelease/tiddlers/Release 5.1.22.tid index 78c9407c3..d41f5faac 100644 --- a/editions/prerelease/tiddlers/Release 5.1.22.tid +++ b/editions/prerelease/tiddlers/Release 5.1.22.tid @@ -7,8 +7,25 @@ type: text/vnd.tiddlywiki //[[See GitHub for detailed change history of this release|https://github.com/Jermolene/TiddlyWiki5/compare/v5.1.21...v5.1.22]]// +! Major Improvements + +Plugins [[can now|https://github.com/Jermolene/TiddlyWiki5/pull/4259]] be loaded or deleted dynamically, without requiring a reload -- as long as they don't contain any ~JavaScript modules. Plugins that require a reload are indicated in the plugin chooser in $:/ControlPanel. + +! Translation Improvements + +* Improved Dutch translation + +! Hackability Improvements + +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/68163684a2e57108e160295e445c194268b873c5]] usage of `publishFilter` in save templates -- see SavingMechanism + +! Bug Fixes + +* [[Fixed|https://github.com/Jermolene/TiddlyWiki5/pull/4243]] problem with the [[GitLab saver|Saving to a Git service]] + ! Contributors [[@Jermolene|https://github.com/Jermolene]] would like to thank the contributors to this release who have generously given their time to help improve TiddlyWiki: -* \ No newline at end of file +* [[@gernert|https://github.com/gernert]] +* [[@Janno|https://github.com/Janno]] From 7f9823c5b2ed1ef11e47d94d13fa54c98dd8b023 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 16 Sep 2019 13:17:09 +0100 Subject: [PATCH 70/80] Dynamic plugins: Fix registration of themes and languages --- core/modules/pluginswitcher.js | 2 ++ core/wiki/config/RegisterPluginTypes.multids | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/core/modules/pluginswitcher.js b/core/modules/pluginswitcher.js index ab82be933..395dc8b20 100644 --- a/core/modules/pluginswitcher.js +++ b/core/modules/pluginswitcher.js @@ -60,6 +60,8 @@ PluginSwitcher.prototype.switchPlugins = function() { } }; accumulatePlugin(selectedPluginTitle); + // Read the plugin info for the incoming plugins + var changes = $tw.wiki.readPluginInfo(plugins); // Unregister any existing theme tiddlers var unregisteredTiddlers = $tw.wiki.unregisterPluginTiddlers(this.pluginType); // Register any new theme tiddlers diff --git a/core/wiki/config/RegisterPluginTypes.multids b/core/wiki/config/RegisterPluginTypes.multids index d2113728b..f0e52acd5 100644 --- a/core/wiki/config/RegisterPluginTypes.multids +++ b/core/wiki/config/RegisterPluginTypes.multids @@ -1,7 +1,7 @@ title: $:/config/RegisterPluginType/ plugin: yes -theme: yes -language: yes +theme: no +language: no info: no import: no From 36498867d5e95f70c472af227321254d4e44c695 Mon Sep 17 00:00:00 2001 From: Bram Chen Date: Mon, 16 Sep 2019 21:02:11 +0800 Subject: [PATCH 71/80] Update chinese translations for Dynamic loading/unloading of plugins (#4264) * Add `Plugins/PluginWillRequireReload` to ControlPanel.multids * Improve `PluginReloadWarning` in Misc.multids --- languages/zh-Hans/ControlPanel.multids | 1 + languages/zh-Hans/Misc.multids | 2 +- languages/zh-Hant/ControlPanel.multids | 1 + languages/zh-Hant/Misc.multids | 2 +- 4 files changed, 4 insertions(+), 2 deletions(-) diff --git a/languages/zh-Hans/ControlPanel.multids b/languages/zh-Hans/ControlPanel.multids index 108946d94..c771a8a3c 100644 --- a/languages/zh-Hans/ControlPanel.multids +++ b/languages/zh-Hans/ControlPanel.multids @@ -74,6 +74,7 @@ Plugins/NoInformation/Hint: 未提供信息 Plugins/NotInstalled/Hint: 尚未安装此插件 Plugins/OpenPluginLibrary: 开启插件程式库 Plugins/ClosePluginLibrary: 关闭插件程式库 +Plugins/PluginWillRequireReload: (需要重新加载) Plugins/Plugins/Caption: 插件 Plugins/Plugins/Hint: 插件 Plugins/Reinstall/Caption: 重新安装 diff --git a/languages/zh-Hans/Misc.multids b/languages/zh-Hans/Misc.multids index 84f927808..00b5799bf 100644 --- a/languages/zh-Hans/Misc.multids +++ b/languages/zh-Hans/Misc.multids @@ -59,7 +59,7 @@ MissingTiddler/Hint: 佚失条目 "<$text text=<>/>" - 点击 {{ No: 否 OfficialPluginLibrary: ~TiddlyWiki 官方插件程式库 OfficialPluginLibrary/Hint: 此为在 tiddlywiki.com 的 ~TiddlyWiki 官方插件程式库。由核心团队维护的插件、主题和语言包。 -PluginReloadWarning: 请保存 {{$:/core/ui/Buttons/save-wiki}} 并刷新页面 {{$:/core/ui/Buttons/refresh}} 允许更改插件才能生效 +PluginReloadWarning: 请保存 {{$:/core/ui/Buttons/save-wiki}} 并刷新页面 {{$:/core/ui/Buttons/refresh}} ,使 ~JavaScript 插件的更改生效 RecentChanges/DateFormat: YYYY年0MM月0DD日 SystemTiddler/Tooltip: 此为系统条目 SystemTiddlers/Include/Prompt: 包括系统条目 diff --git a/languages/zh-Hant/ControlPanel.multids b/languages/zh-Hant/ControlPanel.multids index 888f8b4bf..f94406edb 100644 --- a/languages/zh-Hant/ControlPanel.multids +++ b/languages/zh-Hant/ControlPanel.multids @@ -74,6 +74,7 @@ Plugins/NoInformation/Hint: 未提供資訊 Plugins/NotInstalled/Hint: 尚未安裝此插件 Plugins/OpenPluginLibrary: 開啟插件程式庫 Plugins/ClosePluginLibrary: 關閉插件程式庫 +Plugins/PluginWillRequireReload: (需要重新載入) Plugins/Plugins/Caption: 插件 Plugins/Plugins/Hint: 插件 Plugins/Reinstall/Caption: 重新安裝 diff --git a/languages/zh-Hant/Misc.multids b/languages/zh-Hant/Misc.multids index c583a2ed1..31569388b 100644 --- a/languages/zh-Hant/Misc.multids +++ b/languages/zh-Hant/Misc.multids @@ -59,7 +59,7 @@ MissingTiddler/Hint: 佚失條目 "<$text text=<>/>" - 點擊 {{ No: 否 OfficialPluginLibrary: ~TiddlyWiki 官方插件程式庫 OfficialPluginLibrary/Hint: 此為在 tiddlywiki.com 的 ~TiddlyWiki 官方插件程式庫。由核心團隊維護的插件、主題和語言包。 -PluginReloadWarning: 請儲存 {{$:/core/ui/Buttons/save-wiki}} 並刷新頁面 {{$:/core/ui/Buttons/refresh}} 允許更改插件才能生效 +PluginReloadWarning: 請儲存 {{$:/core/ui/Buttons/save-wiki}} 並刷新頁面 {{$:/core/ui/Buttons/refresh}} ,使 ~JavaScript 插件的更改生效 RecentChanges/DateFormat: YYYY年0MM月0DD日 SystemTiddler/Tooltip: 此為系統條目 SystemTiddlers/Include/Prompt: 包括系統條目 From 1150c87edb7478af6cc943eb0ef52fdf3051c121 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 16 Sep 2019 16:15:26 +0100 Subject: [PATCH 72/80] Add [is[binary]] operator --- core/modules/wiki.js | 10 ++++++++++ editions/tw5.com/tiddlers/filters/is.tid | 3 ++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/core/modules/wiki.js b/core/modules/wiki.js index c531440a3..e7f84e13c 100755 --- a/core/modules/wiki.js +++ b/core/modules/wiki.js @@ -221,6 +221,16 @@ exports.isImageTiddler = function(title) { } }; +exports.isBinaryTiddler = function(title) { + var tiddler = this.getTiddler(title); + if(tiddler) { + var contentTypeInfo = $tw.config.contentTypeInfo[tiddler.fields.type || "text/vnd.tiddlywiki"]; + return !!contentTypeInfo && contentTypeInfo.encoding === "base64"; + } else { + return null; + } +}; + /* Like addTiddler() except it will silently reject any plugin tiddlers that are older than the currently loaded version. Returns true if the tiddler was imported */ diff --git a/editions/tw5.com/tiddlers/filters/is.tid b/editions/tw5.com/tiddlers/filters/is.tid index bec256edf..b18dffe42 100644 --- a/editions/tw5.com/tiddlers/filters/is.tid +++ b/editions/tw5.com/tiddlers/filters/is.tid @@ -1,5 +1,5 @@ created: 20140410103123179 -modified: 20190225130632157 +modified: 20190916151432497 tags: [[Filter Operators]] [[Common Operators]] [[Negatable Operators]] title: is Operator type: text/vnd.tiddlywiki @@ -16,6 +16,7 @@ The parameter <<.place C>> is one of the following fundamental categories: |!Category |!Matches any tiddler title that... | |^`current` |is the [[current tiddler|Current Tiddler]] | |^`image` |has an image ContentType | +|^`binary` |has a binary ContentType | |^`missing` |does not exist (other than possibly as a shadow tiddler), regardless of whether there are any links to it | |^`orphan` |has no [[hard links|Hard and Soft Links]] to it | |^`shadow` |is a [[shadow tiddler|ShadowTiddlers]], regardless of whether it has been overridden with a non-shadow tiddler | From 8c894612914e21cf941a1daa953538c28ce91d8e Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 16 Sep 2019 16:16:03 +0100 Subject: [PATCH 73/80] Adding [is[binary]] filter -- Missed off 1150c87ed --- core/modules/filters/is/binary.js | 36 +++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 core/modules/filters/is/binary.js diff --git a/core/modules/filters/is/binary.js b/core/modules/filters/is/binary.js new file mode 100644 index 000000000..01b9aabd3 --- /dev/null +++ b/core/modules/filters/is/binary.js @@ -0,0 +1,36 @@ +/*\ +title: $:/core/modules/filters/is/binary.js +type: application/javascript +module-type: isfilteroperator + +Filter function for [is[binary]] + +\*/ +(function(){ + +/*jslint node: true, browser: true */ +/*global $tw: false */ +"use strict"; + +/* +Export our filter function +*/ +exports.binary = function(source,prefix,options) { + var results = []; + if(prefix === "!") { + source(function(tiddler,title) { + if(!options.wiki.isBinaryTiddler(title)) { + results.push(title); + } + }); + } else { + source(function(tiddler,title) { + if(options.wiki.isBinaryTiddler(title)) { + results.push(title); + } + }); + } + return results; +}; + +})(); From 83954582f465677ebbd2e16dfea504b95b61fffe Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Mon, 16 Sep 2019 16:16:18 +0100 Subject: [PATCH 74/80] Text-slicer: Only show slice button for text tiddlers --- plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid b/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid index 487ba7cda..1a52ff905 100644 --- a/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid +++ b/plugins/tiddlywiki/text-slicer/ui/slice-toolbar-button.tid @@ -10,6 +10,7 @@ description: Slice this text tiddler by headings and lists Slice this text tiddler into chunks \end +<$list filter="[!is[image]!is[binary]]" variable="ignore"> <$button tooltip=<> aria-label=<> class=<>> <$action-sendmessage $message="tm-modal" $param="$:/plugins/tiddlywiki/text-slicer/ui/slice-modal" currentTiddler=<>/> <$list filter="[prefix[yes]]"> @@ -18,4 +19,5 @@ Slice this text tiddler into chunks <$list filter="[prefix[yes]]"> Slice tiddler - \ No newline at end of file + + From 336f1ceae32904a9a7118230d9bab91b98883926 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 17 Sep 2019 08:49:39 +0100 Subject: [PATCH 75/80] Indicate in import listing whether a plugin contains JS modules --- core/modules/upgraders/plugins.js | 37 +++++++++++++++++-------------- 1 file changed, 20 insertions(+), 17 deletions(-) diff --git a/core/modules/upgraders/plugins.js b/core/modules/upgraders/plugins.js index acd8f6db7..d1e699762 100644 --- a/core/modules/upgraders/plugins.js +++ b/core/modules/upgraders/plugins.js @@ -39,26 +39,29 @@ exports.upgrade = function(wiki,titles,tiddlers) { $tw.utils.each(titles,function(title) { var incomingTiddler = tiddlers[title]; // Check if we're dealing with a plugin - if(incomingTiddler && incomingTiddler["plugin-type"] && incomingTiddler.version) { - // Upgrade the incoming plugin if it is in the upgrade library - var libraryTiddler = getLibraryTiddler(title); - if(libraryTiddler && libraryTiddler["plugin-type"] && libraryTiddler.version) { - tiddlers[title] = libraryTiddler; - messages[title] = $tw.language.getString("Import/Upgrader/Plugins/Upgraded",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}}); - return; - } - // Suppress the incoming plugin if it is older than the currently installed one - var existingTiddler = wiki.getTiddler(title); - if(existingTiddler && existingTiddler.hasField("plugin-type") && existingTiddler.hasField("version")) { - // Reject the incoming plugin by blanking all its fields - if($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) { - tiddlers[title] = Object.create(null); - messages[title] = $tw.language.getString("Import/Upgrader/Plugins/Suppressed/Version",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}}); + if(incomingTiddler && incomingTiddler["plugin-type"]) { + // Check whether the plugin contains JS modules + var doesContainJavaScript = $tw.wiki.doesPluginInfoContainModules(JSON.parse(incomingTiddler.text)) ? ($tw.wiki.getTiddlerText("$:/language/ControlPanel/Plugins/PluginWillRequireReload") + " ") : ""; + messages[title] = doesContainJavaScript; + if(incomingTiddler.version) { + // Upgrade the incoming plugin if it is in the upgrade library + var libraryTiddler = getLibraryTiddler(title); + if(libraryTiddler && libraryTiddler["plugin-type"] && libraryTiddler.version) { + tiddlers[title] = libraryTiddler; + messages[title] = doesContainJavaScript + $tw.language.getString("Import/Upgrader/Plugins/Upgraded",{variables: {incoming: incomingTiddler.version, upgraded: libraryTiddler.version}}); return; } + // Suppress the incoming plugin if it is older than the currently installed one + var existingTiddler = wiki.getTiddler(title); + if(existingTiddler && existingTiddler.hasField("plugin-type") && existingTiddler.hasField("version")) { + // Reject the incoming plugin by blanking all its fields + if($tw.utils.checkVersions(existingTiddler.fields.version,incomingTiddler.version)) { + tiddlers[title] = Object.create(null); + messages[title] = doesContainJavaScript + $tw.language.getString("Import/Upgrader/Plugins/Suppressed/Version",{variables: {incoming: incomingTiddler.version, existing: existingTiddler.fields.version}}); + return; + } + } } - } - if(incomingTiddler && incomingTiddler["plugin-type"]) { // Check whether the plugin is on the blocked list var blockInfo = BLOCKED_PLUGINS[title]; if(blockInfo) { From 1dbab6fd0e9179b89f8002ab5061583c3df3b6f2 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Wed, 18 Sep 2019 21:10:21 +0100 Subject: [PATCH 76/80] Update release note --- editions/prerelease/tiddlers/Release 5.1.22.tid | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/editions/prerelease/tiddlers/Release 5.1.22.tid b/editions/prerelease/tiddlers/Release 5.1.22.tid index d41f5faac..ea0cfdfec 100644 --- a/editions/prerelease/tiddlers/Release 5.1.22.tid +++ b/editions/prerelease/tiddlers/Release 5.1.22.tid @@ -9,7 +9,7 @@ type: text/vnd.tiddlywiki ! Major Improvements -Plugins [[can now|https://github.com/Jermolene/TiddlyWiki5/pull/4259]] be loaded or deleted dynamically, without requiring a reload -- as long as they don't contain any ~JavaScript modules. Plugins that require a reload are indicated in the plugin chooser in $:/ControlPanel. +Plugins [[can now|https://github.com/Jermolene/TiddlyWiki5/pull/4259]] be loaded or deleted dynamically, without requiring a reload -- as long as they don't contain any ~JavaScript modules. Plugins that require a reload are indicated in the plugin chooser in [[$:/ControlPanel]]. ! Translation Improvements @@ -17,6 +17,7 @@ Plugins [[can now|https://github.com/Jermolene/TiddlyWiki5/pull/4259]] be loaded ! Hackability Improvements +* [[Added|https://github.com/Jermolene/TiddlyWiki5/commit/1150c87edb7478af6cc943eb0ef52fdf3051c121]] (and [[here|https://github.com/Jermolene/TiddlyWiki5/commit/8c894612914e21cf941a1daa953538c28ce91d8e]]) new `[is[binary]]` operand for the [[is Operator]] * [[Fixed|https://github.com/Jermolene/TiddlyWiki5/commit/68163684a2e57108e160295e445c194268b873c5]] usage of `publishFilter` in save templates -- see SavingMechanism ! Bug Fixes From bf9aeb5755b693977ad48c0a820faa3105887b7b Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 19 Sep 2019 13:04:10 +0100 Subject: [PATCH 77/80] Improve plugin metadata, and add a "name" field The "name" is optional, but makes the library listing much clearer. --- plugins/tiddlywiki/async/plugin.info | 6 +++--- plugins/tiddlywiki/aws/plugin.info | 5 ++--- plugins/tiddlywiki/bibtex/plugin.info | 4 ++-- plugins/tiddlywiki/blog/plugin.info | 5 ++--- plugins/tiddlywiki/browser-sniff/plugin.info | 5 ++--- plugins/tiddlywiki/browser-storage/plugin.info | 5 ++--- plugins/tiddlywiki/cecily/plugin.info | 3 +-- plugins/tiddlywiki/classictools/plugin.info | 5 ++--- plugins/tiddlywiki/codemirror-autocomplete/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-closebrackets/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-closetag/plugin.info | 4 ++-- .../tiddlywiki/codemirror-fullscreen-editing/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-keymap-emacs/plugin.info | 4 ++-- .../tiddlywiki/codemirror-keymap-sublime-text/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-keymap-vim/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-mode-css/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-mode-htmlembedded/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-mode-htmlmixed/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-mode-javascript/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-mode-markdown/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-mode-xml/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror-search-replace/plugin.info | 4 ++-- plugins/tiddlywiki/codemirror/plugin.info | 4 ++-- plugins/tiddlywiki/comments/plugin.info | 5 ++--- plugins/tiddlywiki/d3/plugin.info | 5 ++--- plugins/tiddlywiki/dynaview/plugin.info | 3 +-- plugins/tiddlywiki/evernote/plugin.info | 3 +-- plugins/tiddlywiki/external-attachments/plugin.info | 5 ++--- plugins/tiddlywiki/filesystem/plugin.info | 5 ++--- plugins/tiddlywiki/github-fork-ribbon/plugin.info | 3 ++- plugins/tiddlywiki/googleanalytics/plugin.info | 5 ++--- plugins/tiddlywiki/hammerjs/plugin.info | 6 +++--- plugins/tiddlywiki/help/plugin.info | 5 ++--- plugins/tiddlywiki/highlight/plugin.info | 6 +++--- plugins/tiddlywiki/innerwiki/plugin.info | 5 ++--- plugins/tiddlywiki/internals/plugin.info | 3 +-- plugins/tiddlywiki/jasmine/plugin.info | 5 ++--- plugins/tiddlywiki/jszip/plugin.info | 6 +++--- plugins/tiddlywiki/katex/plugin.info | 5 ++--- plugins/tiddlywiki/markdown/plugin.info | 5 ++--- plugins/tiddlywiki/mobiledragdrop/plugin.info | 4 ++-- plugins/tiddlywiki/nodewebkitsaver/plugin.info | 5 ++--- plugins/tiddlywiki/pluginlibrary/plugin.info | 3 +-- plugins/tiddlywiki/powered-by-tiddlywiki/plugin.info | 5 ++--- plugins/tiddlywiki/qrcode/plugin.info | 4 ++-- plugins/tiddlywiki/railroad/plugin.info | 4 ++-- plugins/tiddlywiki/savetrail/plugin.info | 5 ++--- plugins/tiddlywiki/sax/plugin.info | 4 ++-- plugins/tiddlywiki/stacked-view/plugin.info | 3 +-- plugins/tiddlywiki/tahoelafs/plugin.info | 3 +-- plugins/tiddlywiki/text-slicer/plugin.info | 3 +-- plugins/tiddlywiki/tiddlyweb/plugin.info | 5 ++--- plugins/tiddlywiki/translators/plugin.info | 3 +-- plugins/tiddlywiki/tw2parser/plugin.info | 4 ++-- plugins/tiddlywiki/tw5.com-docs/plugin.info | 3 +-- plugins/tiddlywiki/twitter/plugin.info | 5 ++--- plugins/tiddlywiki/upgrade/plugin.info | 3 +-- plugins/tiddlywiki/xlsx-utils/plugin.info | 3 +-- plugins/tiddlywiki/xmldom/plugin.info | 5 ++--- 60 files changed, 112 insertions(+), 144 deletions(-) diff --git a/plugins/tiddlywiki/async/plugin.info b/plugins/tiddlywiki/async/plugin.info index 701c3bd41..971160d1f 100644 --- a/plugins/tiddlywiki/async/plugin.info +++ b/plugins/tiddlywiki/async/plugin.info @@ -1,7 +1,7 @@ { "title": "$:/plugins/tiddlywiki/async", - "description": "Wrapper for async.js by Caolan McMahon", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Async", + "description": "async.js library", + "author": "Caolan McMahon", "list": "readme license" } diff --git a/plugins/tiddlywiki/aws/plugin.info b/plugins/tiddlywiki/aws/plugin.info index 08ee1fd44..89f248824 100644 --- a/plugins/tiddlywiki/aws/plugin.info +++ b/plugins/tiddlywiki/aws/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/aws", - "description": "Tools for working with Amazon Web Services", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "AWS", + "description": "Amazon Web Services extensions and tools", "list": "readme setup commands lambda" } diff --git a/plugins/tiddlywiki/bibtex/plugin.info b/plugins/tiddlywiki/bibtex/plugin.info index 4b88be21e..d21b48844 100644 --- a/plugins/tiddlywiki/bibtex/plugin.info +++ b/plugins/tiddlywiki/bibtex/plugin.info @@ -1,7 +1,7 @@ { "title": "$:/plugins/tiddlywiki/bibtex", + "name": "BibTeX", "description": "BibTeX importer", - "author": "Henrik Muehe and Mikola Lysenko, adapted by Jeremy Ruston", - "plugin-type": "plugin", + "author": "Henrik Muehe and Mikola Lysenko", "list": "readme license" } diff --git a/plugins/tiddlywiki/blog/plugin.info b/plugins/tiddlywiki/blog/plugin.info index a1b079ccc..cdc82558a 100644 --- a/plugins/tiddlywiki/blog/plugin.info +++ b/plugins/tiddlywiki/blog/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/blog", - "description": "Tools for using TiddlyWiki to publish blogs", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Blog", + "description": "Blog publishing tools", "list": "readme docs" } diff --git a/plugins/tiddlywiki/browser-sniff/plugin.info b/plugins/tiddlywiki/browser-sniff/plugin.info index 5ec4eefac..06e43726a 100644 --- a/plugins/tiddlywiki/browser-sniff/plugin.info +++ b/plugins/tiddlywiki/browser-sniff/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/browser-sniff", - "description": "Browser sniffing", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Browser Sniff", + "description": "Browser feature detection", "list": "readme usage" } diff --git a/plugins/tiddlywiki/browser-storage/plugin.info b/plugins/tiddlywiki/browser-storage/plugin.info index 68dd147d2..772236e44 100644 --- a/plugins/tiddlywiki/browser-storage/plugin.info +++ b/plugins/tiddlywiki/browser-storage/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/browser-storage", - "description": "Browser-based local storage", - "author": "Jeremy Ruston ", - "core-version": ">=5.0.0", + "name": "Browser Storage", + "description": "Local storage in the browser", "list": "readme settings" } diff --git a/plugins/tiddlywiki/cecily/plugin.info b/plugins/tiddlywiki/cecily/plugin.info index f18a47103..664e3bcba 100644 --- a/plugins/tiddlywiki/cecily/plugin.info +++ b/plugins/tiddlywiki/cecily/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/cecily", + "name": "Cecily", "description": "Zoomable storyview (Cecily)", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "readme" } diff --git a/plugins/tiddlywiki/classictools/plugin.info b/plugins/tiddlywiki/classictools/plugin.info index 0e63bdfcf..5a07f8106 100644 --- a/plugins/tiddlywiki/classictools/plugin.info +++ b/plugins/tiddlywiki/classictools/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/classictools", - "description": "TiddlyWiki Classic manipulation tools", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Classic Tools", + "description": "TiddlyWiki Classic tools", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-autocomplete/plugin.info b/plugins/tiddlywiki/codemirror-autocomplete/plugin.info index aae66a787..f46e5bdac 100755 --- a/plugins/tiddlywiki/codemirror-autocomplete/plugin.info +++ b/plugins/tiddlywiki/codemirror-autocomplete/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-autocomplete", - "description": "CodeMirror AddOn: Autocompletion", - "author": "JeremyRuston", + "name": "CodeMirror Autocomplete", + "description": "Autocompletion for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-closebrackets/plugin.info b/plugins/tiddlywiki/codemirror-closebrackets/plugin.info index c308d1045..a4eb8cac1 100755 --- a/plugins/tiddlywiki/codemirror-closebrackets/plugin.info +++ b/plugins/tiddlywiki/codemirror-closebrackets/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-closebrackets", - "description": "CodeMirror AddOn: Close Brackets", - "author": "JeremyRuston", + "name": "CodeMirror Close Brackets", + "description": "Close brackets for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-closetag/plugin.info b/plugins/tiddlywiki/codemirror-closetag/plugin.info index 81d404892..c8ec68505 100755 --- a/plugins/tiddlywiki/codemirror-closetag/plugin.info +++ b/plugins/tiddlywiki/codemirror-closetag/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-closetag", - "description": "CodeMirror AddOn: Auto-Close Tags", - "author": "JeremyRuston", + "name": "CodeMirror Close Tag", + "description": "Close tags automatically for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-fullscreen-editing/plugin.info b/plugins/tiddlywiki/codemirror-fullscreen-editing/plugin.info index e95e5cc29..89ba08df1 100755 --- a/plugins/tiddlywiki/codemirror-fullscreen-editing/plugin.info +++ b/plugins/tiddlywiki/codemirror-fullscreen-editing/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-fullscreen", - "description": "CodeMirror AddOn: Fullscreen Editing", - "author": "JeremyRuston", + "name": "CodeMirror Fullscreen", + "description": "Fullscreen editing for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-keymap-emacs/plugin.info b/plugins/tiddlywiki/codemirror-keymap-emacs/plugin.info index 7844a4932..519472a6c 100755 --- a/plugins/tiddlywiki/codemirror-keymap-emacs/plugin.info +++ b/plugins/tiddlywiki/codemirror-keymap-emacs/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-keymap-emacs", - "description": "CodeMirror Keymap: Emacs", - "author": "JeremyRuston", + "name": "CodeMirror Keymap Emacs", + "description": "Keymap compatible with Emacs for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-keymap-sublime-text/plugin.info b/plugins/tiddlywiki/codemirror-keymap-sublime-text/plugin.info index 5be49fd36..6f7ba6067 100755 --- a/plugins/tiddlywiki/codemirror-keymap-sublime-text/plugin.info +++ b/plugins/tiddlywiki/codemirror-keymap-sublime-text/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-keymap-sublime-text", - "description": "CodeMirror Keymap: Sublime Text", - "author": "JeremyRuston", + "name": "CodeMirror Keymap Sublime Text", + "description": "Keymap compatible with Sublime Text for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-keymap-vim/plugin.info b/plugins/tiddlywiki/codemirror-keymap-vim/plugin.info index 17770299c..0f5387d5c 100755 --- a/plugins/tiddlywiki/codemirror-keymap-vim/plugin.info +++ b/plugins/tiddlywiki/codemirror-keymap-vim/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-keymap-vim", - "description": "CodeMirror Keymap: Vim", - "author": "JeremyRuston", + "name": "CodeMirror Keymap Vim", + "description": "Keymap compatible with Vim for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-mode-css/plugin.info b/plugins/tiddlywiki/codemirror-mode-css/plugin.info index 115afed8c..e304dd256 100755 --- a/plugins/tiddlywiki/codemirror-mode-css/plugin.info +++ b/plugins/tiddlywiki/codemirror-mode-css/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-mode-css", - "description": "CodeMirror Mode: CSS Highlighting", - "author": "JeremyRuston", + "name": "CodeMirror Mode CSS", + "description": "CSS highlighting mode for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-mode-htmlembedded/plugin.info b/plugins/tiddlywiki/codemirror-mode-htmlembedded/plugin.info index a7eef49c6..a0f2f0528 100755 --- a/plugins/tiddlywiki/codemirror-mode-htmlembedded/plugin.info +++ b/plugins/tiddlywiki/codemirror-mode-htmlembedded/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-mode-htmlembedded", - "description": "CodeMirror Mode: Embedded-HTML Highlighting", - "author": "JeremyRuston", + "name": "CodeMirror Mode HTML Embedded", + "description": "Embedded HTML highlighting mode for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-mode-htmlmixed/plugin.info b/plugins/tiddlywiki/codemirror-mode-htmlmixed/plugin.info index 99d12fde9..a99c6e623 100755 --- a/plugins/tiddlywiki/codemirror-mode-htmlmixed/plugin.info +++ b/plugins/tiddlywiki/codemirror-mode-htmlmixed/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-mode-htmlmixed", - "description": "CodeMirror Mode: HTML Highlighting", - "author": "JeremyRuston", + "name": "CodeMirror Mode HTML Mixed", + "description": "HTML mixed highlighting mode for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-mode-javascript/plugin.info b/plugins/tiddlywiki/codemirror-mode-javascript/plugin.info index 6bbc03273..c4d39ee7b 100755 --- a/plugins/tiddlywiki/codemirror-mode-javascript/plugin.info +++ b/plugins/tiddlywiki/codemirror-mode-javascript/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-mode-javascript", - "description": "CodeMirror Mode: Javascript Highlighting", - "author": "JeremyRuston", + "name": "CodeMirror Mode JavaScript", + "description": "JavaScript highlighting mode for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-mode-markdown/plugin.info b/plugins/tiddlywiki/codemirror-mode-markdown/plugin.info index a9c8f1fd1..05593c4a1 100755 --- a/plugins/tiddlywiki/codemirror-mode-markdown/plugin.info +++ b/plugins/tiddlywiki/codemirror-mode-markdown/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-mode-markdown", - "description": "CodeMirror Mode: Markdown Highlighting", - "author": "JeremyRuston", + "name": "CodeMirror Mode Markdown", + "description": "Markdown highlighting mode for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/plugin.info b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/plugin.info index e58c0bab0..1d6244a81 100755 --- a/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/plugin.info +++ b/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-mode-x-tiddlywiki", - "description": "CodeMirror Mode: Tiddlywiki Classic Highlighting", - "author": "JeremyRuston", + "name": "CodeMirror Mode TiddlyWiki Classic", + "description": "Tiddlywiki Classic highlighting mode for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-mode-xml/plugin.info b/plugins/tiddlywiki/codemirror-mode-xml/plugin.info index 29ff6c7bc..35065d0cf 100755 --- a/plugins/tiddlywiki/codemirror-mode-xml/plugin.info +++ b/plugins/tiddlywiki/codemirror-mode-xml/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-mode-xml", - "description": "CodeMirror Mode: XML Highlighting", - "author": "JeremyRuston", + "name": "CodeMirror Mode XML", + "description": "XML highlighting mode for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror-search-replace/plugin.info b/plugins/tiddlywiki/codemirror-search-replace/plugin.info index 6f31daa04..15f10dfa5 100755 --- a/plugins/tiddlywiki/codemirror-search-replace/plugin.info +++ b/plugins/tiddlywiki/codemirror-search-replace/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror-search-replace", - "description": "CodeMirror AddOn: Search and Replace", - "author": "JeremyRuston", + "name": "CodeMirror Search and Replace", + "description": "Search and replace for CodeMirror", "list": "readme" } diff --git a/plugins/tiddlywiki/codemirror/plugin.info b/plugins/tiddlywiki/codemirror/plugin.info index bbe17c5af..739b9042f 100755 --- a/plugins/tiddlywiki/codemirror/plugin.info +++ b/plugins/tiddlywiki/codemirror/plugin.info @@ -1,6 +1,6 @@ { "title": "$:/plugins/tiddlywiki/codemirror", - "description": "CodeMirror _Editor", - "author": "JeremyRuston", + "name": "CodeMirror", + "description": "CodeMirror editor", "list": "readme usage keyboard license" } diff --git a/plugins/tiddlywiki/comments/plugin.info b/plugins/tiddlywiki/comments/plugin.info index 8be289f4b..8e99b6546 100644 --- a/plugins/tiddlywiki/comments/plugin.info +++ b/plugins/tiddlywiki/comments/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/comments", - "description": "Comments", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Comments", + "description": "Threaded tiddler comments", "list": "readme config" } diff --git a/plugins/tiddlywiki/d3/plugin.info b/plugins/tiddlywiki/d3/plugin.info index d6fc739eb..1c0b7095d 100644 --- a/plugins/tiddlywiki/d3/plugin.info +++ b/plugins/tiddlywiki/d3/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/d3", - "description": "D3: data visualisation", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "D3", + "description": "D3 data visualisation demo", "list": "readme" } diff --git a/plugins/tiddlywiki/dynaview/plugin.info b/plugins/tiddlywiki/dynaview/plugin.info index 7c90e3a53..e47f5ca9b 100644 --- a/plugins/tiddlywiki/dynaview/plugin.info +++ b/plugins/tiddlywiki/dynaview/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/dynaview", + "name": "DynaView", "description": "Dynamic scrolling and zooming effects", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "readme docs examples config" } diff --git a/plugins/tiddlywiki/evernote/plugin.info b/plugins/tiddlywiki/evernote/plugin.info index baf35156e..5aa63932c 100644 --- a/plugins/tiddlywiki/evernote/plugin.info +++ b/plugins/tiddlywiki/evernote/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/evernote", + "name": "Evernote", "description": "Evernote migration tools", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "readme docs" } diff --git a/plugins/tiddlywiki/external-attachments/plugin.info b/plugins/tiddlywiki/external-attachments/plugin.info index a2d4f9bea..5a294abcc 100644 --- a/plugins/tiddlywiki/external-attachments/plugin.info +++ b/plugins/tiddlywiki/external-attachments/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/external-attachments", - "description": "External attachment support for TiddlyDesktop et al.", - "author": "Jeremy Ruston", - "core-version": ">=5.0.0", + "name": "External Attachments", + "description": "External attachments for TiddlyDesktop", "list": "readme settings" } diff --git a/plugins/tiddlywiki/filesystem/plugin.info b/plugins/tiddlywiki/filesystem/plugin.info index d98a42139..17cfe96c9 100644 --- a/plugins/tiddlywiki/filesystem/plugin.info +++ b/plugins/tiddlywiki/filesystem/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/filesystem", - "description": "Local filesystem syncadaptor", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Filesystem", + "description": "Synchronise changes to the local filesystem", "list": "readme" } diff --git a/plugins/tiddlywiki/github-fork-ribbon/plugin.info b/plugins/tiddlywiki/github-fork-ribbon/plugin.info index 12853a48f..fdef00d7e 100644 --- a/plugins/tiddlywiki/github-fork-ribbon/plugin.info +++ b/plugins/tiddlywiki/github-fork-ribbon/plugin.info @@ -1,6 +1,7 @@ { "title": "$:/plugins/tiddlywiki/github-fork-ribbon", - "description": "Corner ribbon", + "name": "GitHub Fork Ribbon", + "description": "GitHub-inspired corner ribbon", "author": "Simon Whitaker, adapted for TiddlyWiki by JeremyRuston", "list": "readme usage" } diff --git a/plugins/tiddlywiki/googleanalytics/plugin.info b/plugins/tiddlywiki/googleanalytics/plugin.info index 4754bca2a..7a23112c1 100644 --- a/plugins/tiddlywiki/googleanalytics/plugin.info +++ b/plugins/tiddlywiki/googleanalytics/plugin.info @@ -1,8 +1,7 @@ { "title": "$:/plugins/tiddlywiki/googleanalytics", - "description": "Google Analytics: website statistics", - "author": "JeremyRuston", + "name": "Google Analytics", + "description": "Website visitor statistics from Google", "contributor": "Sylvain Comte", - "core-version": ">=5.0.0", "list": "readme settings usage" } diff --git a/plugins/tiddlywiki/hammerjs/plugin.info b/plugins/tiddlywiki/hammerjs/plugin.info index 3aa05269c..77a4be4ad 100644 --- a/plugins/tiddlywiki/hammerjs/plugin.info +++ b/plugins/tiddlywiki/hammerjs/plugin.info @@ -1,7 +1,7 @@ { "title": "$:/plugins/tiddlywiki/hammerjs", - "description": "HammerJS library by Jorik Tangelder (Eight Media)", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "HammerJS", + "description": "HammerJS touch gesture library", + "author": "Jorik Tangelder (Eight Media)", "list": "readme license" } diff --git a/plugins/tiddlywiki/help/plugin.info b/plugins/tiddlywiki/help/plugin.info index f43237a07..6e75aa3bc 100644 --- a/plugins/tiddlywiki/help/plugin.info +++ b/plugins/tiddlywiki/help/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/help", - "description": "Help panel for TiddlyWiki", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Help", + "description": "Floating help panel", "list": "readme" } diff --git a/plugins/tiddlywiki/highlight/plugin.info b/plugins/tiddlywiki/highlight/plugin.info index bcc1ffa69..663b0dc5f 100644 --- a/plugins/tiddlywiki/highlight/plugin.info +++ b/plugins/tiddlywiki/highlight/plugin.info @@ -1,7 +1,7 @@ { "title": "$:/plugins/tiddlywiki/highlight", - "description": "Highlight.js: syntax highlighting", - "author": "JoaoBolila", - "core-version": ">=5.0.0", + "name": "Highlight", + "description": "Highlight.js syntax highlighting", + "author": "Joao Bolila", "list": "readme usage howto license" } diff --git a/plugins/tiddlywiki/innerwiki/plugin.info b/plugins/tiddlywiki/innerwiki/plugin.info index 07b1e550d..d574d4923 100644 --- a/plugins/tiddlywiki/innerwiki/plugin.info +++ b/plugins/tiddlywiki/innerwiki/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/innerwiki", - "description": "Innerwiki: programmable screenshots", - "author": "Jeremy Ruston", - "plugin-type": "plugin", + "name": "Innerwiki", + "description": "Innerwikis for screenshots and hacking", "list": "readme docs examples" } diff --git a/plugins/tiddlywiki/internals/plugin.info b/plugins/tiddlywiki/internals/plugin.info index 78634903c..e64ded56a 100644 --- a/plugins/tiddlywiki/internals/plugin.info +++ b/plugins/tiddlywiki/internals/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/internals", + "name": "Internals", "description": "Tools for exploring the internals of TiddlyWiki", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "readme" } diff --git a/plugins/tiddlywiki/jasmine/plugin.info b/plugins/tiddlywiki/jasmine/plugin.info index fdbb836dd..f46a8e1e9 100644 --- a/plugins/tiddlywiki/jasmine/plugin.info +++ b/plugins/tiddlywiki/jasmine/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/jasmine", - "description": "Jasmine: testing framework", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Jasmine", + "description": "Jasmine testing framework", "list": "readme" } diff --git a/plugins/tiddlywiki/jszip/plugin.info b/plugins/tiddlywiki/jszip/plugin.info index f3cf1789f..ee0d00145 100644 --- a/plugins/tiddlywiki/jszip/plugin.info +++ b/plugins/tiddlywiki/jszip/plugin.info @@ -1,7 +1,7 @@ { "title": "$:/plugins/tiddlywiki/jszip", - "description": "Wrapper for JSZip by Stuart Knightley, David Duponchel, Franz Buchinger, António Afonso", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "JSZip", + "description": "JSZip library", + "author": "Stuart Knightley, David Duponchel, Franz Buchinger, António Afonso", "list": "readme license" } diff --git a/plugins/tiddlywiki/katex/plugin.info b/plugins/tiddlywiki/katex/plugin.info index bf57322a1..13df252d8 100644 --- a/plugins/tiddlywiki/katex/plugin.info +++ b/plugins/tiddlywiki/katex/plugin.info @@ -1,8 +1,7 @@ { "title": "$:/plugins/tiddlywiki/katex", - "description": "KaTeX: mathematical typography", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "KaTeX", + "description": "KaTeX library for mathematical typography", "list": "readme usage", "library-version": "v0.10.2" } diff --git a/plugins/tiddlywiki/markdown/plugin.info b/plugins/tiddlywiki/markdown/plugin.info index 293d26359..b95685831 100755 --- a/plugins/tiddlywiki/markdown/plugin.info +++ b/plugins/tiddlywiki/markdown/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/markdown", - "description": "Markdown parser", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Markdown", + "description": "Markdown parser based on markdown-js", "list": "readme usage" } diff --git a/plugins/tiddlywiki/mobiledragdrop/plugin.info b/plugins/tiddlywiki/mobiledragdrop/plugin.info index a8fff1e6b..cb8824d82 100644 --- a/plugins/tiddlywiki/mobiledragdrop/plugin.info +++ b/plugins/tiddlywiki/mobiledragdrop/plugin.info @@ -1,7 +1,7 @@ { "title": "$:/plugins/tiddlywiki/mobiledragdrop", + "name": "Mobile Drag Drop", "description": "Mobile drag and drop shim", - "author": "Tim Ruffles, adapted by Jeremy Ruston ", - "core-version": ">=5.0.0", + "author": "Tim Ruffles", "list": "readme license" } diff --git a/plugins/tiddlywiki/nodewebkitsaver/plugin.info b/plugins/tiddlywiki/nodewebkitsaver/plugin.info index c2a64d8fe..d292c9e85 100644 --- a/plugins/tiddlywiki/nodewebkitsaver/plugin.info +++ b/plugins/tiddlywiki/nodewebkitsaver/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/nodewebkitsaver", - "description": "NW.js saver", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "nw.js Saver", + "description": "Saver for nw.js", "list": "readme" } diff --git a/plugins/tiddlywiki/pluginlibrary/plugin.info b/plugins/tiddlywiki/pluginlibrary/plugin.info index 07918d663..a86c01eb8 100644 --- a/plugins/tiddlywiki/pluginlibrary/plugin.info +++ b/plugins/tiddlywiki/pluginlibrary/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/pluginlibrary", + "name": "Plugin Library", "description": "Plugin library builder", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "readme" } diff --git a/plugins/tiddlywiki/powered-by-tiddlywiki/plugin.info b/plugins/tiddlywiki/powered-by-tiddlywiki/plugin.info index 674ee850e..e34f059ae 100644 --- a/plugins/tiddlywiki/powered-by-tiddlywiki/plugin.info +++ b/plugins/tiddlywiki/powered-by-tiddlywiki/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/powered-by-tiddlywiki", - "description": "Powered by TiddlyWiki Banner", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Powered By TiddlyWiki", + "description": "Powered by TiddlyWiki banner", "list": "readme" } diff --git a/plugins/tiddlywiki/qrcode/plugin.info b/plugins/tiddlywiki/qrcode/plugin.info index 1be38b1a3..976bb2b3b 100644 --- a/plugins/tiddlywiki/qrcode/plugin.info +++ b/plugins/tiddlywiki/qrcode/plugin.info @@ -1,7 +1,7 @@ { "title": "$:/plugins/tiddlywiki/qrcode", + "name": "QR Code", "description": "QR Code generator", - "author": "Zeno Zeng, adapted by Jeremy Ruston", - "plugin-type": "plugin", + "author": "Zeno Zeng", "list": "readme usage examples license" } diff --git a/plugins/tiddlywiki/railroad/plugin.info b/plugins/tiddlywiki/railroad/plugin.info index f561c7bd3..95d3f65cc 100644 --- a/plugins/tiddlywiki/railroad/plugin.info +++ b/plugins/tiddlywiki/railroad/plugin.info @@ -1,7 +1,7 @@ { "title": "$:/plugins/tiddlywiki/railroad", + "name": "Railroad", "description": "Railroad diagram generator", - "author": "AstridElocson", - "plugin-type": "plugin", + "author": "Astrid Elocson", "list": "readme usage syntax example" } diff --git a/plugins/tiddlywiki/savetrail/plugin.info b/plugins/tiddlywiki/savetrail/plugin.info index 6e7206434..67cd4c20f 100644 --- a/plugins/tiddlywiki/savetrail/plugin.info +++ b/plugins/tiddlywiki/savetrail/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/savetrail", - "description": "Auto-download modified tiddlers", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Save Trail", + "description": "Automatically download modified tiddlers", "list": "readme settings" } diff --git a/plugins/tiddlywiki/sax/plugin.info b/plugins/tiddlywiki/sax/plugin.info index 033f1a875..257f2abb3 100644 --- a/plugins/tiddlywiki/sax/plugin.info +++ b/plugins/tiddlywiki/sax/plugin.info @@ -1,7 +1,7 @@ { "title": "$:/plugins/tiddlywiki/sax", - "description": "Wrapper for sax.js library by Isaac Z. Schlueter", + "name": "sax js", + "description": "sax.js library", "author": "Isaac Z. Schlueter", - "core-version": ">=5.0.0", "list": "readme license" } diff --git a/plugins/tiddlywiki/stacked-view/plugin.info b/plugins/tiddlywiki/stacked-view/plugin.info index 2872a79d3..0b2ae3c02 100644 --- a/plugins/tiddlywiki/stacked-view/plugin.info +++ b/plugins/tiddlywiki/stacked-view/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/stacked-view", + "name": "Stacked View", "description": "Stacked card storyview", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "readme" } diff --git a/plugins/tiddlywiki/tahoelafs/plugin.info b/plugins/tiddlywiki/tahoelafs/plugin.info index f44937540..7b522e937 100644 --- a/plugins/tiddlywiki/tahoelafs/plugin.info +++ b/plugins/tiddlywiki/tahoelafs/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/tahoelafs", + "name": "TahoeLAFS", "description": "Tahoe-LAFS saver", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "readme" } diff --git a/plugins/tiddlywiki/text-slicer/plugin.info b/plugins/tiddlywiki/text-slicer/plugin.info index 97c06fd5c..937014060 100644 --- a/plugins/tiddlywiki/text-slicer/plugin.info +++ b/plugins/tiddlywiki/text-slicer/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/text-slicer", + "name": "Text Slicer", "description": "Tools for slicing text into tiddlers", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "readme docs" } diff --git a/plugins/tiddlywiki/tiddlyweb/plugin.info b/plugins/tiddlywiki/tiddlyweb/plugin.info index b0e27db3e..0ba3464ec 100644 --- a/plugins/tiddlywiki/tiddlyweb/plugin.info +++ b/plugins/tiddlywiki/tiddlyweb/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/tiddlyweb", - "description": "TiddlyWeb and TiddlySpace components", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "TiddlyWeb", + "description": "Sync changes to TW5 server or TiddlyWeb server", "list": "readme" } diff --git a/plugins/tiddlywiki/translators/plugin.info b/plugins/tiddlywiki/translators/plugin.info index c2a12e4da..e77ea9b3f 100644 --- a/plugins/tiddlywiki/translators/plugin.info +++ b/plugins/tiddlywiki/translators/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/translators", + "name": "Translators", "description": "Translation editing tools", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "readme" } diff --git a/plugins/tiddlywiki/tw2parser/plugin.info b/plugins/tiddlywiki/tw2parser/plugin.info index 57fbcec5c..409ae1447 100644 --- a/plugins/tiddlywiki/tw2parser/plugin.info +++ b/plugins/tiddlywiki/tw2parser/plugin.info @@ -1,7 +1,7 @@ { "title": "$:/plugins/tiddlywiki/tw2parser", + "name": "TW2 Parser", "description": "TiddlyWiki Classic parser", - "authors": "JeremyRuston, JeffreyWilkinson", - "core-version": ">=5.0.15", + "author": "Jeffrey Wilkinson", "list": "readme" } diff --git a/plugins/tiddlywiki/tw5.com-docs/plugin.info b/plugins/tiddlywiki/tw5.com-docs/plugin.info index 10eaa3c98..d0b0de318 100644 --- a/plugins/tiddlywiki/tw5.com-docs/plugin.info +++ b/plugins/tiddlywiki/tw5.com-docs/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/tw5.com-docs", + "name": "TW5.com Docs", "description": "Documentation from tiddlywiki.com", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "" } diff --git a/plugins/tiddlywiki/twitter/plugin.info b/plugins/tiddlywiki/twitter/plugin.info index a56edfeb4..28b66f5fa 100644 --- a/plugins/tiddlywiki/twitter/plugin.info +++ b/plugins/tiddlywiki/twitter/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/twitter", - "description": "Twitter for TiddlyWiki", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "Twitter", + "description": "Twitter embedding tools", "list": "readme usage" } diff --git a/plugins/tiddlywiki/upgrade/plugin.info b/plugins/tiddlywiki/upgrade/plugin.info index 4f4664fe6..a3e6d6409 100644 --- a/plugins/tiddlywiki/upgrade/plugin.info +++ b/plugins/tiddlywiki/upgrade/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/upgrade", + "name": "Upgrade", "description": "Upgrade system for TiddlyWiki versions", - "author": "JeremyRuston", - "core-version": ">=5.0.0", "list": "readme" } diff --git a/plugins/tiddlywiki/xlsx-utils/plugin.info b/plugins/tiddlywiki/xlsx-utils/plugin.info index 93a4202f7..1fe58b75e 100644 --- a/plugins/tiddlywiki/xlsx-utils/plugin.info +++ b/plugins/tiddlywiki/xlsx-utils/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/xlsx-utils", + "name": "XLSX Utils", "description": "XLSX spreadsheet utilities", - "author": "Jeremy Ruston and SheetJS", - "core-version": ">=5.0.0", "list": "readme controls license" } diff --git a/plugins/tiddlywiki/xmldom/plugin.info b/plugins/tiddlywiki/xmldom/plugin.info index d28b438a7..b741d3e68 100644 --- a/plugins/tiddlywiki/xmldom/plugin.info +++ b/plugins/tiddlywiki/xmldom/plugin.info @@ -1,7 +1,6 @@ { "title": "$:/plugins/tiddlywiki/xmldom", - "description": "Wrapper for xmldom", - "author": "JeremyRuston", - "core-version": ">=5.0.0", + "name": "xmldom", + "description": "xmldom library", "list": "readme license" } From d91fcd990e24390e6c33ea6624812eee7efc9bf2 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Thu, 19 Sep 2019 13:20:07 +0100 Subject: [PATCH 78/80] Improve appearance of plugin chooser --- core/ui/ControlPanel/Modals/AddPlugins.tid | 19 +++--- themes/tiddlywiki/vanilla/base.tid | 71 ++++++++++++++++------ 2 files changed, 64 insertions(+), 26 deletions(-) diff --git a/core/ui/ControlPanel/Modals/AddPlugins.tid b/core/ui/ControlPanel/Modals/AddPlugins.tid index 0fe8af20d..c1cb387d2 100644 --- a/core/ui/ControlPanel/Modals/AddPlugins.tid +++ b/core/ui/ControlPanel/Modals/AddPlugins.tid @@ -2,13 +2,18 @@ title: $:/core/ui/ControlPanel/Modals/AddPlugins subtitle: {{$:/core/images/download-button}} {{$:/language/ControlPanel/Plugins/Add/Caption}} \define install-plugin-button() -<$button> +
    +<$button class={{{ [get[original-title]get[version]then[tc-reinstall]] tc-btn-invisible tc-install-plugin +[join[ ]] }}}> <$action-sendmessage $message="tm-load-plugin-from-library" url={{!!url}} title={{$(assetInfo)$!!original-title}}/> +{{$:/core/images/download-button}} <$list filter="[get[original-title]get[version]]" variable="installedVersion" emptyMessage="""{{$:/language/ControlPanel/Plugins/Install/Caption}}"""> {{$:/language/ControlPanel/Plugins/Reinstall/Caption}} -<$reveal stateTitle=<> stateField="contains-javascript" type="match" text="yes">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}} +
    +
    +<$reveal stateTitle=<> stateField="contains-javascript" type="match" text="yes">{{$:/language/ControlPanel/Plugins/PluginWillRequireReload}} +
    \end \define popup-state-macro() @@ -18,7 +23,7 @@ $:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$ \define display-plugin-info(type) <$set name="popup-state" value=<>>
    -
    +
    <$reveal type="nomatch" state=<> text="yes"> <$button class="tc-btn-invisible tc-btn-dropdown" set=<> setTo="yes"> {{$:/core/images/right-arrow}} @@ -30,17 +35,17 @@ $:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$
    -
    +
    <$list filter="[has[icon]]" emptyMessage="""<$transclude tiddler="$:/core/images/plugin-generic-$type$"/>""">
    -
    +

    <$text text={{{ [get[name]] ~[get[original-title]split[/]last[1]] }}}/>: <$view tiddler=<> field="description"/>

    <$view tiddler=<> field="original-title"/>

    <$view tiddler=<> field="version"/>
    -
    +
    <>
    @@ -77,7 +82,7 @@ $:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$
    -<$list filter="[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[description]]" variable="assetInfo"> +<$list filter="[all[tiddlers+shadows]tag[$:/tags/RemoteAssetInfo]server-url{!!url}original-plugin-type[$type$]search:author,description,original-title,readme,title{$:/temp/RemoteAssetSearch/$(currentTiddler)$}sort[title]sort[name]]" variable="assetInfo"> <>
    diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index e6a19d013..6b4920637 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -2070,11 +2070,13 @@ html body.tc-body.tc-single-tiddler-window { } .tc-plugin-info { - display: block; + display: flex; border: 1px solid <>; + fill: <>; background-colour: <>; margin: 0.5em 0 0.5em 0; padding: 4px; + align-items: center; } .tc-plugin-info-disabled { @@ -2099,40 +2101,57 @@ a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > s } .tc-plugin-info-chunk { - display: inline-block; - vertical-align: middle; + margin: 2px; } -.tc-plugin-info-chunk h1 { - font-size: 1em; - margin: 2px 0 2px 0; +.tc-plugin-info-chunk.tc-plugin-info-toggle { + flex-grow: 0; + flex-shrink: 0; } -.tc-plugin-info-chunk h2 { +.tc-plugin-info-chunk.tc-plugin-info-icon { + flex-grow: 0; + flex-shrink: 0; +} + +.tc-plugin-info-chunk.tc-plugin-info-description { + flex-grow: 1; +} + +.tc-plugin-info-chunk.tc-plugin-info-buttons { font-size: 0.8em; + line-height: 1.2; + flex-grow: 0; + flex-shrink: 0; + text-align: right; +} + +.tc-plugin-info-chunk.tc-plugin-info-description h1 { + font-size: 1em; + line-height: 1.2; margin: 2px 0 2px 0; } -.tc-plugin-info-chunk div { +.tc-plugin-info-chunk.tc-plugin-info-description h2 { + font-size: 0.8em; + line-height: 1.2; + margin: 2px 0 2px 0; +} + +.tc-plugin-info-chunk.tc-plugin-info-description div { font-size: 0.7em; + line-height: 1.2; margin: 2px 0 2px 0; } -.tc-plugin-info:hover > .tc-plugin-info-chunk > img, .tc-plugin-info:hover > .tc-plugin-info-chunk > svg { - width: 2em; - height: 2em; - fill: <>; +.tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg { + width: 1.5em; + height: 1.5em; } -.tc-plugin-info > .tc-plugin-info-chunk > img, .tc-plugin-info > .tc-plugin-info-chunk > svg { +.tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg { width: 2em; height: 2em; - fill: <>; -} - -.tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > img, .tc-plugin-info.tc-small-icon > .tc-plugin-info-chunk > svg { - width: 1em; - height: 1em; } .tc-plugin-info-dropdown { @@ -2151,6 +2170,20 @@ a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > s padding: 1em 1em 1em 1em; } +.tc-plugin-library-listing .tc-install-plugin { + font-weight: bold; + background: green; + color: white; + fill: white; + border-radius: 4px; + padding: 3px; +} + +.tc-plugin-library-listing .tc-install-plugin.tc-reinstall { + background: blue; +} + + .tc-check-list { line-height: 2em; } From db2ed63e547293602521cec9698b8f65a0d2b471 Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Fri, 20 Sep 2019 14:30:52 +0100 Subject: [PATCH 79/80] Fix formatting of plugin listing in control panel And make some minor tweaks across the plugin chooser too --- core/ui/Components/plugin-info.tid | 10 +++++----- core/ui/ControlPanel/Modals/AddPlugins.tid | 4 ++-- themes/tiddlywiki/vanilla/base.tid | 6 ++++-- 3 files changed, 11 insertions(+), 9 deletions(-) diff --git a/core/ui/Components/plugin-info.tid b/core/ui/Components/plugin-info.tid index 7f548e1aa..54e394d82 100644 --- a/core/ui/Components/plugin-info.tid +++ b/core/ui/Components/plugin-info.tid @@ -19,24 +19,24 @@ $:/config/Plugins/Disabled/$(currentTiddler)$ \end \define plugin-table-body(type,disabledMessage,default-popup-state) -
    +
    <$reveal type="nomatch" state=<> text="yes" default="""$default-popup-state$"""> <$button class="tc-btn-invisible tc-btn-dropdown" set=<> setTo="yes"> -{{$:/core/images/right-arrow}} +{{$:/core/images/chevron-right}} <$reveal type="match" state=<> text="yes" default="""$default-popup-state$"""> <$button class="tc-btn-invisible tc-btn-dropdown" set=<> setTo="no"> -{{$:/core/images/down-arrow}} +{{$:/core/images/chevron-down}}
    -
    +
    <$transclude tiddler=<> subtiddler=<>> <$transclude tiddler="$:/core/images/plugin-generic-$type$"/>
    -
    +

    ''<$view field="description"><$view field="title"/>'' $disabledMessage$

    diff --git a/core/ui/ControlPanel/Modals/AddPlugins.tid b/core/ui/ControlPanel/Modals/AddPlugins.tid index c1cb387d2..3287819cf 100644 --- a/core/ui/ControlPanel/Modals/AddPlugins.tid +++ b/core/ui/ControlPanel/Modals/AddPlugins.tid @@ -26,12 +26,12 @@ $:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$
    <$reveal type="nomatch" state=<> text="yes"> <$button class="tc-btn-invisible tc-btn-dropdown" set=<> setTo="yes"> -{{$:/core/images/right-arrow}} +{{$:/core/images/chevron-right}} <$reveal type="match" state=<> text="yes"> <$button class="tc-btn-invisible tc-btn-dropdown" set=<> setTo="no"> -{{$:/core/images/down-arrow}} +{{$:/core/images/chevron-down}}
    diff --git a/themes/tiddlywiki/vanilla/base.tid b/themes/tiddlywiki/vanilla/base.tid index 6b4920637..e02a8c10c 100644 --- a/themes/tiddlywiki/vanilla/base.tid +++ b/themes/tiddlywiki/vanilla/base.tid @@ -2107,11 +2107,13 @@ a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > s .tc-plugin-info-chunk.tc-plugin-info-toggle { flex-grow: 0; flex-shrink: 0; + line-height: 1; } .tc-plugin-info-chunk.tc-plugin-info-icon { flex-grow: 0; flex-shrink: 0; + line-height: 1; } .tc-plugin-info-chunk.tc-plugin-info-description { @@ -2145,8 +2147,8 @@ a.tc-tiddlylink.tc-plugin-info:hover .tc-plugin-info > .tc-plugin-info-chunk > s } .tc-plugin-info-chunk.tc-plugin-info-toggle img, .tc-plugin-info-chunk.tc-plugin-info-toggle svg { - width: 1.5em; - height: 1.5em; + width: 1em; + height: 1em; } .tc-plugin-info-chunk.tc-plugin-info-icon img, .tc-plugin-info-chunk.tc-plugin-info-icon svg { From f460b2caa1f5c19529215f429dccb570c693ce8b Mon Sep 17 00:00:00 2001 From: Jeremy Ruston Date: Tue, 24 Sep 2019 13:23:21 +0100 Subject: [PATCH 80/80] Include empty.html in the quick build --- bin/quick-bld.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/bin/quick-bld.sh b/bin/quick-bld.sh index bc11208f2..63da9aacc 100755 --- a/bin/quick-bld.sh +++ b/bin/quick-bld.sh @@ -4,5 +4,5 @@ tiddlywiki editions/prerelease \ --verbose \ - --build favicon index \ + --build favicon index empty \ || exit 1