Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
18ba2ab
Add wp_unslash to $_POST before updating Square Lite settings
shervElmi Feb 3, 2026
1fccdb6
Add wp_unslash to $_POST before updating Stripe Lite settings
shervElmi Feb 3, 2026
b63a49d
Strip accumulated backslashes from Stripe Lite processing_message set…
shervElmi Feb 3, 2026
2417f5e
Replace stripslashes with wp_unslash for Stripe Lite processing_message
shervElmi Feb 3, 2026
dcd08e1
Remove processing_message backslash cleanup now handled at POST level
shervElmi Feb 3, 2026
cb457ef
Strip accumulated backslashes from Stripe Lite processing_message dur…
shervElmi Feb 4, 2026
2db8315
Merge remote-tracking branch 'origin/HEAD' into fix/payment-settings-…
shervElmi Feb 4, 2026
dd5f817
Add whitespace around processing_message backslash cleanup for readab…
shervElmi Feb 4, 2026
77ee941
Update dropdown positioning to handle left edge overflow
shervElmi Feb 12, 2026
7fd5fbe
Merge branch 'master' into fix/6211-field-dropdown-hidden-behind-panel
Crabcyborg Feb 13, 2026
0a12a85
Merge pull request #2953 from Strategy11/fix/6211-field-dropdown-hidd…
Crabcyborg Feb 13, 2026
78db4e2
Add stylelint workflow
Crabcyborg Feb 13, 2026
b46553a
Check if there is an error
Crabcyborg Feb 13, 2026
5cbe679
Put back breaking issue and remove incorrect ignore file key
Crabcyborg Feb 13, 2026
ee867fa
Include scss in stylelint workflow
Crabcyborg Feb 13, 2026
874925e
Merge pull request #2956 from Strategy11/include_scss_in_stylelint_wo…
Crabcyborg Feb 13, 2026
e0d3770
Run npm build
Crabcyborg Feb 13, 2026
26957a0
Merge pull request #2955 from Strategy11/add_stylelint_workflow
Crabcyborg Feb 13, 2026
bd82713
Merge pull request #2920 from Strategy11/fix/payment-settings-backsla…
Crabcyborg Feb 13, 2026
cf2200e
Add object check to usage data cleanup
Crabcyborg Feb 16, 2026
f6d28cb
Merge pull request #2959 from Strategy11/add_object_check_to_usage_da…
Crabcyborg Feb 16, 2026
a9c4386
feat(windsurf): add Big-O algorithm efficiency requirement to code ch…
shervElmi Feb 17, 2026
ffd538e
docs(windsurf): standardize scope formatting in conventional commits …
shervElmi Feb 17, 2026
6acbddc
docs(windsurf): add comments to writing style scope in enterprise pri…
shervElmi Feb 17, 2026
4137437
style(windsurf): standardize punctuation in CSS property grouping list
shervElmi Feb 17, 2026
965305a
feat(windsurf): add Formidable Forms JavaScript coding standards and …
shervElmi Feb 17, 2026
bacf7e1
refactor(windsurf): standardize comment formatting in frm-testing.md …
shervElmi Feb 17, 2026
bf122bf
refactor(windsurf): update PHP version requirements and clarify WordP…
shervElmi Feb 17, 2026
735b99d
feat(windsurf): add Formidable Forms React patterns and best practice…
shervElmi Feb 17, 2026
e235329
feat(windsurf): add Formidable Forms security patterns and helper fun…
shervElmi Feb 17, 2026
66c495d
feat(windsurf): remove inline event handlers from accessibility keybo…
shervElmi Feb 17, 2026
1a055bd
feat(windsurf): remove VIP Standards and Tooling sections from block-…
shervElmi Feb 17, 2026
34c3e2d
refactor(windsurf): simplify WordPress JavaScript standards to match …
shervElmi Feb 17, 2026
303637b
refactor(windsurf): standardize comment formatting in wpvip-block-edi…
shervElmi Feb 17, 2026
0f97365
refactor(windsurf): standardize comment formatting in wpvip-performan…
shervElmi Feb 17, 2026
bf4b545
refactor(windsurf): standardize comment formatting and update securit…
shervElmi Feb 17, 2026
efac250
feat(windsurf): add .windsurf directory to export-ignore in .gitattri…
shervElmi Feb 17, 2026
f597589
refactor(windsurf): add CSS-specific rules for shared classes and sty…
shervElmi Feb 18, 2026
7051ba2
Use eslint 9
Crabcyborg Feb 18, 2026
34c9c3b
Remove extra whitespace
Crabcyborg Feb 18, 2026
7148630
Remove more whitespace
Crabcyborg Feb 18, 2026
266cda9
Add new whitespace rules and fix
Crabcyborg Feb 18, 2026
f08e58f
Update more packages
Crabcyborg Feb 18, 2026
17e089c
Update more packages
Crabcyborg Feb 18, 2026
7f8088f
Prefer returns now over return
Crabcyborg Feb 18, 2026
d7114b5
Stop referencing duplicate key
Crabcyborg Feb 18, 2026
26e295e
Change stylelint workflow after updating versions
Crabcyborg Feb 18, 2026
0dd61bf
Refer append over appendchild
Crabcyborg Feb 18, 2026
1474485
Fix eslint issue
Crabcyborg Feb 18, 2026
44e9dd9
Merge pull request #2961 from Strategy11/use_eslint_9
Crabcyborg Feb 18, 2026
c362def
Merge branch 'master' into docs/address-feedback-windsurf-rules
Crabcyborg Feb 20, 2026
e5db9da
Apply no typeof undefined unicorn rule
Crabcyborg Feb 20, 2026
b89bf21
Merge pull request #2962 from Strategy11/apply_no_typeof_undefind_uni…
Crabcyborg Feb 20, 2026
ad7a383
New eslint rule to prefer object shorthand
Crabcyborg Feb 20, 2026
44703cb
Merge pull request #2963 from Strategy11/new_eslint_rule_to_prefer_ob…
Crabcyborg Feb 20, 2026
97b9e28
Merge branch 'master' into docs/address-feedback-windsurf-rules
Crabcyborg Feb 20, 2026
be7ae87
Add multi-issue fix principle to code change guidelines
shervElmi Feb 20, 2026
604f8e5
Add guideline for PHPDoc/JSDoc parameter descriptions
shervElmi Feb 20, 2026
245d220
Add ESLint documentation with active plugins and usage commands
shervElmi Feb 20, 2026
9ac97a0
Add explicit window assignment guideline for var-to-const/let refacto…
shervElmi Feb 20, 2026
d822d9d
Add new custom eslint rules
Crabcyborg Feb 20, 2026
fdc61eb
Build and minimize js files
Crabcyborg Feb 20, 2026
78b3d59
Merge pull request #2964 from Strategy11/add_new_custom_eslint_rules
Crabcyborg Feb 20, 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
27 changes: 0 additions & 27 deletions .eslintignore

