Releases: lermnote/admin-config
Releases · lermnote/admin-config
Release list
AdminConfig 0.7.0
This release closes out the 2026-08-14 code quality audit (HIGH fixes, dead code, duplication, correctness boundaries, contract drift, test quality, and low-severity findings).
Added
EntityContainerSupporttrait: shared schema state, flash consumption, and nonce output for the metabox, taxonomy, profile, and comment containers.ValidationTargetResolver: single implementation of tab/subsection routing for admin redirects and REST responses.RuntimeBootstrapper: unified plugin/embedded boot scheduling (both now boot with a null registrar).WpDebug::enabled(): sharedWP_DEBUGcheck.FieldValueHelper::sanitize_media_value(): unified media payload sanitization (attachments and url-only values).- E2E coverage for the non-JS options page form (
classic-form-submit.spec.js, JavaScript disabled). - Unit coverage for
OptionsPage::handle_save()/render_page(), theFieldDependencyEvaluatoroperator matrix,ValidationFlash,register_menu(), and lifecycle hook ordering.
Changed
- typography/fieldset/group nested inside a group/repeater now render an explicit "cannot be nested" warning instead of a silently cleared text input.
- color/palette/icon sanitizers store explicit empty submissions and only fall back to schema defaults for missing keys.
Framework::render_options_page()parameter renamed$network→$register_hooksto match its actual meaning.MetaBackend::write()distinguishes no-change updates from real failures (mirrorsOptionBackend).- MetaboxContainer renders every schema section instead of silently dropping all but the first.
- REST protocol: removed the always-true
supportedfield; editable/read-only/unsupported classification is a local client decision. - Renamed
I18nStringstoAdminPageConfig(runtime config, not translations). - Test stubs now honor action priority and accepted argument counts;
add_submenu_pagestub added. php_codesnifferbumped to 3.13.6 (CVE-2026-67434).
Fixed
- Data-source responses no longer treat plain lists as key/value maps (values were becoming
'0'/'1'). MetaBackend::write()returnsboolinstead of the raw meta id (fixed a fatal on every container save against real WordPress).- Tabbed fields fall back to the first panel when
default_tabnames an unknown panel. image_selectno longer rewrites valid choice keys throughsanitize_key().- Media fields preserve url-only payloads instead of dropping them.
- Container registry keys are sanitized on registration, matching the sanitized lookups.
Removed
- Dead code: the unused wp.data store (
resources/store/),SchemaController::schema()/schemas(),legacy_client_config(), registryall()/enable_all()/is_builtin(), thereplace/override_builtinregistration flags, and unused JS exports.
AdminConfig 0.6.0
What's Changed in 0.6.0
Added
SECURITY.mdwith private vulnerability disclosure via GitHub Security Advisories- Tag-triggered release workflow with SHA256 checksums
composer auditandnpm audit --audit-level=criticalCI gates- PHP 8.4 in the CI quality matrix
- Public
OptionsPage::lifecycle()andfield_control_renderer()accessors
Changed
- PHPStan upgraded from level 5 to level 7
- Containers migrated to call
ContainerFieldRenderer/OptionsPageLifecycledirectly add_meta_boxcontext parameter validated (normal/side/advanced)pages.ymlactions pinned to commit SHAswp-coding-standards/wpcsupdated to 3.4.1 (CVE-2026-45293)
Removed
- 17 redundant
phpcs:disable WordPress.Files.FileNamecomments - Three
.patchdevelopment artifacts
Full Changelog: 0.5.1...0.6.0
AdminConfig 0.5.1
Changed
Frameworkgainedrender_options_page( $definition, OptionStore $store, bool $network = false ), a factory that builds anOptionsPageagainst an already-resolved store.mount_options_page()now delegates to it internally.CommentContainer,ProfileContainer,TaxonomyContainer, andMetaboxContainerno longer each hand-constructOptionsPagewith the same six constructor arguments — they callFramework::render_options_page()instead.OptionsPage's constructor now has a single call site outsideFrameworkitself, so future signature changes touch one file instead of five.
What's Changed
Full Changelog: 0.5.0...0.5.1
AdminConfig 0.5.0
What's Changed in 0.5.0
Changed
- Decomposed
OptionsPage(~1500 lines, ~55 methods) into six focused classes undersrc/Framework/Admin/:OptionsPage— core orchestrator (659 lines, 23 methods; -58%)ContainerFieldRenderer— nested containers + flat field rowsFieldDependencyEvaluator— pure dependency-matching logic (no WP globals)SubmissionStateResolver— flash/validation/tab routingSchemaDebugPanel— runtime debug introspection panelOptionsPageLifecycle— menu registration + asset enqueueing
- Extracted
FieldAttributeHelperstrait to deduplicate field attribute escaping, boolean flag reading, nested warning rendering, and number input action buttons across six field type classes
Full Changelog: 0.4.2...0.5.0
AdminConfig 0.4.2
What's New
Added
docs/field-types/— usage examples for every built-in field type, grouped by category..gitattributeswithexport-ignorerules sodocs/,examples/,tests/,tools/, and dev tooling files are excluded from the Composer distribution archive.MAINTAINING.mdconsolidating the manual smoke checklist and release checklist for maintainers.
Changed
- Moved the manual smoke checklist and release checklist out of the public documentation site into
MAINTAINING.md. - Updated documentation and code examples; removed translation functions for labels.
Full Changelog: v0.4.1...v0.4.2
AdminConfig 0.4.1
AdminConfig 0.4.0-alpha
Changelog
CI
- fix: Use system Chrome (
PLAYWRIGHT_CHANNEL=chrome) instead of downloading Playwright Chromium — fixes hanging CI jobs - fix: Use lowercase
admin-configin wp-env container paths for Docker compatibility - perf: Cache Playwright browsers in CI
Code Review Fixes
- fix: Extract
ContextResolver::from_request()outside nested loop inRestEndpoints - fix: Remove inconsistent
function_exists('use_block_editor_for_post_type')guard inMetaboxContainer - fix: Use
self::MAX_IMPORT_SIZEconstant for import size check, narrow try/catch scope inSchemaController - fix: Delegate capability check in
debug_panel_enabled()to$this->capability()inOptionsPage - fix: Extract shared
ContainerSaveSupport::capability_for_schema()helper for container capability logic
Extraction
- Extracted from monorepo
lermnote/lermwith full 345-commit history viagit subtree split - Standalone package installable via Composer (
lerm/admin-config)
🤖 Generated with Claude Code