1
0
mirror of https://github.com/Jermolene/TiddlyWiki5 synced 2024-11-30 05:19:57 +00:00

Add plugin stability badges (#8198)

* Initial Commit

* Fix plugin library URL

* Need to set plugin library location for prerelease

* Styling tweaks

* Docs

* Add tests that the core plugins all have a valid stability field
This commit is contained in:
Jeremy Ruston 2024-05-21 11:22:39 +01:00 committed by GitHub
parent 71d77fe428
commit 5aa3646df5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
86 changed files with 328 additions and 113 deletions

View File

@ -30,6 +30,7 @@ name: The human readable name associated with a plugin tiddler
parent-plugin: For a plugin, specifies which plugin of which it is a sub-plugin parent-plugin: For a plugin, specifies which plugin of which it is a sub-plugin
plugin-priority: A numerical value indicating the priority of a plugin tiddler plugin-priority: A numerical value indicating the priority of a plugin tiddler
plugin-type: The type of plugin in a plugin tiddler plugin-type: The type of plugin in a plugin tiddler
stability: The development status of a plugin: deprecated, experimental, stable, or legacy
revision: The revision of the tiddler held at the server revision: The revision of the tiddler held at the server
released: Date of a TiddlyWiki release released: Date of a TiddlyWiki release
source: The source URL associated with a tiddler source: The source URL associated with a tiddler

View File

@ -27,33 +27,8 @@ var Command = function(params,commander,callback) {
Command.prototype.execute = function() { Command.prototype.execute = function() {
var wiki = this.commander.wiki, var wiki = this.commander.wiki,
fs = require("fs"),
path = require("path"),
upgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE, upgradeLibraryTitle = this.params[0] || UPGRADE_LIBRARY_TITLE,
tiddlers = {}; tiddlers = $tw.utils.getAllPlugins();
// Collect up the library plugins
var collectPlugins = function(folder) {
var pluginFolders = $tw.utils.getSubdirectories(folder) || [];
for(var p=0; p<pluginFolders.length; p++) {
if(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {
pluginFields = $tw.loadPluginFolder(path.resolve(folder,"./" + pluginFolders[p]));
if(pluginFields && pluginFields.title) {
tiddlers[pluginFields.title] = pluginFields;
}
}
}
},
collectPublisherPlugins = function(folder) {
var publisherFolders = $tw.utils.getSubdirectories(folder) || [];
for(var t=0; t<publisherFolders.length; t++) {
if(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {
collectPlugins(path.resolve(folder,"./" + publisherFolders[t]));
}
}
};
$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);
$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);
$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);
// Save the upgrade library tiddler // Save the upgrade library tiddler
var pluginFields = { var pluginFields = {
title: upgradeLibraryTitle, title: upgradeLibraryTitle,

View File

@ -0,0 +1,48 @@
/*\
title: $:/core/modules/utils/repository.js
type: application/javascript
module-type: utils
Utilities for working with the TiddlyWiki repository file structure
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
/*
Get an object containing all the plugins as a hashmap by title of the JSON representation of the plugin
*/
exports.getAllPlugins = function() {
var fs = require("fs"),
path = require("path"),
tiddlers = {};
// Collect up the library plugins
var collectPlugins = function(folder) {
var pluginFolders = $tw.utils.getSubdirectories(folder) || [];
for(var p=0; p<pluginFolders.length; p++) {
if(!$tw.boot.excludeRegExp.test(pluginFolders[p])) {
var pluginFields = $tw.loadPluginFolder(path.resolve(folder,"./" + pluginFolders[p]));
if(pluginFields && pluginFields.title) {
tiddlers[pluginFields.title] = pluginFields;
}
}
}
},
collectPublisherPlugins = function(folder) {
var publisherFolders = $tw.utils.getSubdirectories(folder) || [];
for(var t=0; t<publisherFolders.length; t++) {
if(!$tw.boot.excludeRegExp.test(publisherFolders[t])) {
collectPlugins(path.resolve(folder,"./" + publisherFolders[t]));
}
}
};
$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.pluginsPath,$tw.config.pluginsEnvVar),collectPublisherPlugins);
$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.themesPath,$tw.config.themesEnvVar),collectPublisherPlugins);
$tw.utils.each($tw.getLibraryItemSearchPaths($tw.config.languagesPath,$tw.config.languagesEnvVar),collectPlugins);
return tiddlers;
};
})();

View File

