Zum Inhalt
nexlore

Plugins

Mehr Möglichkeiten, ohne mehr Rechte.

Ein Plugin setzt sich neben eine Notiz, zeichnet einen eigenen Codeblock oder zeigt eine Notiz auf ganz andere Weise. Dabei läuft es eingesperrt im Browser und bekommt nur das, was es in seinem Manifest verlangt.

Vier geprüfte Plugins, die gleich dabei sind

nexlore bringt vier Plugins mit. Für jede ihrer Dateien ist eine Prüfsumme hinterlegt, und eine Datei, die davon abweicht, wird nicht installiert.

Inhaltsverzeichnis

Neben der Notiz siehst du ihre Überschriften, wie viele Wörter sie hat und wie lange man zum Lesen braucht. Dafür darf das Plugin die Notiz lesen.

Abfragen

Ein query-Block listet Notizen nach Tag oder Ordner auf, als Liste oder als Tabelle. Das Plugin liest nur und führt nie Dataview-Code aus. Dafür darf es Notizen auflisten.

Kanban

Notizen mit kanban-plugin im Frontmatter erscheinen als Brett. Verschiebst du eine Karte, schreibt das Plugin nur die Spalten neu, die sich geändert haben, und die Datei bleibt gewöhnliches Markdown. Dafür darf es die Notiz lesen und schreiben.

Wiederentdecken

Das Plugin zeigt dir eine zufällige ältere Notiz und das, was du heute vor einem Jahr geschrieben hast. Dafür darf es Notizen auflisten.

Ein Kanban-Brett, das eine ganz normale Notiz bleibt

Jede Spalte ist eine Überschrift, und jede Karte ist eine Aufgabe darunter. So bleibt das Brett eine gewöhnliche Markdown-Datei, die du auch in jedem anderen Editor öffnen kannst.

Projektbrett.md
---
kanban-plugin: basic
---

## Ideen

- [ ] Eigene Bereiche anlegen


## In Arbeit

- [ ] Die Anleitung lesen


## Erledigt

- [x] nexlore einrichten
Project board.md
Ein Kanban-Brett mit den Spalten Ideas, Doing und Done aus einer Markdown-Notiz
Ein Brett aus einer gewöhnlichen Markdown-Notiz. Oben schaltest du zwischen Brett und Text um.

Jede Person entscheidet selbst, welche Plugins sie nutzt

Dass ein Plugin installiert ist, heißt noch lange nicht, dass es läuft. Bis es bei dir erscheint, sind drei Schritte nötig.

  1. Der Betreiber installiert

    Unter Einstellungen, Server, KI und Plugins wählt er ein Plugin aus dem Katalog. Danach ist es zwar da, aber für alle noch aus.

  2. Der Betreiber gibt frei

    Erst wenn er das Plugin freigibt, taucht es bei den Konten auf.

  3. Du schaltest es ein

    Unter Mein Konto, Plugins für mich schaltest du es nur für dich ein. Dort steht bei jedem Plugin auch, was es darf.

Lore sagtSolange ein Plugin aus ist, siehst du seinen Codeblock einfach als Text. Es läuft also nichts, was du nicht selbst eingeschaltet hast.

Ein Plugin kommt nicht an deine Daten, wenn du es nicht erlaubst

Jedes Plugin läuft in einem abgeschotteten Rahmen ohne eigene Herkunft. Der einzige Weg nach draußen führt über die Seite, auf der es sitzt, und die muss es fragen.

Kein Netz

Ein Plugin kann nichts nachladen, nirgendwohin navigieren und keine Anfrage an einen Server schicken.

Keine Anmeldung

Es bekommt kein Cookie und keinen Zugriff auf den Speicher der App. Deine Sitzung kennt es nicht und kann sie deshalb auch nicht benutzen.

Nur, was im Manifest steht