This file was deleted.

229 changes: 0 additions & 229 deletions .eslintrc.json

This file was deleted.

2 changes: 2 additions & 0 deletions .gitattributes
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@
.php-cs-fixer.cache export-ignore
.wp-env.json export-ignore
.coderabbit.yaml export-ignore
.windsurf export-ignore
cypress.config.js export-ignore
/bin/ export-ignore
changelog.txt export-ignore
Expand Down Expand Up @@ -45,6 +46,7 @@ mago.toml export-ignore
/resources/ export-ignore
webpack.dev.js export-ignore
.browserslistrc export-ignore
/eslint-rules/ export-ignore
/phpcs-sniffs/ export-ignore
.deepsource.toml export-ignore
.semgrepignore export-ignore
4 changes: 2 additions & 2 deletions .github/workflows/jscs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@ jobs:
- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: "20.10.0"
node-version: "22"

- name: Cache dependencies
id: cache-npm
Expand All @@ -34,7 +34,7 @@ jobs:

- name: Install dependencies
if: steps.cache-npm.outputs.cache-hit != 'true'
run: npm ci --include=dev
run: npm ci --include=dev --legacy-peer-deps

- name: Run ESLint
run: ./node_modules/.bin/eslint .
40 changes: 40 additions & 0 deletions .github/workflows/stylelint.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
name: Stylelint

