Skip to content

WP.org review: four-letter prefix, enqueued styles, readme, public-route hardening - #43

Merged
AllTerrainDeveloper merged 2 commits into
mainfrom
fix/wporg-review
Aug 23, 2026
Merged

AllTerrainDeveloper merged 2 commits into
mainfrom
fix/wporg-review

Conversation

@AllTerrainDeveloper

Copy link
Copy Markdown
Owner

Addresses every item in the WordPress.org plugin review:

  • Prefix — atf_ (3 chars) → alltfo_ (the reviewer's own suggested prefix) across all collision surfaces: functions, constants, hooks/filters, post types (alltfo_form/alltfo_entry/alltfo_theme), post statuses (alltfo-unread …), capabilities, meta keys (_alltfo_*), transients, nonce actions, wp/v2 rest bases, the shell entity kind and DOM events. CSS classes (atf-*), custom properties (--atf-*) and data-atf-* attributes deliberately stay — they collide with nothing and are the tested theme contract.
  • wp_enqueue compliance — the preview page's inline <style> is now assets/css/preview.css, registered and enqueued; the front-end renderer emits theme tokens on the form wrapper's style attribute instead of printing a <style> block. The builder canvas lifts the declarations off the attribute.
  • Readme — display name is now plain AllTerrain Forms (matches the plugin header); the "best contact form plugin" claim is gone.
  • REST /track — args schema (form_id absint, event enum), a form-existence/type check in the handler, and an in-place justification for the intentionally public permission_callback, matching /submit and /resume.
  • Fixed a genuine test flake surfaced along the way: the unguessable-filename test failed whenever the random token happened to contain v2 (~1 in 170 runs).

Verification: 725 PHPUnit + 372 vitest tests green, PHPCS 0 errors, Plugin Check clean (only pre-existing meta_query perf warnings). Deployed to the 8889 QA site with an in-place data migration (post types, statuses, meta keys, caps); a no-JS submission stores an entry end to end and the OpenStation shell loads all windows without errors.

🤖 Generated with Claude Code

https://claude.ai/code/session_0119U4sRRWGcTQdwYreTwpAp

AllTerrainDeveloper and others added 2 commits August 23, 2026 16:40
WordPress.org's plugin review asked for five things, and this is all of
them.

The prefix. `atf_` was three letters and the directory requires four, so
every collision surface now wears `alltfo_` — the reviewer's own
suggestion. Functions, constants, hooks, post types, statuses,
capabilities, meta keys, transients, nonce actions, the `wp/v2` rest
bases and the shell's entity kind all moved; CSS classes, custom
properties and `data-atf-*` attributes stay, because a class name
collides with nothing and the stylesheets are the contract the themes
were tested against.

The style tags. The preview page's document CSS becomes a real enqueued
stylesheet (`assets/css/preview.css`), and the front-end renderer stops
printing a `<style>` block entirely: theme tokens now ride the form
wrapper's own `style` attribute, which scopes for free and hands the
builder's canvas the same declarations off the attribute instead of out
of a parsed tag.

The readme. The display name is "AllTerrain Forms", full stop — the
keyword list is gone, and so is the one sentence that called anything
"the best".

The public routes. `/track` now declares its args, refuses ids that are
not forms, and explains in place why `__return_true` is the correct
permission for an anonymous counter bump — the same reasoning `/submit`
and `/resume` already carried.

And the flake found while proving it: the unguessable-filename test
asserted a random 24-character token never contains "v2", which is true
about one run in 170. The structural regex was always the real
statement; now it stands alone.

725 PHPUnit tests, 372 vitest tests, PHPCS and Plugin Check all green.
The QA site's data was migrated in place (post types, statuses, meta
keys, capabilities) and a no-JS submission stores an entry end to end.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0119U4sRRWGcTQdwYreTwpAp
The double-check against the review found three things the first pass
had walked past.

The readme claimed nothing is ever sent to any third party, four lines
after describing the Akismet integration. Both were almost true; now
one section — External services — is exactly true: Akismet (opt-in,
per form, with its terms and privacy policy linked, as Guideline 6
asks) and webhooks (entries go only where the site owner points them),
and every absolute claim now says "no service of ours" instead of "no
service at all".

And the last two document-level events the rename had missed —
`atf-submitted`, the documented public event, and `atf-refresh` —
now wear the four-letter prefix like everything else.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0119U4sRRWGcTQdwYreTwpAp
@AllTerrainDeveloper
AllTerrainDeveloper merged commit 1e0fbbd into main Aug 23, 2026
3 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant