Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Plugin Library: Feature request #4486

Open
kookma opened this issue Mar 10, 2020 · 33 comments
Open

Plugin Library: Feature request #4486

kookma opened this issue Mar 10, 2020 · 33 comments

Comments

@kookma
Copy link
Contributor

kookma commented Mar 10, 2020

Feature 1: Important
Assume you open Get More Plugin from $:/ControlPanel. You see list of plugins. No assume there is an update for a plugin you already have it. There is no sign to indicate your installed version is old.

See the below pic

plugin-library

Also it is good to show the plugin version instead of Tiddlywiki release number. One solution is to use something different instead of reinstall with blue color (e.g orange color with some suitable message)

I understand, the plugin library is updated per new release, but if it is used by other publisher then their plugin release number may be different.

Feature ii
The plugin library when open shows every plugin using a panel with an arrow to open the readme. It is good the panel shows more information like a link to publisher site (here I like a link to demo site for documentation and tutorial)
By the way this is a small improvement and not important as one can click the double arrow and open the readme.

@Jermolene
Copy link
Owner

Hi @kookma I understand feature 1, and agree it would be better to mark out of date plugins more prominently, but I may not be understanding feature 2 properly -- could you kindly make a sketch to show what you mean?

@kookma
Copy link
Contributor Author

kookma commented Mar 11, 2020

@Jermolene
Right now Plugin library shows each plugin on a panel with this information

  • description e.g: BibTeX: BibTeX importer
  • plugin tiddler name e.g: $:/plugins/tiddlywiki/bibtex
  • Tiddlywiki release number e.g: 5.1.22prerelease

Feature ii says, the panel can contains more information like

  • link to code e.g.: https://github.com/Jermolene/TiddlyWiki5/BibText
  • rank (based on the number of install, or stars people give)

I know the last one is difficult.

@pmario
Copy link
Contributor

pmario commented Mar 16, 2020

I'm not 100% sure, but I think the "reinstall" button code has info about the "old" version. So it may be possible to write "update" instead of reinstall.

@pmario
Copy link
Contributor

pmario commented Mar 16, 2020

or even better "update from: <<old version>>"

@kookma
Copy link
Contributor Author

kookma commented Mar 16, 2020

or even better "update from: <<old version>>"

That is much better update from ...

@kookma
Copy link
Contributor Author

kookma commented Mar 20, 2020

@Jermolene
Is there any chance to add this feature into 5.1.22? An indicator shows there is an update for installed plugin! The current reinstall does not have enough indication and user confuses if he/she can reinstall the current plugin release or a new update.

@kookma
Copy link
Contributor Author

kookma commented Mar 30, 2020

@Jermolene
I noticed on open the slider (arrows left of plugin title) a line appears shows the installed version!
While it is helpful but I recommend a more clear way to show an update is out there

@Jermolene
Copy link
Owner

Hi @kookma one confusion might be that the core plugins are automatically assigned the same version number as the core. So, although it looks like the core version that is highlighted in the image in the OP, it is actually the plugin version number.

@Jermolene
Copy link
Owner

Hi @kookma I've just committed some updates that address some of the issues you've identified.

There's now an "Updates" tab in the "add plugin" dialog. It brings together all the plugins that have available updates, and provides a button to click to update all of them at once:

image

In the "add plugin" dialog there's now a clearer indicator of which plugins contain listings of sub-plugins:

image

There are a couple of notable shortcomings:

  • An update is flagged if the version of the plugin in the library is different than the installed version, regardless of whether the available version is actually a lower version number
  • The CSS needs some work to make things look more consistent between tabs

@kookma
Copy link
Contributor Author

kookma commented Apr 9, 2020

Thank you @Jermolene!
This is really more informative! Some minor comments

  • Displaying the current version versus available is very informative
  • The reinstall when there is a new update is misleading! I may propose the badge shows reinstall if the available version is equal to installed version and update if the the version is different!
  • The update all button is great and lets one update all his plugin without hassles.

I noticed also plugin uses a new field to store name, this is good as this field is used later to show the plugin name in bold in the list of installed plugin, two small suggestions:

