Files
summercms/.planning/notes/core-plugin-port-inventory.md

4.7 KiB
Raw Blame History

title, date, context
title date context
Golem15 plugin inventory and core plugin port order (Phases 17–19.1) 2026-10-07 /gsd-explore session on porting the remaining core plugins after Journal

Golem15 plugin inventory and port order

A survey of every plugins/golem15/* copy under /media/nvme/dev/golem15 and /media/nvme/dev/jz/wavepath.org on 2026-10-07. "Live" counts top-level projects. LOC is PHP without tests or vendor, measured on the largest copy.

Port status

  • Ported: user, translate, journal, golem, feedback. Apparatus became framework packages (apparatus-dissolved-into-framework.md).
  • Not ported, covered by the framework: websockets. modules/lighthouse and its centrifugo driver already provide the publisher, the token route, the subscribe proxy and per-namespace Authorizers, which are what Wavepath's code calls (BroadcastEventJob, CentrifugoClient, AuthorizerRegistry, ChannelAuthorizerInterface).
  • Not ported: knobwidget and dualformfield/dualformwidget. They are about 150 LOC of form widgets each, and the admin SPA field types replace them.

Shared plugins and how much each is worth porting

Plugin Live projects LOC Decision
paymentgateway + pgstripe 19 installed, 7 real users 18.7k + 1.9k Phase 18
paymentgatewaysubscriptions 5 5.5k Phase 18.1 if it does not fit in 18
sitemap 21 1.9k Phase 17
menu 8 1.0k Phase 17
faq 16 0.5k Phase 17
chat 17 installed, Wavepath is the heaviest user 4.4k Phase 19
chatchannels Wavepath 2.8k Phase 19
chatbots, chatvideo, forum, herald, userfriends Wavepath (userfriends also in PHP fonoteka; fonoteka.go has no port) 0.6k–1.7k each Phase 19.1
oauthserver Wavepath 5.5k With the Wavepath port, on wristband
newsletter horoskopia 2.3k Backlog 999.1
github, quote 16 / 13 3.4k / 0.8k Not scheduled. Quote is cheap because golem and journal are ported
seo, sitemanager 6 4.3k / 0.9k Not scheduled. Phase 16 replaces both with @nuxtjs/seo and app content
blog, bloghub, ai 3–4 7.5k–9.6k Not scheduled. This is the older blog line; journal is its successor

Third-party plugins in many projects: winter/location is in 19, winter/blocks in 13 and winter/pages in 10. Whether paymentgateway shipping or user profiles need winter/location is an open question.

PaymentGateway facts that matter for Phase 18

  • Which projects really use it: sklep.figs (shop), portal.golem15.com (invoicer), getaround.world (tourism with its own StripeConnect operator, quotify, subscriptions), quotify.pro, drzewo.net, horoskopia.eu and queststream.online. In the others it is installed only because the starter ships it.
  • Drivers: Stripe is the only real driver. No PayU, Przelewy24, PayPal or Tpay code exists anywhere.
  • Operator registration: operators extend the abstract core/Operator and push their class onto the config key golem15.paymentgateway.operators from inside the paymentgateway.booted event. In Go this becomes build-time registration through an interface.
  • Webhooks: one CSRF-exempt notification route, _paymentgateway/{operator}/{mode?}/{result?}. pgstripe adds POST /webhook/stripe/subscriptions for the subscriptions plugin.
  • State machines and events:
    • Payment: Created, Sent, Accepted, Rejected, Canceled, Refunded.
    • Order: 12 states and about 18 transitions, 7 of them refund paths.
    • 19 Order events and 5 Payment events drive about 26 mail templates.
    • OrderPaid is the event consumers listen to most.
  • Acceptance consumer: Horoskopia. Its horoscope plugin (37k LOC, 65 routes, Nuxt 4 frontend vue-horoskopia-app) requires PaymentGatewaySubscriptions and PGStripe. It uses Order, OrderFactory, Cart/Item/Details, Settings, Payment, Subscription, SubscriptionPlan and the SubscriptionGateway contract.

Port order decided on 2026-10-07

  1. Phase 17, Blog companions: sitemap, menu and FAQ, plus a framework menu-item type registry.
  2. Phase 18, Payment Gateway: paymentgateway and pgstripe. Subscriptions and Stripe add-ons go into 18.1, 18.2 and so on if the Phase 18 discussion splits them out.
  3. Phase 19, Chat and ChatChannels.
  4. Phase 19.1, Chat satellites: chatbots, chatvideo, forum, herald and userfriends.
  5. Phase 20, Płytarium cutover.
  6. After Phase 20: the Horoskopia port comes first, then the Wavepath port. Neither is planned yet. This stretch is about preparing the shared plugins, not migrating apps, and a stabilization phase may come first. See the seeds for both ports.
  • core-plugins-own-repos.md: each shared plugin gets an sm-<name>-plugin repo
  • ../seeds/keios-port-themes-payments.md: an earlier seed that also covers paymentgateway