Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
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
81 changes: 81 additions & 0 deletions .distignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,81 @@
# Files excluded from the distributed plugin.
#
# NOTE ON AUTHORITY: nothing in this repo currently reads this file. The release
# zip is produced by `pnpm release` (gulpfile.mjs), which works from an explicit
# ALLOWLIST — it copies only src/, config/, database/, languages/, the blocks'
# block.json, allfeedback.php, uninstall.php, readme.txt and composer.*. Anything
# not on that list is already absent from the zip.
#
# This file exists for the tools that DO read it — `wp dist-archive`, and the
# WordPress.org deploy actions (10up/action-wordpress-plugin-deploy) — so that a
# future switch to SVN-based distribution does not ship development files by
# accident. Keep it in step with the gulp allowlist.

# ── Version control / CI ──────────────────────────────────────────────────
.git
.gitignore
.gitattributes
.github
.distignore
.editorconfig

# ── Dependencies and lockfiles (composer --no-dev runs at package time) ───
node_modules
vendor
package.json
pnpm-lock.yaml
package-lock.json
yarn.lock
pnpm-workspace.yaml
.npmrc

# ── Build tooling and source that is compiled before packaging ───────────
gulpfile.mjs
webpack.config.js
postcss.config.js
tsconfig.json
tsconfig.app.json
tsconfig.node.json
scripts
build
release
resources/styles
resources/scripts

# ── QA: Playwright suite and the claudegrill working directory ────────────
tests
playwright.config.ts
playwright-report
blob-report
test-results
.playwright
.themegrill-qa

# ── Linting and static analysis ───────────────────────────────────────────
phpcs.xml.dist
.prettierrc
.prettierignore
.phpunit.result.cache

# ── Agent / editor tooling ────────────────────────────────────────────────
.claude
.claudeignore
CLAUDE.md
.tanstack
.vscode
.idea

# ── WordPress.org assets: uploaded to SVN /assets, never inside the plugin ─
.wordpress-org

# ── Docs that are not shipped (readme.txt IS shipped) ─────────────────────
README.md

# ── Local / OS noise ──────────────────────────────────────────────────────
.DS_Store
Thumbs.db
*.log
*.zip
.env
.env.local
.env.*.local
39 changes: 39 additions & 0 deletions .github/workflows/qa-suite.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
# Written by `/claudegrill:setup`. Safe to edit — it is a plain caller.
#
# THIS IS THE ONLY PR CHECK MOST PRODUCTS NEED. No ANTHROPIC_API_KEY, no agent,
# runner minutes only.
#
# It works without AI because the developer already wrote the spec: they ran
# /claudegrill:verify-fix locally, write-spec added a @fresh spec to their
# branch, and they committed it with the fix. By the time CI sees the PR the
# regression is already a deterministic assertion.
#
# ONE job, on pull requests only. Nothing runs on a schedule: the team's model is
# a local /claudegrill:verify-fix while the fix is being written, and the e2e
# suite on the PR. No cron, no nightly, no WordPress-core watcher.
#
# `scope: changed` narrows a run to the areas the diff maps to. That is safe by
# construction — a changed file matching no `area_paths` pattern in
# .themegrill-qa/suite.json falls back to the full tier, so an unmapped change
# costs runner time, never coverage.
#
# Worth knowing, since nothing else runs the suite now: a spec whose area is
# never touched by any PR will not execute. Set `scope: full` below if you would
# rather every PR run the whole @fresh tier.

name: QA suite

on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
workflow_dispatch:

jobs:
# The only check. Scoped, fast, runs on every PR including drafts.
pr:
uses: ThemeGrill/claudegrill/.github/workflows/suite.yml@main
with:
product_slug: allfeedback
product_type: plugin
scope: changed

19 changes: 18 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,9 @@
node_modules/
vendor/
release/
build/

# Package manager lockfiles (regenerated on install)
pnpm-lock.yaml
package-lock.json
yarn.lock

Expand Down Expand Up @@ -40,10 +40,27 @@ Thumbs.db
# PHP compiled container cache
cache/
tmp/
.phpunit.result.cache

# TanStack Router dev artefacts
.tanstack/

# Packaged plugin zips
*.zip

# Logs
*.log
npm-debug.log*

# Claude Code developer-local settings (never commit)
.claude/settings.local.json

# Playwright e2e output (see tests/e2e/)
/test-results/
/playwright-report/
/blob-report/
/.playwright/

# QA raw docs cache — 2 MB of re-fetchable scraped HTML. The digested
# .themegrill-qa/docs/*.md and docs-index.json ARE tracked; this is not.
.themegrill-qa/.docs-cache/
1 change: 0 additions & 1 deletion .phpunit.result.cache

This file was deleted.

75 changes: 75 additions & 0 deletions .themegrill-qa/docs-index.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
{
"source": "https://docs.allfeedback.net/sitemap.xml",
"mode": "sitemap",
"sections": [
{
"section": "building-forms",
"label": "building-forms",
"parent": null,
"file": "docs/building-forms.md",
"articles": 5,
"failed": 0,
"thin": [],
"outcomes": 21,
"titles": [
"Creating & managing forms",
"Displaying Forms",
"Field types",
"Form settings",
"Styling a form"
]
},
{
"section": "settings",
"label": "settings",
"parent": null,
"file": "docs/settings.md",
"articles": 3,
"failed": 0,
"thin": [],
"outcomes": 7,
"titles": [
"Advanced settings",
"Email settings",
"General settings"
]
},
{
"section": "analytics-reporting",
"label": "analytics-reporting",
"parent": null,
"file": "docs/analytics-reporting.md",
"articles": 3,
"failed": 0,
"thin": [],
"outcomes": 4,
"titles": [
"Analytics overview",
"NPS distribution & scoring",
"Session metrics"
]
},
{
"section": "getting-started",
"label": "getting-started",
"parent": null,
"file": "docs/getting-started.md",
"articles": 1,
"failed": 0,
"thin": [],
"outcomes": 4,
"titles": [
"Installation and Setup"
]
}
],
"suggested_areas": [
"getting-started",
"building-forms",
"managing-responses",
"analytics-reporting",
"settings",
"permissions"
],
"_suggested_areas_note": "Extended by hand beyond what the ingest derived. The ingest saw only four sections because managing-responses, notifications-email, privacy-compliance and developers had landing pages with no articles beneath them. 'managing-responses' is a real product area and 'permissions' has no docs section at all but is a real test area. Re-running ingest-docs.mjs will overwrite this \u2014 re-apply it, or the suite's areas stop resolving."
}
Loading
Loading