The plugin uses the naming rule as $:/plugins/publisher/name so

  1. we already have the plugin name why use a new field, The plugin library can extract name to display it as bold like <$text text={{{ [[$:/plugins/publisher/name]split[/]last[]}}} />
  2. The plugin library table shows $:/plugins/publisher/name under name/description what is the benefit of displaying "$:/plugins/publisher/name"? I may propose to remove it and use it for other purposes like publisher name (also can be extracted) or other information link link to demo page, ...

@kookma
Copy link
Contributor Author

kookma commented Apr 9, 2020

There are a couple of notable shortcomings:

  • An update is flagged if the version of the plugin in the library is different than the installed version, regardless of whether the available version is actually a lower version number

Isn't it possible to use $reveal widget here to compare the versions and find which version is smaller?

  • The CSS needs some work to make things look more consistent between tabs

Quite true! specially the black div shows there sub-plugins.

@Jermolene
Copy link
Owner

Thanks @kookma

The reinstall when there is a new update is misleading! I may propose the badge shows reinstall if the available version is equal to installed version and update if the the version is different!

The reason the text says "reinstall" is because we don't actually know whether it's an upgrade or a downgrade, because we don't have the means to do greater than/less than comparisons with version numbers.

we already have the plugin name why use a new field, The plugin library can extract name to display it as bold like <$text text={{{ [[$:/plugins/publisher/name]split[/]last[]}}} />

We do something similar as a fallback, but in general plugins are not required to fit that naming convention (e.g. the $:/core plugin), so it's better to use the name field (we were already using it for themes and languages, so it's consistent anyway).

The plugin library table shows $:/plugins/publisher/name under name/description what is the benefit of displaying "$:/plugins/publisher/name"? I may propose to remove it and use it for other purposes like publisher name (also can be extracted) or other information

We show the full title of the tiddler because it's the unique identifier. At the moment the title is too prominent because more work is needed on the CSS layout.

Isn't it possible to use $reveal widget here to compare the versions and find which version is smaller?

It's quite complicated because of the major.minor.revision format. I plan to add a filter to do the comparison.

@kookma
Copy link
Contributor Author

kookma commented Apr 9, 2020

Thank you @Jermolene

It's quite complicated because of the major.minor.revision format. I plan to add a filter to do the comparison.

So, when this issue resolved, it may be possible to use a better words instead of reinstall.

Great!

@kookma
Copy link
Contributor Author

kookma commented Apr 10, 2020

Hi @Jermolene

It's quite complicated because of the major.minor.revision format. I plan to add a filter to do the comparison.

It seems the below code (https://helloacm.com/the-javascript-function-to-compare-version-number-strings/) works great!

function compareVersion(v1, v2) {
    if (typeof v1 !== 'string') return false;
    if (typeof v2 !== 'string') return false;
    v1 = v1.split('.');
    v2 = v2.split('.');
    const k = Math.min(v1.length, v2.length);
    for (let i = 0; i < k; ++ i) {
        v1[i] = parseInt(v1[i], 10);
        v2[i] = parseInt(v2[i], 10);
        if (v1[i] > v2[i]) return 1;
        if (v1[i] < v2[i]) return -1;        
    }
    return v1.length == v2.length ? 0: (v1.length < v2.length ? -1 : 1);
}

Also see this:
https://www.npmjs.com/package/compare-versions

@Jermolene
Copy link
Owner

Thanks @kookma. In fact there's already a utility function in the core to parse and compare version strings: https://github.com/Jermolene/TiddlyWiki5/blob/master/boot/boot.js#L411-L449

@kookma
Copy link
Contributor Author

kookma commented Apr 10, 2020

Great! I just thought I may be of little help! I know very little JS :-)

@Jermolene
Copy link
Owner

Hi @kookma I've just committed an update that includes the new "compare" filter operator, and the updated plugin chooser with different buttons for install, reinstall, update and downgrade. It'll be available at https://tiddlywiki.com/prerelease in about 8 minutes.

image

@kookma
Copy link
Contributor Author

kookma commented Apr 13, 2020

Thanks @Jermolene
Sure, I will give a try and give my feedback here!

@kookma
Copy link
Contributor Author

kookma commented Apr 13, 2020

Hi @Jermolene
My comments of first trail

  • Looks good
  • Old, new plugins are displayed with proper badges

Plugins tab

  • Installed plugin card has extra information now and displays the information of installed plugin like: "This plugin is already installed at version 4.4.0". On drop down menu, you see again this line of info. I may recommend to remove repeated info

  • On the installed plugin card, the title seems like name:description and name is extracted from plugin tiddler. I may recommend to display the name only as sentence case like
    Example:
    Trashbin: A plugin resembles OS recycle bin

  • If you have several plugin libraries, then when you click on a tab of say "Updates" of one library all other Plugin library switch to that tab. It seems the tabs macro uses the same stateTiddler here.

Updates tab

  • number of updates are shown correctly
  • fonts and color looks great BUT font size is different comparing to other tabs. I myself prefer the new size and the new table
  • when there is no update an empty table is shown. I recommend to do not display the empty table
  • The background color for Update all x plugin is green while the badge for updates are orange. I may recommend use the same color everywhere

Small suggestion
Just a raw suggestion: in Update tab, official plugin may have different color or format to let user distinguish third part plugins from official ones

Question
When there is several Plugin Libraries, I may recommend always Official Library displayed first or let user decide on the order.

Jermolene added a commit that referenced this issue Apr 13, 2020
Jermolene added a commit that referenced this issue Apr 13, 2020
Jermolene added a commit that referenced this issue Apr 13, 2020
@Jermolene
Copy link
Owner

Thanks @kookma

Installed plugin card has extra information now and displays the information of installed plugin like: "This plugin is already installed at version 4.4.0". On drop down menu, you see again this line of info. I may recommend to remove repeated info

Great, I've fixed that.

On the installed plugin card, the title seems like name:description and name is extracted from plugin tiddler. I may recommend to display the name only as sentence case like

The "name" field is used if it is present, falling back to extracting the name from the title.

I f you have several plugin libraries, then when you click on a tab of say "Updates" of one library all other Plugin library switch to that tab. It seems the tabs macro uses the same stateTiddler here.

Great, fixed.

when there is no update an empty table is shown. I recommend to do not display the empty table

Yes, it's surprisingly hard to do because the table is generated by three nested list widgets, and there's no easy way to get a sort of collective emptyMessage.

The background color for Update all x plugin is green while the badge for updates are orange. I may recommend use the same color everywhere

Great, that's fixed.

Just a raw suggestion: in Update tab, official plugin may have different color or format to let user third part plugins from official ones

The update tab only shows updates from that plugin library, so official plugins won't be intermixed with third party plugins.

When there is several Plugin Libraries, I may recommend always Official Library displayed first or let user decide on the order.

The ordering is determined by the order of the $:/tags/PluginLibrary tag. I've added a default list field which should do the job.

@kookma
Copy link
Contributor Author

kookma commented Apr 13, 2020

The "name" field is used if it is present, falling back to extracting the name from the title.
Great! all old plugins now are displayed correctly, I just though is it good to show name for a plugin like $:/plugins/kookma/trashbin as trashbin or Trashbin? Of course for cases like codemirror this may not wor to show CodeMirror!

@Jermolene
Copy link
Owner

Hi @kookma

Of course for cases like codemirror this may not wor to show CodeMirror!

That was my thinking. Instead, the presence of a lower case name acts as a prompt that the name field needs updating.

@kookma
Copy link
Contributor Author

kookma commented Apr 13, 2020

Question: In the second update it seems red and orange color has been removed!
Also I don't see the update badge and seems reinstall has been used? Am I right or something goes wrong in my side

@kookma
Copy link
Contributor Author

kookma commented Apr 13, 2020

Hi @kookma

Of course for cases like codemirror this may not wor to show CodeMirror!

That was my thinking. Instead, the presence of a lower case name acts as a prompt that the name field needs updating.

Agree, this is kind of hint!

@kookma
Copy link
Contributor Author

kookma commented Apr 13, 2020

Hi again @Jermolene

Question: In the second update it seems red and orange color has been removed!
Also I don't see the update badge and seems reinstall has been used? Am I right or something goes wrong in my side

I just testing online https://tiddlywiki.com/prerelease/ seems you are working at the same time!
ignore above question. I will wait and then give try

@Jermolene
Copy link
Owner

Hi @kookma none of the recent changes should have affected the colours, let me know if it fixes itself.

@kookma
Copy link
Contributor Author

kookma commented Apr 13, 2020

Hi @kookma none of the recent changes should have affected the colours, let me know if it fixes itself.

Sorry @Jermolene
I was testing at the same time your were working updating :-)
It works! beautiful colors for upgrade/downgrade/reinstall

@kookma
Copy link
Contributor Author

kookma commented Apr 13, 2020

Some more comments.

Please see comments on this image.