@ -5,5 +5,6 @@
"author": "JeremyRuston", "author": "JeremyRuston",
"core-version": ">=5.0.0", "core-version": ">=5.0.0",
"plugin-priority": "0", "plugin-priority": "0",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -45,7 +45,17 @@ $:/config/Plugins/Disabled/$(currentTiddler)$
<$view field="title"/> <$view field="title"/>
</h2> </h2>
<h2> <h2>
<div><em><$view field="version"/></em></div> <div>
<%if [<currentTiddler>get[stability]match[STABILITY_0_DEPRECATED]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-deprecated">DEPRECATED</span>
<%elseif [<currentTiddler>get[stability]match[STABILITY_1_EXPERIMENTAL]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-experimental">EXPERIMENTAL</span>
<%elseif [<currentTiddler>get[stability]match[STABILITY_2_STABLE]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-stable">STABLE</span>
<%elseif [<currentTiddler>get[stability]match[STABILITY_3_LEGACY]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-legacy">LEGACY</span>
<%endif%>
<em><$view field="version"/></em></div>
</h2> </h2>
</div> </div>
\end \end

View File

@ -70,9 +70,20 @@ $:/state/add-plugin-info/$(connectionTiddler)$/$(assetInfo)$
<div class="tc-plugin-info-chunk tc-plugin-info-description"> <div class="tc-plugin-info-chunk tc-plugin-info-description">
<h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>: <h1><strong><$text text={{{ [<assetInfo>get[name]] ~[<assetInfo>get[original-title]split[/]last[1]] }}}/></strong>:
&#32; &#32;
<$view tiddler=<<assetInfo>> field="description"/></h1> <$view tiddler=<<assetInfo>> field="description"/>
</h1>
<h2><$view tiddler=<<assetInfo>> field="original-title"/></h2> <h2><$view tiddler=<<assetInfo>> field="original-title"/></h2>
<div><em><$view tiddler=<<assetInfo>> field="version"/></em></div> <div>
<%if [<assetInfo>get[stability]match[STABILITY_0_DEPRECATED]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-deprecated">DEPRECATED</span>
<%elseif [<assetInfo>get[stability]match[STABILITY_1_EXPERIMENTAL]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-experimental">EXPERIMENTAL</span>
<%elseif [<assetInfo>get[stability]match[STABILITY_2_STABLE]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-stable">STABLE</span>
<%elseif [<assetInfo>get[stability]match[STABILITY_3_LEGACY]] %>
<span class="tc-plugin-info-stability tc-plugin-info-stability-legacy">LEGACY</span>
<%endif%>
<em><$view tiddler=<<assetInfo>> field="version"/></em></div>
<$list filter="[<assetInfo>get[original-title]get[version]]" variable="installedVersion"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list> <$list filter="[<assetInfo>get[original-title]get[version]]" variable="installedVersion"><div><em>{{$:/language/ControlPanel/Plugins/AlreadyInstalled/Hint}}</em></div></$list>
</div> </div>
<div class="tc-plugin-info-chunk tc-plugin-info-buttons"> <div class="tc-plugin-info-chunk tc-plugin-info-buttons">

View File

@ -1,6 +1,6 @@
title: $:/config/OfficialPluginLibrary
tags: $:/tags/PluginLibrary
url: https://tiddlywiki.com/library/v5.3.3/index.html
caption: {{$:/language/OfficialPluginLibrary}} caption: {{$:/language/OfficialPluginLibrary}}
tags: $:/tags/PluginLibrary
title: $:/config/OfficialPluginLibrary
url: https://tiddlywiki5-git-plugin-stability-badges-jermolenes-projects.vercel.app/library/v5.3.3/index.html
{{$:/language/OfficialPluginLibrary/Hint}} Plugin library for https://tiddlywiki5-git-plugin-stability-badges-jermolenes-projects.vercel.app

View File

@ -1,6 +1,6 @@
title: $:/config/OfficialPluginLibrary caption: {{$:/language/OfficialPluginLibrary}}
tags: $:/tags/PluginLibrary tags: $:/tags/PluginLibrary
url: https://tiddlywiki.com/prerelease/library/v5.3.3/index.html title: $:/config/OfficialPluginLibrary
caption: {{$:/language/OfficialPluginLibrary}} (Prerelease) url: https://tiddlywiki5-git-plugin-stability-badges-jermolenes-projects.vercel.app/library/v5.3.3/index.html
The prerelease version of the official ~TiddlyWiki plugin library at tiddlywiki.com. Plugins, themes and language packs are maintained by the core team. Plugin library for https://tiddlywiki5-git-plugin-stability-badges-jermolenes-projects.vercel.app

View File

@ -0,0 +1,44 @@
/*\
title: test-plugins.js
type: application/javascript
tags: [[$:/tags/test-spec]]
Tests for integrity of the core plugins, languages, themes and editions
\*/
(function(){
/*jslint node: true, browser: true */
/*global $tw: false */
"use strict";
describe("Plugin tests", function() {
// Get all the plugins as a hashmap by title of a JSON string with the plugin content
var tiddlers = $tw.utils.getAllPlugins();
// console.log(JSON.stringify(Object.keys(tiddlers),null,4));
describe("every plugin should have the required standard fields", function() {
var titles = Object.keys(tiddlers);
$tw.utils.each(titles,function(title) {
it("plugin " + title + " should have the required standard fields",function() {
var fields = tiddlers[title];
expect(fields["plugin-type"]).toMatch(/^(?:plugin|language|theme)$/);
switch(fields["plugin-type"]) {
case "plugin":
expect(!!(fields.name && fields.description && fields.list)).toEqual(true);
expect(fields.stability).toMatch(/^(?:STABILITY_0_DEPRECATED|STABILITY_1_EXPERIMENTAL|STABILITY_2_STABLE|STABILITY_3_LEGACY)$/);
break;
case "language":
expect(!!(fields.name && fields.description)).toEqual(true);
break;
case "theme":
expect(!!(fields.name && fields.description)).toEqual(true);
break;
}
});
});
});
});
})();

View File

@ -1,5 +1,5 @@
created: 20130825213300000 created: 20130825213300000
modified: 20240416103247799 modified: 20240520162904479
tags: Concepts tags: Concepts
title: TiddlerFields title: TiddlerFields
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@ -39,6 +39,7 @@ Other fields used by the core are:
|`name` |<<lingo name>> | |`name` |<<lingo name>> |
|`plugin-priority` |<<lingo plugin-priority>> | |`plugin-priority` |<<lingo plugin-priority>> |
|`plugin-type` |<<lingo plugin-type>> | |`plugin-type` |<<lingo plugin-type>> |
|`stability` |<<lingo stability>> |
|`source` |<<lingo source>> | |`source` |<<lingo source>> |
|`subtitle` |<<lingo subtitle>> | |`subtitle` |<<lingo subtitle>> |
|`throttle.refresh` |<<lingo throttle.refresh>> | |`throttle.refresh` |<<lingo throttle.refresh>> |

View File

@ -1,5 +1,5 @@
created: 20130826122000000 created: 20130826122000000
modified: 20220613124446953 modified: 20240520162828577
tags: Mechanisms tags: Mechanisms
title: PluginMechanism title: PluginMechanism
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
@ -16,6 +16,10 @@ By convention, plugin titles have the form `$:/plugins/<publisher>/<name>`. Plug
When [[running TiddlyWiki under Node.js|TiddlyWiki on Node.js]], plugins can also be stored as individual tiddler files in [[PluginFolders]]. When [[running TiddlyWiki under Node.js|TiddlyWiki on Node.js]], plugins can also be stored as individual tiddler files in [[PluginFolders]].
! Plugin Stability
{{Plugin Stability}}
! Plugin Types ! Plugin Types
{{Plugin Types}} {{Plugin Types}}

View File

@ -4,7 +4,7 @@ tags: [[Releases]]
title: TiddlyWiki5 Versioning title: TiddlyWiki5 Versioning
type: text/vnd.tiddlywiki type: text/vnd.tiddlywiki
Each release of TiddlyWiki5 is identified by a version number that complies with the [[Semantic Versioning 2.0.0|http://semver.org/]] standard. Each release of TiddlyWiki5 is identified by a version number that complies with a variant of [[Semantic Versioning 2.0.0|http://semver.org/]] standard.
! TiddlyWiki Core Version ! TiddlyWiki Core Version

View File

@ -0,0 +1,14 @@
created: 20240520155341641
modified: 20240520162820882
tags: PluginMechanism
title: Plugin Stability
type: text/vnd.tiddlywiki
Plugins are recommended to have a `stability` field that communicates the state of development of the plugin. It can contain the following values:
* ''STABILITY_0_DEPRECATED'' - Deprecated. This plugin is not recommended for new projects
* ''STABILITY_1_EXPERIMENTAL'' - Experimental. Non-backward compatible changes or removal may occur in any future release. Use of the plugin is not recommended in production environments
* ''STABILITY_2_STABLE'' - Stable.
* ''STABILITY_3_LEGACY'' - Legacy. Although this plugin is unlikely to be removed, it is no longer actively maintained, and other alternatives are available
These stability levels are taken from the Node.js project - https://nodejs.org/api/documentation.html#stability-index.

View File

@ -3,5 +3,6 @@
"name": "Async", "name": "Async",
"description": "async.js library", "description": "async.js library",
"author": "Caolan McMahon", "author": "Caolan McMahon",
"list": "readme license" "list": "readme license",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "AWS", "name": "AWS",
"description": "Amazon Web Services extensions and tools", "description": "Amazon Web Services extensions and tools",
"list": "readme setup commands lambda", "list": "readme setup commands lambda",
"dependents": ["$:/plugins/tiddlywiki/async","$:/plugins/tiddlywiki/jszip"] "dependents": ["$:/plugins/tiddlywiki/async","$:/plugins/tiddlywiki/jszip"],
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "BibTeX", "name": "BibTeX",
"description": "BibTeX importer", "description": "BibTeX importer",
"author": "Henrik Muehe and Mikola Lysenko", "author": "Henrik Muehe and Mikola Lysenko",
"list": "readme license" "list": "readme license",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/blog", "title": "$:/plugins/tiddlywiki/blog",
"name": "Blog", "name": "Blog",
"description": "Blog publishing tools", "description": "Blog publishing tools",
"list": "readme docs" "list": "readme docs",
"stability": "STABILITY_0_DEPRECATED"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/browser-sniff", "title": "$:/plugins/tiddlywiki/browser-sniff",
"name": "Browser Sniff", "name": "Browser Sniff",
"description": "Browser feature detection", "description": "Browser feature detection",
"list": "readme usage" "list": "readme usage",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/browser-storage", "title": "$:/plugins/tiddlywiki/browser-storage",
"name": "Browser Storage", "name": "Browser Storage",
"description": "Local storage in the browser", "description": "Local storage in the browser",
"list": "readme settings" "list": "readme settings",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/cecily", "title": "$:/plugins/tiddlywiki/cecily",
"name": "Cecily", "name": "Cecily",
"description": "Zoomable storyview (Cecily)", "description": "Zoomable storyview (Cecily)",
"list": "readme" "list": "readme",
"stability": "STABILITY_0_DEPRECATED"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/classictools", "title": "$:/plugins/tiddlywiki/classictools",
"name": "Classic Tools", "name": "Classic Tools",
"description": "TiddlyWiki Classic tools", "description": "TiddlyWiki Classic tools",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -4,5 +4,6 @@
"description": "Autocompletion for CodeMirror", "description": "Autocompletion for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"dependents": ["$:/plugins/tiddlywiki/codemirror-mode-css"], "dependents": ["$:/plugins/tiddlywiki/codemirror-mode-css"],
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "CodeMirror Close Brackets", "name": "CodeMirror Close Brackets",
"description": "Close brackets for CodeMirror", "description": "Close brackets for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "CodeMirror Close Tag", "name": "CodeMirror Close Tag",
"description": "Close tags automatically for CodeMirror", "description": "Close tags automatically for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "CodeMirror Fullscreen", "name": "CodeMirror Fullscreen",
"description": "Fullscreen editing for CodeMirror", "description": "Fullscreen editing for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "CodeMirror Keymap Emacs", "name": "CodeMirror Keymap Emacs",
"description": "Keymap compatible with Emacs for CodeMirror", "description": "Keymap compatible with Emacs for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -4,5 +4,6 @@
"description": "Keymap compatible with Sublime Text for CodeMirror", "description": "Keymap compatible with Sublime Text for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"dependents": ["$:/plugins/tiddlywiki/codemirror-search-replace","$:/plugins/tiddlywiki/codemirror-closebrackets"], "dependents": ["$:/plugins/tiddlywiki/codemirror-search-replace","$:/plugins/tiddlywiki/codemirror-closebrackets"],
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -4,5 +4,6 @@
"description": "Keymap compatible with Vim for CodeMirror", "description": "Keymap compatible with Vim for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"dependents": ["$:/plugins/tiddlywiki/codemirror-search-replace","$:/plugins/tiddlywiki/codemirror-closebrackets"], "dependents": ["$:/plugins/tiddlywiki/codemirror-search-replace","$:/plugins/tiddlywiki/codemirror-closebrackets"],
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "CodeMirror Mode CSS", "name": "CodeMirror Mode CSS",
"description": "CSS highlighting mode for CodeMirror", "description": "CSS highlighting mode for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -4,5 +4,6 @@
"description": "Embedded HTML highlighting mode for CodeMirror", "description": "Embedded HTML highlighting mode for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"dependents": ["$:/plugins/tiddlywiki/codemirror-mode-htmlmixed","$:/plugins/tiddlywiki/codemirror-mode-javascript","$:/plugins/tiddlywiki/codemirror-mode-css","$:/plugins/tiddlywiki/codemirror-mode-xml"], "dependents": ["$:/plugins/tiddlywiki/codemirror-mode-htmlmixed","$:/plugins/tiddlywiki/codemirror-mode-javascript","$:/plugins/tiddlywiki/codemirror-mode-css","$:/plugins/tiddlywiki/codemirror-mode-xml"],
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -4,5 +4,6 @@
"description": "HTML mixed highlighting mode for CodeMirror", "description": "HTML mixed highlighting mode for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"dependents": ["$:/plugins/tiddlywiki/codemirror-mode-xml","$:/plugins/tiddlywiki/codemirror-mode-javascript","$:/plugins/tiddlywiki/codemirror-mode-css"], "dependents": ["$:/plugins/tiddlywiki/codemirror-mode-xml","$:/plugins/tiddlywiki/codemirror-mode-javascript","$:/plugins/tiddlywiki/codemirror-mode-css"],
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "CodeMirror Mode JavaScript", "name": "CodeMirror Mode JavaScript",
"description": "JavaScript highlighting mode for CodeMirror", "description": "JavaScript highlighting mode for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -4,5 +4,6 @@
"description": "Markdown highlighting mode for CodeMirror", "description": "Markdown highlighting mode for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"dependents": ["$:/plugins/tiddlywiki/codemirror-mode-xml"], "dependents": ["$:/plugins/tiddlywiki/codemirror-mode-xml"],
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "CodeMirror Mode TiddlyWiki Classic", "name": "CodeMirror Mode TiddlyWiki Classic",
"description": "Tiddlywiki Classic highlighting mode for CodeMirror", "description": "Tiddlywiki Classic highlighting mode for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "CodeMirror Mode XML", "name": "CodeMirror Mode XML",
"description": "XML highlighting mode for CodeMirror", "description": "XML highlighting mode for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "CodeMirror Search and Replace", "name": "CodeMirror Search and Replace",
"description": "Search and replace for CodeMirror", "description": "Search and replace for CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "CodeMirror Show Trailing Space", "name": "CodeMirror Show Trailing Space",
"description": "Show trailing space in CodeMirror", "description": "Show trailing space in CodeMirror",
"parent-plugin": "$:/plugins/tiddlywiki/codemirror", "parent-plugin": "$:/plugins/tiddlywiki/codemirror",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/codemirror", "title": "$:/plugins/tiddlywiki/codemirror",
"name": "CodeMirror", "name": "CodeMirror",
"description": "CodeMirror editor", "description": "CodeMirror editor",
"list": "readme usage keyboard license" "list": "readme usage keyboard license",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/comments", "title": "$:/plugins/tiddlywiki/comments",
"name": "Comments", "name": "Comments",
"description": "Threaded tiddler comments", "description": "Threaded tiddler comments",
"list": "readme config" "list": "readme config",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/confetti", "title": "$:/plugins/tiddlywiki/confetti",
"name": "Confetti", "name": "Confetti",
"description": "Animated confetti effect", "description": "Animated confetti effect",
"list": "readme" "list": "readme",
"stability": "STABILITY_1_EXPERIMENTAL"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/consent-banner", "title": "$:/plugins/tiddlywiki/consent-banner",
"name": "Consent Banner", "name": "Consent Banner",
"description": "Consent banner for GDPR etc", "description": "Consent banner for GDPR etc",
"list": "readme docs youtube config" "list": "readme docs youtube config",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/d3", "title": "$:/plugins/tiddlywiki/d3",
"name": "D3", "name": "D3",
"description": "D3 data visualisation demo", "description": "D3 data visualisation demo",
"list": "readme" "list": "readme",
"stability": "STABILITY_0_DEPRECATED"
} }

View File

@ -5,5 +5,6 @@
"author": "JeremyRuston", "author": "JeremyRuston",
"core-version": ">=5.0.0", "core-version": ">=5.0.0",
"list": "readme examples", "list": "readme examples",
"dependents": ["$:/plugins/tiddlywiki/dynaview"] "dependents": ["$:/plugins/tiddlywiki/dynaview"],
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/dynaview", "title": "$:/plugins/tiddlywiki/dynaview",
"name": "Dynaview", "name": "Dynaview",
"description": "Dynamic scrolling and zooming effects", "description": "Dynamic scrolling and zooming effects",
"list": "readme docs examples config" "list": "readme docs examples config",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/evernote", "title": "$:/plugins/tiddlywiki/evernote",
"name": "Evernote", "name": "Evernote",
"description": "Evernote migration tools", "description": "Evernote migration tools",
"list": "readme docs" "list": "readme docs",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/external-attachments", "title": "$:/plugins/tiddlywiki/external-attachments",
"name": "External Attachments", "name": "External Attachments",
"description": "External attachments for TiddlyDesktop", "description": "External attachments for TiddlyDesktop",
"list": "readme settings" "list": "readme settings",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/filesystem", "title": "$:/plugins/tiddlywiki/filesystem",
"name": "Filesystem", "name": "Filesystem",
"description": "Synchronize changes from the node.js server to the local filesystem", "description": "Synchronize changes from the node.js server to the local filesystem",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/freelinks", "title": "$:/plugins/tiddlywiki/freelinks",
"name": "Freelinks", "name": "Freelinks",
"description": "Freelinking of tiddler titles", "description": "Freelinking of tiddler titles",
"list": "readme settings" "list": "readme settings",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "GitHub Fork Ribbon", "name": "GitHub Fork Ribbon",
"description": "GitHub-inspired corner ribbon", "description": "GitHub-inspired corner ribbon",
"author": "Simon Whitaker", "author": "Simon Whitaker",
"list": "readme usage" "list": "readme usage",
"stability": "STABILITY_0_DEPRECATED"
} }

View File

@ -3,5 +3,6 @@
"name": "Google Analytics", "name": "Google Analytics",
"description": "Website visitor statistics from Google", "description": "Website visitor statistics from Google",
"contributor": "Sylvain Comte", "contributor": "Sylvain Comte",
"list": "readme settings usage" "list": "readme settings usage",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "HammerJS", "name": "HammerJS",
"description": "HammerJS touch gesture library", "description": "HammerJS touch gesture library",
"author": "Jorik Tangelder (Eight Media)", "author": "Jorik Tangelder (Eight Media)",
"list": "readme license" "list": "readme license",
"stability": "STABILITY_0_DEPRECATED"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/help", "title": "$:/plugins/tiddlywiki/help",
"name": "Help", "name": "Help",
"description": "Floating help panel", "description": "Floating help panel",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "Highlight (Legacy)", "name": "Highlight (Legacy)",
"description": "Highlight.js syntax highlighting for legacy browsers", "description": "Highlight.js syntax highlighting for legacy browsers",
"author": "Joao Bolila", "author": "Joao Bolila",
"list": "readme usage license" "list": "readme usage license",
"stability": "STABILITY_3_LEGACY"
} }

View File

@ -3,5 +3,6 @@
"name": "Highlight", "name": "Highlight",
"description": "Highlight.js syntax highlighting", "description": "Highlight.js syntax highlighting",
"author": "Joao Bolila", "author": "Joao Bolila",
"list": "readme usage license" "list": "readme usage license",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/innerwiki", "title": "$:/plugins/tiddlywiki/innerwiki",
"name": "Innerwiki", "name": "Innerwiki",
"description": "Innerwikis for screenshots and hacking", "description": "Innerwikis for screenshots and hacking",
"list": "readme docs examples" "list": "readme docs examples",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/internals", "title": "$:/plugins/tiddlywiki/internals",
"name": "Internals", "name": "Internals",
"description": "Tools for exploring the internals of TiddlyWiki", "description": "Tools for exploring the internals of TiddlyWiki",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/jasmine", "title": "$:/plugins/tiddlywiki/jasmine",
"name": "Jasmine", "name": "Jasmine",
"description": "Jasmine testing framework", "description": "Jasmine testing framework",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "JSZip", "name": "JSZip",
"description": "JSZip library", "description": "JSZip library",
"author": "Stuart Knightley, David Duponchel, Franz Buchinger, António Afonso", "author": "Stuart Knightley, David Duponchel, Franz Buchinger, António Afonso",
"list": "readme docs examples license" "list": "readme docs examples license",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "KaTeX", "name": "KaTeX",
"description": "KaTeX library for mathematical typography", "description": "KaTeX library for mathematical typography",
"list": "readme usage config", "list": "readme usage config",
"library-version": "v0.15.3" "library-version": "v0.15.3",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/markdown-legacy", "title": "$:/plugins/tiddlywiki/markdown-legacy",
"name": "Markdown (Legacy)", "name": "Markdown (Legacy)",
"description": "Markdown parser based on remarkable by Jon Schlinkert and remarkable-katex by Brad Howes", "description": "Markdown parser based on remarkable by Jon Schlinkert and remarkable-katex by Brad Howes",
"list": "readme usage remarkable-license remarkable-katex-license" "list": "readme usage remarkable-license remarkable-katex-license",
"stability": "STABILITY_3_LEGACY"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/markdown", "title": "$:/plugins/tiddlywiki/markdown",
"name": "Markdown", "name": "Markdown",
"description": "Markdown parser based on markdown-it", "description": "Markdown parser based on markdown-it",
"list": "readme config syntax license" "list": "readme config syntax license",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/menubar", "title": "$:/plugins/tiddlywiki/menubar",
"name": "Menu Bar", "name": "Menu Bar",
"description": "Menu Bar", "description": "Menu Bar",
"list": "readme config" "list": "readme config",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "Mobile Drag Drop", "name": "Mobile Drag Drop",
"description": "Mobile drag and drop shim", "description": "Mobile drag and drop shim",
"author": "Tim Ruffles", "author": "Tim Ruffles",
"list": "readme license" "list": "readme license",
"stability": "STABILITY_0_DEPRECATED"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/nodewebkitsaver", "title": "$:/plugins/tiddlywiki/nodewebkitsaver",
"name": "nw.js Saver", "name": "nw.js Saver",
"description": "Saver for nw.js", "description": "Saver for nw.js",
"list": "readme" "list": "readme",
"stability": "STABILITY_0_DEPRECATED"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/pluginlibrary", "title": "$:/plugins/tiddlywiki/pluginlibrary",
"name": "Plugin Library", "name": "Plugin Library",
"description": "Plugin library builder", "description": "Plugin library builder",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/powered-by-tiddlywiki", "title": "$:/plugins/tiddlywiki/powered-by-tiddlywiki",
"name": "Powered By TiddlyWiki", "name": "Powered By TiddlyWiki",
"description": "Powered by TiddlyWiki banner", "description": "Powered by TiddlyWiki banner",
"list": "readme" "list": "readme",
"stability": "STABILITY_3_LEGACY"
} }

View File

@ -3,5 +3,6 @@
"name": "QR Code", "name": "QR Code",
"description": "QR Code generator", "description": "QR Code generator",
"author": "Zeno Zeng", "author": "Zeno Zeng",
"list": "readme docs examples license" "list": "readme docs examples license",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "Railroad", "name": "Railroad",
"description": "Railroad diagram generator", "description": "Railroad diagram generator",
"author": "Astrid Elocson", "author": "Astrid Elocson",
"list": "readme usage syntax example" "list": "readme usage syntax example",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/savetrail", "title": "$:/plugins/tiddlywiki/savetrail",
"name": "Save Trail", "name": "Save Trail",
"description": "Automatically download modified tiddlers", "description": "Automatically download modified tiddlers",
"list": "readme settings" "list": "readme settings",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "sax js", "name": "sax js",
"description": "sax.js library", "description": "sax.js library",
"author": "Isaac Z. Schlueter", "author": "Isaac Z. Schlueter",
"list": "readme license" "list": "readme license",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/share", "title": "$:/plugins/tiddlywiki/share",
"name": "Share", "name": "Share",
"description": "Sharing tiddlers via URLs", "description": "Sharing tiddlers via URLs",
"list": "readme wizard settings" "list": "readme wizard settings",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/stacked-view", "title": "$:/plugins/tiddlywiki/stacked-view",
"name": "Stacked View", "name": "Stacked View",
"description": "Stacked card storyview", "description": "Stacked card storyview",
"list": "readme" "list": "readme",
"stability": "STABILITY_1_EXPERIMENTAL"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/tahoelafs", "title": "$:/plugins/tiddlywiki/tahoelafs",
"name": "TahoeLAFS", "name": "TahoeLAFS",
"description": "Tahoe-LAFS saver", "description": "Tahoe-LAFS saver",
"list": "readme" "list": "readme",
"stability": "STABILITY_0_DEPRECATED"
} }

View File

@ -3,5 +3,6 @@
"name": "Text Slicer", "name": "Text Slicer",
"description": "Tools for slicing text into tiddlers", "description": "Tools for slicing text into tiddlers",
"list": "readme docs", "list": "readme docs",
"dependents": ["$:/plugins/tiddlywiki/sax"] "dependents": ["$:/plugins/tiddlywiki/sax"],
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "TiddlyWeb", "name": "TiddlyWeb",
"description": "Sync changes from the browser to TW5 (node.js) or TiddlyWeb server", "description": "Sync changes from the browser to TW5 (node.js) or TiddlyWeb server",
"list": "readme", "list": "readme",
"plugin-priority": 10 "plugin-priority": 10,
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "Tour", "name": "Tour",
"description": "A tour of TiddlyWiki", "description": "A tour of TiddlyWiki",
"list": "readme docs settings", "list": "readme docs settings",
"dependents": ["$:/plugins/tiddlywiki/confetti","$:/plugins/tiddlywiki/dynannotate"] "dependents": ["$:/plugins/tiddlywiki/confetti","$:/plugins/tiddlywiki/dynannotate"],
"stability": "STABILITY_1_EXPERIMENTAL"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/translators", "title": "$:/plugins/tiddlywiki/translators",
"name": "Translators", "name": "Translators",
"description": "Translation editing tools", "description": "Translation editing tools",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "TW2 Parser", "name": "TW2 Parser",
"description": "TiddlyWiki Classic parser", "description": "TiddlyWiki Classic parser",
"author": "Jeffrey Wilkinson", "author": "Jeffrey Wilkinson",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/tw5.com-docs", "title": "$:/plugins/tiddlywiki/tw5.com-docs",
"name": "TW5.com Docs", "name": "TW5.com Docs",
"description": "Documentation from tiddlywiki.com", "description": "Documentation from tiddlywiki.com",
"list": "" "list": "readme",
"stability": "STABILITY_1_EXPERIMENTAL"
} }