Die Seite beantwortet nur Fragen, die das Manifest unter permissions nennt. Will ein Plugin schreiben, prüft der Server das Recht dazu noch einmal.

Eigene Plugin-Dateien liegen hinter einem Riegel

Browser erlauben einer Seite nicht, jeden Weg aus so einem Rahmen zu sperren. Über WebRTC könnte Code darin verschicken, was er zu sehen bekommt. Deshalb brauchen Plugin-Dateien, die nicht aus dem Katalog stammen, einen Riegel, den der Betreiber erst öffnen muss. Beim Öffnen und bei jedem Hochladen fragt nexlore mit einer deutlichen Warnung nach.

Ungeprüftes ist gekennzeichnet

Ein Plugin aus einer eigenen Datei trägt in der Liste den Vermerk „eigene Datei, ungeprüft“. Es läuft genauso eingesperrt, aber außer dir hat niemand seinen Code gelesen. Erlaube deshalb nur, was du selbst gelesen hast oder was von jemandem stammt, dem du vertraust.

Dein eigenes Plugin in zwei Dateien

In manifest.json steht, was das Plugin ist und was es darf, und main.js macht die eigentliche Arbeit. Das Beispiel hier zählt die Wörter neben der Notiz.

manifest.json
{
  "id": "word-count",
  "version": "1.0.0",
  "author": "you",
  "name": { "en": "Word count", "de": "Wörter" },
  "description": { "en": "Counts the words of the note." },
  "permissions": ["note:read"],
  "place": { "panel": true },
  "strings": {
    "en": { "words_one": "{{count}} word",
            "words_other": "{{count}} words" }
  }
}
main.js
nexlore.ready(function (context) {
  nexlore.ask('note.read').then(function (note) {
    var words = note.content.split(/\s+/).filter(Boolean).length
    document.getElementById('app').textContent =
      nexlore.t('words', { count: words })
  })
})
nexlore.on('changed', function () {
  // die Notiz hat sich geändert: neu lesen
})
FeldWas hineingehört
idKleinbuchstaben, Ziffern und -, 2 bis 32 Zeichen lang und keine Kennung, die schon im Katalog vorkommt
versioneine Fassung wie 1.0.0
permissionsbeliebig viele aus note:read, note:write und vault:read
placegenau eins davon: { "panel": true } neben der Notiz, { "block": "sprache" } für einen eigenen Codeblock oder { "view": { "frontmatter": "schlüssel" } } als Ansicht für Notizen mit dieser Eigenschaft
name, descriptionein Text oder Texte je Sprache, mindestens en
stringsdie eigenen Texte je Sprache für nexlore.t

Lore sagtEin eigener Codeblock darf nicht dataview, dataviewjs, tasks, mermaid, math, latex oder query-results heißen, weil diese Namen schon vergeben sind.

Was ein Plugin von nexlore wissen kann

main.js läuft nach einer kleinen Bibliothek namens nexlore. In context stehen Ort, Pfad, Sprache, Texte und Theme und bei einem Codeblock auch dessen Text.

AnfrageBrauchtAntwort
nexlore.ask('note.read')note:read{ path, title, content, hash }
nexlore.ask('note.write', { content, base_hash })note:write{ saved, conflict, hash }; hat sich die Notiz inzwischen geändert, entsteht eine Konfliktkopie
nexlore.ask('vault.query', { tag, folder, space, sort, limit, random, day })vault:readbis zu 200 Notizen, die das Konto lesen darf
nexlore.ask('note.open', { path })nichtsöffnet eine Notiz, die das Konto lesen darf
nexlore.ask('note.reveal', { heading, index })nichtsscrollt die Notiz zu einer Überschrift

nexlore.t(schlüssel, { count }) wählt je nach Zahl _one oder _other, und nexlore.resize() passt den Rahmen an seinen Inhalt an, was aber auch von selbst passiert. main.js darf höchstens 512 KB groß sein und das Manifest höchstens 64 KB.