From 2bef465ecd00fad3cdb44286ff207745d736643d Mon Sep 17 00:00:00 2001 From: Jakub Zych Date: Wed, 28 Oct 2026 18:24:53 +0100 Subject: [PATCH] docs: capture todo - make:plugin drops the vendor namespace --- ...28-make-plugin-ignores-vendor-namespace.md | 33 +++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 .planning/todos/pending/2026-10-28-make-plugin-ignores-vendor-namespace.md diff --git a/.planning/todos/pending/2026-10-28-make-plugin-ignores-vendor-namespace.md b/.planning/todos/pending/2026-10-28-make-plugin-ignores-vendor-namespace.md new file mode 100644 index 00000000..6073618a --- /dev/null +++ b/.planning/todos/pending/2026-10-28-make-plugin-ignores-vendor-namespace.md @@ -0,0 +1,33 @@ +--- +title: make:plugin drops the vendor and scaffolds plugins/ instead of plugins// +date: 2026-10-28 +created: 2026-10-28T17:24:01.309Z +area: summercms.go internal/build +severity: major +g15office: keu1ecio +files: + - internal/build/scaffold.go:70-90 + - internal/build/scaffold.go:195 + - internal/build/artifact.go:454 + - internal/build/leaf.go:26 + - internal/build/new.go:456-462 + - cmd/summer/main.go:95-130 + - docs/console/scaffolding.md:82 + - docs/architecture/go-modules-and-workspaces.md:93 +--- + +## Problem + +`summer make:plugin pixelpixel.servers`, run in another application on 2026-10-28, created `plugins/servers` with module `/plugins/servers`. The expected location was `plugins/pixelpixel/servers`. `makePlugin` in `internal/build/scaffold.go` joins `appDir/plugins/pluginName(id)`, which keeps only the part after the dot. As a result, two vendors' plugins with the same name (`acme.blog`, `pixelpixel.blog`) cannot live in one application. + +The help text (`cmd/summer/main.go`, "Create plugins/blog with the ID acme.blog") and the docs (`docs/console/scaffolding.md`, `docs/architecture/go-modules-and-workspaces.md`) describe this layout as intended. Elsewhere, plugin paths include the vendor: + +- Shared plugins are mounted as submodules at `plugins//` (`.planning/notes/core-plugins-own-repos.md`). +- WinterCMS-style YAML paths have the form `~/plugins///...` (`docs/backend/relation-manager.md`). + +## Solution + +- Scaffold at `plugins//` with module path `/plugins//`. Update the existing-directory hint (`plugin:add plugins//`) and the help examples. +- `summer new`'s `addStarterPlugin` (`internal/build/new.go`) uses the same code; decide whether the starter moves to `plugins/golem15/`. +- The other `make:*` commands find a plugin through the manifest's module first and then fall back to `plugins/` (`internal/build/artifact.go:454`, and `leaf.go:26` for the models-leaf check). Add a `plugins//` fallback and keep the old one, so existing applications keep working (no breaking change). +- Update the docs pages and the tests that pin `plugins/`. Add an upgrading note for applications that already have `plugins/`: moving one is optional, but needs `plugin:add` or a `go.mod`/`go.work` path update.