From 6cc690b09808da16c055d947d617e22821d1a648 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:05:36 -0500 Subject: [PATCH 01/27] Update all import paths --- cmd/wpcomposer/cmd/admin.go | 2 +- cmd/wpcomposer/cmd/aggregate_installs.go | 2 +- cmd/wpcomposer/cmd/build.go | 2 +- cmd/wpcomposer/cmd/cleanup_sessions.go | 2 +- cmd/wpcomposer/cmd/db.go | 4 ++-- cmd/wpcomposer/cmd/deploy.go | 2 +- cmd/wpcomposer/cmd/dev.go | 16 ++++++++-------- cmd/wpcomposer/cmd/discover.go | 4 ++-- cmd/wpcomposer/cmd/generate_og.go | 2 +- cmd/wpcomposer/cmd/migrate.go | 2 +- cmd/wpcomposer/cmd/pipeline.go | 2 +- cmd/wpcomposer/cmd/root.go | 4 ++-- cmd/wpcomposer/cmd/serve.go | 2 +- cmd/wpcomposer/cmd/update.go | 4 ++-- cmd/wpcomposer/main.go | 4 ++-- internal/app/app.go | 6 +++--- internal/auth/auth_test.go | 2 +- internal/db/migrate_test.go | 2 +- internal/deploy/r2.go | 2 +- internal/http/admin_auth.go | 4 ++-- internal/http/downloads.go | 4 ++-- internal/http/downloads_test.go | 6 +++--- internal/http/handlers.go | 10 +++++----- internal/http/middleware.go | 2 +- internal/http/router.go | 2 +- internal/http/router_test.go | 10 +++++----- internal/http/seo.go | 2 +- internal/http/server.go | 2 +- internal/integration/smoke_test.go | 14 +++++++------- internal/integration/sync_test.go | 10 +++++----- internal/integration/wporg_live_test.go | 16 ++++++++-------- internal/og/upload.go | 2 +- internal/packages/package.go | 2 +- internal/packages/package_test.go | 2 +- internal/repository/builder.go | 2 +- internal/repository/builder_test.go | 2 +- internal/telemetry/aggregate.go | 2 +- internal/telemetry/telemetry_test.go | 2 +- internal/testutil/testdb.go | 10 +++++----- internal/wporg/client.go | 2 +- internal/wporg/client_test.go | 2 +- 41 files changed, 88 insertions(+), 88 deletions(-) diff --git a/cmd/wpcomposer/cmd/admin.go b/cmd/wpcomposer/cmd/admin.go index 885cfdb..ecfd14a 100644 --- a/cmd/wpcomposer/cmd/admin.go +++ b/cmd/wpcomposer/cmd/admin.go @@ -6,7 +6,7 @@ import ( "os" "strings" - "github.com/roots/wp-composer/internal/auth" + "github.com/roots/wp-packages/internal/auth" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/aggregate_installs.go b/cmd/wpcomposer/cmd/aggregate_installs.go index 665b289..e4c0ae5 100644 --- a/cmd/wpcomposer/cmd/aggregate_installs.go +++ b/cmd/wpcomposer/cmd/aggregate_installs.go @@ -1,7 +1,7 @@ package cmd import ( - "github.com/roots/wp-composer/internal/telemetry" + "github.com/roots/wp-packages/internal/telemetry" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/build.go b/cmd/wpcomposer/cmd/build.go index 8289812..717ad14 100644 --- a/cmd/wpcomposer/cmd/build.go +++ b/cmd/wpcomposer/cmd/build.go @@ -5,7 +5,7 @@ import ( "path/filepath" "time" - "github.com/roots/wp-composer/internal/repository" + "github.com/roots/wp-packages/internal/repository" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/cleanup_sessions.go b/cmd/wpcomposer/cmd/cleanup_sessions.go index f9f6d3c..a6d19cd 100644 --- a/cmd/wpcomposer/cmd/cleanup_sessions.go +++ b/cmd/wpcomposer/cmd/cleanup_sessions.go @@ -1,7 +1,7 @@ package cmd import ( - "github.com/roots/wp-composer/internal/auth" + "github.com/roots/wp-packages/internal/auth" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/db.go b/cmd/wpcomposer/cmd/db.go index 9b68033..d29cce1 100644 --- a/cmd/wpcomposer/cmd/db.go +++ b/cmd/wpcomposer/cmd/db.go @@ -5,8 +5,8 @@ import ( "os" "os/exec" - "github.com/roots/wp-composer/internal/config" - "github.com/roots/wp-composer/internal/db" + "github.com/roots/wp-packages/internal/config" + "github.com/roots/wp-packages/internal/db" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/deploy.go b/cmd/wpcomposer/cmd/deploy.go index 606fe38..9aaabc0 100644 --- a/cmd/wpcomposer/cmd/deploy.go +++ b/cmd/wpcomposer/cmd/deploy.go @@ -6,7 +6,7 @@ import ( "strings" "time" - "github.com/roots/wp-composer/internal/deploy" + "github.com/roots/wp-packages/internal/deploy" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/dev.go b/cmd/wpcomposer/cmd/dev.go index 1fe006a..1faf25f 100644 --- a/cmd/wpcomposer/cmd/dev.go +++ b/cmd/wpcomposer/cmd/dev.go @@ -9,14 +9,14 @@ import ( "github.com/spf13/cobra" "golang.org/x/sync/errgroup" - wpcomposergo "github.com/roots/wp-composer" - "github.com/roots/wp-composer/internal/auth" - "github.com/roots/wp-composer/internal/db" - "github.com/roots/wp-composer/internal/deploy" - apphttp "github.com/roots/wp-composer/internal/http" - "github.com/roots/wp-composer/internal/packages" - "github.com/roots/wp-composer/internal/repository" - "github.com/roots/wp-composer/internal/wporg" + wpcomposergo "github.com/roots/wp-packages" + "github.com/roots/wp-packages/internal/auth" + "github.com/roots/wp-packages/internal/db" + "github.com/roots/wp-packages/internal/deploy" + apphttp "github.com/roots/wp-packages/internal/http" + "github.com/roots/wp-packages/internal/packages" + "github.com/roots/wp-packages/internal/repository" + "github.com/roots/wp-packages/internal/wporg" ) var devCmd = &cobra.Command{ diff --git a/cmd/wpcomposer/cmd/discover.go b/cmd/wpcomposer/cmd/discover.go index 3c202f3..f5047d6 100644 --- a/cmd/wpcomposer/cmd/discover.go +++ b/cmd/wpcomposer/cmd/discover.go @@ -9,8 +9,8 @@ import ( "github.com/spf13/cobra" "golang.org/x/sync/errgroup" - "github.com/roots/wp-composer/internal/packages" - "github.com/roots/wp-composer/internal/wporg" + "github.com/roots/wp-packages/internal/packages" + "github.com/roots/wp-packages/internal/wporg" ) var discoverCmd = &cobra.Command{ diff --git a/cmd/wpcomposer/cmd/generate_og.go b/cmd/wpcomposer/cmd/generate_og.go index 38f08c2..8dcd8b7 100644 --- a/cmd/wpcomposer/cmd/generate_og.go +++ b/cmd/wpcomposer/cmd/generate_og.go @@ -1,7 +1,7 @@ package cmd import ( - "github.com/roots/wp-composer/internal/og" + "github.com/roots/wp-packages/internal/og" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/migrate.go b/cmd/wpcomposer/cmd/migrate.go index 1c057a6..5d51436 100644 --- a/cmd/wpcomposer/cmd/migrate.go +++ b/cmd/wpcomposer/cmd/migrate.go @@ -3,7 +3,7 @@ package cmd import ( "embed" - "github.com/roots/wp-composer/internal/db" + "github.com/roots/wp-packages/internal/db" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/pipeline.go b/cmd/wpcomposer/cmd/pipeline.go index 80b95a8..7ac5d2a 100644 --- a/cmd/wpcomposer/cmd/pipeline.go +++ b/cmd/wpcomposer/cmd/pipeline.go @@ -10,7 +10,7 @@ import ( "syscall" "time" - "github.com/roots/wp-composer/internal/deploy" + "github.com/roots/wp-packages/internal/deploy" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/root.go b/cmd/wpcomposer/cmd/root.go index 0620034..8cf7ef1 100644 --- a/cmd/wpcomposer/cmd/root.go +++ b/cmd/wpcomposer/cmd/root.go @@ -3,8 +3,8 @@ package cmd import ( "fmt" - "github.com/roots/wp-composer/internal/app" - "github.com/roots/wp-composer/internal/config" + "github.com/roots/wp-packages/internal/app" + "github.com/roots/wp-packages/internal/config" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/serve.go b/cmd/wpcomposer/cmd/serve.go index 0a303d4..e353c7a 100644 --- a/cmd/wpcomposer/cmd/serve.go +++ b/cmd/wpcomposer/cmd/serve.go @@ -1,7 +1,7 @@ package cmd import ( - apphttp "github.com/roots/wp-composer/internal/http" + apphttp "github.com/roots/wp-packages/internal/http" "github.com/spf13/cobra" ) diff --git a/cmd/wpcomposer/cmd/update.go b/cmd/wpcomposer/cmd/update.go index 0e9e228..8974dc8 100644 --- a/cmd/wpcomposer/cmd/update.go +++ b/cmd/wpcomposer/cmd/update.go @@ -9,8 +9,8 @@ import ( "github.com/spf13/cobra" "golang.org/x/sync/errgroup" - "github.com/roots/wp-composer/internal/packages" - "github.com/roots/wp-composer/internal/wporg" + "github.com/roots/wp-packages/internal/packages" + "github.com/roots/wp-packages/internal/wporg" ) var updateCmd = &cobra.Command{ diff --git a/cmd/wpcomposer/main.go b/cmd/wpcomposer/main.go index 51a71bc..d6fff56 100644 --- a/cmd/wpcomposer/main.go +++ b/cmd/wpcomposer/main.go @@ -4,8 +4,8 @@ import ( "fmt" "os" - wpcomposergo "github.com/roots/wp-composer" - "github.com/roots/wp-composer/cmd/wpcomposer/cmd" + wpcomposergo "github.com/roots/wp-packages" + "github.com/roots/wp-packages/cmd/wpcomposer/cmd" ) func main() { diff --git a/internal/app/app.go b/internal/app/app.go index 6e044f9..7808b8f 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -9,9 +9,9 @@ import ( "time" "github.com/getsentry/sentry-go" - "github.com/roots/wp-composer/internal/config" - "github.com/roots/wp-composer/internal/db" - "github.com/roots/wp-composer/internal/packagist" + "github.com/roots/wp-packages/internal/config" + "github.com/roots/wp-packages/internal/db" + "github.com/roots/wp-packages/internal/packagist" ) type App struct { diff --git a/internal/auth/auth_test.go b/internal/auth/auth_test.go index 804667c..2aff3ab 100644 --- a/internal/auth/auth_test.go +++ b/internal/auth/auth_test.go @@ -5,7 +5,7 @@ import ( "database/sql" "testing" - "github.com/roots/wp-composer/internal/db" + "github.com/roots/wp-packages/internal/db" ) func setupTestDB(t *testing.T) *sql.DB { diff --git a/internal/db/migrate_test.go b/internal/db/migrate_test.go index 2da39e9..0625363 100644 --- a/internal/db/migrate_test.go +++ b/internal/db/migrate_test.go @@ -4,7 +4,7 @@ import ( "database/sql" "testing" - wpcomposergo "github.com/roots/wp-composer" + wpcomposergo "github.com/roots/wp-packages" ) func TestMigrateCreatesPackageStatsAndFTS(t *testing.T) { diff --git a/internal/deploy/r2.go b/internal/deploy/r2.go index 795cba7..0119a3c 100644 --- a/internal/deploy/r2.go +++ b/internal/deploy/r2.go @@ -17,7 +17,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/credentials" "github.com/aws/aws-sdk-go-v2/service/s3" - "github.com/roots/wp-composer/internal/config" + "github.com/roots/wp-packages/internal/config" ) const ( diff --git a/internal/http/admin_auth.go b/internal/http/admin_auth.go index 4a6aa6b..37fb1a9 100644 --- a/internal/http/admin_auth.go +++ b/internal/http/admin_auth.go @@ -5,8 +5,8 @@ import ( "net/http" "time" - "github.com/roots/wp-composer/internal/app" - "github.com/roots/wp-composer/internal/auth" + "github.com/roots/wp-packages/internal/app" + "github.com/roots/wp-packages/internal/auth" ) func handleLoginPage(a *app.App) http.HandlerFunc { diff --git a/internal/http/downloads.go b/internal/http/downloads.go index f5d2603..c036488 100644 --- a/internal/http/downloads.go +++ b/internal/http/downloads.go @@ -5,8 +5,8 @@ import ( "net" "net/http" - "github.com/roots/wp-composer/internal/app" - "github.com/roots/wp-composer/internal/telemetry" + "github.com/roots/wp-packages/internal/app" + "github.com/roots/wp-packages/internal/telemetry" ) type notifyBatchRequest struct { diff --git a/internal/http/downloads_test.go b/internal/http/downloads_test.go index 57665f1..de15c50 100644 --- a/internal/http/downloads_test.go +++ b/internal/http/downloads_test.go @@ -8,9 +8,9 @@ import ( "strings" "testing" - "github.com/roots/wp-composer/internal/app" - "github.com/roots/wp-composer/internal/config" - "github.com/roots/wp-composer/internal/db" + "github.com/roots/wp-packages/internal/app" + "github.com/roots/wp-packages/internal/config" + "github.com/roots/wp-packages/internal/db" ) func setupTestApp(t *testing.T) *app.App { diff --git a/internal/http/handlers.go b/internal/http/handlers.go index 3ad0376..ba9132c 100644 --- a/internal/http/handlers.go +++ b/internal/http/handlers.go @@ -20,11 +20,11 @@ import ( "time" "github.com/getsentry/sentry-go" - "github.com/roots/wp-composer/internal/app" - "github.com/roots/wp-composer/internal/config" - "github.com/roots/wp-composer/internal/deploy" - "github.com/roots/wp-composer/internal/og" - "github.com/roots/wp-composer/internal/version" + "github.com/roots/wp-packages/internal/app" + "github.com/roots/wp-packages/internal/config" + "github.com/roots/wp-packages/internal/deploy" + "github.com/roots/wp-packages/internal/og" + "github.com/roots/wp-packages/internal/version" ) const perPage = 12 diff --git a/internal/http/middleware.go b/internal/http/middleware.go index 17cd154..2f5d1ff 100644 --- a/internal/http/middleware.go +++ b/internal/http/middleware.go @@ -5,7 +5,7 @@ import ( "database/sql" "net/http" - "github.com/roots/wp-composer/internal/auth" + "github.com/roots/wp-packages/internal/auth" ) type contextKey string diff --git a/internal/http/router.go b/internal/http/router.go index c5b5758..5145f9c 100644 --- a/internal/http/router.go +++ b/internal/http/router.go @@ -14,7 +14,7 @@ import ( "time" sentryhttp "github.com/getsentry/sentry-go/http" - "github.com/roots/wp-composer/internal/app" + "github.com/roots/wp-packages/internal/app" ) // cacheControl wraps an http.Handler and sets the Cache-Control header. diff --git a/internal/http/router_test.go b/internal/http/router_test.go index b368eb8..b159da2 100644 --- a/internal/http/router_test.go +++ b/internal/http/router_test.go @@ -9,11 +9,11 @@ import ( "testing" "time" - "github.com/roots/wp-composer/internal/app" - "github.com/roots/wp-composer/internal/auth" - "github.com/roots/wp-composer/internal/config" - "github.com/roots/wp-composer/internal/db" - "github.com/roots/wp-composer/internal/packagist" + "github.com/roots/wp-packages/internal/app" + "github.com/roots/wp-packages/internal/auth" + "github.com/roots/wp-packages/internal/config" + "github.com/roots/wp-packages/internal/db" + "github.com/roots/wp-packages/internal/packagist" ) func newTestApp(t *testing.T) *app.App { diff --git a/internal/http/seo.go b/internal/http/seo.go index 09c9401..7bd1eed 100644 --- a/internal/http/seo.go +++ b/internal/http/seo.go @@ -11,7 +11,7 @@ import ( "sync" "time" - "github.com/roots/wp-composer/internal/app" + "github.com/roots/wp-packages/internal/app" ) // RSS feed diff --git a/internal/http/server.go b/internal/http/server.go index 919c243..4e09802 100644 --- a/internal/http/server.go +++ b/internal/http/server.go @@ -11,7 +11,7 @@ import ( "time" "github.com/getsentry/sentry-go" - "github.com/roots/wp-composer/internal/app" + "github.com/roots/wp-packages/internal/app" ) func ListenAndServe(a *app.App) error { diff --git a/internal/integration/smoke_test.go b/internal/integration/smoke_test.go index 9600a37..322ebba 100644 --- a/internal/integration/smoke_test.go +++ b/internal/integration/smoke_test.go @@ -13,13 +13,13 @@ import ( "strings" "testing" - "github.com/roots/wp-composer/internal/app" - "github.com/roots/wp-composer/internal/config" - apphttp "github.com/roots/wp-composer/internal/http" - "github.com/roots/wp-composer/internal/packagist" - "github.com/roots/wp-composer/internal/repository" - "github.com/roots/wp-composer/internal/testutil" - "github.com/roots/wp-composer/internal/wporg" + "github.com/roots/wp-packages/internal/app" + "github.com/roots/wp-packages/internal/config" + apphttp "github.com/roots/wp-packages/internal/http" + "github.com/roots/wp-packages/internal/packagist" + "github.com/roots/wp-packages/internal/repository" + "github.com/roots/wp-packages/internal/testutil" + "github.com/roots/wp-packages/internal/wporg" ) func TestSmoke(t *testing.T) { diff --git a/internal/integration/sync_test.go b/internal/integration/sync_test.go index 4b2bbe0..10dea36 100644 --- a/internal/integration/sync_test.go +++ b/internal/integration/sync_test.go @@ -15,11 +15,11 @@ import ( "github.com/aws/aws-sdk-go-v2/service/s3" "github.com/johannesboyne/gofakes3" "github.com/johannesboyne/gofakes3/backend/s3mem" - "github.com/roots/wp-composer/internal/config" - "github.com/roots/wp-composer/internal/deploy" - "github.com/roots/wp-composer/internal/repository" - "github.com/roots/wp-composer/internal/testutil" - "github.com/roots/wp-composer/internal/wporg" + "github.com/roots/wp-packages/internal/config" + "github.com/roots/wp-packages/internal/deploy" + "github.com/roots/wp-packages/internal/repository" + "github.com/roots/wp-packages/internal/testutil" + "github.com/roots/wp-packages/internal/wporg" ) func TestR2Sync(t *testing.T) { diff --git a/internal/integration/wporg_live_test.go b/internal/integration/wporg_live_test.go index 1eb6601..c5cd24d 100644 --- a/internal/integration/wporg_live_test.go +++ b/internal/integration/wporg_live_test.go @@ -13,14 +13,14 @@ import ( "strings" "testing" - "github.com/roots/wp-composer/internal/app" - "github.com/roots/wp-composer/internal/config" - apphttp "github.com/roots/wp-composer/internal/http" - "github.com/roots/wp-composer/internal/packages" - "github.com/roots/wp-composer/internal/packagist" - "github.com/roots/wp-composer/internal/repository" - "github.com/roots/wp-composer/internal/testutil" - "github.com/roots/wp-composer/internal/wporg" + "github.com/roots/wp-packages/internal/app" + "github.com/roots/wp-packages/internal/config" + apphttp "github.com/roots/wp-packages/internal/http" + "github.com/roots/wp-packages/internal/packages" + "github.com/roots/wp-packages/internal/packagist" + "github.com/roots/wp-packages/internal/repository" + "github.com/roots/wp-packages/internal/testutil" + "github.com/roots/wp-packages/internal/wporg" ) // TestWpOrgLive tests the full pipeline against the real WordPress.org API. diff --git a/internal/og/upload.go b/internal/og/upload.go index 8f7c6d8..c0d98e8 100644 --- a/internal/og/upload.go +++ b/internal/og/upload.go @@ -10,7 +10,7 @@ import ( "github.com/aws/aws-sdk-go-v2/aws" "github.com/aws/aws-sdk-go-v2/credentials" "github.com/aws/aws-sdk-go-v2/service/s3" - "github.com/roots/wp-composer/internal/config" + "github.com/roots/wp-packages/internal/config" ) // Uploader handles uploading OG images to R2 CDN or local disk. diff --git a/internal/packages/package.go b/internal/packages/package.go index 2662772..8488160 100644 --- a/internal/packages/package.go +++ b/internal/packages/package.go @@ -8,7 +8,7 @@ import ( "strings" "time" - "github.com/roots/wp-composer/internal/version" + "github.com/roots/wp-packages/internal/version" ) type Package struct { diff --git a/internal/packages/package_test.go b/internal/packages/package_test.go index 198809c..e088d0b 100644 --- a/internal/packages/package_test.go +++ b/internal/packages/package_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - "github.com/roots/wp-composer/internal/db" + "github.com/roots/wp-packages/internal/db" ) func setupTestDB(t *testing.T) *sql.DB { diff --git a/internal/repository/builder.go b/internal/repository/builder.go index a61393f..9446e7d 100644 --- a/internal/repository/builder.go +++ b/internal/repository/builder.go @@ -11,7 +11,7 @@ import ( "strings" "time" - "github.com/roots/wp-composer/internal/version" + "github.com/roots/wp-packages/internal/version" ) // BuildOpts configures a repository build. diff --git a/internal/repository/builder_test.go b/internal/repository/builder_test.go index d210cb4..7a3eb92 100644 --- a/internal/repository/builder_test.go +++ b/internal/repository/builder_test.go @@ -10,7 +10,7 @@ import ( "path/filepath" "testing" - "github.com/roots/wp-composer/internal/db" + "github.com/roots/wp-packages/internal/db" ) func setupTestDB(t *testing.T) *sql.DB { diff --git a/internal/telemetry/aggregate.go b/internal/telemetry/aggregate.go index 78609a8..ee9729e 100644 --- a/internal/telemetry/aggregate.go +++ b/internal/telemetry/aggregate.go @@ -6,7 +6,7 @@ import ( "fmt" "time" - "github.com/roots/wp-composer/internal/packages" + "github.com/roots/wp-packages/internal/packages" ) // AggregateInstalls recomputes wp_composer_installs_total, wp_composer_installs_30d, diff --git a/internal/telemetry/telemetry_test.go b/internal/telemetry/telemetry_test.go index 6b95bf5..7d18ade 100644 --- a/internal/telemetry/telemetry_test.go +++ b/internal/telemetry/telemetry_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - "github.com/roots/wp-composer/internal/db" + "github.com/roots/wp-packages/internal/db" ) func setupTestDB(t *testing.T) *sql.DB { diff --git a/internal/testutil/testdb.go b/internal/testutil/testdb.go index 815c9f2..dc97e5c 100644 --- a/internal/testutil/testdb.go +++ b/internal/testutil/testdb.go @@ -7,11 +7,11 @@ import ( "testing" "time" - wpcomposergo "github.com/roots/wp-composer" - "github.com/roots/wp-composer/internal/config" - "github.com/roots/wp-composer/internal/db" - "github.com/roots/wp-composer/internal/packages" - "github.com/roots/wp-composer/internal/wporg" + wpcomposergo "github.com/roots/wp-packages" + "github.com/roots/wp-packages/internal/config" + "github.com/roots/wp-packages/internal/db" + "github.com/roots/wp-packages/internal/packages" + "github.com/roots/wp-packages/internal/wporg" ) // OpenTestDB opens an in-memory SQLite database and runs all migrations. diff --git a/internal/wporg/client.go b/internal/wporg/client.go index 772f62b..8e8e529 100644 --- a/internal/wporg/client.go +++ b/internal/wporg/client.go @@ -14,7 +14,7 @@ import ( "errors" - "github.com/roots/wp-composer/internal/config" + "github.com/roots/wp-packages/internal/config" ) // ErrNotFound is returned when a package does not exist on WordPress.org. diff --git a/internal/wporg/client_test.go b/internal/wporg/client_test.go index 535b887..b280062 100644 --- a/internal/wporg/client_test.go +++ b/internal/wporg/client_test.go @@ -9,7 +9,7 @@ import ( "sync/atomic" "testing" - "github.com/roots/wp-composer/internal/config" + "github.com/roots/wp-packages/internal/config" ) func testClient(handler http.Handler) (*Client, *httptest.Server) { From 52807a021e68e64fe3b5b09192577ec92f291055 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:06:31 -0500 Subject: [PATCH 02/27] =?UTF-8?q?Rename=20directory=20cmd/wpcomposer/=20?= =?UTF-8?q?=E2=86=92=20cmd/wppackages/?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/{wpcomposer => wppackages}/cmd/admin.go | 0 cmd/{wpcomposer => wppackages}/cmd/aggregate_installs.go | 0 cmd/{wpcomposer => wppackages}/cmd/build.go | 0 cmd/{wpcomposer => wppackages}/cmd/cleanup_sessions.go | 0 cmd/{wpcomposer => wppackages}/cmd/db.go | 0 cmd/{wpcomposer => wppackages}/cmd/deploy.go | 0 cmd/{wpcomposer => wppackages}/cmd/dev.go | 0 cmd/{wpcomposer => wppackages}/cmd/discover.go | 0 cmd/{wpcomposer => wppackages}/cmd/generate_og.go | 0 cmd/{wpcomposer => wppackages}/cmd/migrate.go | 0 cmd/{wpcomposer => wppackages}/cmd/pipeline.go | 0 cmd/{wpcomposer => wppackages}/cmd/pipeline_lock_test.go | 0 cmd/{wpcomposer => wppackages}/cmd/root.go | 0 cmd/{wpcomposer => wppackages}/cmd/serve.go | 0 cmd/{wpcomposer => wppackages}/cmd/update.go | 0 cmd/{wpcomposer => wppackages}/main.go | 0 16 files changed, 0 insertions(+), 0 deletions(-) rename cmd/{wpcomposer => wppackages}/cmd/admin.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/aggregate_installs.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/build.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/cleanup_sessions.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/db.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/deploy.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/dev.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/discover.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/generate_og.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/migrate.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/pipeline.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/pipeline_lock_test.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/root.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/serve.go (100%) rename cmd/{wpcomposer => wppackages}/cmd/update.go (100%) rename cmd/{wpcomposer => wppackages}/main.go (100%) diff --git a/cmd/wpcomposer/cmd/admin.go b/cmd/wppackages/cmd/admin.go similarity index 100% rename from cmd/wpcomposer/cmd/admin.go rename to cmd/wppackages/cmd/admin.go diff --git a/cmd/wpcomposer/cmd/aggregate_installs.go b/cmd/wppackages/cmd/aggregate_installs.go similarity index 100% rename from cmd/wpcomposer/cmd/aggregate_installs.go rename to cmd/wppackages/cmd/aggregate_installs.go diff --git a/cmd/wpcomposer/cmd/build.go b/cmd/wppackages/cmd/build.go similarity index 100% rename from cmd/wpcomposer/cmd/build.go rename to cmd/wppackages/cmd/build.go diff --git a/cmd/wpcomposer/cmd/cleanup_sessions.go b/cmd/wppackages/cmd/cleanup_sessions.go similarity index 100% rename from cmd/wpcomposer/cmd/cleanup_sessions.go rename to cmd/wppackages/cmd/cleanup_sessions.go diff --git a/cmd/wpcomposer/cmd/db.go b/cmd/wppackages/cmd/db.go similarity index 100% rename from cmd/wpcomposer/cmd/db.go rename to cmd/wppackages/cmd/db.go diff --git a/cmd/wpcomposer/cmd/deploy.go b/cmd/wppackages/cmd/deploy.go similarity index 100% rename from cmd/wpcomposer/cmd/deploy.go rename to cmd/wppackages/cmd/deploy.go diff --git a/cmd/wpcomposer/cmd/dev.go b/cmd/wppackages/cmd/dev.go similarity index 100% rename from cmd/wpcomposer/cmd/dev.go rename to cmd/wppackages/cmd/dev.go diff --git a/cmd/wpcomposer/cmd/discover.go b/cmd/wppackages/cmd/discover.go similarity index 100% rename from cmd/wpcomposer/cmd/discover.go rename to cmd/wppackages/cmd/discover.go diff --git a/cmd/wpcomposer/cmd/generate_og.go b/cmd/wppackages/cmd/generate_og.go similarity index 100% rename from cmd/wpcomposer/cmd/generate_og.go rename to cmd/wppackages/cmd/generate_og.go diff --git a/cmd/wpcomposer/cmd/migrate.go b/cmd/wppackages/cmd/migrate.go similarity index 100% rename from cmd/wpcomposer/cmd/migrate.go rename to cmd/wppackages/cmd/migrate.go diff --git a/cmd/wpcomposer/cmd/pipeline.go b/cmd/wppackages/cmd/pipeline.go similarity index 100% rename from cmd/wpcomposer/cmd/pipeline.go rename to cmd/wppackages/cmd/pipeline.go diff --git a/cmd/wpcomposer/cmd/pipeline_lock_test.go b/cmd/wppackages/cmd/pipeline_lock_test.go similarity index 100% rename from cmd/wpcomposer/cmd/pipeline_lock_test.go rename to cmd/wppackages/cmd/pipeline_lock_test.go diff --git a/cmd/wpcomposer/cmd/root.go b/cmd/wppackages/cmd/root.go similarity index 100% rename from cmd/wpcomposer/cmd/root.go rename to cmd/wppackages/cmd/root.go diff --git a/cmd/wpcomposer/cmd/serve.go b/cmd/wppackages/cmd/serve.go similarity index 100% rename from cmd/wpcomposer/cmd/serve.go rename to cmd/wppackages/cmd/serve.go diff --git a/cmd/wpcomposer/cmd/update.go b/cmd/wppackages/cmd/update.go similarity index 100% rename from cmd/wpcomposer/cmd/update.go rename to cmd/wppackages/cmd/update.go diff --git a/cmd/wpcomposer/main.go b/cmd/wppackages/main.go similarity index 100% rename from cmd/wpcomposer/main.go rename to cmd/wppackages/main.go From b049e3391d878961eb18e6a2a46d9ee60d183778 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:07:18 -0500 Subject: [PATCH 03/27] =?UTF-8?q?Rename=20import=20alias=20wpcomposergo=20?= =?UTF-8?q?=E2=86=92=20wppackagesgo=20in=20main.go=20and=20migrate=5Ftest.?= =?UTF-8?q?go?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- cmd/wppackages/main.go | 4 ++-- internal/db/migrate_test.go | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/cmd/wppackages/main.go b/cmd/wppackages/main.go index d6fff56..3e87f74 100644 --- a/cmd/wppackages/main.go +++ b/cmd/wppackages/main.go @@ -4,12 +4,12 @@ import ( "fmt" "os" - wpcomposergo "github.com/roots/wp-packages" + wppackagesgo "github.com/roots/wp-packages" "github.com/roots/wp-packages/cmd/wpcomposer/cmd" ) func main() { - cmd.Migrations = wpcomposergo.Migrations + cmd.Migrations = wppackagesgo.Migrations if err := cmd.Execute(); err != nil { fmt.Fprintf(os.Stderr, "%v\n", err) os.Exit(1) diff --git a/internal/db/migrate_test.go b/internal/db/migrate_test.go index 0625363..9860fdd 100644 --- a/internal/db/migrate_test.go +++ b/internal/db/migrate_test.go @@ -4,7 +4,7 @@ import ( "database/sql" "testing" - wpcomposergo "github.com/roots/wp-packages" + wppackagesgo "github.com/roots/wp-packages" ) func TestMigrateCreatesPackageStatsAndFTS(t *testing.T) { @@ -15,7 +15,7 @@ func TestMigrateCreatesPackageStatsAndFTS(t *testing.T) { } t.Cleanup(func() { _ = database.Close() }) - if err := Migrate(database, wpcomposergo.Migrations); err != nil { + if err := Migrate(database, wppackagesgo.Migrations); err != nil { t.Fatalf("running migrations: %v", err) } From 1aaffda3435c82a787f3f74c8ca6e99dd499ca99 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:08:39 -0500 Subject: [PATCH 04/27] =?UTF-8?q?Makefile=20=E2=80=94=20binary=20name=20wp?= =?UTF-8?q?composer=20=E2=86=92=20wppackages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Makefile | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 3e77e43..d8f8813 100644 --- a/Makefile +++ b/Makefile @@ -26,11 +26,11 @@ tailwind: tailwind-install # Build the binary build: tailwind - go build -o wpcomposer ./cmd/wpcomposer + go build -o wppackages ./cmd/wppackages # Install to $GOPATH/bin install: - go install ./cmd/wpcomposer + go install ./cmd/wppackages # Live-reload dev server (migrations, seed data, serve) dev: tailwind-install @@ -55,14 +55,14 @@ lint: db-restore: @eval $$(ansible-vault view --vault-password-file deploy/ansible/.vault_pass $(VAULT_FILE) | yq -r \ '"export LITESTREAM_BUCKET=\(.vault_r2_litestream_bucket) R2_ENDPOINT=\(.vault_r2_endpoint) R2_ACCESS_KEY_ID=\(.vault_r2_access_key_id) R2_SECRET_ACCESS_KEY=\(.vault_r2_secret_access_key)"') && \ - export DB_PATH=./storage/wpcomposer.db && \ + export DB_PATH=./storage/wppackages.db && \ echo "LITESTREAM_BUCKET=$$LITESTREAM_BUCKET" && \ echo "R2_ENDPOINT=$$R2_ENDPOINT" && \ echo "R2_ACCESS_KEY_ID=$$R2_ACCESS_KEY_ID" && \ echo "R2_SECRET_ACCESS_KEY=$$R2_SECRET_ACCESS_KEY" && \ - go run ./cmd/wpcomposer db restore --force + go run ./cmd/wppackages db restore --force # Remove build artifacts clean: - rm -f wpcomposer + rm -f wppackages rm -rf storage/ From 7ba0d250b19b6a86996d96505c47c08ed5bf8693 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:09:08 -0500 Subject: [PATCH 05/27] Update Air path --- .air.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.air.toml b/.air.toml index 27e9aae..00dd14b 100644 --- a/.air.toml +++ b/.air.toml @@ -1,6 +1,6 @@ [build] cmd = "make build" - full_bin = "ADMIN_ALLOW_CIDR= ./wpcomposer dev --addr :8080" + full_bin = "ADMIN_ALLOW_CIDR= ./wppackages dev --addr :8080" exclude_dir = ["storage", "bin", "test", "docs", ".git"] include_ext = ["go", "html", "css", "tmpl"] kill_delay = "1s" From 2360389d64381a5221489d160842244f72c2a2e9 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:09:56 -0500 Subject: [PATCH 06/27] =?UTF-8?q?Global=20replace=20repo.wp-composer.com?= =?UTF-8?q?=20=E2=86=92=20repo.wp-packages.org?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 4 ++-- benchmarks/freshness.sh | 2 +- benchmarks/metadata.sh | 2 +- benchmarks/resolve.sh | 2 +- docs/r2-deployment.md | 6 +++--- internal/http/templates/compare.html | 2 +- internal/http/templates/index.html | 8 ++++---- internal/http/templates/roots_wordpress.html | 2 +- scripts/migrate-from-wpackagist.sh | 4 ++-- 9 files changed, 16 insertions(+), 16 deletions(-) diff --git a/README.md b/README.md index 9ab9865..c623b7c 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ Add the repository to your `composer.json`: { "name": "wp-composer", "type": "composer", - "url": "https://repo.wp-composer.com", + "url": "https://repo.wp-packages.org", "only": ["wp-plugin/*", "wp-theme/*"] } ], @@ -80,7 +80,7 @@ A typical [Bedrock](https://roots.io/bedrock/) project uses `roots/wordpress` fo { "name": "wp-composer", "type": "composer", - "url": "https://repo.wp-composer.com", + "url": "https://repo.wp-packages.org", "only": ["wp-plugin/*", "wp-theme/*"] } ], diff --git a/benchmarks/freshness.sh b/benchmarks/freshness.sh index 9b2a4f3..0ac7c20 100755 --- a/benchmarks/freshness.sh +++ b/benchmarks/freshness.sh @@ -16,7 +16,7 @@ SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" RESULTS_DIR="${SCRIPT_DIR}/results" mkdir -p "$RESULTS_DIR" -WPC_BASE="https://repo.wp-composer.com" +WPC_BASE="https://repo.wp-packages.org" WPKG_BASE="https://wpackagist.org" PLUGIN_COUNT=20 diff --git a/benchmarks/metadata.sh b/benchmarks/metadata.sh index b9b503d..44ea951 100755 --- a/benchmarks/metadata.sh +++ b/benchmarks/metadata.sh @@ -14,7 +14,7 @@ RESULTS_DIR="${SCRIPT_DIR}/results" mkdir -p "$RESULTS_DIR" RUNS=5 -WPC_BASE="https://repo.wp-composer.com" +WPC_BASE="https://repo.wp-packages.org" WPKG_BASE="https://wpackagist.org" while [[ $# -gt 0 ]]; do diff --git a/benchmarks/resolve.sh b/benchmarks/resolve.sh index 479f58e..0ccd811 100755 --- a/benchmarks/resolve.sh +++ b/benchmarks/resolve.sh @@ -15,7 +15,7 @@ mkdir -p "$RESULTS_DIR" RUNS=5 SIZE="all" -WPC_URL="https://repo.wp-composer.com" +WPC_URL="https://repo.wp-packages.org" WPKG_URL="https://wpackagist.org" while [[ $# -gt 0 ]]; do diff --git a/docs/r2-deployment.md b/docs/r2-deployment.md index c985506..8d00414 100644 --- a/docs/r2-deployment.md +++ b/docs/r2-deployment.md @@ -37,7 +37,7 @@ Save the **Access Key ID** and **Secret Access Key**. ### Connect a custom domain (recommended) -**R2 > your bucket > Settings > Custom Domains > Connect Domain**. This gives you a URL like `https://repo.wp-composer.com` backed by Cloudflare's CDN. +**R2 > your bucket > Settings > Custom Domains > Connect Domain**. This gives you a URL like `https://repo.wp-packages.org` backed by Cloudflare's CDN. Without a custom domain, R2 provides a `.r2.dev` URL, but it has rate limits and no caching. @@ -149,8 +149,8 @@ After deploy, verify the bucket: ```bash # Check root packages.json has metadata-url -curl -s https://repo.wp-composer.com/packages.json | jq '.["metadata-url"]' +curl -s https://repo.wp-packages.org/packages.json | jq '.["metadata-url"]' # Check a specific package -curl -s https://repo.wp-composer.com/p2/wp-plugin/akismet.json | head -c 200 +curl -s https://repo.wp-packages.org/p2/wp-plugin/akismet.json | head -c 200 ``` diff --git a/internal/http/templates/compare.html b/internal/http/templates/compare.html index 53a638c..a8fbfc0 100644 --- a/internal/http/templates/compare.html +++ b/internal/http/templates/compare.html @@ -194,7 +194,7 @@

Migrating from WPackagist

2

Remove the wpackagist repository and add WP Composer:

-
composer config --unset repositories.wpackagist && composer config repositories.wp-composer composer https://repo.wp-composer.com
+
composer config --unset repositories.wpackagist && composer config repositories.wp-composer composer https://repo.wp-packages.org
diff --git a/internal/http/templates/index.html b/internal/http/templates/index.html index 724ed61..bc068b2 100644 --- a/internal/http/templates/index.html +++ b/internal/http/templates/index.html @@ -23,9 +23,9 @@

WordPress Packages
for Composer

A modern, community-funded Composer repository for WordPress plugins and themes.

-
+
$ -composer config repositories.wp-composer composer https://repo.wp-composer.com +composer config repositories.wp-composer composer https://repo.wp-packages.org @@ -108,7 +108,7 @@

Usage

{ "name": "wp-composer", "type": "composer", - "url": "https://repo.wp-composer.com", + "url": "https://repo.wp-packages.org", "only": ["wp-plugin/*", "wp-theme/*"] } ], @@ -155,7 +155,7 @@

Migrating from WPackagist

2

Remove the wpackagist repository and add WP Composer:

-
composer config --unset repositories.wpackagist && composer config repositories.wp-composer composer https://repo.wp-composer.com
+
composer config --unset repositories.wpackagist && composer config repositories.wp-composer composer https://repo.wp-packages.org
diff --git a/internal/http/templates/roots_wordpress.html b/internal/http/templates/roots_wordpress.html index ed888fc..df34bf1 100644 --- a/internal/http/templates/roots_wordpress.html +++ b/internal/http/templates/roots_wordpress.html @@ -86,7 +86,7 @@

Standard (recommended)

{ "name": "wp-composer", "type": "composer", - "url": "https://repo.wp-composer.com", + "url": "https://repo.wp-packages.org", "only": ["wp-plugin/*", "wp-theme/*"] } ], diff --git a/scripts/migrate-from-wpackagist.sh b/scripts/migrate-from-wpackagist.sh index de92789..83283d5 100755 --- a/scripts/migrate-from-wpackagist.sh +++ b/scripts/migrate-from-wpackagist.sh @@ -88,7 +88,7 @@ jq --indent "$INDENT" ' { "name": "wp-composer", "type": "composer", - "url": "https://repo.wp-composer.com", + "url": "https://repo.wp-packages.org", "only": ["wp-plugin/*", "wp-theme/*"] }; @@ -179,7 +179,7 @@ if $DRY_RUN; then echo " - $url (removed)" done <<< "$REMOVED_REPOS" fi - echo " + https://repo.wp-composer.com (wp-composer added)" + echo " + https://repo.wp-packages.org (wp-composer added)" echo "" echo "Dry run complete. Run without --dry-run to apply these changes." From b0a0369cd403cca3f37ba4c04a8a2f061f6e6413 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:10:42 -0500 Subject: [PATCH 07/27] =?UTF-8?q?Global=20replace=20cdn.wp-composer.com=20?= =?UTF-8?q?=E2=86=92=20cdn.wp-packages.org?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/ansible/group_vars/production/main.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/deploy/ansible/group_vars/production/main.yml b/deploy/ansible/group_vars/production/main.yml index 5f51948..a935770 100644 --- a/deploy/ansible/group_vars/production/main.yml +++ b/deploy/ansible/group_vars/production/main.yml @@ -27,7 +27,7 @@ caddy_email: "team@roots.io" # R2 wp_composer_deploy_r2: "true" -r2_cdn_public_url: "https://cdn.wp-composer.com" +r2_cdn_public_url: "https://cdn.wp-packages.org" # Litestream litestream_version: "0.5.10" From 834c39928939e40db570742c3458a509d2b3e050 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:11:49 -0500 Subject: [PATCH 08/27] =?UTF-8?q?Global=20replace=20wp-composer.com=20?= =?UTF-8?q?=E2=86=92=20wp-packages.org=20(remaining)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- deploy/ansible/group_vars/production/main.yml | 2 +- scripts/migrate-from-wpackagist.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/deploy/ansible/group_vars/production/main.yml b/deploy/ansible/group_vars/production/main.yml index a935770..88c960c 100644 --- a/deploy/ansible/group_vars/production/main.yml +++ b/deploy/ansible/group_vars/production/main.yml @@ -1,6 +1,6 @@ # Application app_name: wp-composer -app_domain: wp-composer.com +app_domain: wp-packages.org app_root: /srv/wp-composer app_env: production app_debug: "false" diff --git a/scripts/migrate-from-wpackagist.sh b/scripts/migrate-from-wpackagist.sh index 83283d5..1dbb98d 100755 --- a/scripts/migrate-from-wpackagist.sh +++ b/scripts/migrate-from-wpackagist.sh @@ -2,7 +2,7 @@ set -euo pipefail # Migrate composer.json from WPackagist to WP Composer -# https://wp-composer.com/wp-composer-vs-wpackagist +# https://wp-packages.org/wp-composer-vs-wpackagist # --dry-run / -n: show a diff of what would change without modifying the file. DRY_RUN=false From 1cb9a7b2232931f18cff5cad6281eadb0a2e3f0f Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:12:35 -0500 Subject: [PATCH 09/27] =?UTF-8?q?Composer=20repo=20key=20in=20templates/do?= =?UTF-8?q?cs:=20repositories.wp-composer=20=E2=86=92=20repositories.wp-pa?= =?UTF-8?q?ckages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/http/templates/compare.html | 2 +- internal/http/templates/index.html | 6 +++--- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/internal/http/templates/compare.html b/internal/http/templates/compare.html index a8fbfc0..b117382 100644 --- a/internal/http/templates/compare.html +++ b/internal/http/templates/compare.html @@ -194,7 +194,7 @@

Migrating from WPackagist

2

Remove the wpackagist repository and add WP Composer:

-
composer config --unset repositories.wpackagist && composer config repositories.wp-composer composer https://repo.wp-packages.org
+
composer config --unset repositories.wpackagist && composer config repositories.wp-packages composer https://repo.wp-packages.org
diff --git a/internal/http/templates/index.html b/internal/http/templates/index.html index bc068b2..96f3276 100644 --- a/internal/http/templates/index.html +++ b/internal/http/templates/index.html @@ -23,9 +23,9 @@

WordPress Packages
for Composer

A modern, community-funded Composer repository for WordPress plugins and themes.

-
+
$ -composer config repositories.wp-composer composer https://repo.wp-packages.org +composer config repositories.wp-packages composer https://repo.wp-packages.org @@ -155,7 +155,7 @@

Migrating from WPackagist

2

Remove the wpackagist repository and add WP Composer:

-
composer config --unset repositories.wpackagist && composer config repositories.wp-composer composer https://repo.wp-packages.org
+
composer config --unset repositories.wpackagist && composer config repositories.wp-packages composer https://repo.wp-packages.org
From cf57a756f2fde500f5047234e7de8a8f2e832fc7 Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:13:38 -0500 Subject: [PATCH 10/27] Rename columns on the existing schema --- migrations/018_rename_composer_to_packages.sql | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 migrations/018_rename_composer_to_packages.sql diff --git a/migrations/018_rename_composer_to_packages.sql b/migrations/018_rename_composer_to_packages.sql new file mode 100644 index 0000000..a9b1293 --- /dev/null +++ b/migrations/018_rename_composer_to_packages.sql @@ -0,0 +1,2 @@ +ALTER TABLE packages RENAME COLUMN wp_composer_installs_total TO wp_packages_installs_total; +ALTER TABLE packages RENAME COLUMN wp_composer_installs_30d TO wp_packages_installs_30d; From 36555f3c551353ffaa85a2152339a34379444ccf Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:14:26 -0500 Subject: [PATCH 11/27] Update all Go code referencing these column names --- internal/http/downloads_test.go | 4 ++-- internal/http/handlers.go | 8 ++++---- internal/og/generate.go | 4 ++-- internal/packages/package.go | 6 +++--- internal/packages/package_test.go | 10 +++++----- internal/repository/builder_test.go | 4 ++-- internal/telemetry/aggregate.go | 14 +++++++------- internal/telemetry/telemetry_test.go | 12 ++++++------ 8 files changed, 31 insertions(+), 31 deletions(-) diff --git a/internal/http/downloads_test.go b/internal/http/downloads_test.go index de15c50..e59c7e7 100644 --- a/internal/http/downloads_test.go +++ b/internal/http/downloads_test.go @@ -31,8 +31,8 @@ func setupTestApp(t *testing.T) *app.App { current_version TEXT, rating REAL, num_ratings INTEGER NOT NULL DEFAULT 0, is_active INTEGER NOT NULL DEFAULT 1, last_committed TEXT, last_synced_at TEXT, last_sync_run_id INTEGER, - wp_composer_installs_total INTEGER NOT NULL DEFAULT 0, - wp_composer_installs_30d INTEGER NOT NULL DEFAULT 0, + wp_packages_installs_total INTEGER NOT NULL DEFAULT 0, + wp_packages_installs_30d INTEGER NOT NULL DEFAULT 0, last_installed_at TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(type, name) diff --git a/internal/http/handlers.go b/internal/http/handlers.go index ba9132c..2542db2 100644 --- a/internal/http/handlers.go +++ b/internal/http/handlers.go @@ -754,7 +754,7 @@ func queryPackages(ctx context.Context, db *sql.DB, f publicFilters, page, limit args = append(args, f.Type) } - orderBy := "wp_composer_installs_total DESC" + orderBy := "wp_packages_installs_total DESC" switch f.Sort { case "active_installs": orderBy = "active_installs DESC" @@ -776,7 +776,7 @@ func queryPackages(ctx context.Context, db *sql.DB, f publicFilters, page, limit offset := (page - 1) * limit q := fmt.Sprintf(`SELECT type, name, COALESCE(display_name,''), COALESCE(description,''), - COALESCE(current_version,''), downloads, active_installs, wp_composer_installs_total + COALESCE(current_version,''), downloads, active_installs, wp_packages_installs_total FROM packages WHERE %s ORDER BY %s LIMIT ? OFFSET ?`, where, orderBy) rows, err := db.QueryContext(ctx, q, append(args, limit, offset)...) @@ -814,7 +814,7 @@ func queryPackageDetail(ctx context.Context, db *sql.DB, pkgType, name string) ( var p packageDetail err := db.QueryRowContext(ctx, `SELECT type, name, COALESCE(display_name,''), COALESCE(description,''), COALESCE(author,''), COALESCE(homepage,''), COALESCE(current_version,''), - downloads, active_installs, wp_composer_installs_total, versions_json, og_image_generated_at, + downloads, active_installs, wp_packages_installs_total, versions_json, og_image_generated_at, COALESCE(updated_at,'') FROM packages WHERE type = ? AND name = ? AND is_active = 1`, pkgType, name, ).Scan(&p.Type, &p.Name, &p.DisplayName, &p.Description, &p.Author, &p.Homepage, @@ -904,7 +904,7 @@ func queryAdminPackages(ctx context.Context, db *sql.DB, f adminFilters, page, l offset := (page - 1) * limit q := fmt.Sprintf(`SELECT type, name, COALESCE(display_name,''), COALESCE(current_version,''), - downloads, active_installs, wp_composer_installs_total, is_active, COALESCE(last_synced_at,'') + downloads, active_installs, wp_packages_installs_total, is_active, COALESCE(last_synced_at,'') FROM packages WHERE %s ORDER BY downloads DESC LIMIT ? OFFSET ?`, where) rows, err := db.QueryContext(ctx, q, append(args, limit, offset)...) diff --git a/internal/og/generate.go b/internal/og/generate.go index f483ec9..05ae74c 100644 --- a/internal/og/generate.go +++ b/internal/og/generate.go @@ -39,14 +39,14 @@ func FormatInstalls(n int64) string { // - Install counts changed since last generation func GetPackagesNeedingOG(ctx context.Context, db *sql.DB, limit int) ([]PackageOGRow, error) { q := `SELECT id, type, name, COALESCE(display_name, ''), COALESCE(description, ''), - COALESCE(current_version, ''), active_installs, wp_composer_installs_total, + COALESCE(current_version, ''), active_installs, wp_packages_installs_total, og_image_generated_at, og_image_installs, og_image_wp_installs FROM packages WHERE is_active = 1 AND ( og_image_generated_at IS NULL OR active_installs != og_image_installs - OR wp_composer_installs_total != og_image_wp_installs + OR wp_packages_installs_total != og_image_wp_installs ) ORDER BY active_installs DESC LIMIT ?` diff --git a/internal/packages/package.go b/internal/packages/package.go index 8488160..7155da2 100644 --- a/internal/packages/package.go +++ b/internal/packages/package.go @@ -335,9 +335,9 @@ func RefreshSiteStats(ctx context.Context, db *sql.DB) error { SELECT 1, COALESCE(SUM(CASE WHEN type = 'plugin' THEN 1 ELSE 0 END), 0), COALESCE(SUM(CASE WHEN type = 'theme' THEN 1 ELSE 0 END), 0), - COALESCE(SUM(CASE WHEN type = 'plugin' THEN wp_composer_installs_total ELSE 0 END), 0), - COALESCE(SUM(CASE WHEN type = 'theme' THEN wp_composer_installs_total ELSE 0 END), 0), - COALESCE(SUM(wp_composer_installs_30d), 0), + COALESCE(SUM(CASE WHEN type = 'plugin' THEN wp_packages_installs_total ELSE 0 END), 0), + COALESCE(SUM(CASE WHEN type = 'theme' THEN wp_packages_installs_total ELSE 0 END), 0), + COALESCE(SUM(wp_packages_installs_30d), 0), datetime('now') FROM packages WHERE is_active = 1`) diff --git a/internal/packages/package_test.go b/internal/packages/package_test.go index e088d0b..022ea48 100644 --- a/internal/packages/package_test.go +++ b/internal/packages/package_test.go @@ -39,8 +39,8 @@ func setupTestDB(t *testing.T) *sql.DB { last_committed TEXT, last_synced_at TEXT, last_sync_run_id INTEGER, - wp_composer_installs_total INTEGER NOT NULL DEFAULT 0, - wp_composer_installs_30d INTEGER NOT NULL DEFAULT 0, + wp_packages_installs_total INTEGER NOT NULL DEFAULT 0, + wp_packages_installs_30d INTEGER NOT NULL DEFAULT 0, last_installed_at TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, @@ -225,13 +225,13 @@ func TestRefreshSiteStats(t *testing.T) { } // Install counters are maintained by telemetry aggregation, not package upserts. - if _, err := database.Exec(`UPDATE packages SET wp_composer_installs_total = 100, wp_composer_installs_30d = 25 WHERE name = 'plugin-one'`); err != nil { + if _, err := database.Exec(`UPDATE packages SET wp_packages_installs_total = 100, wp_packages_installs_30d = 25 WHERE name = 'plugin-one'`); err != nil { t.Fatalf("updating plugin-one counters: %v", err) } - if _, err := database.Exec(`UPDATE packages SET wp_composer_installs_total = 999, wp_composer_installs_30d = 999 WHERE name = 'plugin-two'`); err != nil { + if _, err := database.Exec(`UPDATE packages SET wp_packages_installs_total = 999, wp_packages_installs_30d = 999 WHERE name = 'plugin-two'`); err != nil { t.Fatalf("updating plugin-two counters: %v", err) } - if _, err := database.Exec(`UPDATE packages SET wp_composer_installs_total = 50, wp_composer_installs_30d = 5 WHERE name = 'theme-one'`); err != nil { + if _, err := database.Exec(`UPDATE packages SET wp_packages_installs_total = 50, wp_packages_installs_30d = 5 WHERE name = 'theme-one'`); err != nil { t.Fatalf("updating theme-one counters: %v", err) } diff --git a/internal/repository/builder_test.go b/internal/repository/builder_test.go index 7a3eb92..f3bcd47 100644 --- a/internal/repository/builder_test.go +++ b/internal/repository/builder_test.go @@ -41,8 +41,8 @@ func setupTestDB(t *testing.T) *sql.DB { last_committed TEXT, last_synced_at TEXT, last_sync_run_id INTEGER, - wp_composer_installs_total INTEGER NOT NULL DEFAULT 0, - wp_composer_installs_30d INTEGER NOT NULL DEFAULT 0, + wp_packages_installs_total INTEGER NOT NULL DEFAULT 0, + wp_packages_installs_30d INTEGER NOT NULL DEFAULT 0, last_installed_at TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, diff --git a/internal/telemetry/aggregate.go b/internal/telemetry/aggregate.go index ee9729e..72e67eb 100644 --- a/internal/telemetry/aggregate.go +++ b/internal/telemetry/aggregate.go @@ -9,7 +9,7 @@ import ( "github.com/roots/wp-packages/internal/packages" ) -// AggregateInstalls recomputes wp_composer_installs_total, wp_composer_installs_30d, +// AggregateInstalls recomputes wp_packages_installs_total, wp_packages_installs_30d, // and last_installed_at on all packages. func AggregateInstalls(ctx context.Context, db *sql.DB) (AggregateResult, error) { thirtyDaysAgo := time.Now().UTC().AddDate(0, 0, -30).Format(time.RFC3339) @@ -17,7 +17,7 @@ func AggregateInstalls(ctx context.Context, db *sql.DB) (AggregateResult, error) // Update total counts and last_installed_at totalResult, err := db.ExecContext(ctx, ` UPDATE packages SET - wp_composer_installs_total = sub.total, + wp_packages_installs_total = sub.total, last_installed_at = sub.last_at FROM ( SELECT package_id, COUNT(*) AS total, MAX(created_at) AS last_at @@ -33,7 +33,7 @@ func AggregateInstalls(ctx context.Context, db *sql.DB) (AggregateResult, error) // Update 30-day counts _, err = db.ExecContext(ctx, ` UPDATE packages SET - wp_composer_installs_30d = sub.recent + wp_packages_installs_30d = sub.recent FROM ( SELECT package_id, COUNT(*) AS recent FROM install_events @@ -48,9 +48,9 @@ func AggregateInstalls(ctx context.Context, db *sql.DB) (AggregateResult, error) // Reset totals for packages with no events at all _, err = db.ExecContext(ctx, ` UPDATE packages SET - wp_composer_installs_total = 0, + wp_packages_installs_total = 0, last_installed_at = NULL - WHERE (wp_composer_installs_total > 0 OR last_installed_at IS NOT NULL) + WHERE (wp_packages_installs_total > 0 OR last_installed_at IS NOT NULL) AND id NOT IN ( SELECT DISTINCT package_id FROM install_events )`) @@ -60,8 +60,8 @@ func AggregateInstalls(ctx context.Context, db *sql.DB) (AggregateResult, error) // Reset 30d counts for packages with no recent installs resetResult, err := db.ExecContext(ctx, ` - UPDATE packages SET wp_composer_installs_30d = 0 - WHERE wp_composer_installs_30d > 0 + UPDATE packages SET wp_packages_installs_30d = 0 + WHERE wp_packages_installs_30d > 0 AND id NOT IN ( SELECT DISTINCT package_id FROM install_events WHERE created_at >= ? )`, thirtyDaysAgo) diff --git a/internal/telemetry/telemetry_test.go b/internal/telemetry/telemetry_test.go index 7d18ade..4bbccf5 100644 --- a/internal/telemetry/telemetry_test.go +++ b/internal/telemetry/telemetry_test.go @@ -30,8 +30,8 @@ func setupTestDB(t *testing.T) *sql.DB { num_ratings INTEGER NOT NULL DEFAULT 0, is_active INTEGER NOT NULL DEFAULT 1, last_committed TEXT, last_synced_at TEXT, last_sync_run_id INTEGER, - wp_composer_installs_total INTEGER NOT NULL DEFAULT 0, - wp_composer_installs_30d INTEGER NOT NULL DEFAULT 0, + wp_packages_installs_total INTEGER NOT NULL DEFAULT 0, + wp_packages_installs_30d INTEGER NOT NULL DEFAULT 0, last_installed_at TEXT, created_at TEXT NOT NULL, updated_at TEXT NOT NULL, UNIQUE(type, name) @@ -240,7 +240,7 @@ func TestAggregateInstalls(t *testing.T) { // Check akismet: total=3, 30d=2 var total, recent30d int - _ = database.QueryRow("SELECT wp_composer_installs_total, wp_composer_installs_30d FROM packages WHERE name='akismet'").Scan(&total, &recent30d) + _ = database.QueryRow("SELECT wp_packages_installs_total, wp_packages_installs_30d FROM packages WHERE name='akismet'").Scan(&total, &recent30d) if total != 3 { t.Errorf("akismet total = %d, want 3", total) } @@ -249,7 +249,7 @@ func TestAggregateInstalls(t *testing.T) { } // Check astra: total=1, 30d=1 - _ = database.QueryRow("SELECT wp_composer_installs_total, wp_composer_installs_30d FROM packages WHERE name='astra'").Scan(&total, &recent30d) + _ = database.QueryRow("SELECT wp_packages_installs_total, wp_packages_installs_30d FROM packages WHERE name='astra'").Scan(&total, &recent30d) if total != 1 { t.Errorf("astra total = %d, want 1", total) } @@ -270,7 +270,7 @@ func TestAggregateInstalls_Resets30d(t *testing.T) { ctx := context.Background() // Set a stale 30d count with no recent events - _, _ = database.Exec("UPDATE packages SET wp_composer_installs_30d = 50 WHERE name='akismet'") + _, _ = database.Exec("UPDATE packages SET wp_packages_installs_30d = 50 WHERE name='akismet'") // Only old events old := time.Now().UTC().Add(-60 * 24 * time.Hour).Format(time.RFC3339) @@ -285,7 +285,7 @@ func TestAggregateInstalls_Resets30d(t *testing.T) { } var recent30d int - _ = database.QueryRow("SELECT wp_composer_installs_30d FROM packages WHERE name='akismet'").Scan(&recent30d) + _ = database.QueryRow("SELECT wp_packages_installs_30d FROM packages WHERE name='akismet'").Scan(&recent30d) if recent30d != 0 { t.Errorf("30d should be reset to 0, got %d", recent30d) } From ad2fb4e49ce3ec84a1833ec28f0a6694484ce31f Mon Sep 17 00:00:00 2001 From: Ben Word Date: Thu, 19 Mar 2026 11:16:28 -0500 Subject: [PATCH 12/27] Routes & SEO --- internal/http/router.go | 5 ++++- internal/http/seo.go | 2 +- internal/http/templates/compare.html | 4 ++-- internal/http/templates/layout.html | 2 +- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/internal/http/router.go b/internal/http/router.go index 5145f9c..6a9a2d6 100644 --- a/internal/http/router.go +++ b/internal/http/router.go @@ -85,7 +85,10 @@ func NewRouter(a *app.App) http.Handler { routeFunc("GET /{$}", handleIndex(a, tmpl)) routeFunc("GET /packages-partial", handleIndexPartial(a, tmpl)) routeFunc("GET /packages/{type}/{name}", handleDetail(a, tmpl)) - routeFunc("GET /wp-composer-vs-wpackagist", handleCompare(a, tmpl)) + routeFunc("GET /wp-composer-vs-wpackagist", func(w http.ResponseWriter, r *http.Request) { + http.Redirect(w, r, "/wp-packages-vs-wpackagist", http.StatusMovedPermanently) + }) + routeFunc("GET /wp-packages-vs-wpackagist", handleCompare(a, tmpl)) routeFunc("GET /roots-wordpress", handleRootsWordpress(a, tmpl)) routeFunc("POST /downloads", handleDownloads(a)) diff --git a/internal/http/seo.go b/internal/http/seo.go index 7bd1eed..852a809 100644 --- a/internal/http/seo.go +++ b/internal/http/seo.go @@ -310,7 +310,7 @@ func generateSitemaps(ctx context.Context, db *sql.DB, appURL string) (index []b URLs: []sitemapURL{ {Loc: appURL + "/"}, {Loc: appURL + "/roots-wordpress"}, - {Loc: appURL + "/wp-composer-vs-wpackagist"}, + {Loc: appURL + "/wp-packages-vs-wpackagist"}, }, } pages, err = marshalXML(pagesURLSet) diff --git a/internal/http/templates/compare.html b/internal/http/templates/compare.html index b117382..f2ca6ac 100644 --- a/internal/http/templates/compare.html +++ b/internal/http/templates/compare.html @@ -2,14 +2,14 @@ {{define "title"}}WP Composer vs WPackagist — Why Independence Matters{{end}} {{define "meta_seo"}} -{{if .AppURL}}{{end}} +{{if .AppURL}}{{end}} {{end}} {{define "json_ld"}}{{end}} {{define "og_meta"}} {{if .OGImage}}{{end}} -{{if .AppURL}}{{end}} +{{if .AppURL}}{{end}} diff --git a/internal/http/templates/layout.html b/internal/http/templates/layout.html index 7e286c6..fe31124 100644 --- a/internal/http/templates/layout.html +++ b/internal/http/templates/layout.html @@ -57,7 +57,7 @@

Built by roots.io

-

Or use the migration script to automatically update your composer.json:

-
+

Or use the migration script to automatically update your composer.json:

+
$ -curl -sO https://raw.githubusercontent.com/roots/wp-composer/main/scripts/migrate-from-wpackagist.sh && bash migrate-from-wpackagist.sh +curl -sO https://raw.githubusercontent.com/roots/wp-packages/main/scripts/migrate-from-wpackagist.sh && bash migrate-from-wpackagist.sh diff --git a/internal/http/templates/layout.html b/internal/http/templates/layout.html index fe31124..1adb268 100644 --- a/internal/http/templates/layout.html +++ b/internal/http/templates/layout.html @@ -9,7 +9,7 @@ - + {{template "og_meta" .}} {{template "json_ld" .}} @@ -19,14 +19,21 @@ +
+
+

WP Composer is now WP Packages! Read the announcement.

+ +
+
@@ -43,7 +50,7 @@
{{template "content" .}}
-

WP Composer is community-funded open source. Support our work by sponsoring us on GitHub.

+

WP Packages is community-funded open source. Support our work by sponsoring us on GitHub.

Sponsors

diff --git a/internal/http/templates/roots_wordpress.html b/internal/http/templates/roots_wordpress.html index df34bf1..88ff6b7 100644 --- a/internal/http/templates/roots_wordpress.html +++ b/internal/http/templates/roots_wordpress.html @@ -1,18 +1,18 @@ {{template "layout" .}} -{{define "title"}}WordPress Core via Composer — WP Composer{{end}} +{{define "title"}}WordPress Core via Composer — WP Packages{{end}} {{define "meta_seo"}} {{if .AppURL}}{{end}} {{end}} {{define "json_ld"}}{{end}} {{define "og_meta"}} - + {{if .OGImage}}{{end}} {{if .AppURL}}{{end}} - + {{if .OGImage}}{{end}} {{end}} @@ -78,7 +78,7 @@

Getting started

Example configurations

Standard (recommended)

-

WordPress core without default themes or plugins. Manage your themes and plugins individually via Composer with WP Composer.

+

WordPress core without default themes or plugins. Manage your themes and plugins individually via Composer with WP Packages.

composer.json
{
diff --git a/internal/og/og.go b/internal/og/og.go
index 5ce8b04..5401676 100644
--- a/internal/og/og.go
+++ b/internal/og/og.go
@@ -122,10 +122,10 @@ func GeneratePackageImage(pkg PackageData) ([]byte, error) {
 	contentMaxW := cardW - 96
 	y := cardY + 52
 
-	// --- "WP Composer" header ---
+	// --- "WP Packages" header ---
 	dc.SetFontFace(fontFace(fontSansBold, 18))
 	dc.SetColor(colorBrandPrimary)
-	dc.DrawString("WP Composer", cx, y)
+	dc.DrawString("WP Packages", cx, y)
 	y += 44
 
 	// --- Package name (large, bold) ---
@@ -243,7 +243,7 @@ func GenerateFallbackImage() ([]byte, error) {
 	// Title
 	dc.SetFontFace(fontFace(fontSansBold, 36))
 	dc.SetColor(colorGray900)
-	dc.DrawStringAnchored("WP Composer", centerX, centerY+logoSize/2+32, 0.5, 0.5)
+	dc.DrawStringAnchored("WP Packages", centerX, centerY+logoSize/2+32, 0.5, 0.5)
 
 	// Subtitle
 	dc.SetFontFace(fontFace(fontSansRegular, 18))

From 3330ce53a3b7aef87b8afea2ab9623cbed92cc1f Mon Sep 17 00:00:00 2001
From: Ben Word 
Date: Thu, 19 Mar 2026 11:20:54 -0500
Subject: [PATCH 14/27] Admin UI

---
 internal/http/handlers.go               | 2 +-
 internal/http/templates/admin_logs.html | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/internal/http/handlers.go b/internal/http/handlers.go
index 2542db2..020727a 100644
--- a/internal/http/handlers.go
+++ b/internal/http/handlers.go
@@ -495,7 +495,7 @@ func markStaleBuildsCancelled(ctx context.Context, db *sql.DB, logger *slog.Logg
 }
 
 var logFiles = map[string]string{
-	"wpcomposer": filepath.Join("storage", "logs", "wpcomposer.log"),
+	"wppackages": filepath.Join("storage", "logs", "wppackages.log"),
 	"pipeline":   filepath.Join("storage", "logs", "pipeline.log"),
 }
 
diff --git a/internal/http/templates/admin_logs.html b/internal/http/templates/admin_logs.html
index f45d22e..464a7bd 100644
--- a/internal/http/templates/admin_logs.html
+++ b/internal/http/templates/admin_logs.html
@@ -10,14 +10,14 @@ 

Logs

- +