Commit Graph
40 Commits
Author SHA1 Message Date
sko d00d195ac3 Merge pull request 'mediawiki: Suchfehler lesbar statt als Stacktrace (0.1.1)' (#11) from fix/wiki-suchfehler into main
Reviewed-on: #11
2026-10-08 06:02:16 +02:00
sko a8688302ac Merge pull request 'humhub: Hinweis auf Emoji-Ersetzung bei :) in Fachtext (0.4.1)' (#12) from docs/humhub-emoticons into main
Reviewed-on: #12
2026-10-08 05:50:13 +02:00
skoandClaude Opus 5.5 2e19639e12 humhub: Hinweis auf Emoji-Ersetzung bei :) in Fachtext (0.4.1)
'(0.0.0.0 und ::)' wurde in einem Schraubraum-Post zu einem Smiley.
IPv6-Adressen, Ports und Pfade vor Klammern in Backticks setzen.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-08 05:39:43 +02:00
skoandClaude Opus 5 72a1ca284a mediawiki: Suchfehler lesbar statt als Stacktrace (0.1.1)
Gleichstand mit inmedias.it/dokumentierer d1eeb94.

Eine von CirrusSearch abgelehnte Suchanfrage liess mwclient.errors.APIError
bis nach oben durchschlagen - der Benutzer sah einen Stacktrace statt einer
Meldung. cmd_search faengt den Fehler jetzt ab und beendet mit Code 1.

Fuer cirrussearch-parse-error gibt es einen eigenen Hinweis: "insource:wort"
funktioniert, die Regex-Form "insource:/muster/" nicht. Letztere braucht das
Elasticsearch-Plugin wikimedia-extra, das auf unserer Instanz fehlt.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-10-06 11:51:07 +02:00
sko 847f8ab3f4 Merge pull request 'humhub: mail-send loest Empfaenger zu GUIDs auf' (#10) from fix/humhub-mail-guid into main
Reviewed-on: #10
2026-09-25 11:07:45 +02:00
jhsandClaude Opus 5 10ea9277c9 humhub: Probelauf, Zustellprüfung und mail-user-remove (0.4.0)
Die API hat eine Direktnachricht an einen anderen als den in `recipient`
genannten Benutzer zugestellt, obwohl die ID über /user verifiziert war.
Welche Kennung sie wirklich erwartet, ist ungeklärt — und löschen lässt
sich eine Fehlzustellung nicht: DELETE /mail/<id> gibt es in dieser
Version nicht, über die Oberfläche kommt man auch nicht dran.

Deshalb drei Änderungen:

- mail-send sendet nur noch mit --send; ohne das Flag löst es den
  Empfänger auf und zeigt Namen und ID.
- Nach dem Versand wird die Teilnehmerliste gelesen und gemeldet, wer die
  Konversation tatsächlich bekommen hat.
- mail-user-remove nimmt einen Teilnehmer wieder heraus
  (DELETE /mail/<id>/user/<userid>) — das einzige Gegenmittel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-25 08:31:43 +02:00
jhsandClaude Opus 5 1c9f95a11f humhub: Version 0.3.1
Ohne Versionssprung zieht 'claude plugin marketplace update' den Fix
nicht als neue Fassung.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-24 19:08:58 +02:00
jhsandClaude Opus 5 57c1910734 humhub: mail-send loest Empfaenger zu GUIDs auf
POST /mail nimmt als recipient ausschliesslich GUIDs an. Mit numerischen
User-IDs antwortet die API "400 Validation failed" und "Du kannst keine
Nachricht ohne Empfaenger senden!" - eine Meldung, die nach einem leeren
Feld klingt, obwohl das Feld gefuellt ist.

resolve_user gibt deshalb die GUID zurueck statt der ID; user_guid holt
sie ueber /user/<id> nach, wenn die Benutzerliste sie nicht mitliefert.
Geprueft gegen humhub.inmedias.it mit Benutzername, Profil-URL und
numerischer ID; der Versand mit GUID ist belegt.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-24 18:58:02 +02:00
skoandClaude Opus 5 7efb302c10 mediawiki: purge-Subcommand und der Parser-Cache-Fallstrick
wiki.py mit dokumentierer/wiki.py synchronisiert (purge-Subcommand).

SKILL.md: purge und das bisher undokumentierte upload in die
Befehlsliste, dazu ein Abschnitt zu Seiten mit #get_web_data. Die
Vorlagen werden nicht bei jedem Aufruf ausgefuehrt; wer nach einer
Datenaenderung render aufruft und alte Werte sieht, hat meist den Cache
vor sich und nicht kaputte Daten.

description um den Fall erweitert, damit die Skill bei "Wiki zeigt
veraltete Daten" gefunden wird. version 0.1.0 -> 0.2.0.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-24 05:10:54 +02:00
sko ab56ba0c64 Merge pull request 'redmine: News und Versionen steuerbar (0.2.0)' (#9) from feat/redmine-news-versionen into main
Reviewed-on: #9
2026-09-17 08:50:44 +02:00
skoandClaude Opus 5 6613c9ef29 redmine: News und Versionen steuerbar (0.2.0)
Übernimmt den Stand aus inmedias.it/dokumentierer (7097383). Beide
Fassungen waren bis hierhin byte-identisch und sollen es bleiben.

`news` liest, legt an und ändert; `versions` listet und legt an,
`create`/`update` nehmen `--version`.

Der Hinweis in SKILL.md, Versionen seien "über redmine.py nicht
abgedeckt", stimmt damit nicht mehr und ist ersetzt - durch zwei
Eigenheiten, die beim Anlegen des Projekts devops aufgefallen sind:
Redmine begrenzt News-Titel auf 60 Zeichen (sonst HTTP 422), und die
Priorität eines Elterntickets wird aus den Unteraufgaben abgeleitet,
überschreibt also einen von Hand gesetzten Wert.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-17 08:49:55 +02:00
sko 21d709afbd Merge pull request 'humhub: Direktnachrichten senden (mail-send)' (#8) from feat/humhub-mail into main
Reviewed-on: #8
2026-09-16 06:32:09 +02:00
jhsandClaude Opus 5 2bfc62bcb8 humhub: in bestehenden Konversationen antworten (mail-reply)
mail-send legt immer eine neue Konversation an; fuer eine Antwort braucht es
POST /mail/<id>/entry. Die ID steht in der URL der Konversation.

Holt den Verlauf nicht ab, sondern prueft nur die Erreichbarkeit — fremde
Nachrichten gehoeren nicht ungefragt in einen Modellkontext.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-12 08:24:23 +02:00
jhsandClaude Opus 5 e00395fc64 humhub: Direktnachrichten senden (mail-send)
Die REST-API kann das Mail-Modul, das Skill bisher nicht — Direktnachrichten
mussten von Hand in der Weboberflaeche geschrieben werden.

Der Stolperstein ist die Empfaengeraufloesung: Profil-Slug und Benutzername
sind nicht dasselbe (zu /u/serge/ gehoert "Serge"), und get-by-username
unterscheidet Gross-/Kleinschreibung. resolve_user() nimmt deshalb ID,
Benutzername oder Profil-URL und faellt auf einen Durchlauf der Benutzerliste
zurueck, der beides case-insensitive vergleicht.

Kein Befehl zum Lesen von Konversationen: fremde Nachrichten gehoeren nicht
ungefragt in einen Modellkontext.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-09-11 08:56:09 +02:00
jhsandClaude Fable 5 4a20da2ed2 humhub: comment-list/comment-create (POST /comment via Content-ID/Perma-URL)
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-09-01 07:28:01 +02:00
sko 2a02dac74e Merge pull request 'humhub: Umfragen anlegen und auflisten (poll-create / poll-list)' (#6) from feat/humhub-polls into main 2026-08-31 09:24:44 +02:00
jhsandClaude Opus 5 75e99dd0b8 humhub: Umfragen anlegen und auflisten (poll-create / poll-list)
Die Polls-REST-API ist auf der Instanz aktiv, der Skill kannte sie nicht.
Zwei Abweichungen vom Muster der Post-API, die beide in
HTTP 500 'Internal error while save a poll!' enden:

* Der Controller macht $poll->load(Yii::$app->request->post()) — die Felder
  gehoeren unter den Yii-Formnamen 'Poll', nicht unter 'data'.
* Die Optionen heissen beim Anlegen 'newAnswers'; 'answers' ist die Leseform
  und wird beim POST ignoriert.

Beim Lesen ist limit Pflicht: ohne Begrenzung antwortet die Instanz ab etwa
25 Umfragen ebenfalls mit 500.

Quelle: humhub/polls, controllers/rest/PollsController.php + models/Poll.php.
Verifiziert an Space inmedias (Umfrage 36).

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-08-31 09:24:31 +02:00
skoandClaude Opus 4.8 dc3e6a0c68 redmine: Plugin für Redmine via REST-API hinzufügen
Self-contained redmine.py (me/projects/issues/show/create/update/comment/
meta) mit Namensaufloesung (Projekt/Tracker/Status/Prioritaet). SKILL.md,
plugin.json, Beispiel-Konfig; Eintrag in marketplace.json und README.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-28 09:42:25 +02:00
skoandClaude Opus 4.8 28ec699e51 README: klare-sprache-Plugin dokumentieren
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 04:56:06 +02:00
skoandClaude Opus 4.8 c09ea07d3f klare-sprache: Plugin für klare Sprache (ISO 24495-1:2023) hinzufügen
Neues Skill-Plugin, das Texte nach den Leitprinzipien der ISO 24495-1:2023
(Plain Language) schreibt/überarbeitet: zielgruppen- und prozessorientiert
(finden – verstehen – nutzen). Im marketplace.json registriert.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-08-18 04:54:34 +02:00
sko 36dcb843b9 Merge pull request 'plugins/einfaches-technisches-deutsch: Schreibstil-Skill (ASD-STE100 auf Deutsch)' (#5) from feature/einfaches-technisches-deutsch-plugin into main 2026-08-12 06:46:06 +02:00
skoandClaude Opus 4.8 919cd52bff plugins/einfaches-technisches-deutsch: Schreibstil-Skill (ASD-STE100 auf Deutsch)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-12 06:45:51 +02:00
sko 27f40ee18a Merge pull request 'README: Einrichtung an oeffentliches Repo angepasst' (#4) from docs/readme-oeffentlicher-marketplace into main
Reviewed-on: #4
2026-08-11 10:23:00 +02:00
skoandClaude Opus 5 64744a213d README: Einrichtung an oeffentliches Repo angepasst
Das Repo ist inzwischen oeffentlich lesbar; `/plugin marketplace add` klont
direkt ueber HTTPS. Die insteadOf-Umleitung auf SSH ist dafuer nicht mehr
noetig und steht jetzt nur noch als Rueckfallweg fuer den Fall, dass das Repo
wieder privat gestellt wird.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-11 10:11:03 +02:00
skoandClaude Opus 4.8 04886d73f5 humhub: fetch-Befehl + space-list/resolve_container ins Plugin
- fetch <content-id|perma-url> [--save]: löst Perma-Links selbst auf
- space-list + resolve_container: container_id akzeptiert Slug/URL/ID
- SKILL.md entsprechend ergänzt

Gleicht das Plugin an die kanonische humhub.py (dokumentierer) an.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-08-05 06:03:41 +02:00
sko aa9888700d Merge pull request 'plugins/grill-me: grill-me als Skill (Plan/Idee gnadenlos durchfragen)' (#3) from feature/grill-me-plugin into main 2026-07-29 08:44:33 +02:00
skoandClaude Opus 4.8 437bd1c1ee plugins/grill-me: grill-me als Skill (Plan/Idee gnadenlos durchfragen)
Deutsche Adaption des englischen Originals von Matt Pocock.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-07-29 08:43:33 +02:00
skoandClaude Opus 4.8 0fd228b962 README: mediawiki- und humhub-Plugin dokumentiert
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 10:17:04 +02:00
sko ad893e20d5 Merge pull request 'plugins/mediawiki: wiki.py als Skill (Wiki lesen/rendern/schreiben)' (#1) from feature/mediawiki-plugin into main
Reviewed-on: #1
2026-07-16 10:10:23 +02:00
sko 079226ea43 Merge remote-tracking branch 'origin/main' into feature/mediawiki-plugin
# Conflicts:
#	.claude-plugin/marketplace.json
2026-07-16 10:09:24 +02:00
sko 633592b9b0 Merge pull request 'plugins/humhub: humhub.py als Skill (Wiki-Seiten & Posts)' (#2) from feature/humhub-plugin into main
Reviewed-on: #2
2026-07-16 10:06:04 +02:00
skoandClaude Opus 4.8 9cee563a81 humhub: Token-Quelle korrigiert (REST-Admin, nur berechtigte Benutzer)
Token gibt es nur als berechtigter Benutzer unter
https://humhub.inmedias.it/rest/admin/index (nicht ueber Benutzereinstellungen).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 10:05:14 +02:00
skoandClaude Opus 4.8 f45d7a3f8f plugins/humhub: humhub.py als Skill (Wiki-Seiten & Posts via REST-API)
Neues Plugin, das HumHub (humhub.inmedias.it) ueber die gevendorte, self-
contained humhub.py (uv run --script; requests+python-dotenv) bedient:
wiki-list/get/update/create, post-list/create/update. Token bleibt lokal
(Umgebungsvariable bzw. dotenv-Datei) - Beispiel-Vorlage beiliegend. SKILL.md
dokumentiert Nutzung. Marketplace-Eintrag ergaenzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 10:01:25 +02:00
skoandClaude Opus 4.8 7b44ceafdc plugins/mediawiki: wiki.py als Skill (fetch/update/render, wiki & devwiki)
Neues Plugin, das MediaWiki-Seiten/Templates ueber die gevendorte, self-
contained wiki.py (uv run --script; mwclient+python-dotenv) liest, rendert und
schreibt. Instanzen wiki (Prod) und devwiki via -w. Zugangsdaten bleiben lokal
(Umgebungsvariablen bzw. dotenv-Datei) - Beispiel-Vorlage beiliegend. SKILL.md
dokumentiert Nutzung + Regel "Wiki nur via wiki.py/MCP, nicht Maintenance-Skript".
Marketplace-Eintrag ergaenzt.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-16 09:50:43 +02:00
skoandClaude Opus 4.8 fdbf8d640f docs: document available plugins (gitea-tea, uv, humanizer) in README
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 07:50:23 +02:00
skoandClaude Opus 4.8 5648bd4551 feat: add humanizer plugin to marketplace (vendored from blader/humanizer)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 04:37:33 +02:00
skoandClaude Opus 4.8 98fb3d5b78 feat: add uv plugin to marketplace
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 03:38:20 +02:00
skoandClaude Opus 4.8 239e613100 docs: document insteadOf git config for private-repo marketplace access
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 03:32:38 +02:00
skoandClaude Opus 4.8 1afb1f58af docs: use full git URL for marketplace add (Gitea, not GitHub shorthand)
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 03:27:55 +02:00
skoandClaude Opus 4.8 1a1abf5ee6 feat: initial marketplace with gitea-tea plugin
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-08 03:23:59 +02:00