on:
push:
branches:
- master
pull_request:
types: [opened, labeled, synchronize]

jobs:
runStylelintInspection:
if: contains(github.event.pull_request.labels.*.name, 'run analysis')
name: Run Stylelint
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v5

- name: Set up Node.js
uses: actions/setup-node@v5
with:
node-version: "22"

- name: Cache dependencies
id: cache-npm
uses: actions/cache@v4
with:
path: |
~/.npm
node_modules
key: ${{ runner.os }}-node-modules-${{ hashFiles('**/package-lock.json') }}
restore-keys: |
${{ runner.os }}-node-modules-

- name: Install dependencies
if: steps.cache-npm.outputs.cache-hit != 'true'
run: npm ci --include=dev --legacy-peer-deps

- name: Run Stylelint
run: npx stylelint "**/*.{css,scss}"
19 changes: 18 additions & 1 deletion .stylelintrc.json
Original file line number Diff line number Diff line change
@@ -1,5 +1,16 @@
{
"extends": "@wordpress/stylelint-config/scss",
"ignoreFiles": [
"**/vendor/**",
"**/node_modules/**",
"**/web-components/**",
"**/frm_admin.css",
"**/frm-settings-components.css",
"**/font_icons.css",
"**/frm_testing_mode.css",
"**/welcome-tour.css",
"**/css/formidableforms.css"
],
"rules": {
"no-descending-specificity": null,
"selector-class-pattern": null,
Expand All @@ -13,6 +24,12 @@
"camelCaseSvgKeywords": true,
"ignoreFunctions": ["currentColor"]
}
]
],
"color-named": null,
"declaration-property-unit-allowed-list": null,
"no-invalid-position-at-import-rule": null,
"font-family-no-missing-generic-family-keyword": null,
"scss/at-import-no-partial-leading-underscore": null,
"scss/load-no-partial-leading-underscore": null
}
}
4 changes: 4 additions & 0 deletions .windsurf/rules/enterprise/code-change-principles.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ Critical principles for enterprise-level plugin development.
3. **Backward compatibility**: Maintain 100% compatibility with existing callers
4. **No custom solutions**: Never invent new patterns. Use existing ones or search the web to review best practices, then follow the official WordPress standards or VIP guidelines.
5. **User changes are final**: If user makes manual changes, treat as authoritative
6. **Multi-issue fixes**: When fixing multiple issues in one request, run all 6 phases independently for each issue. Findings from one issue's phases may inform the next, but every phase is mandatory for every issue, even when issues share a root cause.

---

Expand All @@ -40,6 +41,7 @@ Before proposing solutions:
- Trace execution flow from entry point to failure
- **Analyze complete context** of the class or file being changed — all features, logic, and flows
- **Trace parent hierarchy**: search parent classes and files up to plugin root
- **CSS-Specific Rules - Trace complete style cascade**: When debugging CSS on an element, identify ALL classes on the element and its ancestors, then search for ALL CSS rules affecting it (not just the obvious class). Understand the complete cascade before proposing changes
- Identify ALL affected locations in the codebase
- Map dependencies: what calls this code, what does this code call
- Check plugin requirements: must code work standalone or require Pro/addons
Expand Down Expand Up @@ -78,6 +80,8 @@ Before proposing solutions:
- Never refactor unrelated code in the same commit
- If a rule conflicts with existing code in the file being modified, follow the rule for new code but do not refactor unrelated existing code
- Make the smallest change that completely solves the problem
- **CSS-Specific Rules - Never modify shared CSS classes**: If a CSS class is already used elsewhere in the plugin, do not change its behavior. Instead, add a new specific class for the feature and define new styles for it
- Use Big-O to compare algorithms and choose the most efficient one for large inputs and iterations
- Never change method signatures, return types, or data structures
- Add defensive checks where data comes in, not where used everywhere
- Add PHPDoc/JSDoc for new methods/properties/functions and comments for complex logic
Expand Down
Loading
Loading