aMpqxGLg2l

@kookma
Copy link
Contributor Author

kookma commented Apr 13, 2020

@Jermolene
What do you think if each library has its own tab, scrolling and intermixing reduces.

@kookma
Copy link
Contributor Author

kookma commented Apr 14, 2020

@Jermolene
It seems the name or its fallback does not work on Currently Installed Plugins and it only works on the Get More Plugins
See below pics

Fig 1. Get More Plugins
e8MmBaEpHy

Fig 2. Currently Installed Plugins

nw_jBMUDCPHTj

@Jermolene
Copy link
Owner

Thanks @kookma

different font styles for official and third party plugin libraries

That's just the usual rendering of links: the official plugin library is defined in a shadow tiddler.

Is the missing link required

It's showing the underlying URL of the plugin library HTML file.

What do you think if each library has its own tab, scrolling and intermixing reduces

That's a great idea, I'll investigate.

It seems the name or it fallback does not work on Currently Installed Plugins and it only work on the Get More Plugins

Great, fix coming up.

@Jermolene
Copy link
Owner

Great, fix coming up.

See 84eaee8

@kookma
Copy link
Contributor Author

kookma commented Apr 14, 2020

Many Thanks @Jermolene
I will test the new update and will back if there is any comment

telmiger added a commit to telmiger/TiddlyWiki5 that referenced this issue Jun 14, 2020
* Scale embedded videos and audios to fit their container (Jermolene#3943)

* Update videoparser.js

* Update audioparser.js

* Update videoparser.js

* Update audioparser.js

* 2nd attempt to fix overflowing content in vertical tabs

Previously we'd tried to fix it with word-break: break-word, but that broke other things (see 81f1e6a). This overflow: auto approach appears to be best practice.

* Fix newTagNameTiddler being undefined in ControlPanel (Jermolene#4326)

* fix newTagNameTiddler being undefined in ControlPanel

* Update Basics.tid

* prevent newTagNameTiddler being undefined

* Update Basics.tid

* Update tag-picker.tid

* Update tag-picker.tid

* Fix typos in tag-picker (Jermolene#4336)

... sorry @Jermolene

* Replace div with span in colour picker (Jermolene#4333)

* Replace '<<...>>' with a macrocall widget (Jermolene#4346)

... because there is another macrocall inside.

This was introduced by the commit 'Fix sizes of SVG icons in documentation' (SHA: 9395d75) where this probably slipped through in a regular expression replacement session.

I searched through the codebase and the other replacements of this type are ok.

* Correct the jsonstringify documentation (Jermolene#4344)

The jsonstringify substitution table does not list all substitutions, and it listed `'` as being replaced when it's not.  This updates the table based on the code at https://github.com/Jermolene/TiddlyWiki5/blob/master/core/modules/utils/utils.js#L537

* Add discord to forums tiddler. (Jermolene#4343)

* Syncer: add hidden setting for disabling lazy loading

* Range widget: fix refreshing

The range widget wasn't refreshing correctly when the underlying tiddler value changed

* Comment plugin: Add link to top post

* Fix comment plugin typo

* Improve docs on installing plugins under Node.js

* Add "index" attribute to range widget

* Remove &nbsp from tag pill in edit mode (Jermolene#4366)

* remove &nbsp from tag pill in edit mode

PR: fix missing space between edittemplate tags Jermolene#3585 introduced an unbreakable space ...

The `&nbsp` isn't needed and **causes problems**, if users copy&paste the tag text, because the "new" tag in the text input field now contains an space in front of the tag. This space invalidates the tag, so it doesn't function anymore. 

see [comment in GG](https://groups.google.com/d/msg/tiddlywiki/RQEyqPQIZSM/uaU7lgJJAAAJ) .. I also had a problem like this some time ago, which costed me several hours of debugging.

* Update base.tid

* Update tag.tid

* Signing the CLA (Jermolene#4367)

* Sign the CLA as ento (Jermolene#4222)

* Upgrade to Jasmine 3 (Jermolene#4226)

* process.exit() only exist in a node.js environment

* updateInterval has been removed from upstream

From upstream commit:
jasmine/jasmine@b6eb9a4

* Update Jasmine to 3.4.0

* Reuse the evalInContext helper

* Fix expected parse result to match the actual result

* 'describe' cannot be nested inside 'it' blocks

Jasmine started to explicitly raise an error in these cases since:
jasmine/jasmine#1411

* Be consistent about how to refer to library files

* Update link to Jasmine's official website

* Remove "hack-to-give-us-something-to-compare-against"

It looked messy in the control panel listing.

* Ensure splash screen isn't shown when JS is disabled

* Fix bug with millisecond 0XXX  date format

* Correct fix for bug with millisecond 0XXX date format

Milliseconds need 3 digits, not 4...

* Refactor andtidwiki.js (The saver for Android apps including AndTidWiki, Tiddloid and Tiddloid Lite) (Jermolene#4276)

* Create tiddloid.js

* Update andtidwiki.js

* Delete tiddloid.js

* Update andtidwiki.js

* Update andtidwiki.js

* Update andtidwiki.js

* Update andtidwiki.js

* Update andtidwiki.js

* Update andtidwiki.js

* Add Elixir to languages supported by Highlight plugin

Fixes Jermolene#4378

* Slight optimisation of $tw.utils.addClass()

* Fix wiki referenced by navigator widget's rename tiddler handler

* Make the single window template compatible with the page template

The tv-* variables were missing, making toolbar buttons appear incorrectly. There was also no tc-page-container class.

Fixes Jermolene#4372

* Avoid setting an explicit colour in the new-journal-button icon

This change means that the colour for the date on the new journal button icon will change according to the current colour palette, and simplifies things for Jermolene#4379

* Add script to optimise SVGs

Fixes Jermolene#4379. Optimised SVGs in the next commit

* Optimised SVG icons

* Remove extraneous paths from line-width and list icons

Fixes Jermolene#4369 and Jermolene#4368

* Update docs for "each" filter

* Signing the CLA (Jermolene#4387)

* Update links to Json Mangler plugin github pages (Jermolene#4388)

The plugin's repo appears to have been renamed.

* Tweak docs for each filter

* Fix tests in tiddlywiki-com branch by forcing an older version of node.js

* Another attempt to force Travis to use an old Node.js

Another attempt at 55ed290

* Update class settings in edit template to match view template

@pmario this adds the tc-tagged- classes to the edit template, do you think that's useful?

* Update tests (Jermolene#4392)

add 3 new tiddlers, add 1 "enlist" test, fix all tests that failed, because 3 new tiddlers where added. stopped ESLint to complain about global vars, fix some mixed-tab-space indent typos.

* Updated Portuguese Translation

See https://groups.google.com/d/msg/tiddlywiki/esj5IB935oo/xS-F9n5FBAAJ

* Fix bug with importvariables and empty set widgets

A self-closing set widget doesn't have a "children" property.

* Add support for $:/tags/Macro/View macros that are only visible within view templates

* Initial commit of freelinks plugin

* It's 2020!

* Update TiddlyFox docs

Fixes Jermolene#4399

* Fix "remove" tooltip in keyboard shortcuts (Jermolene#4405)

this PR just fixes the tooltip of the small "remove" button in the keyboard-shortcut dropdown

* Signing the CLA (Jermolene#4403)

* Add support for file type webm & ogg theora (Jermolene#4404)

* Add a faint background to freelinks

* Don't freelink within links and buttons

* Restore whitespace for page control buttons

Even with whitespace trim, we need a single space between the icon and text

* Freelinks: Add note about customising within which tiddlers are freelinked

* Replace "&times" with close-button in keyboard-shortcuts (Jermolene#4406)

this PR replaces the `&times` in the keyboard-shortcuts dropdown with the `$:/core/images/close-button`

* Use match operator instead of prefix

Fixes Jermolene#4407

* Add a new example that shows using all before to determine the nummeric position of a title in a list. (Jermolene#4412)

See discussion https://groups.google.com/forum/?hl=en#!topic/tiddlywiki/wY6haW2cYMA

* Fix stamp dropdown not transcluding caption field

* Replace Markdown parsing library with Remarkable (Jermolene#3876)

* Replace Markdown parsing library with Remarkable

* Fix handling of block-level elements

* Update documentation

* Add config options for Parser actions

* Add Config options for Remarkable library

* Match code style

* Update documentation

* Handle ordered lists and horizontal rules

* Update to v2.0.0 of Remarkable library

* Fix bug with navigating via location hash

Introduced in 8159c4a, the problem was that it is actually valid for storyTitle and/or historyTitle to be falsey in the Story constructor.

* Introduction edition: fix some display issues

Two of the tiddlers incorporate content dynamically drawn from the core, and so the size of the tiddlers has increased as the core has grown.

* Docs: Update length Operator.tid (Jermolene#4428)

* Docs: Update sign Operator.tid (Jermolene#4426)

* Railroad plugin: Use message box colours so that they change with the palette

* Docs: fix typos and font-size (Jermolene#2795)

* Docs:  bring tm-fold-xxx message docs on par with the code, that is executed. (Jermolene#4353)

* Changed importVariable to store its own variables (Jermolene#4108)

* Changed importVariable to store its ownvariables

Before, importVariables was creating a setWidget for every single variable it would find in its tiddlers, and it would create a long-ass call tree. Now, instead, it just accumulates the variables in itself.

* Can't use Object.assign

Learned the hardway while working on tw5-relink that Object.assign
doesn't exist in IE11. Using $tw.utils.extend instead.

* Retaining setWidget transclusion flexibility

* One more test to verify mixing sets and macros

* Make "type" input look consistent with "fields" input (Jermolene#4358)

* add class tc-edit-texteditor to type field, trim ...

... whitespace, make look consistent

* define width 20% for type input field

* add second nbsp; for consistency with type input

* Add whitespace trims to tag-picker macro (Jermolene#4360)

* Add optional storyview to list-tagged-draggable macro (Jermolene#4329)

* add optional storyview to list-tagged-draggable macro

* Update list.tid

* Add "none" as an option in the icon dropdown in tag manager (Jermolene#4361)

* add no-icon option to tagmanager and add ...

... whitespace trims

* Update Misc.multids

* Signing the CLA (Jermolene#4424)

* Ensure GitHub and GitLab savers use a default path of `/` if empty

The empty string gets a slash appended further down this method.

* Add download button/link to binary tiddler warning banners in view and edit mode (Jermolene#4423)

* Fix support for zip files in some environments (Jermolene#4432)

In some environments (at least on my own machine), TiddlyWiki detects zip files as type `"application/x-zip-compressed"` instead of `"application/zip"`. This commit adds support for zip files with type `"application/x-zip-compressed"` so that they are encoded in `"base64"` like other zip files with type `"application/zip"`.

* More listops tests (Jermolene#4409)

* add a new-line before the log text to increase readability of the test output

* make eslint, jslint happy

* make eslint happy

* add more listops tests

* new listops filter tests

* remove new-line

* make eslint happier.

* revert eslint settings

* Docs: Fix typos in button widget docs

* Docs: Update ViewWidget.tid (Jermolene#4437)

* Update chinese translations (Jermolene#4325)

* Update chinese translations
* Imporve chinese translations for UI of basic tab in controlpanel
* Add chinese translations for description of throttle.refresh field

* Add chinese translations for the `none` option of icon dropdown in tag manager

* Extend jsontiddlers macro to generate unformatted output

* First attempt at sharing plugin/edition

* Include share.html in the main build

* Fix path.posix.sep which appears to be undefined on Travis CI

* Fix Travis CI syntax error

We were getting "SyntaxError: Use of const in strict mode."

* Temporarily remove markdown plugin from prerelease

It's giving errors under Travis CI

* Travis CI: Move to Node.js 12

Apparently the default Node 10 doesn't include Math.trunc()

* Travis CI: Try deleting and recreating .travis.yml

It appears to have worked for some people c.f. stackoverflow

* Travis CI: Add .travis.yml back again

* Travis CI: Another attempt to fix things

Seems that I don't understand YAML

* Share: Exclude the $:/build tiddler

* Share plugin: Improve startup error handling

* Add tabindex support to button widgets (Jermolene#4442)

This pull request adds support for specifying a tabindex for button widgets following the same pattern as the LinkWidget.

* Signing the CLA (Jermolene#4447)

* Share plugin: Add warning prompt

* Update release note

Better late than never

* Browser-storage plugin: Don't save popup state by default

* Update documentation for tabindex support for ButtonWidget (Jermolene#4465)

Documentation for changes introduced in Jermolene#4442

* Share plugin: Add prominent warning in readme

* Enhance colour macro with a fallback to a configuration tiddler

* First commit of new Menu Bar plugin

* Tweak some system buttons to look better in the new menu bar

The reveal widget leaves behind an unnecessary span, which breaks the CSS used to target the button.

* Disable sticky titles for the prerelease

Sadly, they don't play nicely with the new menu bar

* Update release note

* Menubar tweaks

* Fix old references to "top menu" to the new "menu bar" terminology
* Use vanilla breakpoint for responsive adjustment to menu bar padding

* Push top right menu items to the right

Looking more backwards compatible

* Menubar: Reverse order of top right menu items

* Prerelease: Disable browser storage to make testing less confusing

* Fix broken filters introduced in b179a60

The mistake arose because browser local storage was enabled

* Signing the CLA (Jermolene#4440)

* Markdown plugin: Description notes remarkable instead of markdown-js (Jermolene#4422)

* Add action-popup widget

Fixes Jermolene#4185

* Add hidden setting for default tiddler icon

* Fix test for needing to update text editor DOM

Checking the active element is clumsy, and interferes with debugging. Checking the content is clearer, and avoids the Firefox bug.

Fixes Jermolene#4472

* Fix lack of refresh when button widget actions attribute changes

* ViewTemplate: Add tc-tiddler-overridden-shadow class

* Remove unsafe externalimages build target from server edition

See Jermolene#4484

* Fix suspected typo that impacts refresh handling (Jermolene#4464)

* Add menubar-background and menubar-foreground to Nord palette (Jermolene#4482)

Nord palette

* Add color descriptions for menubar-background and ... (Jermolene#4481)

menubar-foreground to PaletteColours.multids

* Mention importing process more explicitly (Jermolene#3666)

* Mention importing process more explicitly

* Explicitly mention "images"

So this page shows up in a search for "images".

* Apply PR suggestions

* Add chinese translations for color descriptions for menubar-background and menubar-foreground (Jermolene#4488)

* Introducing "Dynannotate" plugin for overlaying annotations

* Clarify docs on the path-prefix subcommand of the listen command

* Update LinkWidget.tid (Jermolene#4489)

* Add german descriptions for menubar-background... (Jermolene#4483)

* add german descriptions for menubar-background...

* Update PaletteColours.multids

* Update PaletteColours.multids

* Better readability for "Community" Tiddler with various ... (Jermolene#4493)

... color palettes

* Signing the CLA (Jermolene#4492)

* Added gitea saver (Jermolene#4491)

* added gitea saver

* create nonexistent file

* Add "Gruvbox Dark" color palette (Jermolene#4494)

* Add "Gruvbox Dark" color palette

this adds the "gruvbox dark" color palette (https://github.com/morhetz/gruvbox) which is also available for highlight.js and codemirror

* add "credits" field

* change "credits" field to "license" field

* Add support for a custom class to modal wrapper (Jermolene#4490)

* Add support for a custom class to modal wrapper

As per Jermolene#4485 add support for a custom class to modal wrapper, by means of a field in the modal tiddler. The class is added to the modal wrapper in addition to the default class, allowing for custom styling via css of any part of the modal.

* Remove redundant check for tiddler.

* Menubar: Move behind modals in z-order

Fixes Jermolene#4499

* Add chinese translations for description of Gitea saver (Jermolene#4498)

* Menubar: Move behind modals in z-order

Fixed fix for Jermolene#4499

* Use CamelCase for Gitea (Jermolene#4496)

* Menubar: Add an optional dropdown for the sidebar tabs

* Update highlight.js to latest v9.18.1 (Jermolene#4502)

* update highlight.pack.js to latest v9.18.1

* Update readme.tid

* Update GruvBoxDark.tid (Jermolene#4501)

* Menubar: Fix links in sidebar "open" tab

Fixes @BurningTreeC's report Jermolene@061a2c6#commitcomment-37826117

* Highlight Plugin: Update readme to reflect version change (Jermolene#4503)

* Revert "Fix test for needing to update text editor DOM"

This reverts commit a65ec87.

* Add a hidden setting for disabling the page dropzone

* Menu bar: Fix search result visibility

Fixes Jermolene#4509

* Update GruvBoxDark.tid (Jermolene#4510)

better readability, was wrong the first time

* Fix the index names of chinese translations for Gitea saver in ControlPanel.multids (Jermolene#4506)

* Docs: Clarify Node.js docs

* Fixes issue with Jermolene#4504 and importvariable copying (Jermolene#4518)

* Fixes issue with Jermolene#4504 and importvariable copying

ImportVariables widget was using $tw.utils.extend to copy the
variables from temporary set widgets into itself. However,
$tw.utils.extend does NOT behave like Object.assign. It not only
copies all self-owned variables over, but also all variables
in that object's prototype chain. This led to some redundant copying,
and a problem where some variables might show up more than once
(like transclusion).

Fixed now. importvariables widget does its own copying, since it
can't rely on $tw.utils.extend to do the right job, and it can't
count on Object.assign to be there.

* Added test to prevent reversion of Jermolene#4504

* Slight corrections to new importvariables test

* Improve ability to disable drag and drop

Now we disable the draggable list macros too.

* Update docs for disabling drag and drop

* Update Nord Palette for better readability (Jermolene#4517)

* Update Vanilla.tid (Jermolene#4515)

* Menubar: Fix positioning of toprightbar when narrow

Fixes Jermolene#4477

* Add backlinks indexer (Jermolene#4421)

* Add tests for backlinks

* Add backlinks indexer

* Use backlinks indexer in getTiddlerBacklinks if available

* Extract link extraction into its own method

This way we can provide an arbitrary parse tree, rather than just a
title, which will allow us to compare lists of outgoing links between
versions of a single tiddler

* Use new extractLinks method in backlinks indexer

...rather than copy-pasting the implementation

* Remove ES6-isms

TiddlyWiki needs to work with browsers that only support ES5

* GruvBoxDark palette contrast tweaks (Jermolene#4522)

* Fix the datauri macro to work with _canonical_uri tiddlers

* Update release note

* Fix syncer to handler errors properly (Jermolene#4373)

* First commit

* Add throttling of saves

Now we refuse to save a tiddler more often than once per second.

* Wait for a timeout before trying again after an error

* Modest optimisations of isDirty() method

* Synchronise system tiddlers and deletions from the server

Fixes two long-standing issues:

* Changes to system tiddlers are not synchronised from the server to the browser
* Deletions of tiddlers on the server are not propagated to browser clients

* Make sure we update the dirty status even if there isn't a task to perform

* Replace save-wiki button with popup sync menu

* Remove the "Server" control panel tab

We don't need it with the enhanced sync dropdown

* Add indentation to the save-wiki button

* Fix spacing in dropdown menu items

* Switch between cloud icons according to dirty status

* Add a menu item to copy syncer logs to the clipboard

* Improve animated icon

* Remove indentation from save-wiki button

@pmario the annoying thing is that using `\trim whitespace` trims significant whitespace too, so it means we have to use <$text text=" "/> when we need a space that won't be trimmed. For the moment, I've removed the indentation but will keep thinking about it.

* Further icon, UI and copy text tweaks

Move the icons and styles from the core into the TiddlyWeb plugin

* Clean up PR diff

* Tweak animation durations

* Break the actions from the syncer dropdown into separate tiddlers

@pmario I think this makes things a bit easier to follow

* Refactor syncadaptor creation and logging

The goal is for the syncadaptor to be able to log to the same logger as the syncer, so that the "copy syncer logs to clipboard" data is more useful.

* Don't transition the dirty indicator container colour, just the SVG's colour

* Only trigger a sync for changes to tiddlers we're interested in

Otherwise it is triggered by the creation of the alert tiddlers used to display errors.

* Restore deleting local tiddlers removed from the server

(I had commented it out for some testing and accidentally commited it).

* Guard against missing adaptor info

* We still need to trigger a timeout when there was no task to process

* Avoid repeatedly polling for changes

Instead we only trigger a timeout call at if there is a pending task (ie a tiddler that has changed but isn't yet old enough to save).

* Lazy loading: include skinny versions of lazily loaded tiddlers in the index.html

* Introduce _is_skinny field for indicating that a tiddler is subject to lazy loading

* Remove savetrail plugin from prerelease

It doesn't yet work with the new syncer

* Make the savetrail plugin work again

* Clear outstanding alerts when synchronisation is restored

* Logger: only remove alerts from the same component

Missed off 9f5c0de

* Make the saving throttle interval configurable (Jermolene#4385)

After switching Bob to use the core syncer the throttle interval makes saving feel very sluggish compared to the message queue setup that I had before.
The editing lock that I use to prevent conflicts with multiple users doesn't go away until the save is completed, and with the 1 second delay it means that if you edit a tiddler and save it than you have to wait one second before you can edit it again.

* Tweaks to appearance of alerts

* Exclude temp tiddlers from offline snapshots

Otherwise alerts will persist

* Tweak appearance of status line in dropdown

* Update release note

* Web server: Don't include full path in error messages

Fixes Jermolene#3724

* In change event handler check for deletions

* Disable the official plugin library when the tiddlyweb plugin is loaded

* Hide error details from browser for /files/ route

See Jermolene#3724 (comment) -- thanks @pmario

* Revert all the changes to the relationship between the syncer and the syncadaptor

Previously we had some major rearrangements to make it possible for the syncadaptor to route it's logging to the logger used by the syncer. The motivation is so that the "copy logs to clipboard" button is more useful.

On reflection, changing the interface this drastically is undesirable from a backwards compatibility perspective, so I'm going to investigate other ways to achieve the logger sharing

* Make the tiddlyweb adaptor use the syncer's logger

So that both are availavble when copying the syncer logs to the clipboard

* Update release note

* Support setting port=0 to get an OS assigned port

Quite useful

* Update code comment

* UI: Use "Get latest changes from server" instead of "Refresh"

* Add getUpdatedTiddlers() method to syncadaptor API

See Jermolene#4373 (comment)

* Refactor revision handling within the syncer

Thanks @pmario

* Fix typo in tiddlywebadaptor

* Improve presentation of errors

See Jermolene#4373 (comment)

* Add docs for getTiddlerRevision()

* Remove unused error animation

* Update comment for GET /recipes/default/tiddlers/tiddlers.json

* Optimise SVG cloud image

* Add optional list of allowed filters for get all tiddlers route

An attempt to address @Arlen22's concern here:

Jermolene#4373 (review)

* Fix network error alert text translatability

* Fix error code and logging for GET /recipes/default/tiddlers/tiddlers.json

Thanks @Arlen22

* Flip GET /recipes/default/tiddlers/tiddlers.json allowed filter handling to be secure by default

* Validate updates received from getUpdatedTiddlers()

* Add syncer method to force loading of a tiddler from the server

* Remove the release note update to remove the merge conflict

* Fix crash when there's no config section in the tiddlywiki.info file

* Use config tiddler title to check filter query (merge into fix-syncer) (Jermolene#4478)

* Use config tiddler title to check filter query

* Create config-tiddlers-filter.tid

* Add config switch to enable all filters on GET /recipes/default/tiddlers/tiddlers.json

And update docs

* Fix bug when deleting a tiddler with a shadow

Reported by @kookma at Jermolene#4373 (comment)

Co-authored-by: jed <inmysocks@fastmail.com>
Co-authored-by: Arlen22 <arlenbee@gmail.com>

* Updates for Dutch translation

Thanks @gernert

* Fix ActionPopupWidget example

Thanks @twMat

The example had been written while there was a bug that changed the state tiddler titles used by the sidebar

* Update syncer to distinguish connection errors from other errors

We can automatically remove connection errors when things resume working

* Update chinese translations (Jermolene#4528)

* add description of field `_is_skinny`
* add alert message `Error/NetworkErrorAlert`

* TiddlyWebAdaptor: Trim whitespace from save button

Fixes Jermolene#4530

* Update release note

* Fix release note typo

* Add TiddlyDesktop's wikilist colours to Gruvbox palette (Jermolene#4521)

* Update documentation for Modals (Jermolene#4495)

Update documentation for modals to include the custom class introduced in Jermolene#4485, as well as the footer and subtitle fields that don't appear to be documented.

* Add "class" attribute to dropzone widget

* Fix range widget for IE10/11 (Jermolene#4534)

As detailed in Jermolene#4519 the range widget currently does not save its value to the state tiddler on IE 10/11 as they do not support the input event, but rather the change event is fired instead of the input event. This has patch has been tested in IE11 and should work in IE10 as well.

Note that on Chrome and Firefox, the change event will fire only once after the user stops dragging the range slider (In addition the input event). However this does lead to an extra refresh as the handleInputEvent method already checks to see if the current value of the slider is different from the saved value before saving to the store.

* fr-FR translations catch up (Jermolene#4535)

* fr-FR translated strings for the Gitea saver

* fr-FR translation for the _is_skinny description

* fr-FR translation for the Network Error alert

* fr-FR translation for Menu Bar colors

* fr-FR translation for the hint of the add button in EditTemplate

* fr-FR translation for the default focus field hint

* fr-FR translation for throttle.refresh field description

* fr-FR translation for Icon: None in TagManager

* fr-FR translation for Plugins "Also requires:"

* Add NewJournalTags.tid in fr-FR directory

* fr-FR translations for plugin related strings

* fr-FR translation for Sidebar visibility toggle hint

* fr-FR translation for the sidebar search hint

* fr-FR translation for two Palette Editor hints

* Minor tweaks to plugin library listings

* Adds a name to the core plugin
* Make plugin listings consistently show "name: description"
* Make plugin listings consistently sort by title (thus grouping publishers)
* Add a missing plugin name

See discussion here: Jermolene#4508 (comment)

* Travis-CI: Fix nvm failing to install Node.js v12.4.0

Something must have changed on the travis-ci end to cause things to suddenly fail

* Update German translations (Jermolene#4539)

* add a new-line before the log text to increase readability of the test output

* make eslint, jslint happy

* it shouldn't be there

* fremove this file from my PRs

* update German translations

* Add support for woff2 files

* Signing the CLA (Jermolene#4235)

Co-authored-by: Jeremy Ruston <jeremy@jermolene.com>

* Update issue templates

* Add pull request template

* Docs: fix broken link

Fixes Jermolene#4266

* Add dependents to codemirror addons (Jermolene#4278)

* use dependents in codemirror-autocomplete

* add dependents to codemirror-mode-htmlmixed

* add dependents to sublime keymap

* add dependents to vim keymap

* add dependents to htmlmixed mode

* add dependents to htmlembedded mode

* add dependents to markdown mode

* fix typo in markdown-mode

* fix typo in codemirror-mode-htmlembedded

* fix typo in codemirror-keymap-sublime

* fix typo in codemirror-keymap-vim

* fix typo in codemirror-mode-htmlembedded

* fix typo in codemirror-mode-markdown

* Let chained `>` blockquotes generate valid HTML (Jermolene#4332)

* Replace "p" with "div" in itemTag

'>> text' will now be valid html.

* Make the new div's behave like p's

* Enable the internals plugin by default in docs (Jermolene#4335)

* Enable the internals plugin by default in docs

1. Why hide such a useful thing from the users?

2. When playing around with code examples from the docs they may want to know how the resulting html looks.

* Improve doc

* Typo

Co-authored-by: Jeremy Ruston <jeremy@jermolene.com>

* Update jsonstringify Operator.tid (Jermolene#4348)

* Enable indexers in tag test (Jermolene#4355)

Setting enableIndexers to an empty array ends up disabling all indexers
for the wiki

* Fix missing comma in editions/tw5.com/tiddlywiki.info

* New release banner

Congratulations @telmiger

* Remove internal version number info from dynnannotate plugin

* Fix count widget to return "0" for an empty filter string instead of undefined

* AddPlugins: Add a clearer prompt for plugins that have subplugins

* AddPlugins: Add new "updates" tab

* Release note update

* Add new compare filter operator

Fixes Jermolene#4554

* Plugin Chooser: Include currently installed version

* Plugin Chooser: Distinguish between install, reinstall, update and downgrade

* Release note update

* Plugin Chooser: Use existing template for updates tab

* Release note update

* Additional fr-FR translation for Control Panel  (Jermolene#4555)

* fr-FR translation for strings relative to plugin updates

* Missing fr-FR translation for a string in ControlPanel

* Missing fr-FR translation for Copy to Clipboard caption & hint

* Missing fr-FR translations for the Edit Template

* fr-FR translations for updates/upgrades in plugin chooser

* Add chinese translations for AddPlugins things (Jermolene#4546)

* Add chinese translations for AddPlugins things
* "updates" tab
* prompt for plugins that have subplugins

* Improve chinese wording

* Update chinese translations for AddPlugins
* add Plugins/Downgrade/Caption
* add Plugins/Update/Caption
* update Plugins/Updates/UpdateAll/Caption

* Plugin Chooser: Use separate tab state for each plugin library

Fixing the third issue at Jermolene#4486 (comment) from @kookma

* Plugin Chooser: Don't display the "already installed" message twice

Fixing the first issue here Jermolene#4486 (comment) by @kookma

* Plugin Chooser: Colour of update all button should match individual update buttons

Fixes the final issue mentioned by @kookma at Jermolene#4486 (comment)

* Plugin Chooser: Ensure official plugin library is shown first

* Control Panel Plugin Listing: Fallback to last component of title if name field is missing

* Fix makelibrary.js to use enviroment variable paths (Jermolene#4559)

This makes makelibrary.js use environment variables to find paths for plugins, themes and languages instead of just using the paths hardcoded in boot.js

* Makelibrary.js: Minor refactoring

* Update copyright date in license

* Add has:index (Jermolene#4540)

* has:index

* has:index

* has:index docs

* has op examples

* has op examples

* operator macros typo missing </div>

* possible mistake

* Update RangeWidget.tid (Jermolene#4453)

* Update RevealWidget.tid (Jermolene#4451)

* Update ViewWidget.tid (Jermolene#4441)

ref Jermolene#4438

* fix the example path (Jermolene#4419)

* Reduced indexOf calls in wiki.sortByList (Jermolene#4275) (Jermolene#4397)

Examined the tests in test-tag. They already cover all the use cases
I could think of.

* Fixed join filter operator to never returns null (Jermolene#4396)

If the operator were passed an empty list, it would return null
which could cause some proceeding operators to crash.

* Add Mandar Vaze to Individual Contrib. Agreement (Jermolene#4543)

* Add details about special tag in usage for ribbon (Jermolene#4544)

Resolve Jermolene#2581

* Signing the CLA to start contributing (Jermolene#4562)

My Chinese name is Lin Dongwu, I will use that to sign it.

* Fix: z-index for codemirror hint not large enough (Jermolene#4551)

It is currently covered by other tiddler.

* Fix link

* Update release note

* Plugin Chooser: Display libraries as separate tabs

Suggested by @kookma

* Fix wrong configurations in `tiddlywiki.info` for editions `zh-Hant` and `zh-Hans` (Jermolene#4564)

* Remove unwanted whitespace from sidebar links (Jermolene#4552)

* add a new-line before the log text to increase readability of the test output

* make eslint, jslint happy

* it shouldn't be there

* fremove this file from my PRs

* fix 4532. Links should not add unwanted whitespace, since this causes problems with CSS styling

* remove whitespace from tiddler title and add a little bit of margin-right to the tiddler icon.

* use default parameters for link handling, which results in less code

* introduce tc-viewswitcher class to be able to style icon distance to text

* Add new parameters to fields-widget and fields-operator. (Jermolene#4433)

* add a new-line before the log text to increase readability of the test output

* make eslint, jslint happy

* extend fields-widget with include/exclude/sort/reverse and fields-filter with include and exclude params plus DOCS

* remove new-line

* remove eslint settings

* restore old eslint settings

* remove typo

* jsontiddlers macro: parse "spaces" parameter as integer

* Utils: ParseInt should specify a radix

Thanks @pmario

* Action create tiddler improvements (Jermolene#4436)

* add a new-line before the log text to increase readability of the test output

* make eslint, jslint happy

* add $template and $overwrite parameter

* documentation for new parameters + 4 new examples

* remove unwanted files

* Release note update

* Preparing for v5.1.22 release

* Update readme for v5.1.22

* Version number update for 5.1.22

* Add Product Hunt badge

* Signing the CLA (Jermolene#4581)

* Fix broken links in static rendering

Fixes Jermolene#4577

* Make commands for static generation more complete (Jermolene#4588)

* Make commands for static generation more complete

* Added message about installing on node.js

* Update information about Quine for iOS

* Update cla-individual.md (Jermolene#4607)

* Add Nicolas Petton to the list of contributors (Jermolene#4617)

Co-authored-by: Jeremy Ruston <jeremy@jermolene.com>

* Docs updates and fixing broken links (Jermolene#4628)

* Corecting URL of LuckySushi shop

* Android-Instructions remained for Andtidwiki

* Updating description and feature set of Timimi
Updating URL of Widdly
Resolving minor camelcase issues in TiddlySpot

* Detailed instructions about termux and adding it to save methods

* Correcting the words "open source" and "Unix"

* Changing link protocols of verified domains to https

* Fix mailto links Forums.tid (Jermolene#4616)

To avoid users being mislead when trying to subscribe by email to one of the
Google Groups, put only the relevant mailto link in each forum section.

Co-authored-by: Jeremy Ruston <jeremy@jermolene.com>

* Clarify Introduction to filter notation.tid (Jermolene#4639)

I'm reading the documentation for the first time and I'm trying to clarify parts which are hard to understand for first-time users.

* Update Generating Static Sites with TiddlyWiki.tid (Jermolene#4636)

* Update rendertiddlers.tid (Jermolene#4635)

* Update RoadMap tiddler

Fixes Jermolene#4661

* Update How to apply custom styles.tid (Jermolene#4663)

* Update TiddlyWiki in the Sky for TiddlyWeb (Jermolene#4667)

remove refs to TiddlySpace

* Update LinkWidget.tid (Jermolene#4690)

add image link

* Update Images in WikiText.tid (Jermolene#4691)

* Update KeyboardWidget.tid (Jermolene#4606)

Add railroad for key strings.

* Update Saving on a PHP Server.tid (Jermolene#4714)

As suggested by @Marxsal

* Visual changes to Saving Tiddler (Jermolene#4640)

* Styles and templates for visual changes to Saving methods listing

* Color coding saver methods according to delivery

* Changes to tags and few tiddlers
- The tag InternetExplorer has been changed to [[Internet Explorer]]
- A tag for Edge is added
- Reclassified TiddlyServer as DIY instead of App
The existing criteriion for classification is unclear. Here is my reasoning for the change. An app is something user can simply install and run. Like TiddlyDesktop or Tiddloid. A DIY is something user has to install additional runtimes for. Thus Nodejs is a DIY. In the same vein, TiddlyServer is a DIY

* Adding Twexe

* Reversing accidental changes to StoryList

* Restyling Download button and Card Size

* Removing "Read more" links

Entire card is now clickable
To give visual clues regarding the clickability of card, title will change color to blue on card hover

* Removing margins from elements under link and adding padding instead.

Why this change? Margins are not "clickable". Having margins under <a> tag means there are minute dead areas where the mouse pointer will change shape, is not clickable and degrade user experience. Paddings are "clickable"

Co-authored-by: donmor <donmor3000@hotmail.com>
Co-authored-by: Jeremy Ruston <jeremy@jermolene.com>
Co-authored-by: Simon Huber <huber.simon@protonmail.com>
Co-authored-by: Nils-Hero Lindemann <nilsherolindemann@gmail.com>
Co-authored-by: Matt Lauber <github@mklauber.com>
Co-authored-by: Mario Pietsch <pmariojo@gmail.com>
Co-authored-by: Xavier Maysonnave <x.maysonnave@gmail.com>
Co-authored-by: Marica Odagaki <ento.entotto@gmail.com>
Co-authored-by: Will Atwood Mitchell <wam@users.noreply.github.com>
Co-authored-by: Stefan Krüger <git@s-light.eu>
Co-authored-by: TonyM <31584658+AnthonyMuscio@users.noreply.github.com>
Co-authored-by: Brooks Boyd <MidnightLightning@users.noreply.github.com>
Co-authored-by: twMat <boardsmm@gmail.com>
Co-authored-by: Cameron Fischer <fischer.cameron@gmail.com>
Co-authored-by: Lee Sheng Long <github@sll.ee>
Co-authored-by: Bram Chen <bram.chen@gmail.com>
Co-authored-by: saqimtiaz <saq.imtiaz@gmail.com>
Co-authored-by: lucible <45129600+lucible@users.noreply.github.com>
Co-authored-by: scott willeke <scott@willeke.com>
Co-authored-by: JesseWeinstein <jesse@wefu.org>
Co-authored-by: Matthias Bilger <matthias@bilger.info>
Co-authored-by: Rob Hoelz <rob@hoelz.ro>
Co-authored-by: Joshua Fontany <joshua.fontany@gmail.com>
Co-authored-by: jed <inmysocks@fastmail.com>
Co-authored-by: Arlen22 <arlenbee@gmail.com>
Co-authored-by: Xavier Cazin <xavier@cazin.eu>
Co-authored-by: Mohammad Rahmani <830394+kookma@users.noreply.github.com>
Co-authored-by: Mandar Vaze <mandarvaze@gmail.com>
Co-authored-by: lin onetwo <linonetwo012@gmail.com>
Co-authored-by: idotobi <16611056+idotobi@users.noreply.github.com>
Co-authored-by: Marxsal <throaway@yahoo.com>
Co-authored-by: mocsa <13969648+mocsa@users.noreply.github.com>
Co-authored-by: Nicolas Petton <nicolas@petton.fr>
Co-authored-by: Rizwan <ibnishak@live.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants