From ba39bb11253bd43510bcb879ffbf18d6a527b3f0 Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Thu, 29 Oct 2026 23:25:08 +0100 Subject: [PATCH] docs(34): roll out plugin.yaml to the remaining public plugin repos --- .../34-plugin-marketplace/34-02-SUMMARY.md | 17 +++++++++++++ .../34-plugin-marketplace/34-release-log.md | 25 +++++++++++++++---- 2 files changed, 37 insertions(+), 5 deletions(-) diff --git a/.planning/phases/34-plugin-marketplace/34-02-SUMMARY.md b/.planning/phases/34-plugin-marketplace/34-02-SUMMARY.md index b91781bc..5c650f0f 100644 --- a/.planning/phases/34-plugin-marketplace/34-02-SUMMARY.md +++ b/.planning/phases/34-plugin-marketplace/34-02-SUMMARY.md @@ -241,3 +241,20 @@ None beyond the plan's threat model. T-34-07 and T-34-08 are mitigated by the ge - 20/20 plugin-repo commits found as each repository's HEAD with the plan subject (`git -C log -1`), none tagged. - All five apps build in workspace mode; no app repository modified. + +## Gap closure: SC-1 remaining repos + +34-VERIFICATION.md found four more public plugin repositories on git.golem15.com without plugin.yaml. Jakub chose to roll them out now (2026-10-29). They were cloned next to the framework (`git@git.golem15.com:golem15/sm--plugin.git`) and given the same treatment as the 20 above: framework require v0.6.0, `go mod tidy`, `summer plugin:manifest` with `--name` (each README H1 is the ID), and `manifest_test.go` calling `kiosk.CheckT(t, ".")`. Each got one commit with the subject `feat: plugin.yaml manifest for the SummerCMS marketplace`, containing plugin.yaml, manifest_test.go, go.mod and go.sum. None was pushed or tagged. + +| Repository | Branch | Commit | Plugin ID | Name (source) | requires | Framework | Tag now -> planned | +|---|---|---|---|---|---|---|---| +| sm-golem-plugin | master | 89fd90a6d21c78501499c18e4eea5a4853e9519d | golem15.golem | Golem AI (override) | - | v0.6.0 (was v0.4.0) | v0.1.1 -> v0.1.2 | +| sm-feedback-plugin | master | dd78bd275ccf533ae3d07d6dfb415f2a1b44b2f7 | golem15.feedback | Feedback (override) | golem15.user v0.1.0 | v0.6.0 (was v0.4.0) | v0.1.1 -> v0.1.2 | +| sm-quizzes-plugin | master | 67a83dba321f1c97471bc7ba704c2218c21dc4f8 | golem15.quizzes | Quizzes (override) | golem15.user v0.1.0 | v0.6.0 (was v0.1.9) | v0.1.0 -> v0.1.1 | +| sm-presentations-plugin | master | - (skipped) | golem15.presentations | - | - | v0.5.0 (unchanged) | v0.1.1, no new tag | + +- **sm-presentations-plugin skipped:** it has no README.md. kiosk needs one even when `--name` and `--description` are given ("the plugin needs a README.md whose H1 is the plugin name"), and adding a README falls outside the rollout's file set. It builds and tests green against the framework; it needs a README (H1 name plus a summary paragraph) before it can get a plugin.yaml. +- **Framework fix 87921c2, `fix(kiosk)`:** these repositories are developed inside applications. Their go.mod replaces point at an application mount (`../../../../summercms.go`, and `sm-user-plugin => ../user`). kiosk resolves required plugins with `GOWORK=off`. Next to the framework, `../user` does not exist, so feedback and quizzes derived `golem15.user: ""`, while inside sm-demo-app they derived `v0.1.0`. TestPluginManifest could not pass in both layouts. kiosk now fetches a required module whose local replace directory is missing at the version go.mod requires, so both layouts give `v0.1.0`. The fix has a regression test (TestDeriveMissingReplace, offline file:// proxy), and the 21 existing manifests stayed fresh. +- **Local build setup:** each clone has an untracked `go.work` listed in `.git/info/exclude`. It uses `.`, replaces the framework with `../summercms.go`, and, where the plugin requires the user plugin, replaces it with `../sm-demo-app/plugins/golem15/user`. The committed go.mod replaces are unchanged, and tidy ran with them pointed at those paths only temporarily. +- **Checks:** for golem, feedback and quizzes, TestPluginManifest, `go vet ./...`, `go test -short ./...` (green before and after the change), `summer plugin:manifest --check` and anonymous `git ls-remote` over HTTPS all pass. The drift guard was demonstrated on feedback. `go mod tidy` removed the fang leftovers (note 3) and added framework v0.6.0's indirect requires. No direct require was removed or downgraded. +- **Mounted in apps:** sm-demo-app mounts golem, feedback, quizzes and presentations. sm-bm-app mounts quizzes and presentations. fonoteka.go mounts golem and feedback. The six pointer bumps are in 34-release-log.md. Every target sits directly on the commit the app points at today. diff --git a/.planning/phases/34-plugin-marketplace/34-release-log.md b/.planning/phases/34-plugin-marketplace/34-release-log.md index cd03c9a5..f7717040 100644 --- a/.planning/phases/34-plugin-marketplace/34-release-log.md +++ b/.planning/phases/34-plugin-marketplace/34-release-log.md @@ -4,7 +4,7 @@ The user-gated release of the plugin marketplace: framework `v0.6.0`, a new tag Decisions this ledger follows: -- **Plugin tags (Jakub, 2026-10-29):** every plugin that got a `plugin.yaml` commit in this phase (the 20 `sm-*-plugin` repositories) and `sm-summercmsio-plugin` get a new release tag: the next patch after the newest existing tag, `v0.1.0` for a repository without one. +- **Plugin tags (Jakub, 2026-10-29):** every plugin that got a `plugin.yaml` commit in this phase (the 20 `sm-*-plugin` repositories of 34-02 and the 3 of its SC-1 gap closure: golem, feedback, quizzes) and `sm-summercmsio-plugin` get a new release tag: the next patch after the newest existing tag, `v0.1.0` for a repository without one. - **Changelog (Jakub, 2026-10-29):** only the framework `v0.6.0` tag gets a post on https://summercms.io/changelog. The plugin tags get **no** `/changelog/plugins` posts; the framework post and the tag message list the plugin bumps instead. - **App pointer bumps:** deferred in 34-02 ("defer"); they move here and target the tagged plugin commits. - Memory rules: tag only at phase completion after full verification, tags only on the default branch, every tag contains the earlier tags. @@ -35,6 +35,7 @@ Newest tag before the phase: `v0.5.3`. master is 32 commits ahead of origin/mast | 34-06 | df2ba57 | test(cabana): Plugins screen endpoints (one fix) | | 34-06 | bad273b | test(admin): PluginsView and settings paths | | 34-06 | dfc6127 | test: phase 34 gate requires the summercms.io unit tests | +| 34 gap | 87921c2 | fix(kiosk): fetch a required plugin module whose replace directory is missing | The admin dist was rebuilt in 678eac4 and 34-06 changed no `admin/src` file (only `admin/tests`), so no rebuild is needed before the tag; `scripts/check-admin-dist.sh` passes. @@ -64,8 +65,13 @@ Each repository's new commit is the 34-02 manifest commit (`feat: plugin.yaml ma | 18 | sm-userfriends-plugin | main | 2f29b26 | 6 | none | **v0.1.0** | - | | 19 | sm-chatchannels-plugin | main | rebased 322629b (new SHA) | 10 | none | **v0.1.0** | 1 ahead, 1 behind (origin a30f04a touches go.mod): rebase first | | 20 | sm-chatbots-plugin | main | rebased 0cd78f2 (new SHA) | 7 | none | **v0.1.0** | 1 ahead, 1 behind (origin d0b9fb1 drops sibling replaces): rebase first; builds only once v0.6.0 is on the remote | +| 21 | sm-golem-plugin | master | 89fd90a | 1 | v0.1.1 | **v0.1.2** | - | +| 22 | sm-feedback-plugin | master | dd78bd2 | 1 | v0.1.1 | **v0.1.2** | - | +| 23 | sm-quizzes-plugin | master | 67a83db | 1 | v0.1.0 | **v0.1.1** | - | -Requirements inside the set (from the manifests): journal and faq need translate; chat, mfa, oauthserver, sociallogin, paymentgateway, forum and userfriends need user; chatvideo needs chat; chatchannels and chatbots need chat and user; paymentgatewaysubscriptions needs paymentgateway and user; pgstripe needs paymentgateway, and its `subscriptions/` plugin needs paymentgatewaysubscriptions. +Rows 21-23 are the SC-1 gap closure (34-02-SUMMARY, "Gap closure: SC-1 remaining repos"); fresh clones, 1 ahead and 0 behind origin/master. Their go.mod replaces point at an application mount (`../../../../summercms.go`, `../user`); next to the framework they build through an untracked, git-excluded `go.work` (framework `../summercms.go`, user `../sm-demo-app/plugins/golem15/user`), so the `GOWORK=off go build` in step 3 does not apply to them: use `go build ./...`. Their manifests need framework commit 87921c2 (in v0.6.0). **sm-presentations-plugin is not in this release:** it has no README.md, so `summer plugin:manifest` cannot derive a name and description and it has no `plugin.yaml`; it keeps its current tag (v0.1.1) until a README is added. + +Requirements inside the set (from the manifests): journal and faq need translate; chat, mfa, oauthserver, sociallogin, paymentgateway, forum and userfriends need user; chatvideo needs chat; chatchannels and chatbots need chat and user; paymentgatewaysubscriptions needs paymentgateway and user; pgstripe needs paymentgateway, and its `subscriptions/` plugin needs paymentgatewaysubscriptions; feedback and quizzes need user; golem needs none. ### summercms.io repositories @@ -111,7 +117,7 @@ The notes reuse the tag message below (`## Highlights` / `## Added` / `## Change ### 3. Plugins, in dependency order -For each repository in the table order (translate, user, chat, faq, menu, seo, sitemap, mfa, oauthserver, sociallogin, paymentgateway, paymentgatewaysubscriptions, pgstripe, journal, chatvideo, forum, herald, userfriends, then chatchannels and chatbots): +For each repository in the table order (translate, user, chat, faq, menu, seo, sitemap, mfa, oauthserver, sociallogin, paymentgateway, paymentgatewaysubscriptions, pgstripe, journal, chatvideo, forum, herald, userfriends, then chatchannels and chatbots, then golem, feedback and quizzes): ```sh cd ../sm--plugin @@ -190,8 +196,14 @@ Pending gitlinks (from 34-02 and 34-03; "tag" is the tagged commit): | sm-summercmsio-app | plugins/golem15/summercms | ca59415 | v0.1.0 (c52e721) | | sm-summercmsio-app | vue-summercmsio-app | b3bfc5d | 8267c55 (pushed master) | | fonoteka.go | plugins/golem15/user | a1b78b8 | v0.1.19 (97f83cc) | +| sm-demo-app | plugins/golem15/golem | 37748ae | v0.1.2 (89fd90a) | +| sm-demo-app | plugins/golem15/feedback | ce4b43e | v0.1.2 (dd78bd2) | +| sm-demo-app | plugins/golem15/quizzes | 362dc02 | v0.1.1 (67a83db) | +| sm-bm-app | plugins/golem15/quizzes | 362dc02 | v0.1.1 (67a83db) | +| fonoteka.go | plugins/golem15/golem | 37748ae | v0.1.2 (89fd90a) | +| fonoteka.go | plugins/golem15/feedback | ce4b43e | v0.1.2 (dd78bd2) | -32 plugin gitlinks plus the vue app link. Every non-chat bump is a fast-forward (checked in 34-02). No application mounts chatvideo, forum, herald or userfriends: those need only their tag. sm-grzybyfunkcjonalne-app (1) and fonoteka.go (39) already carry unpushed commits of their own; sm-summercmsio-app's working tree already shows its two gitlinks modified (left uncommitted by 34-03 and 34-06 on purpose). +38 plugin gitlinks plus the vue app link (the last six rows come from the SC-1 gap closure). Every non-chat bump is a fast-forward (checked in 34-02; the six gap-closure targets sit directly on the commit each app points at today). sm-demo-app and sm-bm-app also mount sm-presentations-plugin, which gets no bump in this release. No application mounts chatvideo, forum, herald or userfriends: those need only their tag. sm-grzybyfunkcjonalne-app (1) and fonoteka.go (39) already carry unpushed commits of their own; sm-summercmsio-app's working tree already shows its two gitlinks modified (left uncommitted by 34-03 and 34-06 on purpose). For sm-summercmsio-app the framework bump is already committed (97c0c08 `chore: require summercms v0.6.0`); `scripts/build.sh dev` regenerates `main.go` and `plugins.gen.go`, which 34-03 restored to the committed versions: commit the regeneration in step 3. @@ -223,7 +235,7 @@ From `../sm-summercmsio-app/DEPLOY.md`, "Plugin marketplace (the release that br https://git.golem15.com/golem15/sm-user-plugin.git ``` - `sudo -u summercms ./bin/summercms-io summercms:registry-add ` then `summercms:registry-ingest` (first ingest, one line per repository). Only tags carrying a `plugin.yaml` are listed, so each repository publishes from its new tag; older tags are noted and skipped. The six repositories tagged for the first time here (chatchannels, chatvideo, forum, herald, userfriends, chatbots) can be added the same way when Jakub wants them listed. + `sudo -u summercms ./bin/summercms-io summercms:registry-add ` then `summercms:registry-ingest` (first ingest, one line per repository). Only tags carrying a `plugin.yaml` are listed, so each repository publishes from its new tag; older tags are noted and skipped. The six repositories tagged for the first time here (chatchannels, chatvideo, forum, herald, userfriends, chatbots) can be added the same way when Jakub wants them listed, and so can the three of the SC-1 gap closure (`https://git.golem15.com/golem15/sm-golem-plugin.git`, `sm-feedback-plugin.git`, `sm-quizzes-plugin.git`), which already had releases. 7. Curl the API: ```sh @@ -321,6 +333,9 @@ Every public plugin now ships a plugin.yaml and requires SummerCMS v0.6.0: - sm-userfriends-plugin v0.1.0 (first release) - sm-chatchannels-plugin v0.1.0 (first release) - sm-chatbots-plugin v0.1.0 (first release) +- sm-golem-plugin v0.1.2 +- sm-feedback-plugin v0.1.2 +- sm-quizzes-plugin v0.1.1 ``` If a rebase or a check changes a plugin's version before tagging, update this list and the table above together.