diff --git a/.npmrc b/.npmrc index 1d50885..2dac7dd 100644 --- a/.npmrc +++ b/.npmrc @@ -1,12 +1,9 @@ save-exact = true -; The @rtcamp/* packages install straight from the public rtCamp/wp-tooling -; repository (git dependencies in package.json), so no registry, token or SSH key -; is needed. package-lock.json records them as git+ssh URLs, but npm fetches public -; GitHub dependencies as HTTPS tarballs. If the packages are published to npm, -; switch them to version ranges. +; The @rtcamp/* packages are public on the npm registry, so no scope registry or +; token is needed. -; @rtcamp/wp-tooling's peer deps (e.g. eslint ^10) are advisory for this skeleton, -; which pins its own toolchain; tolerate the peer mismatch rather than force-upgrade. -; (Redundant once wp-tooling marks those peers optional — rtCamp/wp-tooling#38.) +; Some toolchain packages still declare older peers (e.g. @babel/eslint-parser wants +; eslint ^9, @react-spring wants react ^18) while this skeleton pins eslint 10 and +; react 19; tolerate the peer mismatch rather than force-downgrade. legacy-peer-deps = true diff --git a/CHANGELOG.md b/CHANGELOG.md index ff8c8fa..9d48a86 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -15,9 +15,9 @@ All notable changes to this project are documented in this file. The format is b - **Renamed from `features-plugin-skeleton` to `plugin-elementary`** and moved to the `rtCamp/plugin-elementary` repository, aligning it with the sibling `theme-elementary`. - The scaffold placeholder tokens (`Project_Name`, `project-name`, - `rtcamp/project-name-features`) are unchanged; only the repository identity, URLs and - documentation moved. + The scaffold placeholder tokens (`Project_Name`, `project-name`) are unchanged. The + Composer package is now `rtcamp/plugin-elementary`, matching the repository, and + `npm run init` still replaces it with `rtcamp/-features`. - Updated the shared engine dependency from `rtcamp/wp-framework` to `rtcamp/wp-primitives ^2.0`. - Adopted the rtCamp shared coding standards from the common packages (PHPCS, PHPStan, ESLint, Stylelint). - Rewrote `README.md` and `DEVELOPMENT.md` as entry points that link framework API detail to `rtcamp/wp-primitives`. diff --git a/bin/scaffold.config.js b/bin/scaffold.config.js index a7b4473..3142530 100644 --- a/bin/scaffold.config.js +++ b/bin/scaffold.config.js @@ -81,7 +81,7 @@ module.exports = { source: { name: 'Project Name', namespace: 'Project_Name\\Features', - package: 'rtcamp/project-name-features', + package: 'rtcamp/plugin-elementary', }, namespace: ( id ) => `${ id.pascalSnake }\\Features`, @@ -130,10 +130,7 @@ module.exports = { }, ], devDependencies: { - // Not on npm: installed from wp-tooling's split branch, like the - // other @rtcamp/* configs in package.json. - '@rtcamp/tailwind-config': - 'git+https://github.com/rtCamp/wp-tooling.git#npm/tailwind-config', + '@rtcamp/tailwind-config': '^1.1.0', tailwindcss: '^4.3.0', '@tailwindcss/postcss': '^4.3.0', }, diff --git a/composer.json b/composer.json index 7cfe908..88a28a6 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "rtcamp/project-name-features", + "name": "rtcamp/plugin-elementary", "description": "All backend functionality: post types, taxonomies, blocks, REST endpoints, settings, shortcodes, and custom roles.", "type": "wordpress-plugin", "license": "GPL-2.0-or-later", @@ -52,23 +52,6 @@ "Project_Name\\Features\\Tests\\": "tests/php/" } }, - "repositories": [ - { - "type": "vcs", - "url": "https://github.com/rtCamp/wp-primitives.git", - "no-api": true - }, - { - "type": "vcs", - "url": "https://github.com/rtCamp/wp-phpcs.git", - "no-api": true - }, - { - "type": "vcs", - "url": "https://github.com/rtCamp/wp-phpstan.git", - "no-api": true - } - ], "scripts": { "format": "phpcbf", "lint": "phpcs", diff --git a/composer.lock b/composer.lock index bd8e607..147792d 100644 --- a/composer.lock +++ b/composer.lock @@ -4,7 +4,7 @@ "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "This file is @generated automatically" ], - "content-hash": "c76ebaf01b7a7d0aa55d9159d12a2ddb", + "content-hash": "e230c042c3d4eb3e74a3b289cef94e4f", "packages": [ { "name": "rtcamp/wp-primitives", @@ -46,30 +46,7 @@ "rtCamp\\WPPrimitives\\": "inc/" } }, - "autoload-dev": { - "psr-4": { - "rtCamp\\WPPrimitives\\Tests\\": "tests/" - } - }, - "scripts": { - "lint": [ - "phpcs" - ], - "lint:fix": [ - "phpcbf" - ], - "analyse": [ - "phpstan analyse --memory-limit=1G" - ], - "test": [ - "phpunit" - ], - "check": [ - "@lint", - "@analyse", - "@test" - ] - }, + "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-2.0-or-later" ], @@ -91,9 +68,9 @@ "wordpress-theme" ], "support": { + "docs": "https://opensource.rtcamp.com/wp-primitives/", "issues": "https://github.com/rtCamp/wp-primitives/issues", - "source": "https://github.com/rtCamp/wp-primitives", - "docs": "https://opensource.rtcamp.com/wp-primitives/" + "source": "https://github.com/rtCamp/wp-primitives" }, "time": "2026-10-01T16:46:31+00:00" } @@ -2002,16 +1979,16 @@ }, { "name": "rtcamp/wp-phpcs", - "version": "v1.0.0", + "version": "v1.0.1", "source": { "type": "git", "url": "https://github.com/rtCamp/wp-phpcs.git", - "reference": "c109b87a2c784f3834068c9d63aea96178c46159" + "reference": "c209e4385f9cf0cb673b09c10af8f713a4116c09" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rtCamp/wp-phpcs/zipball/c109b87a2c784f3834068c9d63aea96178c46159", - "reference": "c109b87a2c784f3834068c9d63aea96178c46159", + "url": "https://api.github.com/repos/rtCamp/wp-phpcs/zipball/c209e4385f9cf0cb673b09c10af8f713a4116c09", + "reference": "c209e4385f9cf0cb673b09c10af8f713a4116c09", "shasum": "" }, "require": { @@ -2026,32 +2003,44 @@ "phpunit/phpunit": "^11.5" }, "type": "phpcodesniffer-standard", + "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-2.0-or-later" ], + "authors": [ + { + "name": "rtCamp", + "homepage": "https://rtcamp.com" + } + ], "description": "rtCamp PHP_CodeSniffer standards for WordPress projects (rtCampWP + rtCampWP-Basic).", + "homepage": "https://github.com/rtCamp/wp-tooling/tree/main/composer-packages/phpcs", "keywords": [ - "WordPress", "phpcs", "standards", "static analysis", "vipcs", + "wordpress", "wpcs" ], - "time": "2026-07-29T22:18:33+00:00" + "support": { + "issues": "https://github.com/rtCamp/wp-tooling/issues", + "source": "https://github.com/rtCamp/wp-tooling/tree/main/composer-packages/phpcs" + }, + "time": "2026-10-01T18:10:21+00:00" }, { "name": "rtcamp/wp-phpstan", - "version": "v1.0.0", + "version": "v1.0.1", "source": { "type": "git", "url": "https://github.com/rtCamp/wp-phpstan.git", - "reference": "8f5f0acb1d02ccdd24fd2fa25e59d669e843dcf1" + "reference": "3252dfb4264f3de4a574201ee7f6ec3c0ad2bc26" }, "dist": { "type": "zip", - "url": "https://api.github.com/repos/rtCamp/wp-phpstan/zipball/8f5f0acb1d02ccdd24fd2fa25e59d669e843dcf1", - "reference": "8f5f0acb1d02ccdd24fd2fa25e59d669e843dcf1", + "url": "https://api.github.com/repos/rtCamp/wp-phpstan/zipball/3252dfb4264f3de4a574201ee7f6ec3c0ad2bc26", + "reference": "3252dfb4264f3de4a574201ee7f6ec3c0ad2bc26", "shasum": "" }, "require": { @@ -2063,27 +2052,29 @@ "phpunit/phpunit": "^11.5" }, "type": "library", - "autoload-dev": { - "psr-4": { - "rtCamp\\WPPhpstan\\Tests\\": "tests/" - } - }, - "scripts": { - "test": [ - "phpunit" - ] - }, + "notification-url": "https://packagist.org/downloads/", "license": [ "GPL-2.0-or-later" ], + "authors": [ + { + "name": "rtCamp", + "homepage": "https://rtcamp.com" + } + ], "description": "rtCamp PHPStan configuration and baseline for WordPress projects.", + "homepage": "https://github.com/rtCamp/wp-tooling/tree/main/composer-packages/phpstan", "keywords": [ - "phpstan", + "PHPStan", "rtcamp", "static analysis", "wordpress" ], - "time": "2026-07-29T22:18:33+00:00" + "support": { + "issues": "https://github.com/rtCamp/wp-tooling/issues", + "source": "https://github.com/rtCamp/wp-tooling/tree/main/composer-packages/phpstan" + }, + "time": "2026-10-01T18:10:21+00:00" }, { "name": "sebastian/cli-parser", @@ -3972,5 +3963,5 @@ "platform-overrides": { "php": "8.2" }, - "plugin-api-version": "2.9.0" + "plugin-api-version": "2.6.0" } diff --git a/docs/internal/maintenance.md b/docs/internal/maintenance.md index 432b6f2..5e0f829 100644 --- a/docs/internal/maintenance.md +++ b/docs/internal/maintenance.md @@ -23,7 +23,7 @@ The skeleton is a consumer of three shared repositories. Fix a problem where it [`bin/scaffold.config.js`](../../bin/scaffold.config.js) is the contract between the skeleton and the init engine. It declares: -- **`source`**: the placeholder identity (`Project Name`, `Project_Name\Features`, `rtcamp/project-name-features`) the engine search-replaces. The engine never rewrites files under `bin/`, so placeholders there are safe. +- **`source`**: the placeholder identity (`Project Name`, `Project_Name\Features`, `rtcamp/plugin-elementary`) the engine search-replaces. The engine never rewrites files under `bin/`, so placeholders there are safe. - **`versionFiles`**: where the version is written (main-file header, `package.json`). - **`examples.groups`**: one entry per example set, built with `capability( key, label, category, { module, strip, remove, tests } )`, plus one `workflow()` entry for the CI caller. - **`features`**: the toggleable features (`tailwind`, `hmr`, and `dev-tools` from `bin/features/dev-tools.js`). diff --git a/package-lock.json b/package-lock.json index c4369d8..7ce3595 100644 --- a/package-lock.json +++ b/package-lock.json @@ -11,9 +11,9 @@ "devDependencies": { "@babel/core": "7.29.7", "@eslint-community/eslint-plugin-eslint-comments": "4.7.2", - "@rtcamp/eslint-config": "git+https://github.com/rtCamp/wp-tooling.git#npm/eslint-config", - "@rtcamp/stylelint-config": "git+https://github.com/rtCamp/wp-tooling.git#npm/stylelint-config", - "@rtcamp/wp-tooling": "github:rtCamp/wp-tooling#npm/wp-tooling", + "@rtcamp/eslint-config": "^1.1.0", + "@rtcamp/stylelint-config": "^1.1.0", + "@rtcamp/wp-tooling": "^2.0.0", "@wordpress/babel-preset-default": "8.47.0", "@wordpress/block-editor": "18.0.0", "@wordpress/blocks": "16.1.0", @@ -7296,9 +7296,9 @@ } }, "node_modules/@rtcamp/eslint-config": { - "version": "1.0.0", - "resolved": "git+ssh://git@github.com/rtCamp/wp-tooling.git#b37138ff57b359b6dd0c0eb60324d05435cdcb88", - "integrity": "sha512-WBKqTxmHYKsqvOSCBzYBbyLKjLGdD4iRhOOgEj7BHEuuGIoFelj/9mDuxQywgz7zHPIYzcU82k6bzQm/p+YgPA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtcamp/eslint-config/-/eslint-config-1.1.0.tgz", + "integrity": "sha512-z5TYMqH3lgzdadNC+7HQXSzg2kMcFvlBo9VWYtBNN2MdQS9HA2f3Ls33C1A1oK7Q3QNniOeulJBxDYDutICwSw==", "dev": true, "license": "GPL-2.0-or-later", "engines": { @@ -7318,12 +7318,13 @@ } }, "node_modules/@rtcamp/stylelint-config": { - "version": "0.1.0", - "resolved": "git+ssh://git@github.com/rtCamp/wp-tooling.git#ab475616bfde91a7fb3b498bac1d80c4ab71b43d", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtcamp/stylelint-config/-/stylelint-config-1.1.0.tgz", + "integrity": "sha512-TK62HGXais+HwcGOBpPLwTJuEBEL9g8sOeo138aFOpB+MGX7zOrQHsiW7ih7rDIc+mwSlBTCz7+mvZhAFZ3NUA==", "dev": true, "license": "GPL-2.0-or-later", "engines": { - "node": ">=22" + "node": ">=22.19" }, "peerDependencies": { "@wordpress/stylelint-config": "^23.37.0", @@ -7332,9 +7333,9 @@ } }, "node_modules/@rtcamp/wp-tooling": { - "version": "1.0.0", - "resolved": "git+ssh://git@github.com/rtCamp/wp-tooling.git#119e07847e2b2e35c5f2a7751ac6093fe8d0ab7a", - "integrity": "sha512-EI1prXYMpBQu4Vnoq+Wwn60AQKztp6wGHWvo2Pxdk24z6lSqIlRaVK/m5SLHdLOtjpZqg0/kWdpJjwgUs7MfTQ==", + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@rtcamp/wp-tooling/-/wp-tooling-2.0.0.tgz", + "integrity": "sha512-b7pUXr79aM4q8OG69CzNC4F9DMNmQHZDSwUyo3LiHY6dxUciTQLYmSxeaCE9HuFzMkts2YSXr55xcqJkMYkXSw==", "dev": true, "license": "GPL-2.0-or-later", "bin": { diff --git a/package.json b/package.json index 351daf1..2ed244e 100644 --- a/package.json +++ b/package.json @@ -21,9 +21,9 @@ "devDependencies": { "@babel/core": "7.29.7", "@eslint-community/eslint-plugin-eslint-comments": "4.7.2", - "@rtcamp/eslint-config": "git+https://github.com/rtCamp/wp-tooling.git#npm/eslint-config", - "@rtcamp/stylelint-config": "git+https://github.com/rtCamp/wp-tooling.git#npm/stylelint-config", - "@rtcamp/wp-tooling": "github:rtCamp/wp-tooling#npm/wp-tooling", + "@rtcamp/eslint-config": "^1.1.0", + "@rtcamp/stylelint-config": "^1.1.0", + "@rtcamp/wp-tooling": "^2.0.0", "@wordpress/babel-preset-default": "8.47.0", "@wordpress/block-editor": "18.0.0", "@wordpress/blocks": "16.1.0",