Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
43 commits
Select commit Hold shift + click to select a range
173c5f8
Update packages
ahegyes Oct 30, 2026
f7a0a10
Add Internal Comments from the plugin template
ahegyes Oct 30, 2026
b8621f3
Remove the template's demo and WooCommerce dependency from Internal C…
ahegyes Oct 30, 2026
4f5ceb5
Add Internal Comments to the root's fan-outs and shared environment
ahegyes Oct 30, 2026
fa50e13
Test Internal Comments' settings, data and capabilities against v1's
ahegyes Oct 30, 2026
1d8c8b9
Expect v1's grouped consent in the partial-deploy rows
ahegyes Oct 30, 2026
77f7084
Port Internal Comments' settings, data and capabilities from v1
ahegyes Oct 30, 2026
3e7b205
Test Internal Comments' comment data against v1's API and leaks
ahegyes Oct 30, 2026
b485140
Port Internal Comments' comment data with a status of its own
ahegyes Oct 30, 2026
94bb5ca
Test Internal Comments' REST routes and meta box
ahegyes Oct 30, 2026
ffa871f
Serve Internal Comments' meta box through REST routes
ahegyes Oct 30, 2026
9820dfe
Test Internal Comments' meta box in the block editor
ahegyes Oct 30, 2026
fe4d5f3
Drive Internal Comments' meta box with a script of its own
ahegyes Oct 30, 2026
4a954fd
Test Internal Comments' posts list, Comments screen and edit screen
ahegyes Oct 30, 2026
c0384f1
Pin the Comments screen's rows and the privacy toggle's setting
ahegyes Oct 30, 2026
d46f9ac
Test the quick view and Comments screen in a browser
ahegyes Oct 30, 2026
148fb9a
Show Internal Comments on WordPress's own admin screens
ahegyes Oct 30, 2026
df203d7
Test Internal Comments on orders in every storage
ahegyes Oct 30, 2026
70ddbeb
Test the meta box on the order tables' edit screen
ahegyes Oct 30, 2026
da8297b
Support orders in WooCommerce's order tables
ahegyes Oct 30, 2026
1dac587
Test Internal Comments' deprecated v1 functions, constants and boot h…
ahegyes Oct 30, 2026
6f92eac
Keep Internal Comments' v1 functions, constants and boot hooks
ahegyes Oct 30, 2026
3e253bc
Distribute Internal Comments through wordpress.org
ahegyes Oct 30, 2026
3437ee7
Check that Linked Orders and Internal Comments share an order screen
ahegyes Oct 30, 2026
a83bd1c
Pin Internal Comments' readme and v1's @since tags
ahegyes Oct 30, 2026
4fe0979
Describe Internal Comments in its own docs
ahegyes Oct 31, 2026
97de7e3
Pin the review's upgrade window, list columns and trash meta
ahegyes Oct 31, 2026
e45bc09
Fix the review's upgrade window, list columns and trash checks
ahegyes Oct 31, 2026
fb2c88e
Pin Codex's post-body overwrite, REST bypass and orphaned privacy
ahegyes Oct 31, 2026
bd334a0
Fix Codex's post-body overwrite, REST bypass and orphaned privacy
ahegyes Oct 31, 2026
acfc3f6
Pin Codex's REST guard bypasses and the author's read shortcut
ahegyes Oct 31, 2026
4590725
Guard core's REST comment handlers by handler and request id
ahegyes Oct 31, 2026
3321334
Pin Codex's XML-RPC exposure of internal comments
ahegyes Oct 31, 2026
e9666d5
Keep internal comments out of XML-RPC comment lists
ahegyes Oct 31, 2026
efe3ec6
Pin Codex's internal comments posted through core's reply action
ahegyes Oct 31, 2026
783651f
Refuse core's reply action an internal comment without the capability
ahegyes Oct 31, 2026
fe02263
Pin a private comment deleted over XML-RPC keeping replies private
ahegyes Oct 31, 2026
3fab324
Exempt the plugin's own queries from the XML-RPC exclusion
ahegyes Oct 31, 2026
5c1b9bc
Pin Codex's private downgrade and the meta box's lost drafts
ahegyes Oct 31, 2026
41c3371
Refuse a private request the site disallows and keep open drafts
ahegyes Oct 31, 2026
a00765e
Pin a meta box request keeping its fields as sent
ahegyes Oct 31, 2026
a9fb3c2
Keep a meta box request's fields as sent until the server answers
ahegyes Oct 31, 2026
ff4afd6
Name only the Comments screen in the trash limitation
ahegyes Oct 31, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion .wp-env.tests.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@
"port": 8820,
"testsEnvironment": false,
"mappings": {
"wp-content/plugins/internal-comments": "./plugins/internal-comments",
"wp-content/plugins/linked-orders-for-woocommerce": "./plugins/linked-orders-for-woocommerce",
"wp-content/plugins/woocommerce": "./vendor/wp-plugin/woocommerce"
},
Expand All @@ -14,6 +15,6 @@
"WP_ENVIRONMENT_TYPE": false
},
"lifecycleScripts": {
"afterStart": "node_modules/.bin/wp-env --config .wp-env.tests.json run cli wp plugin activate woocommerce && node_modules/.bin/wp-env --config .wp-env.tests.json run cli wp wc hpos enable --ignore-plugin-compatibility && node_modules/.bin/wp-env --config .wp-env.tests.json run cli wp plugin activate linked-orders-for-woocommerce"
"afterStart": "node_modules/.bin/wp-env --config .wp-env.tests.json run cli wp plugin activate woocommerce && node_modules/.bin/wp-env --config .wp-env.tests.json run cli wp wc hpos enable --ignore-plugin-compatibility && node_modules/.bin/wp-env --config .wp-env.tests.json run cli wp plugin activate linked-orders-for-woocommerce internal-comments"
}
}
5 changes: 3 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,8 @@ The monorepo of the DWS v2 WordPress plugins, each built on the wp-framework pac
```
wordpress-plugins/
├── plugins/
│ └── linked-orders-for-woocommerce/ Linked Orders for WooCommerce → wc-linked-orders, ports 8822 and 8823, on wordpress.org
│ ├── linked-orders-for-woocommerce/ Linked Orders for WooCommerce → wc-linked-orders, ports 8822 and 8823, on wordpress.org
│ └── internal-comments/ Internal Comments → wp-internal-comments, ports 8824 and 8825, on wordpress.org
├── tests/
│ ├── e2e/ the shared environment's smoke check, over the plugins .wp-env.tests.json maps
│ └── Fixtures/multi-plugin-smoke/ reserved for a fixture plugin the shared environment mounts
Expand Down Expand Up @@ -48,4 +49,4 @@ Each plugin's `AGENTS.md` states its code style, the template's. Markdown keeps

- CI runs twice per change: the root's lanes on the pull request, and the mirror's own after the split.
- The root's workflow checks cover the root's workflows; a plugin's own are checked on its mirror after the split, and locally by the command above.
- Until a second plugin lands, the shared environment runs its one plugin's suites a second time.
- Each plugin's Integration suite runs twice: in the plugin's own environments and in the shared one.
27 changes: 18 additions & 9 deletions composer.json
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,8 @@
"Composer\\Config::disableProcessTimeout",
"@putenv CI=1",
"npm --prefix=. run plugins:build",
"node_modules/.bin/wp-env --config .wp-env.tests.json run cli --env-cwd=wp-content/plugins/linked-orders-for-woocommerce vendor/bin/phpunit --testsuite=Integration"
"node_modules/.bin/wp-env --config .wp-env.tests.json run cli --env-cwd=wp-content/plugins/linked-orders-for-woocommerce vendor/bin/phpunit --testsuite=Integration",
"node_modules/.bin/wp-env --config .wp-env.tests.json run cli --env-cwd=wp-content/plugins/internal-comments vendor/bin/phpunit --testsuite=Integration"
],

"quality-check": [
Expand All @@ -68,31 +69,39 @@
],

"plugins:packages-install": [
"@composer --working-dir=plugins/linked-orders-for-woocommerce packages-install"
"@composer --working-dir=plugins/linked-orders-for-woocommerce packages-install",
"@composer --working-dir=plugins/internal-comments packages-install"
],
"plugins:packages-update": [
"@composer --working-dir=plugins/linked-orders-for-woocommerce packages-update"
"@composer --working-dir=plugins/linked-orders-for-woocommerce packages-update",
"@composer --working-dir=plugins/internal-comments packages-update"
],

"plugins:format:php": [
"@composer --working-dir=plugins/linked-orders-for-woocommerce format:php"
"@composer --working-dir=plugins/linked-orders-for-woocommerce format:php",
"@composer --working-dir=plugins/internal-comments format:php"
],
"plugins:lint:php": [
"@composer --working-dir=plugins/linked-orders-for-woocommerce lint:php"
"@composer --working-dir=plugins/linked-orders-for-woocommerce lint:php",
"@composer --working-dir=plugins/internal-comments lint:php"
],

"plugins:test": [
"@composer --working-dir=plugins/linked-orders-for-woocommerce test"
"@composer --working-dir=plugins/linked-orders-for-woocommerce test",
"@composer --working-dir=plugins/internal-comments test"
],
"plugins:test:unit": [
"@composer --working-dir=plugins/linked-orders-for-woocommerce test:unit"
"@composer --working-dir=plugins/linked-orders-for-woocommerce test:unit",
"@composer --working-dir=plugins/internal-comments test:unit"
],
"plugins:test:integration": [
"@composer --working-dir=plugins/linked-orders-for-woocommerce test:integration"
"@composer --working-dir=plugins/linked-orders-for-woocommerce test:integration",
"@composer --working-dir=plugins/internal-comments test:integration"
],

"plugins:quality-check": [
"@composer --working-dir=plugins/linked-orders-for-woocommerce quality-check"
"@composer --working-dir=plugins/linked-orders-for-woocommerce quality-check",
"@composer --working-dir=plugins/internal-comments quality-check"
],

"changelog:add": "@php vendor/bin/changelogger add",
Expand Down
15 changes: 10 additions & 5 deletions composer.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

10 changes: 5 additions & 5 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,11 @@
"packages-update": "npm update",
"packages-update:wp": "wp-scripts packages-update",

"plugins:packages-install": "npm --prefix=plugins/linked-orders-for-woocommerce run packages-install",
"plugins:packages-update": "npm --prefix=plugins/linked-orders-for-woocommerce run packages-update",
"plugins:packages-update:wp": "npm --prefix=plugins/linked-orders-for-woocommerce run packages-update:wp",
"plugins:packages-install": "npm --prefix=plugins/linked-orders-for-woocommerce run packages-install && npm --prefix=plugins/internal-comments run packages-install",
"plugins:packages-update": "npm --prefix=plugins/linked-orders-for-woocommerce run packages-update && npm --prefix=plugins/internal-comments run packages-update",
"plugins:packages-update:wp": "npm --prefix=plugins/linked-orders-for-woocommerce run packages-update:wp && npm --prefix=plugins/internal-comments run packages-update:wp",

"plugins:build": "npm --prefix=plugins/linked-orders-for-woocommerce run build",
"plugins:build": "npm --prefix=plugins/linked-orders-for-woocommerce run build && npm --prefix=plugins/internal-comments run build",

"wp-env:tests:start": "wp-env --config .wp-env.tests.json start",
"wp-env:tests:stop": "wp-env --config .wp-env.tests.json stop",
Expand All @@ -45,7 +45,7 @@
"check:licenses": "wp-scripts check-licenses",

"test:e2e": "playwright test --config=playwright.config.js",
"plugins:test:e2e": "npm --prefix=plugins/linked-orders-for-woocommerce run test:e2e",
"plugins:test:e2e": "npm --prefix=plugins/linked-orders-for-woocommerce run test:e2e && npm --prefix=plugins/internal-comments run test:e2e",
"test:all": "composer test:integration && npm run test:e2e",

"quality-check:all": "composer quality-check && npm run test:e2e"
Expand Down
39 changes: 39 additions & 0 deletions plugins/internal-comments/.distignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
.cache
.distignore
.editorconfig
.git
.github
.gitignore
.idea
.vscode
.wp-env.json
.wp-env.override.json
.wp-env.tests.json

AGENTS.md
CHANGELOG.md
CLAUDE.md
CONTRIBUTING.md
README.md
SECURITY.md

changelog/
docs/

node_modules/
tests/
vendor/bin/

composer.json
composer.lock
package.json
package-lock.json
tsconfig.json
eslint.config.mjs
stylelint.config.js
phpcs.dist.xml
phpcs.tests.dist.xml
phpstan.dist.neon
phpunit.dist.xml
playwright.config.js
scoper.inc.php
24 changes: 24 additions & 0 deletions plugins/internal-comments/.editorconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
# This file is for unifying the coding style for different editors and IDEs
# editorconfig.org

# WordPress Coding Standards
# https://make.wordpress.org/core/handbook/coding-standards/

root = true

[*]
charset = utf-8
end_of_line = lf
insert_final_newline = true
trim_trailing_whitespace = true
indent_style = tab

[*.{yml,yaml,json}]
indent_style = space
indent_size = 2

[*.md]
trim_trailing_whitespace = false

[*.txt]
end_of_line = crlf
21 changes: 21 additions & 0 deletions plugins/internal-comments/.github/workflows/audit.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
name: Supply-Chain Audit

on:
push:
branches: [trunk]
pull_request:
schedule:
# Weekly Monday at 07:00 UTC — staggered after dependabot (06:00) so PRs from
# dependency bumps surface audit results in the same morning batch.
- cron: '0 7 * * 1'

permissions:
contents: read

jobs:
audit:
name: Audit
# npm gate audits production deps only — the dev-tooling graph (wp-scripts/playwright trees) is advisory via dependabot alerts.
uses: ahegyes/wordpress-configs/.github/workflows/reusable-supply-chain-audit.yml@8d53efd292e4abee4a9c57b0e379434f54bedbe9
with:
npm-audit-flags: '--omit=dev --audit-level=high'
23 changes: 23 additions & 0 deletions plugins/internal-comments/.github/workflows/codeql.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
name: CodeQL

on:
push:
branches: [trunk]
pull_request:
branches: [trunk]
schedule:
- cron: '0 6 * * 1'

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

permissions: {}

jobs:
analyze:
permissions:
actions: read
contents: read
security-events: write
uses: ahegyes/wordpress-configs/.github/workflows/reusable-codeql.yml@8d53efd292e4abee4a9c57b0e379434f54bedbe9
83 changes: 83 additions & 0 deletions plugins/internal-comments/.github/workflows/quality.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: Quality

on:
push:
branches: [trunk]
pull_request:

permissions:
contents: read

jobs:
lint-php:
name: PHP Lint
uses: ahegyes/wordpress-configs/.github/workflows/reusable-php-lint.yml@8d53efd292e4abee4a9c57b0e379434f54bedbe9
with:
php-version: '8.5'
scripts: '["lint:php:phpcs", "lint:php:phpcs:tests", "lint:php:phpstan"]'

lint-scripts-styles:
name: Scripts and styles lint
uses: ahegyes/wordpress-configs/.github/workflows/reusable-scripts-styles-lint.yml@8d53efd292e4abee4a9c57b0e379434f54bedbe9
with:
scripts: '["lint:scripts", "lint:styles", "lint:types"]'

block-json:
name: block.json schema
uses: ahegyes/wordpress-configs/.github/workflows/reusable-block-json-check.yml@8d53efd292e4abee4a9c57b0e379434f54bedbe9

slug:
name: Plugin slug
runs-on: ubuntu-latest
timeout-minutes: 5
outputs:
slug: ${{ steps.slug.outputs.slug }}
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
# GitHub refuses a GITHUB_TOKEN push that changes a workflow, so the fill-in leaves workflows alone and they read the slug the plugin declares.
- name: Read the slug from composer.json
id: slug
run: |
slug=$(jq -r '.extra["text-domain"] // empty' composer.json)
if ! [[ "$slug" =~ ^[a-z0-9]+(-[a-z0-9]+)*$ ]]; then
echo "::error::composer.json's extra.text-domain must be the plugin's kebab-case slug — got '$slug'."
exit 1
fi
echo "slug=$slug" >> "$GITHUB_OUTPUT"

php-syntax:
name: PHP syntax
needs: slug
uses: ahegyes/wordpress-configs/.github/workflows/reusable-php-syntax-check.yml@8d53efd292e4abee4a9c57b0e379434f54bedbe9
with:
php-versions: '["7.4"]'
paths: ${{ format('["{0}.php", "uninstall.php", "includes"]', needs.slug.outputs.slug) }}

readme-lint:
name: readme.txt lint
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: thetwopct/wporg-plugin-readme-linter@1f869aba959265ecc90935b2380c6569d56646ac # v1.0.2
with:
path: readme.txt
fail-on: error

changelog:
name: Changelog fragments
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- uses: shivammathur/setup-php@eb7c497e18156a6bbabfef1d3a82760b9eda3962 # 2.40.0
with:
php-version: '8.5'
coverage: none
tools: composer:v2
- uses: ramsey/composer-install@65e4f84970763564f46a70b8a54b90d033b3bdda # 4.0.0
- run: composer changelog:validate
Loading
Loading