Skip to content

[IDEA] Affordance for installing plugins on node.js #9210

@saqimtiaz

Description

@saqimtiaz

In light of the pending changes in #9183 to allow for server only plugins that are not served to the client, it becomes ever more important to facilitate the installation of plugins on node.js as opposed to via drag and drop in the client.

There are several barriers to this:

  • If there is a github repository, the process is clunky and involves downloading the code, placing it in the correct repo and editing tiddlywiki.info
  • Often there is no repository and the plugin is only available via a TiddlyWiki avaiable at a URI.
  • A plugin might be available via a plugin library and need to be installed from there.

It is proposed to add a new node.js TiddlyWiki command, called for the time being install-plugin. This plugin would fetch the plugin from the provided resource, unpack it if needed and place it in the correct directory and update tiddlywiki.info.

!!Proposed syntax:

node tiddlywiki.js ./my-edition --install-plugin URI

Where URI could be any of:

  • a link to a specific path in a git repository in the form git://[<user>[:<password>]@]<hostname>[:<port>][:][/]<path-to-plugin.info> [#<commit-ish> | #semver:<semver>]
    • examples:
      • git://github.com/saqimtiaz/streams/tree/main/plugins/streams
      • or git://github.com/saqimtiaz/streams/tree/main/plugins/streams#v1.2.23
  • a permalink to a tiddler in a publicly hosted TiddlyWiki
  • a permalink identifying a plugin in a plugin repository (not yet implemented in plugin libraries), it could take the form of plugin-title@plugin-library-URI
    • also worth considering here are core plugins and facilitating their installation. They need not be fetched over HTTP since they are a part of the TiddlyWiki installation. $:/plugins/tiddlywiki/dynannotate@core ?

We could also offer an affordance to trigger the command from the client for logged-in users for those so inclined. After all the same plugins could still be installed by dragging and dropping them on the client. However, this would also require the ability to restart the server from the client.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions