Skip to content

Hub#16

Open
kimo-works wants to merge 47 commits into
masterfrom
hub
Open

Hub#16
kimo-works wants to merge 47 commits into
masterfrom
hub

Conversation

@kimo-works

Copy link
Copy Markdown
Contributor

No description provided.

JurriaanK and others added 30 commits October 14, 2024 17:13
- show correct message after saving plugin license key
- fixed message being visible twice
The hub system centralizes license checks into a single API request, reducing calls from 20+/day to 2/day. It supports both global license keys (for All Access, List Add-ons, Agency plans) and per-plugin keys (for Single Add-on plans), with auto-migration from legacy keys. New admin interface includes a tabbed settings page and a hub catalog page with modern card layout. Added caching with 12-hour TTL, stale fallback, and concurrent request locks. Updated LicenseHandler to use hub cache for validation. Added plan types constants and utilities.
Switches CSS and JS paths from unminified to minified variants for improved performance.
Refactor admin menu registration to detect Gravity Forms availability and provide
top-level menu fallbacks, ensuring GravityWP pages remain accessible regardless
of Gravity Forms installation status. Adjusts priorities to maintain proper menu order.
Consolidate the GravityWP admin experience into a single unified page
(Registry) and implement automatic migration for legacy license keys.

- Refactor `Global_License_Key_Registry` to serve as the primary unified
  admin page, combining the catalog (Hub) and license settings.
- Implement automatic migration of legacy per-plugin license keys from
  v2.0.x addon settings to the new v2.1.0 centralized storage.
- Update `LicenseHandler` to support a multi-stage resolution order:
  individual keys, global keys, and legacy keys.
- Refactor `Hub_Page` to act as a helper class for rendering plugin
  cards rather than a standalone page.
- Update admin assets (CSS/JS) to support the new unified UI components,
  including a premium hero section and improved tab navigation.
- Adjust `Global_License_Key_Loader` to reflect the new component
  loading order and dependency structure.
Improve the robustness of the legacy license key migration process and refine the Hub interface with better status indicators and dynamic purchase links.

- Implement a dual-method legacy key scan in `Hub_Manager`:
  - Scan via registered addon handlers for active plugins.
  - Perform a direct database scan of Gravity Forms addon settings to capture keys from inactive plugins.
- Update `LicenseHandler` to maintain backward compatibility by allowing users to view/edit individual keys while providing clear status information regarding Global License coverage.
- Enhance `Global_License_Key_Registry` to display "Via Global" status and appropriate icons when a plugin is covered by a global key instead of an individual one.
- Refine `Hub_Page` to use dynamic purchase URLs from the catalog and display conditional buttons/pricing for free vs. premium add-ons.
- Update API endpoints to point to the staging environment for testing.
- Increment `Hub_Manager::CACHE_VERSION` to `2.2.0`.
Remove the "Overview" tab and its associated statistics rendering from the `Global_License_Key_Registry` to simplify the Hub interface.
kimo-works and others added 16 commits May 8, 2026 11:48
Introduce a new AJAX-driven workflow for installing, activating, and
deactivating plugins directly from the Hub interface. This replaces the
previous browser-download method with a seamless, in-place UI update.

- Add `Hub_Ajax` class to handle `admin-ajax` requests for plugin actions.
- Implement `initHubActions` in `gwp-admin.js` to manage asynchronous
  button states and error handling.
- Add CSS for loading states and action status messages.
- Refactor `Hub_Page` to use a unified `render_card_footer_html` method
  compatible with both initial server-side rendering and AJAX responses.
- Update `Global_License_Key_Loader` to include the new `Hub_Ajax`
  component in the initialization sequence.
- Localize AJAX endpoints, nonces, and translatable strings to the
  admin JavaScript environment.
Introduce support for displaying plugins with "coming-soon" and "in-development" statuses within the Hub interface.

- Update `Global_License_Key_Registry` to categorize plugins by lifecycle status.
- Add dedicated UI sections and styling for upcoming and developing plugins.
- Implement specialized card footers in `Hub_Page` to provide context-aware information (e.g., "Learn more" links for upcoming products).
- Enhance CSS to include status-specific color coding and visual indicators.
Transition the plugin card UI from displaying lifecycle statuses (coming soon, in development) to displaying descriptive source badges based on the user's license plan. This provides clearer context regarding how a plugin is unlocked.

- Remove CSS and logic related to 'coming-soon' and 'in-development' statuses.
- Implement `resolve_source_badge` in `Hub_Page` to map access sources to specific plan labels (All Access, Agency, List Add-ons, Single Add-on, Free).
- Update `Global_License_Key_Registry` to pass the `global_plan_type` into the rendering context.
- Add new CSS classes for plan-specific badge colors to `gwp-admin.css`.
- Simplify plugin categorization in the registry to focus on license access (unlocked vs locked).
- Added astronaut image to the global license key registry page for improved visual appeal.
- Expanded Hub AJAX class to include a delete handler for plugins, enhancing plugin management capabilities.
- Implemented logging for various actions within the AJAX handlers to aid in debugging and monitoring.
- Improved error handling and response formatting for AJAX requests, ensuring clearer communication of issues.
- Enhanced plugin file resolution logic to handle fuzzy matching for installed plugins, improving user experience.
… license keys

- Incremented CACHE_VERSION constant in Hub_Manager to 2.3.0.
- Modified logic to ensure API is called even when no license keys are present, improving user experience by displaying available plugins instead of an empty page.
- Introduced a mechanism to mark legacy slugs as migrated to prevent re-scanning and confusion in the new UI.
- Implemented a one-time re-keying process to transition legacy plugin keys to their canonical slugs, ensuring consistency across the system.
- Updated logic to handle the migration of individual plugin keys while maintaining user-set values, improving the overall user experience.
Add support for updating plugins directly from the Hub interface. This
includes a new AJAX endpoint to handle the update process, improved
UI feedback with "updating" labels, and logic to resolve download
packages for both licensed and free (WordPress.org) plugins.

- Add `ajax_update` handler to `Hub_Ajax`
- Implement update button in `Hub_Page` using AJAX instead of standard
  WordPress upgrade links
- Add "updating" status labels to `gwp-admin.js` and registry
- Add version comparison logic to prevent redundant updates if the
  plugin is already up to date
Modify the license key registry to exclude free plugins from the
individual license keys card, as they are managed via WordPress.org
and do not utilize license keys. Also remove the cache refresh
timer display from the UI.

- Filter `$all_plugins` to `$paid_plugins` before rendering individual keys
- Remove `gwp-hero__cache-info` display logic
…e license validation

Introduce `Api_Error_Handler` to provide a single source of truth for
user-facing error messages and license state interpretation. This
replaces ad-hoc string building with a consistent catalog of severity-
aware messages used across the Hub, AJAX, and Registry components.

Key changes:
- Add `Api_Error_Handler` to manage error codes, severity, and messages.
- Update `Hub_Ajax` to use centralized error messages for failures.
- Enhance `Global_License_Key_Registry` with improved sanitization that
  prevents single-addon keys from being saved in the global field.
- Improve `Hub_Manager` request construction to ensure `plugin_license_keys`
  is always sent as an associative object, preventing REST API validation
  errors on the server.
- Update `gwp-admin.js` to respect server-stamped invalid states,
  preventing UI "flicker" when a key is validated as invalid by the server.
- Improve robustness of `license_url` generation in Hub requests.
Revamp the administration tab interface to improve usability and visual
consistency. Key improvements include:

- Implement sticky tab navigation with an IntersectionObserver-based
  elevation effect (shadow deepening when stuck).
- Refactor tab styling to use a more modern, consistent color palette
  and improved typography.
- Move the 'Save License Keys' action into the tab navigation bar,
  positioning it as a primary action button.
- Implement conditional visibility for the Save button, ensuring it is
  only displayed when the 'License Keys' tab is active.
- Improve mobile responsiveness by adjusting tab wrapping and layout
  behavior.
Refine the visual layout of the administration hero section and ensure
minified assets are synchronized with recent CSS and JS changes.

- Adjust `.gwp-hero__astronaut` right offset and height for better
  visual alignment.
- Update minified CSS and JS files to reflect structural changes in
  the administration interface.
@kimo-works kimo-works requested a review from JurriaanK June 10, 2026 13:39
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.

2 participants