CustomFields.com: source code and development

Source included in this plugin

All PHP, JavaScript and CSS source is included in the installed plugin. The
readable files in assets/*.js, assets/*.css, assets/local/*.js and
assets/local/*.css are the editable source and the files WordPress executes.
They are not generated bundles. There are no separate minified copies,
source maps, JSX/TypeScript inputs, vendor JavaScript bundles or missing build
inputs. In particular, edit these files directly:

- assets/workspace.js: shared workspace navigation and progressive guidance.
- assets/local/admin.js: structured field controls and nested field editing.
- assets/local/workflows.js: migration review and workflow controls.
- assets/builder.js: field-group builder.
- assets/editor.js: local editor recovery drafts.
- assets/block.js and assets/publishing-blocks.js: WordPress block integration.
- The other descriptively named files under assets/: corresponding screens,
  fields, publishing controls and styles.

PHP entry point: customfields-com.php. Server-side classes are in includes/
and includes/local/. README.md describes extension APIs and storage behavior.
The plugin code is GPL-2.0-or-later; see LICENSE.

Build and edit workflow

No compilation, bundling, npm install or Composer install is required to run,
modify or redistribute this release. On a development WordPress installation:

1. Install the customfields-com folder in wp-content/plugins and activate it.
2. Edit the relevant PHP, JavaScript or CSS file in that folder.
3. Reload the affected screen with the browser cache disabled to see changes.
4. Exercise the affected workflow and inspect the browser console and the
   development site's WordPress debug log before packaging your changes.
5. To package, ZIP the customfields-com folder itself, keeping its name and
   internal paths. No generated asset directory needs to be added.

Optional syntax checks, from this plugin's directory:

  find . -name '*.php' -exec php -l {} \;
  find assets -name '*.js' -exec node --check {} \;

PHP and Node are only needed for the corresponding optional command; Node is
not a plugin runtime dependency. Node --check checks syntax, not WordPress
integration. Test edits on a disposable development site before deployment.

The source uses two-space JavaScript/CSS indentation. JavaScript was formatted
with Prettier 3.9.9 (babel parser, printWidth 100, tabWidth 2, singleQuote true,
trailingComma none, semi true, endOfLine lf, embeddedLanguageFormatting off).
CSS formatting only changes indentation and spacing around declarations and
rules; selectors and property values remain directly authored. Formatting is
optional and is not a step needed to obtain the executable source.

Translations and dependencies

WordPress provides the wp.i18n, block-editor, element, component, data,
api-fetch, editor and media APIs used by the relevant screens. Dependencies
and translations are registered in the PHP enqueue functions. These core
libraries are not copied into this plugin. Retain the existing script paths,
handles and customfields-com text domain when editing. PHP passes translated
labels and per-screen configuration to scripts where appropriate.

To update the translation template with the optional WP-CLI i18n package:

  wp i18n make-pot . languages/customfields-com.pot --domain=customfields-com

This updates a translation template, not JavaScript or CSS build output.

Font provenance

The three self-hosted DM Sans font files in assets/fonts/ are licensed under
the SIL Open Font License 1.1. Their licence and attribution are included in
assets/fonts/OFL.txt. The DM Sans project source is publicly available at:
https://github.com/googlefonts/dm-fonts

The fonts are served from this plugin's own files; no remote font service is
needed. Optional integrations rely on the separately installed products and
WordPress APIs described in README.md; no third-party JavaScript/CSS library
source is bundled or hidden behind a compilation step.
