Skip to content

feat(plugins): install plugins from the nokta-plugins catalog - #140

Merged
MasRama merged 7 commits into
mainfrom
feat/plugin-catalog
Nov 5, 2026
Merged

MasRama merged 7 commits into
mainfrom
feat/plugin-catalog

Conversation

@MasRama

@MasRama MasRama commented Nov 5, 2026

Copy link
Copy Markdown
Owner

Plugins shared in a catalog, MasRama/nokta-plugins, installed from Nokta's settings or the nokta command.

What changes

  • noktad (plugins/catalog.rs): reads index.json from the catalog's catalog branch, downloads a plugin's files one by one into ~/.cache/nokta/plugins/<id>, checks each against its listed size and SHA-256 (plain relative paths only), and installs the folder through the existing install path: off, and an update keeps the switch and options. Plugins1 gains Catalog() and InstallFromCatalog(id). NOKTA_PLUGIN_CATALOG_URL points it elsewhere for tests.
  • CLI: nokta plugin catalog lists the catalog with each one's state; nokta plugin install <id> installs from the catalog when no such folder exists; nokta plugin update <id>.
  • Windows app: the same two calls in-process, and over the CLI pipe.
  • Settings (GNOME and Windows): a Catalog group under Added. Nothing is fetched until Browse; each row shows Install, Update (the catalog has a newer version of one you have), Installed, or Not for this system.
  • Smoke: the devshell serves a fake catalog; a file with a wrong SHA-256 installs nothing, the right one installs executable and off.
  • Docs: README (and its privacy note), docs/plugins.md, ARCHITECTURE, checklists.

Checked

  • cargo clippy/cargo test, extension check/test/lint, desktop tsc/vitest/lint, precheck.sh --quick with smoke.
  • Settings shots on GNOME (devshell) and the Windows page (mock).
  • An isolated noktad against the real catalog: nokta plugin catalog, install days-until (off, days.sh executable, staging folder gone), enable → on ok.

Needs a real session

  • Settings → Plugins → Catalog → Browse, Install and Update on GNOME and on Windows.

…ecked

Plugins1 gains Catalog and InstallFromCatalog. The catalog's index lists
every file of a plugin with its size and SHA-256; each download must
match before it is written, and the plugin then installs like one from a
folder: a new one starts off, an update keeps its switch and options.
NOKTA_PLUGIN_CATALOG_URL points it elsewhere.
catalog lists the catalog's plugins and says which are installed or have
an update; install takes a catalog id when there is no folder of that
name; update gets the newest of one.
The bridge answers Plugins1.Catalog and InstallFromCatalog, and nokta
plugin catalog, install and update go over the pipe.
The Plugins page gains a Catalog group under Added. Nokta asks the
catalog only when Browse is pressed; each plugin then shows Install,
Update when the catalog has a newer version of an installed one,
Installed, or Not for this system. An install starts off, like one
added from a folder.
The Windows settings get the same Catalog group. The mock bridge can
answer a method, so the mock settings show a catalog after ?browse.
The devshell points noktad at a catalog on its stand-in server. Smoke
checks a file that does not match index.json installs nothing, and a
matching plugin installs executable and off.
@MasRama
MasRama merged commit 0721b45 into main Nov 5, 2026
13 checks passed
@MasRama
MasRama deleted the feat/plugin-catalog branch November 5, 2026 02:45
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

Successfully merging this pull request may close these issues.

1 participant