View File

@ -0,0 +1,7 @@
title $:/plugins/tiddlywiki/tw5.com-docs/readme
This is an experimental packaging of the documentation from tiddlywiki.com into a plugin.
It is currently not fully functional:
* Listings of tiddlers don't always work because the docs tiddlers are now shadow tiddlers

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/twitter-archivist", "title": "$:/plugins/tiddlywiki/twitter-archivist",
"name": "Twitter Archivist", "name": "Twitter Archivist",
"description": "Twitter archiving tools", "description": "Twitter archiving tools",
"list": "readme usage spec todo" "list": "readme usage spec todo",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/twitter", "title": "$:/plugins/tiddlywiki/twitter",
"name": "Twitter", "name": "Twitter",
"description": "Twitter embedding tools", "description": "Twitter embedding tools",
"list": "readme usage" "list": "readme usage",
"stability": "STABILITY_3_LEGACY"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/upgrade", "title": "$:/plugins/tiddlywiki/upgrade",
"name": "Upgrade", "name": "Upgrade",
"description": "Upgrade system for TiddlyWiki versions", "description": "Upgrade system for TiddlyWiki versions",
"list": "readme" "list": "readme",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -3,5 +3,6 @@
"name": "XLSX Utils", "name": "XLSX Utils",
"description": "XLSX spreadsheet utilities", "description": "XLSX spreadsheet utilities",
"list": "readme controls license", "list": "readme controls license",
"dependents": ["$:/plugins/tiddlywiki/jszip"] "dependents": ["$:/plugins/tiddlywiki/jszip"],
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2,5 +2,6 @@
"title": "$:/plugins/tiddlywiki/xmldom", "title": "$:/plugins/tiddlywiki/xmldom",
"name": "xmldom", "name": "xmldom",
"description": "xmldom library", "description": "xmldom library",
"list": "readme license" "list": "readme license",
"stability": "STABILITY_2_STABLE"
} }

View File

@ -2592,6 +2592,34 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {
flex-grow: 1; flex-grow: 1;
} }
.tc-plugin-info-chunk .tc-plugin-info-stability {
margin-right: 4px;
padding: 1px 3px;
font-size: 0.8em;
border-radius: 4px;
font-weight: bold;
}
.tc-plugin-info-chunk .tc-plugin-info-stability-stable {
border: 1px solid green;
color: green;
}
.tc-plugin-info-chunk .tc-plugin-info-stability-experimental {
border: 1px solid #c07c00;
color: #c07c00;
}
.tc-plugin-info-chunk .tc-plugin-info-stability-deprecated {
border: 1px solid red;
color: red;
}
.tc-plugin-info-chunk .tc-plugin-info-stability-legacy {
border: 1px solid blue;
color: blue;
}
.tc-plugin-info-chunk.tc-plugin-info-buttons { .tc-plugin-info-chunk.tc-plugin-info-buttons {
font-size: 0.8em; font-size: 0.8em;
line-height: 1.2; line-height: 1.2;
@ -2613,7 +2641,7 @@ a.tc-tiddlylink.tc-plugin-info:hover > .tc-plugin-info-chunk > svg {
} }
.tc-plugin-info-chunk.tc-plugin-info-description div { .tc-plugin-info-chunk.tc-plugin-info-description div {
font-size: 0.7em; font-size: 0.8em;
line-height: 1.2; line-height: 1.2;
margin: 2px 0 2px 0; margin: 2px 0 2px 0;
} }