Plugin Directory

Changeset 3407178


Ignore:
Timestamp:
12/01/2025 07:44:09 PM (3 months ago)
Author:
wprigel
Message:

Version bump 1.0.1

Location:
commandify
Files:
265 added
14 edited

Legend:

Unmodified
Added
Removed
  • commandify/trunk/assets/build/index.asset.php

    r3405278 r3407178  
    1 <?php return array('dependencies' => array('react', 'react-dom', 'wp-components', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => '99e2104e3b32f25a0b73');
     1<?php return array('dependencies' => array('react', 'react-dom', 'wp-components', 'wp-element', 'wp-hooks', 'wp-i18n'), 'version' => '2c4993e7f5b81935d690');
  • commandify/trunk/assets/build/index.css

    r3405278 r3407178  
    1 .commandify-toast-container{bottom:20px;display:flex;flex-direction:column;gap:12px;pointer-events:none;position:fixed;right:20px;z-index:100002}.commandify-toast{align-items:center;animation:slideInRight .3s ease-out;background:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);display:flex;max-width:400px;min-width:320px;padding:16px;pointer-events:auto}.commandify-toast-icon{align-items:center;display:flex;flex-shrink:0;height:24px;justify-content:center;margin-right:12px;width:24px}.commandify-toast-icon .dashicons{font-size:24px;height:24px;width:24px}.commandify-toast-message{color:#1d2327;flex:1;font-size:14px;line-height:1.5}.commandify-toast-close{align-items:center;background:transparent;border:none;cursor:pointer;display:flex;flex-shrink:0;height:24px;justify-content:center;margin-left:12px;opacity:.5;padding:0;transition:opacity .2s;width:24px}.commandify-toast-close:hover{opacity:1}.commandify-toast-close .dashicons{color:#50575e;font-size:20px;height:20px;width:20px}.commandify-toast-success{border-left:4px solid #00a32a}.commandify-toast-success .commandify-toast-icon .dashicons{color:#00a32a}.commandify-toast-error{border-left:4px solid #d63638}.commandify-toast-error .commandify-toast-icon .dashicons{color:#d63638}.commandify-toast-info{border-left:4px solid #2271b1}.commandify-toast-info .commandify-toast-icon .dashicons{color:#2271b1}@keyframes slideInRight{0%{opacity:0;transform:translateX(100px)}to{opacity:1;transform:translateX(0)}}@media(max-width:480px){.commandify-toast-container{bottom:10px;left:10px;right:10px}.commandify-toast{max-width:none;min-width:auto}}.commandify-confirm-overlay{align-items:center;animation:fadeIn .2s ease-out;background:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999999}.commandify-confirm-dialog{animation:slideInScale .2s ease-out;background:#fff;border-radius:8px;box-shadow:0 4px 24px rgba(0,0,0,.2);max-width:calc(100vw - 40px);width:480px}@keyframes slideInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.commandify-confirm-header{border-bottom:1px solid #dcdcde;padding:20px 24px}.commandify-confirm-header h3{color:#1d2327;font-size:18px;font-weight:600;margin:0}.commandify-confirm-body{padding:24px}.commandify-confirm-body p{color:#50575e;font-size:14px;line-height:1.6;margin:0}.commandify-confirm-footer{border-top:1px solid #dcdcde;display:flex;gap:12px;justify-content:flex-end;padding:16px 24px}.commandify-confirm-button,.commandify-confirm-cancel{border:1px solid #dcdcde;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;padding:8px 16px;transition:all .2s}.commandify-confirm-button:focus,.commandify-confirm-cancel:focus{outline:2px solid #2271b1;outline-offset:2px}.commandify-confirm-cancel{background:#fff;color:#1d2327}.commandify-confirm-cancel:hover{background:#f6f7f7}.commandify-confirm-button{background:#2271b1;border-color:#2271b1;color:#fff}.commandify-confirm-button:hover{background:#1e639c}.commandify-confirm-button.is-destructive{background:#d63638;border-color:#d63638}.commandify-confirm-button.is-destructive:hover{background:#c9292b}@media(max-width:480px){.commandify-confirm-dialog{width:calc(100vw - 40px)}}.commandify-overlay{align-items:flex-start;animation:fadeIn .2s ease-out;background:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;padding-top:20vh;position:fixed;right:0;top:0;z-index:100000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.commandify-palette{animation:slideIn .2s ease-out;background:#fff;border-radius:12px;box-shadow:0 4px 24px rgba(0,0,0,.15);display:flex;flex-direction:column;max-height:60vh;max-width:calc(100vw - 40px);overflow:hidden;position:relative;width:600px}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.commandify-progress-bar{background:rgba(0,0,0,.05);border-radius:12px 12px 0 0;height:3px;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:1000}.commandify-progress-bar-fill{background:#2271b1;height:100%;transition:width .25s ease;width:0}.commandify-progress-bar-fill.is-loading{transition:width .8s ease;width:70%}.commandify-progress-bar-fill.is-complete{transition:width .2s ease;width:100%}@keyframes progressSlide{0%{transform:translateX(-100%)}50%{transform:translateX(0)}to{transform:translateX(100%)}}.commandify-breadcrumb{align-items:center;background:#f6f7f7;border-bottom:1px solid #dcdcde;display:flex;gap:8px;padding:12px 16px}.commandify-back-button{align-items:center;background:transparent;border:none;border-radius:4px;cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;transition:background .2s;width:28px}.commandify-back-button:hover{background:rgba(0,0,0,.05)}.commandify-back-button .dashicons{color:#50575e;font-size:20px;height:20px;width:20px}.commandify-breadcrumb-text{color:#1d2327;font-size:14px;font-weight:500}.commandify-search{align-items:center;border-bottom:1px solid #dcdcde;box-sizing:border-box;display:flex;gap:12px;height:60px;padding:8px 20px}.commandify-search .dashicons{color:#50575e;font-size:20px}.commandify-search-input{background:transparent;border:none!important;box-shadow:none!important;caret-color:#1d2327;color:#1d2327;flex:1;font-size:16px;outline:none!important;padding-bottom:4px!important;padding-top:4px!important}.commandify-search-input::-moz-placeholder{color:#50575e}.commandify-search-input::placeholder{color:#50575e}.commandify-search-input:disabled{cursor:not-allowed;opacity:.6}.commandify-search-input:focus{border-color:none;box-shadow:none}.commandify-search-time{color:#50575e;font-size:12px;font-variant-numeric:tabular-nums;min-width:48px;text-align:right}.commandify-results{box-sizing:border-box;margin:8px 0;max-height:calc(60vh - 60px);overflow-y:auto;padding:8px}.commandify-command{align-items:center;border-radius:6px;cursor:pointer;display:flex;padding:12px}.commandify-command.is-selected{background:#2271b1;color:#fff}.commandify-command.is-selected .commandify-command-badge,.commandify-command.is-selected .commandify-command-description{color:hsla(0,0%,100%,.8)}.commandify-command.is-selected .dashicons{color:#fff}.commandify-command.is-disabled{cursor:not-allowed;opacity:.7;pointer-events:none}.commandify-command.is-executing{cursor:default;pointer-events:none;transition:opacity .2s ease,background .2s ease}.commandify-command.is-executing .commandify-command-description,.commandify-command.is-executing .commandify-command-title,.commandify-command.is-executing .dashicons{opacity:.85}.commandify-command-icon{align-items:center;display:flex;flex-shrink:0;height:32px;justify-content:center;margin-right:12px;width:32px}.commandify-command-icon .dashicons{color:#50575e;font-size:20px;height:20px;width:20px}.commandify-command-icon-img{border-radius:4px;height:32px;-o-object-fit:contain;object-fit:contain;width:32px}.commandify-command-content{flex:1;min-width:0}.commandify-command-title{color:#1d2327;font-size:14px;font-weight:500;margin-bottom:2px}.commandify-command-description{color:#50575e;display:-webkit-box;font-size:12px;-webkit-line-clamp:2;line-height:1.4;max-height:2.8em;overflow:hidden;white-space:normal;-webkit-box-orient:vertical}.commandify-command-badge{background:#f0f0f1;border-radius:4px;color:#50575e;font-size:11px;margin-left:12px;padding:4px 8px;text-transform:capitalize;white-space:nowrap}.commandify-command.is-selected .commandify-command-title{color:#fff}.commandify-command.is-selected .commandify-command-badge{background:#f0f0f1;color:#50575e}.commandify-command.is-selected .commandify-favorite-btn,.commandify-command:hover .commandify-favorite-btn{opacity:1}.commandify-favorite-btn{align-items:center;background:transparent;border:none;color:#d1d5db;cursor:pointer;display:flex;flex-shrink:0;font-size:22px;height:32px;justify-content:center;line-height:1;margin-left:8px;opacity:0;padding:0;transition:opacity .2s;width:32px}.commandify-favorite-btn:hover{color:#f0c000}.commandify-favorite-btn.is-favorite{color:#f0c000;opacity:1}.commandify-loading{align-items:center;color:#50575e;display:flex;flex-direction:column;justify-content:center;padding:40px}.commandify-loading .dashicons{font-size:32px;height:32px;margin-bottom:12px;width:32px}.commandify-loading .dashicons.spin{animation:spin 1s linear infinite}.commandify-loading span:last-child{font-size:14px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.commandify-empty{align-items:center;color:#50575e;display:flex;flex-direction:column;justify-content:center;padding:40px}.commandify-empty .dashicons{font-size:48px;height:48px;margin-bottom:12px;opacity:.5;width:48px}.commandify-empty p{font-size:14px;margin:0}.commandify-preview-custom{font-size:13px;line-height:1.5;width:100%}.commandify-preview-custom *{box-sizing:border-box}.commandify-preview-custom .dashicons{font-family:dashicons;font-size:16px;height:16px;line-height:1;vertical-align:middle;width:16px}.commandify-preview-custom .preview-header{align-items:center;display:flex;font-weight:600;justify-content:space-between;margin-bottom:8px}.commandify-preview-custom .preview-meta{color:#50575e;display:flex;flex-wrap:wrap;font-size:12px;gap:12px;margin:8px 0}.commandify-preview-custom .preview-badge{border-radius:3px;display:inline-block;font-size:11px;font-weight:500;padding:2px 8px}.commandify-footer{align-items:center;background:#f9fafb;border-top:1px solid #dcdcde;color:#50575e;display:flex;flex-shrink:0;font-size:12px;justify-content:space-between;padding:10px 16px}.commandify-footer kbd{background:#fff;border:1px solid #c3c4c7;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08);color:#1d2327;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:11px;font-weight:500;line-height:1.4;margin:0 2px;padding:2px 6px}.commandify-footer-hints{align-items:center;display:flex;gap:16px}.commandify-footer-hint{align-items:center;display:flex;gap:4px;white-space:nowrap}.commandify-footer-count{color:#8c8f94;font-size:11px;font-weight:500}.commandify-empty{text-align:center}.commandify-empty .commandify-empty-title{color:#1d2327;font-size:14px;font-weight:500;margin:8px 0 16px}.commandify-empty .commandify-empty-hint{color:#50575e;font-size:13px;margin:8px 0 0}.commandify-empty-suggestions{margin-left:auto;margin-right:auto;margin-top:16px;max-width:400px;padding:0 20px;text-align:left}.commandify-empty-suggestions-title{color:#1d2327;font-size:12px;font-weight:600;letter-spacing:.5px;margin-bottom:8px;text-transform:uppercase}.commandify-empty-suggestions-list{list-style:none;margin:0;padding:0}.commandify-empty-suggestions-list li{color:#50575e;font-size:13px;padding:6px 0 6px 20px;position:relative}.commandify-empty-suggestions-list li:before{content:"💡";left:0;position:absolute;top:6px}@media(max-width:768px){.commandify-overlay{padding-top:10vh}.commandify-palette{max-height:80vh}.commandify-footer{align-items:flex-start;flex-direction:column;gap:8px}.commandify-footer-hints{flex-wrap:wrap;gap:8px}.commandify-footer-count{text-align:center;width:100%}}.commandify-form-modal .components-modal__frame,.components-modal__screen-overlay.commandify-form-modal{z-index:100001}.commandify-form-modal .commandify-form-description{color:#50575e;font-size:14px;margin-bottom:20px}.commandify-form-modal .commandify-form-field-group{margin-bottom:20px}.commandify-form-modal .commandify-form-field-group:last-child{margin-bottom:0}.commandify-form-modal .commandify-form-field-label{color:#1d2327;display:block;font-size:13px;font-weight:500;margin-bottom:8px}.commandify-form-modal .commandify-form-required{color:#d63638}.commandify-form-modal .commandify-form-field-error{color:#d63638;font-size:12px;margin-top:6px}.commandify-form-modal .commandify-form-field-help{color:#50575e;font-size:12px;font-style:italic;margin-top:6px}.commandify-form-modal .commandify-form-actions{border-top:1px solid #dcdcde;display:flex;gap:12px;justify-content:flex-end;margin-top:24px;padding-top:20px}.commandify-form-modal .components-select-control__input.has-error,.commandify-form-modal .components-text-control__input.has-error,.commandify-form-modal .components-textarea-control__input.has-error{border-color:#d63638}
     1.commandify-toast-container{bottom:20px;display:flex;flex-direction:column;gap:12px;pointer-events:none;position:fixed;right:20px;z-index:100002}.commandify-toast{align-items:center;animation:slideInRight .3s ease-out;background:#fff;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,.15);display:flex;max-width:400px;min-width:320px;padding:16px;pointer-events:auto}.commandify-toast-icon{align-items:center;display:flex;flex-shrink:0;height:24px;justify-content:center;margin-right:12px;width:24px}.commandify-toast-icon .dashicons{font-size:24px;height:24px;width:24px}.commandify-toast-message{color:#1d2327;flex:1;font-size:14px;line-height:1.5}.commandify-toast-close{align-items:center;background:transparent;border:none;cursor:pointer;display:flex;flex-shrink:0;height:24px;justify-content:center;margin-left:12px;opacity:.5;padding:0;transition:opacity .2s;width:24px}.commandify-toast-close:hover{opacity:1}.commandify-toast-close .dashicons{color:#50575e;font-size:20px;height:20px;width:20px}.commandify-toast-success{border-left:4px solid #00a32a}.commandify-toast-success .commandify-toast-icon .dashicons{color:#00a32a}.commandify-toast-error{border-left:4px solid #d63638}.commandify-toast-error .commandify-toast-icon .dashicons{color:#d63638}.commandify-toast-info{border-left:4px solid #2271b1}.commandify-toast-info .commandify-toast-icon .dashicons{color:#2271b1}@keyframes slideInRight{0%{opacity:0;transform:translateX(100px)}to{opacity:1;transform:translateX(0)}}@media(max-width:480px){.commandify-toast-container{bottom:10px;left:10px;right:10px}.commandify-toast{max-width:none;min-width:auto}}.commandify-confirm-overlay{align-items:center;animation:fadeIn .2s ease-out;background:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:9999999}.commandify-confirm-dialog{animation:slideInScale .2s ease-out;background:#fff;border-radius:8px;box-shadow:0 4px 24px rgba(0,0,0,.2);max-width:calc(100vw - 40px);width:480px}@keyframes slideInScale{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.commandify-confirm-header{border-bottom:1px solid #dcdcde;padding:20px 24px}.commandify-confirm-header h3{color:#1d2327;font-size:18px;font-weight:600;margin:0}.commandify-confirm-body{padding:24px}.commandify-confirm-body p{color:#50575e;font-size:14px;line-height:1.6;margin:0}.commandify-confirm-footer{border-top:1px solid #dcdcde;display:flex;gap:12px;justify-content:flex-end;padding:16px 24px}.commandify-confirm-button,.commandify-confirm-cancel{border:1px solid #dcdcde;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;padding:8px 16px;transition:all .2s}.commandify-confirm-button:focus,.commandify-confirm-cancel:focus{outline:2px solid #2271b1;outline-offset:2px}.commandify-confirm-cancel{background:#fff;color:#1d2327}.commandify-confirm-cancel:hover{background:#f6f7f7}.commandify-confirm-button{background:#2271b1;border-color:#2271b1;color:#fff}.commandify-confirm-button:hover{background:#1e639c}.commandify-confirm-button.is-destructive{background:#d63638;border-color:#d63638}.commandify-confirm-button.is-destructive:hover{background:#c9292b}@media(max-width:480px){.commandify-confirm-dialog{width:calc(100vw - 40px)}}.commandify-overlay{align-items:flex-start;animation:fadeIn .2s ease-out;background:rgba(0,0,0,.5);bottom:0;display:flex;justify-content:center;left:0;padding-top:20vh;position:fixed;right:0;top:0;z-index:100000}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.commandify-palette{animation:slideIn .2s ease-out;background:#fff;border-radius:12px;box-shadow:0 4px 24px rgba(0,0,0,.15);display:flex;flex-direction:column;max-height:60vh;max-width:calc(100vw - 40px);overflow:hidden;position:relative;width:600px}@keyframes slideIn{0%{opacity:0;transform:translateY(-20px)}to{opacity:1;transform:translateY(0)}}.commandify-progress-bar{background:rgba(0,0,0,.05);border-radius:12px 12px 0 0;height:3px;left:0;overflow:hidden;position:absolute;right:0;top:0;z-index:1000}.commandify-progress-bar-fill{background:#2271b1;height:100%;transition:width .25s ease;width:0}.commandify-progress-bar-fill.is-loading{transition:width .8s ease;width:70%}.commandify-progress-bar-fill.is-complete{transition:width .2s ease;width:100%}@keyframes progressSlide{0%{transform:translateX(-100%)}50%{transform:translateX(0)}to{transform:translateX(100%)}}.commandify-breadcrumb{align-items:center;background:#f6f7f7;border-bottom:1px solid #dcdcde;display:flex;flex-shrink:0;gap:8px;padding:12px 16px}.commandify-back-button{align-items:center;background:transparent;border:none;border-radius:4px;cursor:pointer;display:flex;height:28px;justify-content:center;padding:0;transition:background .2s;width:28px}.commandify-back-button:hover{background:rgba(0,0,0,.05)}.commandify-back-button .dashicons{color:#50575e;font-size:20px;height:20px;width:20px}.commandify-breadcrumb-text{color:#1d2327;font-size:14px;font-weight:500}.commandify-search{align-items:center;border-bottom:1px solid #dcdcde;box-sizing:border-box;display:flex;flex-shrink:0;gap:12px;height:60px;padding:8px 20px}.commandify-search .dashicons{color:#50575e;font-size:20px}.commandify-search-input{background:transparent;border:none!important;box-shadow:none!important;caret-color:#1d2327;color:#1d2327;flex:1;font-size:16px;height:auto!important;line-height:1.5!important;margin:0!important;outline:none!important;padding:4px 0!important}.commandify-search-input::-moz-placeholder{color:#50575e}.commandify-search-input::placeholder{color:#50575e}.commandify-search-input:disabled{cursor:not-allowed;opacity:.6}.commandify-search-input:focus{border-color:none;box-shadow:none}.commandify-search-time{color:#50575e;font-size:12px;font-variant-numeric:tabular-nums;min-width:48px;text-align:right}.commandify-results{box-sizing:border-box;flex:1 1 auto;margin:8px 0;max-height:calc(60vh - 60px);min-height:100px;overflow-y:auto;padding:8px}.commandify-command{align-items:center;border-radius:6px;cursor:pointer;display:flex;padding:12px}.commandify-command.is-selected{background:#2271b1;color:#fff}.commandify-command.is-selected .commandify-command-badge,.commandify-command.is-selected .commandify-command-description{color:hsla(0,0%,100%,.8)}.commandify-command.is-selected .dashicons{color:#fff}.commandify-command.is-disabled{cursor:not-allowed;opacity:.7;pointer-events:none}.commandify-command.is-executing{cursor:default;pointer-events:none;transition:opacity .2s ease,background .2s ease}.commandify-command.is-executing .commandify-command-description,.commandify-command.is-executing .commandify-command-title,.commandify-command.is-executing .dashicons{opacity:.85}.commandify-command-icon{align-items:center;display:flex;flex-shrink:0;height:32px;justify-content:center;margin-right:12px;width:32px}.commandify-command-icon .dashicons{color:#50575e;font-size:20px;height:20px;width:20px}.commandify-command-icon-img{border-radius:4px;height:32px;-o-object-fit:contain;object-fit:contain;width:32px}.commandify-command-content{flex:1;min-width:0}.commandify-command-title{color:#1d2327;font-size:14px;font-weight:500;margin-bottom:2px}.commandify-command-description{color:#50575e;display:-webkit-box;font-size:12px;-webkit-line-clamp:2;line-height:1.4;max-height:2.8em;overflow:hidden;white-space:normal;-webkit-box-orient:vertical}.commandify-command-badge{background:#f0f0f1;border-radius:4px;color:#50575e;font-size:11px;margin-left:12px;padding:4px 8px;text-transform:capitalize;white-space:nowrap}.commandify-command.is-selected .commandify-command-title{color:#fff}.commandify-command.is-selected .commandify-command-badge{background:#f0f0f1;color:#50575e}.commandify-command.is-selected .commandify-favorite-btn,.commandify-command:hover .commandify-favorite-btn{opacity:1}.commandify-favorite-btn{align-items:center;background:transparent;border:none;color:#d1d5db;cursor:pointer;display:flex;flex-shrink:0;font-size:22px;height:32px;justify-content:center;line-height:1;margin-left:8px;opacity:0;padding:0;transition:opacity .2s;width:32px}.commandify-favorite-btn:hover{color:#f0c000}.commandify-favorite-btn.is-favorite{color:#f0c000;opacity:1}.commandify-loading{align-items:center;color:#50575e;display:flex;flex-direction:column;justify-content:center;padding:40px}.commandify-loading .dashicons{font-size:32px;height:32px;margin-bottom:12px;width:32px}.commandify-loading .dashicons.spin{animation:spin 1s linear infinite}.commandify-loading span:last-child{font-size:14px}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.commandify-empty{align-items:center;color:#50575e;display:flex;flex-direction:column;justify-content:center;padding:40px}.commandify-empty .dashicons{font-size:48px;height:48px;margin-bottom:12px;opacity:.5;width:48px}.commandify-empty p{font-size:14px;margin:0}.commandify-preview-custom{font-size:13px;line-height:1.5;width:100%}.commandify-preview-custom *{box-sizing:border-box}.commandify-preview-custom .dashicons{font-family:dashicons;font-size:16px;height:16px;line-height:1;vertical-align:middle;width:16px}.commandify-preview-custom .preview-header{align-items:center;display:flex;font-weight:600;justify-content:space-between;margin-bottom:8px}.commandify-preview-custom .preview-meta{color:#50575e;display:flex;flex-wrap:wrap;font-size:12px;gap:12px;margin:8px 0}.commandify-preview-custom .preview-badge{border-radius:3px;display:inline-block;font-size:11px;font-weight:500;padding:2px 8px}.commandify-footer{align-items:center;background:#f9fafb;border-top:1px solid #dcdcde;color:#50575e;display:flex;flex-shrink:0;font-size:12px;justify-content:space-between;padding:10px 16px}.commandify-footer kbd{background:#fff;border:1px solid #c3c4c7;border-radius:3px;box-shadow:0 1px 0 rgba(0,0,0,.08);color:#1d2327;display:inline-block;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif;font-size:11px;font-weight:500;line-height:1.4;margin:0 2px;padding:2px 6px}.commandify-footer-hints{align-items:center;display:flex;gap:16px}.commandify-footer-hint{align-items:center;display:flex;gap:4px;white-space:nowrap}.commandify-footer-count{color:#8c8f94;font-size:11px;font-weight:500}.commandify-empty{text-align:center}.commandify-empty .commandify-empty-title{color:#1d2327;font-size:14px;font-weight:500;margin:8px 0 16px}.commandify-empty .commandify-empty-hint{color:#50575e;font-size:13px;margin:8px 0 0}.commandify-empty-suggestions{margin-left:auto;margin-right:auto;margin-top:16px;max-width:400px;padding:0 20px;text-align:left}.commandify-empty-suggestions-title{color:#1d2327;font-size:12px;font-weight:600;letter-spacing:.5px;margin-bottom:8px;text-transform:uppercase}.commandify-empty-suggestions-list{list-style:none;margin:0;padding:0}.commandify-empty-suggestions-list li{color:#50575e;font-size:13px;padding:6px 0 6px 20px;position:relative}.commandify-empty-suggestions-list li:before{content:"💡";left:0;position:absolute;top:6px}@media(max-width:768px){.commandify-overlay{padding-top:10vh}.commandify-palette{max-height:80vh}.commandify-footer{align-items:flex-start;flex-direction:column;gap:8px}.commandify-footer-hints{flex-wrap:wrap;gap:8px}.commandify-footer-count{text-align:center;width:100%}}.commandify-form-modal .components-modal__frame,.components-modal__screen-overlay.commandify-form-modal{z-index:100001}.commandify-form-modal .commandify-form-description{color:#50575e;font-size:14px;margin-bottom:20px}.commandify-form-modal .commandify-form-field-group{margin-bottom:20px}.commandify-form-modal .commandify-form-field-group:last-child{margin-bottom:0}.commandify-form-modal .commandify-form-field-label{color:#1d2327;display:block;font-size:13px;font-weight:500;margin-bottom:8px}.commandify-form-modal .commandify-form-required{color:#d63638}.commandify-form-modal .commandify-form-field-error{color:#d63638;font-size:12px;margin-top:6px}.commandify-form-modal .commandify-form-field-help{color:#50575e;font-size:12px;font-style:italic;margin-top:6px}.commandify-form-modal .commandify-form-actions{border-top:1px solid #dcdcde;display:flex;gap:12px;justify-content:flex-end;margin-top:24px;padding-top:20px}.commandify-form-modal .components-select-control__input.has-error,.commandify-form-modal .components-text-control__input.has-error,.commandify-form-modal .components-textarea-control__input.has-error{border-color:#d63638}
  • commandify/trunk/assets/build/index.js

    r3405278 r3407178  
    33e[t.name]=(0,n.sprintf)((0,n.__)("Minimum value is %s","commandify"),t.min)),void 0!==t.max&&o>t.max&&(
    44/* translators: %s: Maximum value */
    5 e[t.name]=(0,n.sprintf)((0,n.__)("Maximum value is %s","commandify"),t.max))}}),y(e),0===Object.keys(e).length})()&&s(l)}},r.map(t=>v(t)?(0,e.createElement)("div",{key:t.name,className:"commandify-form-field-group"},(0,e.createElement)("label",{className:"commandify-form-field-label"},t.label,t.required&&(0,e.createElement)("span",{className:"commandify-form-required"}," *")),(t=>{var a,n,o;const s=null!==(a=null!==(n=t.value)&&void 0!==n?n:t.default)&&void 0!==a?a:"",c=null!==(o=l[t.name])&&void 0!==o?o:s,m=!!f[t.name];switch(t.type){case"textarea":case"checkbox":return(0,e.createElement)(u.CheckboxControl,{checked:!!c,onChange:e=>p(t.name,e),disabled:i});case"number":return(0,e.createElement)(u.TextControl,{type:"number",value:c,onChange:e=>p(t.name,e),placeholder:t.placeholder||"",min:t.min,max:t.max,step:t.step,disabled:i,className:m?"has-error":""});case"email":return(0,e.createElement)(u.TextControl,{type:"email",value:c,onChange:e=>p(t.name,e),placeholder:t.placeholder||"",disabled:i,className:m?"has-error":""});case"select":{let a=[];Array.isArray(t.options)?a=t.options.map(e=>{var t,a,n,o;return"object"==typeof e&&null!==e?{label:null!==(t=null!==(a=e.label)&&void 0!==a?a:e.value)&&void 0!==t?t:"",value:null!==(n=null!==(o=e.value)&&void 0!==o?o:e.label)&&void 0!==n?n:""}:{label:e,value:e}}):t.options&&"object"==typeof t.options&&(a=Object.entries(t.options).map(([e,t])=>({label:t,value:e})));const n=t.placeholder?[{label:t.placeholder,value:""}]:[];return(0,e.createElement)(u.SelectControl,{value:c,options:[...n,...a],onChange:e=>p(t.name,e),disabled:i,className:m?"has-error":""})}default:return(0,e.createElement)(u.TextControl,{type:"url"===t.type?"url":"text",value:c,onChange:e=>p(t.name,e),placeholder:t.placeholder||"",disabled:i,className:m?"has-error":""})}})(t),f[t.name]&&(0,e.createElement)("div",{className:"commandify-form-field-error"},f[t.name]),t.help&&(0,e.createElement)("div",{className:"commandify-form-field-help"},t.help)):null),(0,e.createElement)("div",{className:"commandify-form-actions"},(0,e.createElement)(u.Button,{variant:"secondary",onClick:c,disabled:i},(0,n.__)("Cancel","commandify")),(0,e.createElement)(u.Button,{variant:"primary",type:"submit",disabled:i,isBusy:i},a.submit_text||(0,n.__)("Submit","commandify")))))},y=function(e,a,n=150){const[o,s]=(0,t.useState)(a),[c,i]=(0,t.useState)(0),m=function(e,a=150){const[n,o]=(0,t.useState)(e);return(0,t.useEffect)(()=>{const t=setTimeout(()=>{o(e)},a);return()=>clearTimeout(t)},[e,a]),n}(e,n),r=(0,t.useMemo)(()=>Array.isArray(a)?[...a].sort((e,t)=>{const a="number"==typeof e.priority?e.priority:0,n="number"==typeof t.priority?t.priority:0;return a===n?(e.title||"").localeCompare(t.title||""):n-a}):[],[a]);return(0,t.useEffect)(()=>{if(!m)return s(r),void i(0);if([m.trim().startsWith(">"),m.trim().toLowerCase().startsWith("toggle")].some(Boolean))return s(r),void i(0);const e=performance.now(),t=function(e,t){const a=t.toLowerCase().trim(),n=a.split(/\s+/).filter(e=>e.length>0),o="go to"===a||"navigate"===a;return e.map(e=>{let t=0;const s=(e.title||"").toLowerCase(),c=Array.isArray(e.keywords)?e.keywords.map(e=>e.toLowerCase()):[],i=(e.category||"").toLowerCase();if(o){if("navigation"!==i)return{cmd:e,score:0};t+=2e3}const m=s.split(/[\s\-→]+/).filter(e=>e.length>0);if(s===a&&(t+=1e3),s.startsWith(a)&&(t+=800),!n.every(e=>{const t=m.some(t=>t===e||t.startsWith(e)||s.includes(e)),a=c.some(t=>t===e||t.startsWith(e)||t.includes(e));return t||a})&&!o)return{cmd:e,score:0};let r=0;n.forEach(e=>{m.some(t=>t.startsWith(e))&&(r++,t+=300)}),n.forEach(e=>{m.some(t=>t===e)&&(t+=250)}),s.includes(a)&&(t+=150),c.some(e=>e===a)&&(t+=120),c.some(e=>e.startsWith(a))&&(t+=80),n.forEach(e=>{c.some(t=>t.includes(e))&&(t+=30)}),i===a&&(t+=60),r===n.length&&(t+=100);const l="number"==typeof e.priority?5*e.priority:0;return t+=l,{cmd:e,score:t}}).filter(e=>e.score>0).sort((e,t)=>t.score-e.score).map(e=>e.cmd)}(r,m),a=performance.now()-e;s(t),i(a)},[m,r]),{results:o,searching:!1,searchTime:c}};let p=0;const v=function({isOpen:a,onClose:c,preferences:i,setPreferences:r}){const[u,v]=(0,t.useState)(""),[w,h]=(0,t.useState)(0),[g,E]=(0,t.useState)(null),[b,_]=(0,t.useState)(!1),[N,C]=(0,t.useState)(null),[x,S]=(0,t.useState)(!1),[k,T]=(0,t.useState)(!1),[D,P]=(0,t.useState)(null),[O,F]=(0,t.useState)([]),[L,j]=(0,t.useState)(!1),[I,A]=(0,t.useState)([]),[M,q]=(0,t.useState)(!0),[W,R]=(0,t.useState)(!1),[B,U]=(0,t.useState)([]),[$,X]=(0,t.useState)(0),[K,H]=(0,t.useState)([]),[J,V]=(0,t.useState)(null),[G,z]=(0,t.useState)({}),{commands:Q,loading:Y}=function(){const[e,a]=(0,t.useState)([]),[n,o]=(0,t.useState)(!1),[s,c]=(0,t.useState)(null),i=(0,t.useCallback)(()=>{window.commandifyData&&window.commandifyData.commands?(a([...window.commandifyData.commands]),o(!1)):(c("Commands not available"),o(!1))},[]);return(0,t.useEffect)(()=>{i();const e=e=>{if(e.detail&&e.detail.command_id&&window.commandifyData?.commands){const t=window.commandifyData.commands.findIndex(t=>t.id===e.detail.command_id);-1!==t&&(window.commandifyData.commands[t].toggle_state=e.detail.new_state,window.commandifyData.commands[t].state_label=e.detail.new_state?"ON":"OFF")}i()};window.addEventListener("commandify-toggle-updated",e);const t=e=>{if(e.detail&&e.detail.setting_id&&window.commandifyData?.commands){const t=window.commandifyData.commands.findIndex(t=>t.id===e.detail.setting_id);-1!==t&&window.commandifyData.commands[t].setting&&(window.commandifyData.commands[t].setting.current_value=e.detail.new_value,"toggle"===window.commandifyData.commands[t].setting.field_type&&(window.commandifyData.commands[t].toggle_state=e.detail.new_value,window.commandifyData.commands[t].state_label=e.detail.new_value?"ON":"OFF"))}i()};return window.addEventListener("commandify-setting-updated",t),()=>{window.removeEventListener("commandify-toggle-updated",e),window.removeEventListener("commandify-setting-updated",t)}},[i]),{commands:e,loading:n,error:s}}(),Z=(0,t.useRef)(null),ee=(0,t.useCallback)(async()=>{if(window.commandifyPro&&window.commandifyPro.features&&window.commandifyPro.features.favorites)try{const e=await fetch(commandifyData.apiUrl+"/default-view",{headers:{"X-WP-Nonce":commandifyData.nonce}}),t=await e.json();if(t.favorites){const e=t.favorites.map(e=>e.id);U(e)}}catch(e){console.error("Failed to load favorites:",e)}},[]);(0,t.useEffect)(()=>{const e=()=>{R(!0),ee()};return window.addEventListener("commandify-pro-loaded",e),window.commandifyPro&&window.commandifyPro.features&&window.commandifyPro.features.favorites&&ee(),()=>{window.removeEventListener("commandify-pro-loaded",e),Z.current&&(clearTimeout(Z.current),Z.current=null)}},[ee]),(0,t.useEffect)(()=>{const e=()=>{X(e=>e+1)};return window.addEventListener("commandify-pattern-updated",e),()=>window.removeEventListener("commandify-pattern-updated",e)},[]);const te=i?.debounce_delay||150,ae=i?.results_per_page||50,ne=i?.hidden_commands||[],{results:oe,searching:se,searchTime:ce}=y(u,Q,0),ie=commandifyData.currentScreen||"",me=(0,t.useMemo)(()=>{let e=oe.filter(e=>!ne.includes(e.id));if(ie){const t=[],a=[];e.forEach(e=>{e.context&&0!==e.context.length?"navigation"!==e.type&&"search"!==e.type?e.context.includes(ie)&&t.push(e):e.context.includes(ie)?t.push(e):a.push(e):a.push(e)}),e=[...t,...a]}e=e.slice(0,ae);const t=(0,o.applyFilters)("commandify.commands",e,{query:u,searchMode:D,isOpen:a,proReady:W,currentScreen:ie,patternUpdate:$});return Array.isArray(t)?t:e},[oe,ne,ie,ae,u,D,a,W,$]),re="undefined"!=typeof window&&!!window.commandifyPro&&!W&&a&&!D&&!u,{toasts:le,success:de,error:ue,removeToast:fe}=function(){const[e,a]=(0,t.useState)([]),n=(0,t.useCallback)((e,t="success",n=4e3)=>{const s=++p,c={id:s,message:e,type:t};return a(e=>[...e,c]),n>0&&setTimeout(()=>{o(s)},n),s},[]),o=(0,t.useCallback)(e=>{a(t=>t.filter(t=>t.id!==e))},[]),s=(0,t.useCallback)((e,t)=>n(e,"success",t),[n]),c=(0,t.useCallback)((e,t)=>n(e,"error",t),[n]),i=(0,t.useCallback)((e,t)=>n(e,"info",t),[n]);return{toasts:e,addToast:n,removeToast:o,success:s,error:c,info:i}}(),ye=(0,t.useRef)(null);(0,t.useEffect)(()=>{a&&(v(""),h(0),P(null),F([]),A([]),H([]))},[a]),(0,t.useEffect)(()=>{h(0)},[u]);const pe=(0,t.useCallback)(()=>{if(I.length>0){const e=I[I.length-1];A(e=>e.slice(0,-1)),P(e.searchMode),F(e.searchResults),v(e.query),h(e.selectedIndex)}else P(null),v(""),F([]),h(0)},[I]);(0,t.useEffect)(()=>{if(!D||D.isSubmenu)return;const e=D.min_chars||0;if(u.length<e&&e>0)return void F([]);const t=D.debounce||te,a=setTimeout(async()=>{j(!0);try{const e=await fetch(commandifyData.apiUrl+"/execute",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce},body:JSON.stringify({command_id:D.id,search_query:u})}),t=await e.json();t.success&&t.results&&F(t.results)}catch(e){console.error("Search error:",e)}finally{j(!1)}},0===u.length?0:t);return()=>clearTimeout(a)},[u,D,te]),(0,t.useEffect)(()=>{if(!D||!D.isSubmenu)return;if(!u||""===u.trim())return void F(K);const e=u.toLowerCase().trim(),t=K.filter(t=>{const a=(t.title||"").toLowerCase(),n=(t.description||"").toLowerCase();return a.includes(e)||n.includes(e)});F(t)},[u,D,K]);const ve=(0,t.useCallback)(async e=>{const t=J;_(!0),C(t.id),S(!1),T(!1);const a=!t?.instant;Z.current&&clearTimeout(Z.current),a&&(Z.current=setTimeout(()=>{T(!0)},120));try{const a=new URLSearchParams(window.location.search).get("post")||window.wp&&window.wp.data&&window.wp.data.select("core/editor")?.getCurrentPostId(),o={command_id:t.id,context:{},post_id:a||null,...e};t.params&&Object.assign(o,t.params);const s=await fetch(commandifyData.apiUrl+"/execute",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce},body:JSON.stringify(o)}),c=await s.json();_(!1),C(null),V(null),q(!0),c.success?(z(a=>({...a,[t.id]:e})),de(c.message||(0,n.__)("Command executed successfully","commandify")),S(!0),setTimeout(()=>S(!1),300)):ue(c.message||(0,n.__)("Command execution failed","commandify"))}catch(e){_(!1),C(null),V(null),q(!0),ue(e.message||(0,n.__)("An error occurred","commandify"))}finally{Z.current&&(clearTimeout(Z.current),Z.current=null),T(!1)}},[J,de,ue]),we=(0,t.useCallback)(()=>{b||(V(null),q(!0))},[b]),he=(0,t.useCallback)(async e=>{let t=!1;S(!1),T(!1);const a=!e?.instant;if(Z.current&&clearTimeout(Z.current),a&&(Z.current=setTimeout(()=>{T(!0)},120)),e.setting_id&&void 0!==e.value)window.commandifyExecuteSettingOption?window.commandifyExecuteSettingOption(e.setting_id,e.value,{setIsExecuting:_,setExecutingCommandId:C,success:de,error:ue,onClose:c,handleBack:pe}):ue((0,n.__)("Settings handler not loaded","commandify"));else{_(!0),C(e.id);try{const a=new URLSearchParams(window.location.search).get("post")||window.wp&&window.wp.data&&window.wp.data.select("core/editor")?.getCurrentPostId(),o={command_id:e.id,context:{},post_id:a||null};e.params&&Object.assign(o,e.params);const s=await fetch(commandifyData.apiUrl+"/execute",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce},body:JSON.stringify(o)}),i=await s.json();if(i.success){if(i.data&&!0===i.data.continue&&void 0!==i.data.offset){const e=async t=>{const a={...o,offset:t},s=await fetch(commandifyData.apiUrl+"/execute",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce},body:JSON.stringify(a)}),i=await s.json();if(!i.success)return ue(i.message||(0,n.__)("Command execution failed","commandify")),_(!1),void C(null);i.data&&!0===i.data.continue&&void 0!==i.data.offset?(await new Promise(e=>setTimeout(e,100)),await e(i.data.offset)):(i.silent||de(i.message||(0,n.__)("Command executed successfully","commandify")),_(!1),C(null),setTimeout(()=>{c()},500))};return void await e(i.data.offset)}if(i.silent||de(i.message||(0,n.__)("Command executed successfully","commandify")),i.js_action){t=!0,S(!0);const e=async e=>{if("string"!=typeof e)return;const t=e.split(":"),a=t[0],n=t.slice(1).join(":");if("click"===a){const e=document.querySelector(n);if(e)return e.click(),!0}else if("doubleclick"===a||"dblclick"===a){const e=document.querySelector(n);if(e){const t=new MouseEvent("dblclick",{bubbles:!0,cancelable:!0});return e.dispatchEvent(t),!0}}else if("focus"===a){const e=document.querySelector(n);if(e)return setTimeout(()=>{e.focus(),e.scrollIntoView({behavior:"smooth",block:"center"})},100),!0}else{if("open"===a)return window.open(n,"_blank"),!0;if("copy"===a){if(navigator.clipboard&&navigator.clipboard.writeText)try{return await navigator.clipboard.writeText(n),!0}catch(e){return console.error("Failed to copy:",e),!1}return!1}}return!1},a=Array.isArray(i.js_action)?i.js_action.filter(Boolean):"string"==typeof i.js_action&&i.js_action?[i.js_action]:[],n=async()=>{let t=!1,n=!1;for(let o=0;o<a.length;o++){const s=a[o];s&&"string"==typeof s&&(s.startsWith("copy:")&&(n=!0),await e(s)&&(t=!0,o<a.length-1&&await new Promise(e=>setTimeout(e,350))))}t&&!n&&setTimeout(()=>{c()},100)};return void(a.length>0&&n())}if(i.reload)return void setTimeout(()=>{window.location.reload()},1e3);if(i.redirect)return void(window.location.href=i.redirect);if(i.data&&e.id&&e.id.startsWith("set-"))try{const e=await fetch(commandifyData.apiUrl+"/preferences",{method:"GET",headers:{"X-WP-Nonce":commandifyData.nonce}}),t=await e.json();t.success&&r(t.data)}catch(e){console.error("Failed to reload preferences:",e)}i.updated_actions&&i.updated_actions.length>0?(F(i.updated_actions),h(0)):"navigation"===e.type?c():e.has_dynamic_callback?D&&D.isSubmenu?pe():D&&!D.isSubmenu&&"install-plugin"!==D.id&&"install-theme"!==D.id&&setTimeout(async()=>{try{const e=await fetch(commandifyData.apiUrl+"/execute",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce},body:JSON.stringify({command_id:D.id,search_query:u})}),t=await e.json();t.success&&t.results&&F(t.results)}catch(e){console.error("Search refresh error:",e)}},100):c()}else ue(i.message||(0,n.__)("Command execution failed","commandify"))}catch(e){ue((0,n.__)("An error occurred while executing the command","commandify"))}finally{Z.current&&(clearTimeout(Z.current),Z.current=null),t?(_(!1),C(null),S(!1),T(!1)):(S(!0),setTimeout(()=>{_(!1),C(null),S(!1),T(!1)},400))}}},[D,u,de,ue,c,pe]),ge=(0,t.useCallback)(e=>{if((0,o.doAction)("commandify.beforeExecute",e),e.form&&e.form.fields)return q(!1),void V(e);if("navigation"!==e.type){if("search"===e.type)return A(e=>[...e,{searchMode:D,searchResults:O,query:u,selectedIndex:w}]),P(e),v(""),void h(0);if("submenu"===e.type&&e.actions)return A(e=>[...e,{searchMode:D,searchResults:O,query:u,selectedIndex:w}]),P({...e,isSubmenu:!0}),H(e.actions),F(e.actions),v(""),void h(0);if("setting"===e.type)return e.form&&e.form.fields?(q(!1),void V(e)):void(e.actions&&e.actions.length>0?(A(e=>[...e,{searchMode:D,searchResults:O,query:u,selectedIndex:w}]),P({...e,isSubmenu:!0}),H(e.actions),F(e.actions),v(""),h(0)):window.commandifyExecuteSetting?window.commandifyExecuteSetting(e,{setIsExecuting:_,setExecutingCommandId:C,success:de,error:ue,onClose:c}):ue((0,n.__)("Settings handler not loaded","commandify")));if("toggle"!==e.type)if("action"!==e.type)he(e);else if(e.confirm){const t="object"==typeof e.confirm?e.confirm:{};E({title:t.title||(0,n.__)("Confirm Action","commandify"),message:t.message||(0,n.__)("Are you sure you want to proceed?","commandify"),confirmText:t.confirm_text||(0,n.__)("Confirm","commandify"),cancelText:t.cancel_text||(0,n.__)("Cancel","commandify"),destructive:t.destructive||!1,command:e})}else he(e);else window.commandifyExecuteToggle?window.commandifyExecuteToggle(e,{setIsExecuting:_,setExecutingCommandId:C,success:de,error:ue,onClose:c}):ue((0,n.__)("Toggle handler not loaded","commandify"))}else"_blank"===e.target?window.open(e.callback,"_blank"):window.location.href=e.callback},[D,O,u,w,I,K,de,ue,c,he]),Ee=(0,t.useMemo)(()=>D?O:me,[D,O,me]);(0,t.useEffect)(()=>{if(!a||J)return;const e=e=>{const t=Ee.length;"Escape"===e.key?(e.preventDefault(),D?pe():c()):"ArrowDown"===e.key?(e.preventDefault(),q(!1),h(e=>{const a=e+1;return a>=t?0:a})):"ArrowUp"===e.key?(e.preventDefault(),q(!1),h(e=>{const a=e-1;return a<0?t-1:a})):"Enter"===e.key?(e.preventDefault(),Ee&&Ee[w]&&ge(Ee[w])):"Backspace"===e.key&&""===u&&D&&(e.preventDefault(),pe())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[a,J,D,Ee,w,u,c,ge,pe]);const be=!!window.commandifyPro?.features?.favorites;return(0,e.createElement)(e.Fragment,null,J&&(0,e.createElement)(f,{form:J.form,command:J,onSubmit:ve,onClose:we,isExecuting:b,updatedFieldValues:G[J.id]}),a&&(0,e.createElement)("div",{className:"commandify-overlay",ref:ye,onClick:e=>{e.target===ye.current&&c()}},(0,e.createElement)("div",{className:"commandify-palette",onMouseMove:()=>{M||q(!0)}},b&&k&&(0,e.createElement)("div",{className:"commandify-progress-bar"},(0,e.createElement)("div",{className:`commandify-progress-bar-fill ${b?"is-loading":""} ${x?"is-complete":""}`})),D&&(0,e.createElement)("div",{className:"commandify-breadcrumb"},(0,e.createElement)("button",{onClick:pe,className:"commandify-back-button"},(0,e.createElement)("span",{className:"dashicons dashicons-arrow-left-alt2"})),(0,e.createElement)("span",{className:"commandify-breadcrumb-text"},D.title)),(0,e.createElement)(s,{value:u,onChange:v,placeholder:D?D.placeholder:(0,n.__)("Type a command or search...","commandify"),disabled:b||!!J,searchTime:D?0:ce}),(0,e.createElement)(m,{commands:D?O:me,selectedIndex:w,onSelect:ge,onHover:e=>{M&&h(e)},loading:re||(D?L:Y||se),isExecuting:b,executingCommandId:N,onFavoriteToggle:async e=>{if(window.commandifyPro&&window.commandifyPro.features&&window.commandifyPro.features.favorites)try{const t=await fetch(commandifyData.apiUrl+"/favorites/"+e,{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce}}),a=await t.json();a.success&&(a.is_favorite?U(t=>[...t,e]):U(t=>t.filter(t=>t!==e)),window.dispatchEvent(new CustomEvent("commandify-reload-pro")))}catch(e){console.error("Failed to toggle favorite:",e)}},favoriteIds:B,showFavoriteButton:be,query:u}),(0,e.createElement)("div",{className:"commandify-footer"},(0,e.createElement)("div",{className:"commandify-footer-hints"},(0,e.createElement)("span",{className:"commandify-footer-hint"},(0,e.createElement)("kbd",null,"↑"),(0,e.createElement)("kbd",null,"↓")," ",(0,n.__)("Navigate","commandify")),(0,e.createElement)("span",{className:"commandify-footer-hint"},(0,e.createElement)("kbd",null,"↵")," ",(0,n.__)("Select","commandify")),(D||K.length>0)&&(0,e.createElement)("span",{className:"commandify-footer-hint"},(0,e.createElement)("kbd",null,"←")," ",(0,n.__)("Back","commandify")),(0,e.createElement)("span",{className:"commandify-footer-hint"},(0,e.createElement)("kbd",null,"Esc")," ",(0,n.__)("Close","commandify"))),!Y&&!se&&(0,e.createElement)("div",{className:"commandify-footer-count"},(D?O:me).length," ",(0,n.__)("commands","commandify"))))),(0,e.createElement)(d,{isOpen:null!==g,onConfirm:()=>{g&&g.command&&he(g.command),E(null)},onCancel:()=>{E(null)},title:g?.title,message:g?.message,confirmText:g?.confirmText,cancelText:g?.cancelText,destructive:g?.destructive}),(0,e.createElement)(l,{toasts:le,onClose:fe}))},w=document.getElementById("commandify-root");w&&(0,t.render)((0,e.createElement)(function(){const[n,o]=(0,t.useState)(!1),[s,c]=(0,t.useState)(window.commandifyData?.preferences||{}),i=s.keyboard_shortcut||"mod+k";return function(e,a=!0){(0,t.useEffect)(()=>{if(!a)return;const t=t=>{const a=navigator.platform.toUpperCase().indexOf("MAC")>=0;for(const[n,o]of Object.entries(e)){const e=n.toLowerCase().split("+").map(e=>e.trim()),s=e.filter(e=>"mod"===e||"ctrl"===e||"alt"===e||"shift"===e),c=e.find(e=>"mod"!==e&&"ctrl"!==e&&"alt"!==e&&"shift"!==e);let i=!0;if(s.includes("mod")&&(i=i&&(a?t.metaKey:t.ctrlKey)),s.includes("ctrl")&&(i=i&&t.ctrlKey),s.includes("alt")){const e=t.getModifierState&&t.getModifierState("Alt")||t.altKey;i=i&&e}s.includes("shift")&&(i=i&&t.shiftKey);let m=!0;if(c){let e="";t.code&&(e=t.code.toLowerCase().replace(/^key/,"").replace(/^digit/,"").replace(/^numpad/,""));const n=t.key?t.key.toLowerCase():"";m="space"===c?"space"===e||" "===n||"space"===n:a&&t.altKey?e===c:e===c||n===c}if(i&&m){o(t);break}}};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,a])}({[i]:e=>{e.preventDefault(),o(e=>!e)}},!0),(0,a.createPortal)((0,e.createElement)(v,{isOpen:n,onClose:()=>o(!1),preferences:s,setPreferences:c}),document.body)},null),w)})();
     5e[t.name]=(0,n.sprintf)((0,n.__)("Maximum value is %s","commandify"),t.max))}}),y(e),0===Object.keys(e).length})()&&s(l)}},r.map(t=>v(t)?(0,e.createElement)("div",{key:t.name,className:"commandify-form-field-group"},(0,e.createElement)("label",{className:"commandify-form-field-label"},t.label,t.required&&(0,e.createElement)("span",{className:"commandify-form-required"}," *")),(t=>{var a,n,o;const s=null!==(a=null!==(n=t.value)&&void 0!==n?n:t.default)&&void 0!==a?a:"",c=null!==(o=l[t.name])&&void 0!==o?o:s,m=!!f[t.name];switch(t.type){case"textarea":case"checkbox":return(0,e.createElement)(u.CheckboxControl,{checked:!!c,onChange:e=>p(t.name,e),disabled:i});case"number":return(0,e.createElement)(u.TextControl,{type:"number",value:c,onChange:e=>p(t.name,e),placeholder:t.placeholder||"",min:t.min,max:t.max,step:t.step,disabled:i,className:m?"has-error":""});case"email":return(0,e.createElement)(u.TextControl,{type:"email",value:c,onChange:e=>p(t.name,e),placeholder:t.placeholder||"",disabled:i,className:m?"has-error":""});case"select":{let a=[];Array.isArray(t.options)?a=t.options.map(e=>{var t,a,n,o;return"object"==typeof e&&null!==e?{label:null!==(t=null!==(a=e.label)&&void 0!==a?a:e.value)&&void 0!==t?t:"",value:null!==(n=null!==(o=e.value)&&void 0!==o?o:e.label)&&void 0!==n?n:""}:{label:e,value:e}}):t.options&&"object"==typeof t.options&&(a=Object.entries(t.options).map(([e,t])=>({label:t,value:e})));const n=t.placeholder?[{label:t.placeholder,value:""}]:[];return(0,e.createElement)(u.SelectControl,{value:c,options:[...n,...a],onChange:e=>p(t.name,e),disabled:i,className:m?"has-error":""})}default:return(0,e.createElement)(u.TextControl,{type:"url"===t.type?"url":"text",value:c,onChange:e=>p(t.name,e),placeholder:t.placeholder||"",disabled:i,className:m?"has-error":""})}})(t),f[t.name]&&(0,e.createElement)("div",{className:"commandify-form-field-error"},f[t.name]),t.help&&(0,e.createElement)("div",{className:"commandify-form-field-help"},t.help)):null),(0,e.createElement)("div",{className:"commandify-form-actions"},(0,e.createElement)(u.Button,{variant:"secondary",onClick:c,disabled:i},(0,n.__)("Cancel","commandify")),(0,e.createElement)(u.Button,{variant:"primary",type:"submit",disabled:i,isBusy:i},a.submit_text||(0,n.__)("Submit","commandify")))))},y=function(e,a,n=150){const[o,s]=(0,t.useState)(a),[c,i]=(0,t.useState)(0),m=function(e,a=150){const[n,o]=(0,t.useState)(e);return(0,t.useEffect)(()=>{const t=setTimeout(()=>{o(e)},a);return()=>clearTimeout(t)},[e,a]),n}(e,n),r=(0,t.useMemo)(()=>Array.isArray(a)?[...a].sort((e,t)=>{const a="number"==typeof e.priority?e.priority:0,n="number"==typeof t.priority?t.priority:0;return a===n?(e.title||"").localeCompare(t.title||""):n-a}):[],[a]);return(0,t.useEffect)(()=>{if(!m)return s(r),void i(0);if([m.trim().startsWith(">"),m.trim().toLowerCase().startsWith("toggle")].some(Boolean))return s(r),void i(0);const e=performance.now(),t=function(e,t){const a=t.toLowerCase().trim(),n=a.split(/\s+/).filter(e=>e.length>0),o="go to"===a||"navigate"===a;return e.map(e=>{let t=0;const s=(e.title||"").toLowerCase(),c=Array.isArray(e.keywords)?e.keywords.map(e=>e.toLowerCase()):[],i=(e.category||"").toLowerCase();if(o){if("navigation"!==i)return{cmd:e,score:0};t+=2e3}const m=s.split(/[\s\-→]+/).filter(e=>e.length>0);if(s===a&&(t+=1e3),s.startsWith(a)&&(t+=800),!n.every(e=>{const t=m.some(t=>t===e||t.startsWith(e)||s.includes(e)),a=c.some(t=>t===e||t.startsWith(e)||t.includes(e));return t||a})&&!o)return{cmd:e,score:0};let r=0;n.forEach(e=>{m.some(t=>t.startsWith(e))&&(r++,t+=300)}),n.forEach(e=>{m.some(t=>t===e)&&(t+=250)}),s.includes(a)&&(t+=150),c.some(e=>e===a)&&(t+=120),c.some(e=>e.startsWith(a))&&(t+=80),n.forEach(e=>{c.some(t=>t.includes(e))&&(t+=30)}),i===a&&(t+=60),r===n.length&&(t+=100);const l="number"==typeof e.priority?5*e.priority:0;return t+=l,{cmd:e,score:t}}).filter(e=>e.score>0).sort((e,t)=>t.score-e.score).map(e=>e.cmd)}(r,m),a=performance.now()-e;s(t),i(a)},[m,r]),{results:o,searching:!1,searchTime:c}};let p=0;const v=function({isOpen:a,onClose:c,preferences:i,setPreferences:r}){const[u,v]=(0,t.useState)(""),[w,h]=(0,t.useState)(0),[g,E]=(0,t.useState)(null),[b,_]=(0,t.useState)(!1),[N,C]=(0,t.useState)(null),[x,S]=(0,t.useState)(!1),[k,T]=(0,t.useState)(!1),[D,P]=(0,t.useState)(null),[O,F]=(0,t.useState)([]),[L,j]=(0,t.useState)(!1),[I,A]=(0,t.useState)([]),[M,q]=(0,t.useState)(!0),[W,R]=(0,t.useState)(!1),[B,U]=(0,t.useState)([]),[$,X]=(0,t.useState)(0),[K,H]=(0,t.useState)([]),[J,V]=(0,t.useState)(null),[G,z]=(0,t.useState)({}),{commands:Q,loading:Y}=function(){const[e,a]=(0,t.useState)([]),[n,o]=(0,t.useState)(!1),[s,c]=(0,t.useState)(null),i=(0,t.useCallback)(()=>{window.commandifyData&&window.commandifyData.commands?(a([...window.commandifyData.commands]),o(!1)):(c("Commands not available"),o(!1))},[]);return(0,t.useEffect)(()=>{i();const e=e=>{if(e.detail&&e.detail.command_id&&window.commandifyData?.commands){const t=window.commandifyData.commands.findIndex(t=>t.id===e.detail.command_id);-1!==t&&(window.commandifyData.commands[t].toggle_state=e.detail.new_state,window.commandifyData.commands[t].state_label=e.detail.new_state?"ON":"OFF")}i()};window.addEventListener("commandify-toggle-updated",e);const t=e=>{if(e.detail&&e.detail.setting_id&&window.commandifyData?.commands){const t=window.commandifyData.commands.findIndex(t=>t.id===e.detail.setting_id);-1!==t&&window.commandifyData.commands[t].setting&&(window.commandifyData.commands[t].setting.current_value=e.detail.new_value,"toggle"===window.commandifyData.commands[t].setting.field_type&&(window.commandifyData.commands[t].toggle_state=e.detail.new_value,window.commandifyData.commands[t].state_label=e.detail.new_value?"ON":"OFF"))}i()};return window.addEventListener("commandify-setting-updated",t),()=>{window.removeEventListener("commandify-toggle-updated",e),window.removeEventListener("commandify-setting-updated",t)}},[i]),{commands:e,loading:n,error:s}}(),Z=(0,t.useRef)(null),ee=(0,t.useCallback)(async()=>{if(window.commandifyPro&&window.commandifyPro.features&&window.commandifyPro.features.favorites)try{const e=await fetch(commandifyData.apiUrl+"/default-view",{headers:{"X-WP-Nonce":commandifyData.nonce}}),t=await e.json();if(t.favorites){const e=t.favorites.map(e=>e.id);U(e)}}catch(e){console.error("Failed to load favorites:",e)}},[]);(0,t.useEffect)(()=>{const e=()=>{R(!0),ee()};return window.addEventListener("commandify-pro-loaded",e),window.commandifyPro&&window.commandifyPro.features&&window.commandifyPro.features.favorites&&ee(),()=>{window.removeEventListener("commandify-pro-loaded",e),Z.current&&(clearTimeout(Z.current),Z.current=null)}},[ee]),(0,t.useEffect)(()=>{const e=()=>{X(e=>e+1)};return window.addEventListener("commandify-pattern-updated",e),()=>window.removeEventListener("commandify-pattern-updated",e)},[]);const te=i?.debounce_delay||150,ae=i?.results_per_page||50,ne=i?.hidden_commands||[],{results:oe,searching:se,searchTime:ce}=y(u,Q,0),ie=commandifyData.currentScreen||"",me=(0,t.useMemo)(()=>{let e=oe.filter(e=>!ne.includes(e.id));if(ie){const t=[],a=[];e.forEach(e=>{e.context&&0!==e.context.length?"navigation"!==e.type&&"search"!==e.type?e.context.includes(ie)&&t.push(e):e.context.includes(ie)?t.push(e):a.push(e):a.push(e)}),e=[...t,...a]}e=e.slice(0,ae);const t=(0,o.applyFilters)("commandify.commands",e,{query:u,searchMode:D,isOpen:a,proReady:W,currentScreen:ie,patternUpdate:$});return Array.isArray(t)?t:e},[oe,ne,ie,ae,u,D,a,W,$]),re="undefined"!=typeof window&&!!window.commandifyPro&&!W&&a&&!D&&!u,{toasts:le,success:de,error:ue,removeToast:fe}=function(){const[e,a]=(0,t.useState)([]),n=(0,t.useCallback)((e,t="success",n=4e3)=>{const s=++p,c={id:s,message:e,type:t};return a(e=>[...e,c]),n>0&&setTimeout(()=>{o(s)},n),s},[]),o=(0,t.useCallback)(e=>{a(t=>t.filter(t=>t.id!==e))},[]),s=(0,t.useCallback)((e,t)=>n(e,"success",t),[n]),c=(0,t.useCallback)((e,t)=>n(e,"error",t),[n]),i=(0,t.useCallback)((e,t)=>n(e,"info",t),[n]);return{toasts:e,addToast:n,removeToast:o,success:s,error:c,info:i}}(),ye=(0,t.useRef)(null);(0,t.useEffect)(()=>{a&&(v(""),h(0),P(null),F([]),A([]),H([]))},[a]),(0,t.useEffect)(()=>{h(0)},[u]);const pe=(0,t.useCallback)(()=>{if(I.length>0){const e=I[I.length-1];A(e=>e.slice(0,-1)),P(e.searchMode),F(e.searchResults),v(e.query),h(e.selectedIndex)}else P(null),v(""),F([]),h(0)},[I]);(0,t.useEffect)(()=>{if(!D||D.isSubmenu)return;const e=D.min_chars||0;if(u.length<e&&e>0)return void F([]);const t="number"==typeof D.debounce?D.debounce:te,a=0===u.length?0:t,n=setTimeout(async()=>{j(!0);try{const e=await fetch(commandifyData.apiUrl+"/execute",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce},body:JSON.stringify({command_id:D.id,search_query:u})}),t=await e.json();t.success&&t.results&&F(t.results)}catch(e){console.error("Search error:",e)}finally{j(!1)}},a);return()=>clearTimeout(n)},[u,D,te]),(0,t.useEffect)(()=>{if(!D||!D.isSubmenu)return;if(!u||""===u.trim())return void F(K);const e=u.toLowerCase().trim(),t=K.filter(t=>{const a=(t.title||"").toLowerCase(),n=(t.description||"").toLowerCase();return a.includes(e)||n.includes(e)});F(t)},[u,D,K]);const ve=(0,t.useCallback)(async e=>{const t=J;_(!0),C(t.id),S(!1),T(!1);const a=!t?.instant;Z.current&&clearTimeout(Z.current),a&&(Z.current=setTimeout(()=>{T(!0)},120));try{const a=new URLSearchParams(window.location.search).get("post")||window.wp&&window.wp.data&&window.wp.data.select("core/editor")?.getCurrentPostId(),o={command_id:t.id,context:{},post_id:a||null,...e};t.params&&Object.assign(o,t.params);const s=await fetch(commandifyData.apiUrl+"/execute",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce},body:JSON.stringify(o)}),c=await s.json();_(!1),C(null),V(null),q(!0),c.success?(z(a=>({...a,[t.id]:e})),de(c.message||(0,n.__)("Command executed successfully","commandify")),S(!0),setTimeout(()=>S(!1),300)):ue(c.message||(0,n.__)("Command execution failed","commandify"))}catch(e){_(!1),C(null),V(null),q(!0),ue(e.message||(0,n.__)("An error occurred","commandify"))}finally{Z.current&&(clearTimeout(Z.current),Z.current=null),T(!1)}},[J,de,ue]),we=(0,t.useCallback)(()=>{b||(V(null),q(!0))},[b]),he=(0,t.useCallback)(async e=>{let t=!1,a=!1;S(!1),T(!1);const o=!e?.instant;if(Z.current&&clearTimeout(Z.current),o&&(Z.current=setTimeout(()=>{T(!0)},120)),e.setting_id&&void 0!==e.value)window.commandifyExecuteSettingOption?window.commandifyExecuteSettingOption(e.setting_id,e.value,{setIsExecuting:_,setExecutingCommandId:C,success:de,error:ue,onClose:c,handleBack:pe}):ue((0,n.__)("Settings handler not loaded","commandify"));else{_(!0),C(e.id);try{const o=new URLSearchParams(window.location.search).get("post")||window.wp&&window.wp.data&&window.wp.data.select("core/editor")?.getCurrentPostId(),s={command_id:e.id,context:{},post_id:o||null};e.params&&Object.assign(s,e.params);const i=await fetch(commandifyData.apiUrl+"/execute",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce},body:JSON.stringify(s)}),m=await i.json();if(m.success){if(m.data&&!0===m.data.continue&&void 0!==m.data.offset){const e=async t=>{const a={...s,offset:t},o=await fetch(commandifyData.apiUrl+"/execute",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce},body:JSON.stringify(a)}),i=await o.json();if(!i.success)return ue(i.message||(0,n.__)("Command execution failed","commandify")),_(!1),void C(null);i.data&&!0===i.data.continue&&void 0!==i.data.offset?(await new Promise(e=>setTimeout(e,100)),await e(i.data.offset)):(i.silent||de(i.message||(0,n.__)("Command executed successfully","commandify")),_(!1),C(null),setTimeout(()=>{c()},500))};return void await e(m.data.offset)}if(m.keep_open&&(a=!0),m.silent||de(m.message||(0,n.__)("Command executed successfully","commandify")),m.js_action){t=!0,S(!0);const e=async e=>{if("string"!=typeof e)return;const t=e.split(":"),a=t[0],n=t.slice(1).join(":");if("click"===a){const e=document.querySelector(n);if(e)return e.click(),!0}else if("doubleclick"===a||"dblclick"===a){const e=document.querySelector(n);if(e){const t=new MouseEvent("dblclick",{bubbles:!0,cancelable:!0});return e.dispatchEvent(t),!0}}else if("focus"===a){const e=document.querySelector(n);if(e)return setTimeout(()=>{e.focus(),e.scrollIntoView({behavior:"smooth",block:"center"})},100),!0}else{if("open"===a)return window.open(n,"_blank"),!0;if("copy"===a){if(navigator.clipboard&&navigator.clipboard.writeText)try{return await navigator.clipboard.writeText(n),!0}catch(e){return console.error("Failed to copy:",e),!1}return!1}}return!1},n=Array.isArray(m.js_action)?m.js_action.filter(Boolean):"string"==typeof m.js_action&&m.js_action?[m.js_action]:[],o=async()=>{let t=!1,o=a;for(let a=0;a<n.length;a++){const s=n[a];s&&"string"==typeof s&&(s.startsWith("copy:")&&(o=!0),await e(s)&&(t=!0,a<n.length-1&&await new Promise(e=>setTimeout(e,350))))}t&&!o&&setTimeout(()=>{c()},100)};return void(n.length>0&&o())}if(m.reload)return void setTimeout(()=>{window.location.reload()},1e3);if(m.redirect)return void(window.location.href=m.redirect);if(m.data&&e.id&&e.id.startsWith("set-"))try{const e=await fetch(commandifyData.apiUrl+"/preferences",{method:"GET",headers:{"X-WP-Nonce":commandifyData.nonce}}),t=await e.json();t.success&&r(t.data)}catch(e){console.error("Failed to reload preferences:",e)}m.updated_actions&&m.updated_actions.length>0?(F(m.updated_actions),h(0)):"navigation"===e.type?c():e.has_dynamic_callback?D&&D.isSubmenu?pe():D&&!D.isSubmenu&&"install-plugin"!==D.id&&"install-theme"!==D.id&&setTimeout(async()=>{try{const e=await fetch(commandifyData.apiUrl+"/execute",{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce},body:JSON.stringify({command_id:D.id,search_query:u})}),t=await e.json();t.success&&t.results&&F(t.results)}catch(e){console.error("Search refresh error:",e)}},100):a||c()}else ue(m.message||(0,n.__)("Command execution failed","commandify"))}catch(e){ue((0,n.__)("An error occurred while executing the command","commandify"))}finally{Z.current&&(clearTimeout(Z.current),Z.current=null),t?(_(!1),C(null),S(!1),T(!1)):(S(!0),setTimeout(()=>{_(!1),C(null),S(!1),T(!1)},400))}}},[D,u,de,ue,c,pe]),ge=(0,t.useCallback)(e=>{if((0,o.doAction)("commandify.beforeExecute",e),e.form&&e.form.fields)return q(!1),void V(e);if("navigation"!==e.type){if("search"===e.type)return A(e=>[...e,{searchMode:D,searchResults:O,query:u,selectedIndex:w}]),P(e),v(""),void h(0);if("submenu"===e.type&&e.actions)return A(e=>[...e,{searchMode:D,searchResults:O,query:u,selectedIndex:w}]),P({...e,isSubmenu:!0}),H(e.actions),F(e.actions),v(""),void h(0);if("setting"===e.type)return e.form&&e.form.fields?(q(!1),void V(e)):void(e.actions&&e.actions.length>0?(A(e=>[...e,{searchMode:D,searchResults:O,query:u,selectedIndex:w}]),P({...e,isSubmenu:!0}),H(e.actions),F(e.actions),v(""),h(0)):window.commandifyExecuteSetting?window.commandifyExecuteSetting(e,{setIsExecuting:_,setExecutingCommandId:C,success:de,error:ue,onClose:c}):ue((0,n.__)("Settings handler not loaded","commandify")));if("toggle"!==e.type)if("action"!==e.type)he(e);else if(e.confirm){const t="object"==typeof e.confirm?e.confirm:{};E({title:t.title||(0,n.__)("Confirm Action","commandify"),message:t.message||(0,n.__)("Are you sure you want to proceed?","commandify"),confirmText:t.confirm_text||(0,n.__)("Confirm","commandify"),cancelText:t.cancel_text||(0,n.__)("Cancel","commandify"),destructive:t.destructive||!1,command:e})}else he(e);else window.commandifyExecuteToggle?window.commandifyExecuteToggle(e,{setIsExecuting:_,setExecutingCommandId:C,success:de,error:ue,onClose:c}):ue((0,n.__)("Toggle handler not loaded","commandify"))}else"_blank"===e.target?window.open(e.callback,"_blank"):window.location.href=e.callback},[D,O,u,w,I,K,de,ue,c,he]),Ee=(0,t.useMemo)(()=>D?O:me,[D,O,me]);(0,t.useEffect)(()=>{if(!a||J)return;const e=e=>{const t=Ee.length;"Escape"===e.key?(e.preventDefault(),D?pe():c()):"ArrowDown"===e.key?(e.preventDefault(),q(!1),h(e=>{const a=e+1;return a>=t?0:a})):"ArrowUp"===e.key?(e.preventDefault(),q(!1),h(e=>{const a=e-1;return a<0?t-1:a})):"Enter"===e.key?(e.preventDefault(),Ee&&Ee[w]&&ge(Ee[w])):"Backspace"===e.key&&""===u&&D&&(e.preventDefault(),pe())};return document.addEventListener("keydown",e),()=>document.removeEventListener("keydown",e)},[a,J,D,Ee,w,u,c,ge,pe]);const be=!!window.commandifyPro?.features?.favorites;return(0,e.createElement)(e.Fragment,null,J&&(0,e.createElement)(f,{form:J.form,command:J,onSubmit:ve,onClose:we,isExecuting:b,updatedFieldValues:G[J.id]}),a&&(0,e.createElement)("div",{className:"commandify-overlay",ref:ye,onClick:e=>{e.target===ye.current&&c()}},(0,e.createElement)("div",{className:"commandify-palette",onMouseMove:()=>{M||q(!0)}},b&&k&&(0,e.createElement)("div",{className:"commandify-progress-bar"},(0,e.createElement)("div",{className:`commandify-progress-bar-fill ${b?"is-loading":""} ${x?"is-complete":""}`})),D&&(0,e.createElement)("div",{className:"commandify-breadcrumb"},(0,e.createElement)("button",{onClick:pe,className:"commandify-back-button"},(0,e.createElement)("span",{className:"dashicons dashicons-arrow-left-alt2"})),(0,e.createElement)("span",{className:"commandify-breadcrumb-text"},D.title)),(0,e.createElement)(s,{value:u,onChange:v,placeholder:D?D.placeholder:(0,n.__)("Type a command or search...","commandify"),disabled:b||!!J,searchTime:D?0:ce}),(0,e.createElement)(m,{commands:D?O:me,selectedIndex:w,onSelect:ge,onHover:e=>{M&&h(e)},loading:re||(D?L:Y||se),isExecuting:b,executingCommandId:N,onFavoriteToggle:async e=>{if(window.commandifyPro&&window.commandifyPro.features&&window.commandifyPro.features.favorites)try{const t=await fetch(commandifyData.apiUrl+"/favorites/"+e,{method:"POST",headers:{"Content-Type":"application/json","X-WP-Nonce":commandifyData.nonce}}),a=await t.json();a.success&&(a.is_favorite?U(t=>[...t,e]):U(t=>t.filter(t=>t!==e)),window.dispatchEvent(new CustomEvent("commandify-reload-pro")))}catch(e){console.error("Failed to toggle favorite:",e)}},favoriteIds:B,showFavoriteButton:be,query:u}),(0,e.createElement)("div",{className:"commandify-footer"},(0,e.createElement)("div",{className:"commandify-footer-hints"},(0,e.createElement)("span",{className:"commandify-footer-hint"},(0,e.createElement)("kbd",null,"↑"),(0,e.createElement)("kbd",null,"↓")," ",(0,n.__)("Navigate","commandify")),(0,e.createElement)("span",{className:"commandify-footer-hint"},(0,e.createElement)("kbd",null,"↵")," ",(0,n.__)("Select","commandify")),(D||K.length>0)&&(0,e.createElement)("span",{className:"commandify-footer-hint"},(0,e.createElement)("kbd",null,"←")," ",(0,n.__)("Back","commandify")),(0,e.createElement)("span",{className:"commandify-footer-hint"},(0,e.createElement)("kbd",null,"Esc")," ",(0,n.__)("Close","commandify"))),!Y&&!se&&(0,e.createElement)("div",{className:"commandify-footer-count"},(D?O:me).length," ",(0,n.__)("commands","commandify"))))),(0,e.createElement)(d,{isOpen:null!==g,onConfirm:()=>{g&&g.command&&he(g.command),E(null)},onCancel:()=>{E(null)},title:g?.title,message:g?.message,confirmText:g?.confirmText,cancelText:g?.cancelText,destructive:g?.destructive}),(0,e.createElement)(l,{toasts:le,onClose:fe}))},w=document.getElementById("commandify-root");w&&(0,t.render)((0,e.createElement)(function(){const[n,o]=(0,t.useState)(!1),[s,c]=(0,t.useState)(window.commandifyData?.preferences||{}),i=s.keyboard_shortcut||"mod+k";return function(e,a=!0){(0,t.useEffect)(()=>{if(!a)return;const t=t=>{const a=navigator.platform.toUpperCase().indexOf("MAC")>=0;for(const[n,o]of Object.entries(e)){const e=n.toLowerCase().split("+").map(e=>e.trim()),s=e.filter(e=>"mod"===e||"ctrl"===e||"alt"===e||"shift"===e),c=e.find(e=>"mod"!==e&&"ctrl"!==e&&"alt"!==e&&"shift"!==e);let i=!0;if(s.includes("mod")&&(i=i&&(a?t.metaKey:t.ctrlKey)),s.includes("ctrl")&&(i=i&&t.ctrlKey),s.includes("alt")){const e=t.getModifierState&&t.getModifierState("Alt")||t.altKey;i=i&&e}s.includes("shift")&&(i=i&&t.shiftKey);let m=!0;if(c){let e="";t.code&&(e=t.code.toLowerCase().replace(/^key/,"").replace(/^digit/,"").replace(/^numpad/,""));const n=t.key?t.key.toLowerCase():"";m="space"===c?"space"===e||" "===n||"space"===n:a&&t.altKey?e===c:e===c||n===c}if(i&&m){o(t);break}}};return document.addEventListener("keydown",t),()=>document.removeEventListener("keydown",t)},[e,a])}({[i]:e=>{e.preventDefault(),o(e=>!e)}},!0),(0,a.createPortal)((0,e.createElement)(v,{isOpen:n,onClose:()=>o(!1),preferences:s,setPreferences:c}),document.body)},null),w)})();
  • commandify/trunk/commandify.php

    r3405278 r3407178  
    55 * Plugin URI: https://wprigel.com/commandify
    66 * Description: Command palette for WordPress admin - keyboard-first navigation and actions
    7  * Version: 1.0.0
     7 * Version: 1.0.1
    88 * Requires at least: 6.2
    99 * Requires PHP: 7.4
     
    2121
    2222defined( 'ABSPATH' ) || exit;
    23 define( 'COMMANDIFY_VERSION', '1.0.0' );
     23define( 'COMMANDIFY_VERSION', '1.0.1' );
    2424define( 'COMMANDIFY_FILE', __FILE__ );
    2525define( 'COMMANDIFY_PATH', plugin_dir_path( __FILE__ ) );
  • commandify/trunk/includes/RestApi.php

    r3405278 r3407178  
    190190            strpos( $command_id, 'deactivate-plugin-' ) === 0 ||
    191191            strpos( $command_id, 'install-theme-' ) === 0 ||
    192             strpos( $command_id, 'activate-theme-' ) === 0;
     192            strpos( $command_id, 'activate-theme-' ) === 0 ||
     193            strpos( $command_id, 'change-status-' ) === 0;
    193194    }
    194195
     
    276277        }
    277278
     279        // Handle change status for any post type.
     280        // Pattern: change-status-{post_type}-{id}.
     281        if ( strpos( $command_id, 'change-status-' ) === 0 ) {
     282            // Call the callback function from functions.php.
     283            $result = \WpRigel\Commandify\change_post_status_callback( $request );
     284            return rest_ensure_response( $result );
     285        }
     286
    278287        // Handle plugin installation.
    279288        if ( strpos( $command_id, 'install-plugin-' ) === 0 ) {
  • commandify/trunk/includes/core-commands/action-commands.php

    r3405278 r3407178  
    2222
    2323                    return array(
    24                         'success' => true,
    25                         'message' => __( 'All caches cleared successfully! Object cache, transients, and opcache flushed.', 'commandify' ),
    26                         'data'    => array(
     24                        'success'   => true,
     25                        'message'   => __( 'All caches cleared successfully! Object cache, transients, and opcache flushed.', 'commandify' ),
     26                        'keep_open' => true,
     27                        'data'      => array(
    2728                            'timestamp' => current_time( 'mysql' ),
    2829                        ),
     
    8081
    8182                    return array(
    82                         'success' => true,
    83                         'message' => $message,
    84                         'data'    => array(
     83                        'success'   => true,
     84                        'message'   => $message,
     85                        'keep_open' => true,
     86                        'data'      => array(
    8587                            'total'          => $total,
    8688                            'plugin_updates' => $plugin_updates,
     
    141143
    142144                    return array(
    143                         'success' => true,
    144                         'message' => __( 'Rewrite rules flushed successfully! Permalink structure has been regenerated.', 'commandify' ),
    145                         'data'    => array(
     145                        'success'   => true,
     146                        'message'   => __( 'Rewrite rules flushed successfully! Permalink structure has been regenerated.', 'commandify' ),
     147                        'keep_open' => true,
     148                        'data'      => array(
    146149                            'timestamp' => current_time( 'mysql' ),
    147150                        ),
     
    154157                'priority'        => 15,
    155158                'loading_message' => __( 'Flushing rewrite rules...', 'commandify' ),
     159            )
     160        );
     161
     162        // Logout.
     163        commandify_register_command(
     164            array(
     165                'id'          => 'logout',
     166                'title'       => __( 'Logout', 'commandify' ),
     167                'description' => __( 'Log out from WordPress', 'commandify' ),
     168                'type'        => 'action',
     169                'callback'    => function () {
     170                    // Get current user info before logout
     171                    $user_id = get_current_user_id();
     172                    $user_locale = get_user_locale( $user_id );
     173
     174                    // Perform logout (destroys session and clears auth cookies)
     175                    wp_logout();
     176
     177                    // Build redirect URL to login page with logged out message
     178                    $redirect_to = add_query_arg(
     179                        array(
     180                            'loggedout' => 'true',
     181                            'wp_lang'   => $user_locale,
     182                        ),
     183                        wp_login_url()
     184                    );
     185
     186                    // Return redirect response (frontend will handle the redirect)
     187                    // Note: wp_logout() has already been called, so user is logged out
     188                    return array(
     189                        'success'  => true,
     190                        'message'  => __( 'Logged out successfully', 'commandify' ),
     191                        'redirect' => $redirect_to,
     192                    );
     193                },
     194                'category'    => 'tools',
     195                'icon'        => 'dashicons-exit',
     196                'keywords'    => array( 'logout', 'log out', 'sign out', 'exit' ),
     197                'capability'  => 'read',
     198                'priority'    => 5,
     199                'confirm'     => array(
     200                    'message'     => __( 'Are you sure you want to log out?', 'commandify' ),
     201                    'destructive' => false,
     202                ),
    156203            )
    157204        );
  • commandify/trunk/includes/core-commands/navigation-commands.php

    r3405278 r3407178  
    1515    // Dashboard.
    1616    $menu[2] = array( 'Dashboard', 'read', 'index.php', 'Dashboard', 'menu-dashboard', 'menu-top menu-icon-dashboard', 'dashicons-dashboard' );
     17
     18    // Visit Site (added to minimal menu).
     19    $menu[4] = array( 'Visit Site', 'read', home_url(), 'Visit Site', 'menu-visit-site', 'menu-top', 'dashicons-admin-home' );
    1720
    1821    // Posts.
     
    200203
    201204    $registered = true;
     205
     206    // Register Visit Site command (always available, not dependent on menu).
     207    commandify_register_command(
     208        array(
     209            'id'          => 'visit-site',
     210            'title'       => __( 'Visit Site', 'commandify' ),
     211            'description' => __( 'Open your website in a new tab', 'commandify' ),
     212            'type'        => 'navigation',
     213            'callback'    => home_url(),
     214            'category'    => 'navigation',
     215            'icon'        => 'dashicons-admin-home',
     216            'keywords'    => array( 'visit', 'site', 'home', 'frontend', 'view site' ),
     217            'capability'  => 'read',
     218            'priority'    => 200,
     219            'target'      => '_blank',
     220        )
     221    );
    202222
    203223    global $menu, $submenu;
     
    256276        }
    257277
    258         // Check if has capablities for the menu item.
     278        // Check if has capabilities for the menu item.
    259279        if ( ! empty( $menu_item[1] ) && ! current_user_can( $menu_item[1] ) ) {
    260280            continue;
  • commandify/trunk/includes/core-commands/search-commands.php

    r3405278 r3407178  
    2121        );
    2222
     23        /**
     24         * Filter to allow third-party plugins to add custom post types to search commands.
     25         *
     26         * This filter allows plugins to add post types that might not meet the default
     27         * criteria (show_ui, show_in_menu, public) but should still have search commands.
     28         *
     29         * @since 1.0.0
     30         *
     31         * @param array $additional_post_types Array of post type names (strings) or post type objects to add.
     32         *                                     If strings, the post type objects will be fetched.
     33         * @param array $existing_post_types   Array of existing post type objects.
     34         * @return array Array of post type names or objects to add.
     35         *
     36         * @example
     37         * ```php
     38         * add_filter( 'commandify_search_post_types', function( $additional, $existing ) {
     39         *     // Add a custom post type by name
     40         *     $additional[] = 'my_custom_post_type';
     41         *
     42         *     // Or add a post type object directly
     43         *     $additional[] = get_post_type_object( 'another_post_type' );
     44         *
     45         *     return $additional;
     46         * }, 10, 2 );
     47         * ```
     48         */
     49        $additional_post_types = apply_filters( 'commandify_search_post_types', array(), $post_types );
     50
     51        // Process additional post types from filter.
     52        if ( ! empty( $additional_post_types ) && is_array( $additional_post_types ) ) {
     53            foreach ( $additional_post_types as $additional_post_type ) {
     54                $post_type_obj = null;
     55
     56                // If it's a string, get the post type object.
     57                if ( is_string( $additional_post_type ) ) {
     58                    $post_type_obj = get_post_type_object( $additional_post_type );
     59                } elseif ( is_object( $additional_post_type ) && isset( $additional_post_type->name ) ) {
     60                    // If it's already a post type object, use it.
     61                    $post_type_obj = $additional_post_type;
     62                }
     63
     64                // Add to post types array if valid and not already included.
     65                if ( $post_type_obj && ! isset( $post_types[ $post_type_obj->name ] ) ) {
     66                    $post_types[ $post_type_obj->name ] = $post_type_obj;
     67                }
     68            }
     69        }
     70
    2371        foreach ( $post_types as $post_type ) {
    2472            // Skip attachments as we handle them separately.
     
    2775            }
    2876
    29             // Allow other integrations to exclude post types from auto-registration.
     77            /**
     78             * Filter to exclude post types from auto-registration.
     79             *
     80             * @since 1.0.0
     81             *
     82             * @param array $excluded_post_types Array of post type names to exclude.
     83             */
    3084            $excluded_post_types = apply_filters( 'commandify_excluded_post_types', array() );
    3185            if ( in_array( $post_type->name, $excluded_post_types, true ) ) {
     
    76130            commandify_register_command(
    77131                array(
    78                     'id'          => 'search-' . $post_type->name,
     132                    'id'                               => 'search-' . $post_type->name,
    79133                    /* translators: %s: Post type label (Posts, Pages, etc.) */
    80                     'title'       => sprintf( __( 'Search %s', 'commandify' ), $label ),
     134                    'title'                            => sprintf( __( 'Search %s', 'commandify' ), $label ),
    81135                    /* translators: %s: Post type label in lowercase */
    82                     'description' => sprintf( __( 'Find %s by title or content', 'commandify' ), strtolower( $label ) ),
    83                     'type'        => 'search',
    84                     'callback'    => function ( $query, $context ) use ( $post_type ) {
     136                    'description'                      => sprintf( __( 'Find %s by title or content', 'commandify' ), strtolower( $label ) ),
     137                    'type'                             => 'search',
     138                    'callback'                         => function ( $query, $context ) use ( $post_type ) {
    85139                        return search_post_type_callback( $query, $context, $post_type->name );
    86140                    },
    87                     'category'    => 'content',
    88                     'icon'        => $icon,
    89                     'keywords'    => $keywords,
    90                     'capability'  => $capability,
    91                     'priority'    => $priority,
     141                    'category'                         => 'content',
     142                    'icon'                             => $icon,
     143                    'keywords'                         => $keywords,
     144                    'capability'                       => $capability,
     145                    'priority'                         => $priority,
    92146                    /* translators: %s: Post type label in lowercase */
    93                     'placeholder' => sprintf( __( 'Search %s...', 'commandify' ), strtolower( $label ) ),
    94                     'min_chars'   => 2,
    95                     'context'     => $search_context,
     147                    'placeholder'                      => sprintf( __( 'Search %s...', 'commandify' ), strtolower( $label ) ),
     148                    'min_chars'                        => 0,
     149                    // Allow empty query to show recent posts.
     150                                            'debounce' => 400,
     151                    // Debounce delay in milliseconds.
     152                                            'context'  => $search_context,
    96153                )
    97154            );
     
    101158        commandify_register_command(
    102159            array(
    103                 'id'          => 'search-users',
    104                 'title'       => __( 'Search Users', 'commandify' ),
    105                 'description' => __( 'Find users by name or email', 'commandify' ),
    106                 'type'        => 'search',
    107                 'callback'    => 'WpRigel\Commandify\search_users_callback',
    108                 'category'    => 'users',
    109                 'icon'        => 'dashicons-admin-users',
    110                 'keywords'    => array( 'search', 'users', 'find', 'people' ),
    111                 'capability'  => 'list_users',
    112                 'priority'    => 60,
    113                 'placeholder' => __( 'Search users...', 'commandify' ),
    114                 'min_chars'   => 2,
    115                 'context'     => array( 'users', 'user-edit', 'user-new' ),
     160                'id'                                       => 'search-users',
     161                'title'                                    => __( 'Search Users', 'commandify' ),
     162                'description'                              => __( 'Find users by name or email', 'commandify' ),
     163                'type'                                     => 'search',
     164                'callback'                                 => 'WpRigel\Commandify\search_users_callback',
     165                'category'                                 => 'users',
     166                'icon'                                     => 'dashicons-admin-users',
     167                'keywords'                                 => array( 'search', 'users', 'find', 'people' ),
     168                'capability'                               => 'list_users',
     169                'priority'                                 => 60,
     170                'placeholder'                              => __( 'Search users...', 'commandify' ),
     171                'min_chars'                                => 0,
     172                // Allow empty query to show recent posts.
     173                                                'debounce' => 400,
     174                // Debounce delay in milliseconds.
     175                                                'context'  => array( 'users', 'user-edit', 'user-new' ),
    116176            )
    117177        );
     
    120180        commandify_register_command(
    121181            array(
    122                 'id'          => 'search-media',
    123                 'title'       => __( 'Search Media', 'commandify' ),
    124                 'description' => __( 'Find media files by name', 'commandify' ),
    125                 'type'        => 'search',
    126                 'callback'    => 'WpRigel\Commandify\search_media_callback',
    127                 'category'    => 'content',
    128                 'icon'        => 'dashicons-admin-media',
    129                 'keywords'    => array( 'search', 'media', 'find', 'images', 'files' ),
    130                 'capability'  => 'upload_files',
    131                 'priority'    => 55,
    132                 'placeholder' => __( 'Search media...', 'commandify' ),
    133                 'min_chars'   => 2,
    134                 'context'     => array( 'upload', 'attachment' ),
     182                'id'                                       => 'search-media',
     183                'title'                                    => __( 'Search Media', 'commandify' ),
     184                'description'                              => __( 'Find media files by name', 'commandify' ),
     185                'type'                                     => 'search',
     186                'callback'                                 => 'WpRigel\Commandify\search_media_callback',
     187                'category'                                 => 'content',
     188                'icon'                                     => 'dashicons-admin-media',
     189                'keywords'                                 => array( 'search', 'media', 'find', 'images', 'files' ),
     190                'capability'                               => 'upload_files',
     191                'priority'                                 => 55,
     192                'placeholder'                              => __( 'Search media...', 'commandify' ),
     193                'min_chars'                                => 0,
     194                // Allow empty query to show recent posts.
     195                                                'debounce' => 400,
     196                // Debounce delay in milliseconds.
     197                                                'context'  => array( 'upload', 'attachment' ),
    135198            )
    136199        );
     
    146209    }
    147210
    148     $args = array(
    149         's'              => sanitize_text_field( $query ),
    150         'post_type'      => $post_type_name,
    151         'post_status'    => 'any',
    152         'posts_per_page' => 10,
    153         'orderby'        => 'relevance',
    154     );
     211    // If query is empty, return 10 recent published posts.
     212    $query = trim( $query );
     213    if ( empty( $query ) ) {
     214        $args = array(
     215            'post_type'      => $post_type_name,
     216            'post_status'    => 'publish',
     217            'posts_per_page' => 10,
     218            'orderby'        => 'date',
     219            'order'          => 'DESC',
     220        );
     221    } else {
     222        $args = array(
     223            's'              => sanitize_text_field( $query ),
     224            'post_type'      => $post_type_name,
     225            'post_status'    => 'any',
     226            'posts_per_page' => 10,
     227            'orderby'        => 'relevance',
     228        );
     229    }
    155230
    156231    $posts   = get_posts( $args );
     
    210285        }
    211286
     287        // Add change status action with form.
     288        $available_statuses = get_available_post_statuses_for_command( $post_type_name, $post->post_status );
     289        if ( ! empty( $available_statuses ) ) {
     290            // Get all statuses including current one for the form dropdown
     291            $all_statuses = array(
     292                'publish' => __( 'Published', 'commandify' ),
     293                'draft'   => __( 'Draft', 'commandify' ),
     294                'pending' => __( 'Pending Review', 'commandify' ),
     295                'private' => __( 'Private', 'commandify' ),
     296            );
     297
     298            $actions[] = array(
     299                'id'                   => 'change-status-' . $post_type_name . '-' . $post->ID,
     300                'title'                => __( 'Change Status', 'commandify' ),
     301                'type'                 => 'action',
     302                'icon'                 => 'dashicons-update',
     303                'has_dynamic_callback' => true,
     304                'loading_message'      => __( 'Changing status...', 'commandify' ),
     305                'form'                 => array(
     306                    'title'       => __( 'Change Post Status', 'commandify' ),
     307                    'description' => __( 'Select a new status for this post.', 'commandify' ),
     308                    'fields'      => array(
     309                        array(
     310                            'name'     => 'new_status',
     311                            'label'    => __( 'New Status', 'commandify' ),
     312                            'type'     => 'select',
     313                            'required' => true,
     314                            'options'  => $all_statuses,
     315                            'value'    => $post->post_status,
     316            // Set current status as selected
     317                        ),
     318                    ),
     319                    'submit_text' => __( 'Change Status', 'commandify' ),
     320                ),
     321            );
     322        }//end if
     323
    212324        // Add trash/delete action
    213325        $actions[] = array(
     
    239351
    240352function search_users_callback( $query ) {
    241     $args = array(
    242         'search'  => '*' . sanitize_text_field( $query ) . '*',
    243         'number'  => 10,
    244         'orderby' => 'display_name',
    245     );
     353    // If query is empty, return 10 recent users ordered by registration date
     354    $query = trim( $query );
     355    if ( empty( $query ) ) {
     356        $args = array(
     357            'number'  => 10,
     358            'orderby' => 'registered',
     359            'order'   => 'DESC',
     360        );
     361    } else {
     362        $args = array(
     363            'search'  => '*' . sanitize_text_field( $query ) . '*',
     364            'number'  => 10,
     365            'orderby' => 'display_name',
     366        );
     367    }
    246368
    247369    $users   = get_users( $args );
     
    250372    foreach ( $users as $user ) {
    251373        $roles_text = ! empty( $user->roles ) ? ucfirst( $user->roles[0] ) : __( 'No role', 'commandify' );
     374
     375        // Get user avatar URL
     376        $user_avatar = get_avatar_url( $user->ID, array( 'size' => 32 ) );
    252377
    253378        $results[] = array(
     
    257382            'description' => sprintf( __( '%1$s • %2$s', 'commandify' ), $user->user_email, $roles_text ),
    258383            'type'        => 'submenu',
    259             'icon'        => 'dashicons-admin-users',
     384            'icon'        => $user_avatar ? $user_avatar : 'dashicons-admin-users',
    260385            'category'    => 'users',
    261386            'actions'     => array(
     
    292417
    293418function search_media_callback( $query ) {
    294     $args = array(
    295         's'              => sanitize_text_field( $query ),
    296         'post_type'      => 'attachment',
    297         'post_status'    => 'any',
    298         'posts_per_page' => 10,
    299     );
     419    // If query is empty, return 10 recent media files
     420    $query = trim( $query );
     421    if ( empty( $query ) ) {
     422        $args = array(
     423            'post_type'      => 'attachment',
     424            'post_status'    => 'any',
     425            'posts_per_page' => 10,
     426            'orderby'        => 'date',
     427            'order'          => 'DESC',
     428        );
     429    } else {
     430        $args = array(
     431            's'              => sanitize_text_field( $query ),
     432            'post_type'      => 'attachment',
     433            'post_status'    => 'any',
     434            'posts_per_page' => 10,
     435            'orderby'        => 'relevance',
     436        );
     437    }
    300438
    301439    $attachments = get_posts( $args );
     
    306444        $filename = basename( $file );
    307445        $filesize = file_exists( $file ) ? size_format( filesize( $file ) ) : '';
     446
     447        // Determine icon based on mime type
     448        $mime_type = get_post_mime_type( $attachment->ID );
     449        $icon      = 'dashicons-admin-media';
     450        // Default icon
     451
     452        if ( $mime_type ) {
     453            if ( strpos( $mime_type, 'image/' ) === 0 ) {
     454                // Use the actual image thumbnail URL for images
     455                $thumbnail_url = wp_get_attachment_image_url( $attachment->ID, 'thumbnail' );
     456                if ( $thumbnail_url ) {
     457                    $icon = $thumbnail_url;
     458                } else {
     459                    $icon = 'dashicons-format-image';
     460                }
     461            } elseif ( strpos( $mime_type, 'video/' ) === 0 ) {
     462                $icon = 'dashicons-format-video';
     463            } elseif ( strpos( $mime_type, 'audio/' ) === 0 ) {
     464                $icon = 'dashicons-format-audio';
     465            } elseif ( strpos( $mime_type, 'application/pdf' ) === 0 ) {
     466                $icon = 'dashicons-media-document';
     467            } elseif ( strpos( $mime_type, 'text/' ) === 0 ) {
     468                $icon = 'dashicons-media-text';
     469            } elseif ( strpos( $mime_type, 'application/zip' ) === 0 || strpos( $mime_type, 'application/x-rar' ) === 0 ) {
     470                $icon = 'dashicons-media-archive';
     471            }
     472        }//end if
    308473
    309474        $results[] = array(
     
    313478            'description' => sprintf( __( '%1$s • %2$s', 'commandify' ), $filename, $filesize ),
    314479            'type'        => 'submenu',
    315             'icon'        => 'dashicons-admin-media',
     480            'icon'        => $icon,
    316481            'category'    => 'media',
    317482            'actions'     => array(
  • commandify/trunk/includes/functions.php

    r3405278 r3407178  
    8282    return $plugins_dir;
    8383}
     84
     85/**
     86 * Get available post statuses for change status command
     87 * Returns statuses that can be changed to from the current status
     88 *
     89 * @param string $post_type Post type name.
     90 * @param string $current_status Current post status.
     91 * @return array Array of available statuses (key => label).
     92 */
     93function get_available_post_statuses_for_command( $post_type, $current_status ) {
     94    $statuses = array(
     95        'publish' => __( 'Published', 'commandify' ),
     96        'draft'   => __( 'Draft', 'commandify' ),
     97        'pending' => __( 'Pending Review', 'commandify' ),
     98        'private' => __( 'Private', 'commandify' ),
     99    );
     100
     101    // Remove current status from options (can't change to same status).
     102    if ( isset( $statuses[ $current_status ] ) ) {
     103        unset( $statuses[ $current_status ] );
     104    }
     105
     106    // Don't show publish/private for trash posts.
     107    if ( 'trash' === $current_status ) {
     108        return array();
     109    }
     110
     111    return $statuses;
     112}
     113
     114/**
     115 * Change post status callback
     116 * Handles the form submission for changing post status
     117 *
     118 * @param \WP_REST_Request|array $request Request object or params array.
     119 * @return array Response array with success status and message.
     120 */
     121function change_post_status_callback( $request = array() ) {
     122    // Extract params from request object or use array directly.
     123    if ( $request instanceof \WP_REST_Request ) {
     124        $params = $request->get_params();
     125    } else {
     126        $params = is_array( $request ) ? $request : array();
     127    }
     128
     129    // Extract post ID and new status from command_id (format: change-status-{post_type}-{id}).
     130    $command_id = isset( $params['command_id'] ) ? $params['command_id'] : '';
     131    preg_match( '/^change\-status\-([a-z_\-]+)\-(\d+)$/', $command_id, $matches );
     132
     133    if ( empty( $matches ) || count( $matches ) < 3 ) {
     134        return array(
     135            'success' => false,
     136            'message' => __( 'Invalid command format', 'commandify' ),
     137        );
     138    }
     139
     140    $post_type  = $matches[1];
     141    $post_id    = intval( $matches[2] );
     142    $new_status = isset( $params['new_status'] ) ? sanitize_text_field( $params['new_status'] ) : '';
     143
     144    if ( empty( $new_status ) ) {
     145        return array(
     146            'success' => false,
     147            'message' => __( 'New status is required', 'commandify' ),
     148        );
     149    }
     150
     151    // Get the post.
     152    $post = get_post( $post_id );
     153    if ( ! $post || $post->post_type !== $post_type ) {
     154        return array(
     155            'success' => false,
     156            'message' => __( 'Post not found', 'commandify' ),
     157        );
     158    }
     159
     160    // Check permissions.
     161    if ( ! current_user_can( 'edit_post', $post_id ) ) {
     162        return array(
     163            'success' => false,
     164            'message' => __( 'You do not have permission to edit this post', 'commandify' ),
     165        );
     166    }
     167
     168    // Validate new status.
     169    $valid_statuses = array( 'publish', 'draft', 'pending', 'private' );
     170    if ( ! in_array( $new_status, $valid_statuses, true ) ) {
     171        return array(
     172            'success' => false,
     173            'message' => __( 'Invalid status', 'commandify' ),
     174        );
     175    }
     176
     177    // Update post status.
     178    $result = wp_update_post(
     179        array(
     180            'ID'          => $post_id,
     181            'post_status' => $new_status,
     182        ),
     183        true
     184    );
     185
     186    if ( is_wp_error( $result ) ) {
     187        return array(
     188            'success' => false,
     189            'message' => $result->get_error_message(),
     190        );
     191    }
     192
     193    // Get status label.
     194    $status_labels = array(
     195        'publish' => __( 'Published', 'commandify' ),
     196        'draft'   => __( 'Draft', 'commandify' ),
     197        'pending' => __( 'Pending Review', 'commandify' ),
     198        'private' => __( 'Private', 'commandify' ),
     199    );
     200
     201    return array(
     202        'success' => true,
     203        /* translators: %s: New status label */
     204        'message' => sprintf( __( 'Status changed to %s', 'commandify' ), $status_labels[ $new_status ] ),
     205    );
     206}
  • commandify/trunk/languages/commandify.pot

    r3405278 r3407178  
    1010"Content-Type: text/plain; charset=UTF-8\n"
    1111"Content-Transfer-Encoding: 8bit\n"
    12 "POT-Creation-Date: 2025-11-19T08:17:52+00:00\n"
     12"POT-Creation-Date: 2025-12-01T18:45:13+00:00\n"
    1313"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
    1414"X-Generator: WP-CLI 2.9.0\n"
     
    3636
    3737#: includes/core-commands/action-commands.php:17
    38 #: includes/Settings.php:228
     38#: includes/Settings.php:425
    3939msgid "Clear Cache"
    4040msgstr ""
     
    4848msgstr ""
    4949
    50 #: includes/core-commands/action-commands.php:36
     50#: includes/core-commands/action-commands.php:37
    5151msgid "Clearing cache..."
    5252msgstr ""
    5353
    54 #: includes/core-commands/action-commands.php:44
     54#: includes/core-commands/action-commands.php:45
    5555msgid "Check for Updates"
    5656msgstr ""
    5757
    58 #: includes/core-commands/action-commands.php:45
     58#: includes/core-commands/action-commands.php:46
    5959msgid "Check for WordPress, plugin, and theme updates"
    6060msgstr ""
    6161
    6262#. translators: %d: Number of WordPress updates
    63 #: includes/core-commands/action-commands.php:65
     63#: includes/core-commands/action-commands.php:66
    6464msgid "%d WordPress update"
    6565msgstr ""
    6666
    6767#. translators: %d: Number of plugin updates
    68 #: includes/core-commands/action-commands.php:69
     68#: includes/core-commands/action-commands.php:70
    6969msgid "%d plugin update(s)"
    7070msgstr ""
    7171
    7272#. translators: %d: Number of theme updates
    73 #: includes/core-commands/action-commands.php:73
     73#: includes/core-commands/action-commands.php:74
    7474msgid "%d theme update(s)"
    7575msgstr ""
    7676
    7777#. translators: %s: List of available updates
    78 #: includes/core-commands/action-commands.php:78
     78#: includes/core-commands/action-commands.php:79
    7979msgid "Found: %s"
    8080msgstr ""
    8181
    82 #: includes/core-commands/action-commands.php:79
     82#: includes/core-commands/action-commands.php:80
    8383msgid "Everything is up to date!"
    8484msgstr ""
    8585
    86 #: includes/core-commands/action-commands.php:97
     86#: includes/core-commands/action-commands.php:99
    8787msgid "Checking for updates..."
    8888msgstr ""
    8989
    90 #: includes/core-commands/action-commands.php:105
     90#: includes/core-commands/action-commands.php:107
     91#: includes/core-commands/action-commands.php:118
     92#: includes/core-commands/action-commands.php:129
     93msgid "Empty Trash"
     94msgstr ""
     95
     96#: includes/core-commands/action-commands.php:108
     97msgid "Permanently delete all trashed items by post type"
     98msgstr ""
     99
    91100#: includes/core-commands/action-commands.php:116
    92 #: includes/core-commands/action-commands.php:127
    93 msgid "Empty Trash"
    94 msgstr ""
    95 
    96 #: includes/core-commands/action-commands.php:106
    97 msgid "Permanently delete all trashed items by post type"
    98 msgstr ""
    99 
    100 #: includes/core-commands/action-commands.php:114
    101101msgid "Emptying trash..."
    102102msgstr ""
    103103
    104 #: includes/core-commands/action-commands.php:117
     104#: includes/core-commands/action-commands.php:119
    105105msgid "Select a post type to permanently delete all trashed items. This action cannot be undone."
    106106msgstr ""
    107107
    108 #: includes/core-commands/action-commands.php:121
     108#: includes/core-commands/action-commands.php:123
    109109msgid "Post Type"
    110110msgstr ""
    111111
    112 #: includes/core-commands/action-commands.php:136
     112#: includes/core-commands/action-commands.php:138
    113113msgid "Flush Rewrite Rules"
    114114msgstr ""
    115115
    116 #: includes/core-commands/action-commands.php:137
     116#: includes/core-commands/action-commands.php:139
    117117msgid "Regenerate permalink rewrite rules"
    118118msgstr ""
    119119
    120 #: includes/core-commands/action-commands.php:144
     120#: includes/core-commands/action-commands.php:146
    121121msgid "Rewrite rules flushed successfully! Permalink structure has been regenerated."
    122122msgstr ""
    123123
    124 #: includes/core-commands/action-commands.php:155
     124#: includes/core-commands/action-commands.php:158
    125125msgid "Flushing rewrite rules..."
    126126msgstr ""
    127127
    128 #: includes/core-commands/action-commands.php:217
     128#: includes/core-commands/action-commands.php:166
     129msgid "Logout"
     130msgstr ""
     131
     132#: includes/core-commands/action-commands.php:167
     133msgid "Log out from WordPress"
     134msgstr ""
     135
     136#: includes/core-commands/action-commands.php:190
     137msgid "Logged out successfully"
     138msgstr ""
     139
     140#: includes/core-commands/action-commands.php:200
     141msgid "Are you sure you want to log out?"
     142msgstr ""
     143
     144#: includes/core-commands/action-commands.php:264
    129145msgid "Post type is required"
    130146msgstr ""
    131147
    132 #: includes/core-commands/action-commands.php:226
     148#: includes/core-commands/action-commands.php:273
    133149msgid "Invalid post type"
    134150msgstr ""
    135151
    136 #: includes/core-commands/action-commands.php:234
     152#: includes/core-commands/action-commands.php:281
    137153msgid "You do not have permission to delete posts of this type"
    138154msgstr ""
    139155
    140156#. translators: %s: Post type label
    141 #: includes/core-commands/action-commands.php:250
    142 #: includes/core-commands/action-commands.php:295
    143 #: includes/core-commands/action-commands.php:363
     157#: includes/core-commands/action-commands.php:301
     158#: includes/core-commands/action-commands.php:348
     159#: includes/core-commands/action-commands.php:417
    144160msgid "No trashed %s found"
    145161msgstr ""
    146162
    147163#. translators: %1$d: Number deleted, %2$s: Post type label
    148 #: includes/core-commands/action-commands.php:293
     164#: includes/core-commands/action-commands.php:346
    149165msgid "Successfully deleted %1$d trashed %2$s"
    150166msgstr ""
    151167
    152168#. translators: %1$d: Number deleted, %3$s: Post type label
    153 #: includes/core-commands/action-commands.php:357
     169#: includes/core-commands/action-commands.php:411
    154170msgid "Deleted %1$d trashed %3$s"
    155171msgstr ""
    156172
    157173#. translators: %d: Number remaining
    158 #: includes/core-commands/action-commands.php:357
    159 #: pro/src/Features/ActionCommands.php:251
    160 #: pro/src/Features/ActionCommands.php:465
    161 #: pro/src/Features/ActionCommands.php:648
     174#: includes/core-commands/action-commands.php:411
     175#: pro/src/Features/ActionCommands.php:222
     176#: pro/src/Features/ActionCommands.php:442
     177#: pro/src/Features/ActionCommands.php:633
    162178msgid "%d remaining"
    163179msgstr ""
     
    223239#: includes/core-commands/installation-commands.php:136
    224240#: includes/core-commands/installation-commands.php:261
    225 #: includes/RestApi.php:390
    226 #: includes/RestApi.php:505
     241#: includes/RestApi.php:404
     242#: includes/RestApi.php:528
    227243msgid "Activate"
    228244msgstr ""
     
    251267msgstr ""
    252268
     269#: includes/core-commands/navigation-commands.php:210
     270msgid "Visit Site"
     271msgstr ""
     272
     273#: includes/core-commands/navigation-commands.php:211
     274msgid "Open your website in a new tab"
     275msgstr ""
     276
    253277#. translators: %s: Menu item title
    254 #: includes/core-commands/navigation-commands.php:348
    255 #: includes/core-commands/navigation-commands.php:387
     278#: includes/core-commands/navigation-commands.php:428
     279#: includes/core-commands/navigation-commands.php:467
    256280msgid "Navigate to %s"
    257281msgstr ""
     
    305329#: includes/core-commands/plugin-theme-commands.php:123
    306330#: includes/core-commands/plugin-theme-commands.php:239
    307 #: includes/RestApi.php:395
    308 #: includes/RestApi.php:510
     331#: includes/RestApi.php:409
     332#: includes/RestApi.php:533
    309333msgid "Activating %s..."
    310334msgstr ""
     
    320344
    321345#. translators: %s: Post type label (Posts, Pages, etc.)
    322 #: includes/core-commands/search-commands.php:79
     346#: includes/core-commands/search-commands.php:134
    323347msgid "Search %s"
    324348msgstr ""
    325349
    326350#. translators: %s: Post type label in lowercase
    327 #: includes/core-commands/search-commands.php:81
     351#: includes/core-commands/search-commands.php:136
    328352msgid "Find %s by title or content"
    329353msgstr ""
    330354
    331355#. translators: %s: Post type label in lowercase
    332 #: includes/core-commands/search-commands.php:92
     356#: includes/core-commands/search-commands.php:147
    333357msgid "Search %s..."
    334358msgstr ""
    335359
    336 #: includes/core-commands/search-commands.php:103
     360#: includes/core-commands/search-commands.php:161
    337361msgid "Search Users"
    338362msgstr ""
    339363
    340 #: includes/core-commands/search-commands.php:104
     364#: includes/core-commands/search-commands.php:162
    341365msgid "Find users by name or email"
    342366msgstr ""
    343367
    344 #: includes/core-commands/search-commands.php:112
     368#: includes/core-commands/search-commands.php:170
    345369msgid "Search users..."
    346370msgstr ""
    347371
    348 #: includes/core-commands/search-commands.php:122
     372#: includes/core-commands/search-commands.php:183
    349373msgid "Search Media"
    350374msgstr ""
    351375
    352 #: includes/core-commands/search-commands.php:123
     376#: includes/core-commands/search-commands.php:184
    353377msgid "Find media files by name"
    354378msgstr ""
    355379
    356 #: includes/core-commands/search-commands.php:131
     380#: includes/core-commands/search-commands.php:192
    357381msgid "Search media..."
    358382msgstr ""
    359383
    360 #: includes/core-commands/search-commands.php:178
    361 #: includes/core-commands/search-commands.php:319
    362 #: PATTERN_REGISTRATION_EXAMPLE.php:251
     384#: includes/core-commands/search-commands.php:254
     385#: includes/core-commands/search-commands.php:485
    363386#: pro/src/Features/DynamicPatterns.php:395
    364387msgid "Edit"
    365388msgstr ""
    366389
    367 #: includes/core-commands/search-commands.php:191
     390#: includes/core-commands/search-commands.php:267
    368391msgid "Preview"
    369392msgstr ""
    370393
    371 #: includes/core-commands/search-commands.php:203
    372 #: includes/core-commands/search-commands.php:327
     394#: includes/core-commands/search-commands.php:279
     395#: includes/core-commands/search-commands.php:493
    373396#: pro/src/Features/DynamicPatterns.php:406
    374397msgid "View"
    375398msgstr ""
    376399
    377 #: includes/core-commands/search-commands.php:214
    378 #: includes/core-commands/search-commands.php:335
     400#: includes/core-commands/search-commands.php:292
     401#: includes/functions.php:95
     402#: includes/functions.php:195
     403msgid "Published"
     404msgstr ""
     405
     406#: includes/core-commands/search-commands.php:293
     407#: includes/functions.php:96
     408#: includes/functions.php:196
     409msgid "Draft"
     410msgstr ""
     411
     412#: includes/core-commands/search-commands.php:294
     413#: includes/functions.php:97
     414#: includes/functions.php:197
     415msgid "Pending Review"
     416msgstr ""
     417
     418#: includes/core-commands/search-commands.php:295
     419#: includes/functions.php:98
     420#: includes/functions.php:198
     421msgid "Private"
     422msgstr ""
     423
     424#: includes/core-commands/search-commands.php:300
     425#: includes/core-commands/search-commands.php:319
     426#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:363
     427#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:382
     428msgid "Change Status"
     429msgstr ""
     430
     431#: includes/core-commands/search-commands.php:304
     432msgid "Changing status..."
     433msgstr ""
     434
     435#: includes/core-commands/search-commands.php:306
     436msgid "Change Post Status"
     437msgstr ""
     438
     439#: includes/core-commands/search-commands.php:307
     440msgid "Select a new status for this post."
     441msgstr ""
     442
     443#: includes/core-commands/search-commands.php:311
     444#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:374
     445msgid "New Status"
     446msgstr ""
     447
     448#: includes/core-commands/search-commands.php:327
     449#: includes/core-commands/search-commands.php:501
    379450msgid "Delete Permanently"
    380451msgstr ""
    381452
    382 #: includes/core-commands/search-commands.php:214
    383 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:422
    384 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:430
     453#: includes/core-commands/search-commands.php:327
     454#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:448
     455#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:456
    385456msgid "Move to Trash"
    386457msgstr ""
    387458
    388459#. translators: %s: Post type singular label in lowercase
    389 #: includes/core-commands/search-commands.php:220
     460#: includes/core-commands/search-commands.php:333
    390461msgid "Permanently delete this %s?"
    391462msgstr ""
    392463
    393 #: includes/core-commands/search-commands.php:227
     464#: includes/core-commands/search-commands.php:340
    394465#: pro/src/Features/DynamicPatterns.php:420
    395466msgid "(No title)"
    396467msgstr ""
    397468
    398 #: includes/core-commands/search-commands.php:250
     469#: includes/core-commands/search-commands.php:373
    399470#: pro/src/Features/DynamicPatterns.php:238
    400471#: pro/src/Features/DynamicPatterns.php:461
     
    403474
    404475#. translators: 1: Email address or filename, 2: Role or file size
    405 #: includes/core-commands/search-commands.php:256
    406 #: includes/core-commands/search-commands.php:312
     476#: includes/core-commands/search-commands.php:382
     477#: includes/core-commands/search-commands.php:478
    407478msgid "%1$s • %2$s"
    408479msgstr ""
    409480
    410 #: includes/core-commands/search-commands.php:263
     481#: includes/core-commands/search-commands.php:389
    411482#: pro/src/Features/DynamicPatterns.php:260
    412483#: pro/src/Features/DynamicPatterns.php:483
     
    414485msgstr ""
    415486
    416 #: includes/core-commands/search-commands.php:271
     487#: includes/core-commands/search-commands.php:397
    417488#: pro/src/Features/DynamicPatterns.php:314
    418489#: pro/src/Features/DynamicPatterns.php:537
     
    420491msgstr ""
    421492
    422 #: includes/core-commands/search-commands.php:279
     493#: includes/core-commands/search-commands.php:405
    423494#: pro/src/Features/DynamicPatterns.php:321
    424495#: pro/src/Features/DynamicPatterns.php:544
    425 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:185
    426 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:324
    427 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:399
    428 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:502
     496#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:189
     497#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:334
     498#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:413
     499#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:528
    429500msgid "Send Email"
    430501msgstr ""
    431502
    432 #: includes/core-commands/search-commands.php:340
     503#: includes/core-commands/search-commands.php:506
    433504msgid "Permanently delete this media file?"
    434505msgstr ""
    435506
    436507#: includes/core-commands/user-commands.php:16
    437 #: includes/Settings.php:234
     508#: includes/Settings.php:431
    438509msgid "User Preferences"
    439510msgstr ""
     
    527598msgstr ""
    528599
     600#: includes/functions.php:136
     601msgid "Invalid command format"
     602msgstr ""
     603
     604#: includes/functions.php:147
     605#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:762
     606msgid "New status is required"
     607msgstr ""
     608
     609#: includes/functions.php:156
     610msgid "Post not found"
     611msgstr ""
     612
     613#: includes/functions.php:164
     614msgid "You do not have permission to edit this post"
     615msgstr ""
     616
     617#: includes/functions.php:173
     618msgid "Invalid status"
     619msgstr ""
     620
     621#. translators: %s: New status label
     622#: includes/functions.php:204
     623msgid "Status changed to %s"
     624msgstr ""
     625
    529626#. translators: %s: Post type label
    530 #: includes/RestApi.php:246
     627#: includes/RestApi.php:249
    531628msgid "%s deleted permanently"
    532629msgstr ""
    533630
    534631#. translators: %s: Post type label
    535 #: includes/RestApi.php:255
     632#: includes/RestApi.php:258
    536633msgid "%s moved to trash"
    537634msgstr ""
    538635
    539 #: includes/RestApi.php:271
     636#: includes/RestApi.php:274
    540637msgid "Media deleted permanently"
    541638msgstr ""
    542639
    543 #: includes/RestApi.php:399
     640#: includes/RestApi.php:413
    544641msgid "View in Plugins"
    545642msgstr ""
    546643
    547644#. translators: %s: Plugin name
    548 #: includes/RestApi.php:410
     645#: includes/RestApi.php:424
    549646msgid "Plugin \"%s\" installed successfully!"
    550647msgstr ""
    551648
    552 #: includes/RestApi.php:435
     649#: includes/RestApi.php:452
    553650msgid "Plugin activated successfully!"
    554651msgstr ""
    555652
    556 #: includes/RestApi.php:454
     653#: includes/RestApi.php:474
    557654msgid "Plugin deactivated successfully!"
    558655msgstr ""
    559656
    560 #: includes/RestApi.php:514
     657#: includes/RestApi.php:537
    561658msgid "Customize"
    562659msgstr ""
    563660
    564 #: includes/RestApi.php:521
     661#: includes/RestApi.php:544
    565662msgid "View in Themes"
    566663msgstr ""
    567664
    568665#. translators: %s: Theme name
    569 #: includes/RestApi.php:532
     666#: includes/RestApi.php:555
    570667msgid "Theme \"%s\" installed successfully!"
    571668msgstr ""
    572669
    573670#. translators: %s: Theme name
    574 #: includes/RestApi.php:554
     671#: includes/RestApi.php:580
    575672msgid "Theme \"%s\" activated successfully!"
    576673msgstr ""
    577674
    578 #: includes/RestApi.php:609
     675#: includes/RestApi.php:636
    579676msgid "Preferences updated successfully"
    580677msgstr ""
     
    593690
    594691#: includes/Settings.php:60
    595 msgid "Enable or disable the command palette for all users"
     692msgid "Enable the command palette for all users"
    596693msgstr ""
    597694
     
    640737msgstr ""
    641738
    642 #: includes/Settings.php:174
    643 msgid "Use \"mod\" for Cmd/Ctrl, \"shift\", \"alt\", or specific keys like \"k\", \"p\", etc."
    644 msgstr ""
    645 
    646 #: includes/Settings.php:206
     739#: includes/Settings.php:167
     740msgid "⌘ + K"
     741msgstr ""
     742
     743#: includes/Settings.php:168
     744msgid "Ctrl+K"
     745msgstr ""
     746
     747#: includes/Settings.php:171
     748msgid "⌘ + P"
     749msgstr ""
     750
     751#: includes/Settings.php:172
     752msgid "Ctrl+P"
     753msgstr ""
     754
     755#: includes/Settings.php:175
     756msgid "⌘ + E"
     757msgstr ""
     758
     759#: includes/Settings.php:176
     760msgid "Ctrl+E"
     761msgstr ""
     762
     763#: includes/Settings.php:179
     764msgid "⌘ + ⇧ + K"
     765msgstr ""
     766
     767#: includes/Settings.php:180
     768msgid "Ctrl+Shift+K"
     769msgstr ""
     770
     771#: includes/Settings.php:183
     772msgid "⌥Space"
     773msgstr ""
     774
     775#: includes/Settings.php:184
     776msgid "Alt+Space"
     777msgstr ""
     778
     779#: includes/Settings.php:187
     780msgid "⌘ + ⇧ + P"
     781msgstr ""
     782
     783#: includes/Settings.php:188
     784msgid "Ctrl+Shift+P"
     785msgstr ""
     786
     787#: includes/Settings.php:191
     788msgid "⌘ + ⇧ + E"
     789msgstr ""
     790
     791#: includes/Settings.php:192
     792msgid "Ctrl+Shift+E"
     793msgstr ""
     794
     795#: includes/Settings.php:195
     796msgid "⌘ + ⌥ + K"
     797msgstr ""
     798
     799#: includes/Settings.php:196
     800msgid "Ctrl+Alt+K"
     801msgstr ""
     802
     803#: includes/Settings.php:199
     804msgid "⌘ + ⌥ + P"
     805msgstr ""
     806
     807#: includes/Settings.php:200
     808msgid "Ctrl+Alt+P"
     809msgstr ""
     810
     811#: includes/Settings.php:240
     812msgid "Click the field and press your keys, or use the preset buttons above."
     813msgstr ""
     814
     815#: includes/Settings.php:403
    647816msgid "Cache cleared successfully!"
    648817msgstr ""
    649818
    650 #: includes/Settings.php:217
     819#: includes/Settings.php:414
    651820msgid "Save Settings"
    652821msgstr ""
    653822
    654 #: includes/Settings.php:223
     823#: includes/Settings.php:420
    655824msgid "Cache Management"
    656825msgstr ""
    657826
    658 #: includes/Settings.php:224
     827#: includes/Settings.php:421
    659828msgid "Clear all cached commands and search results."
    660829msgstr ""
    661830
    662 #: includes/Settings.php:235
     831#: includes/Settings.php:432
    663832msgid "Users can customize their own preferences by clicking their profile in the command palette."
    664833msgstr ""
    665834
    666 #: includes/Settings.php:236
     835#: includes/Settings.php:433
    667836msgid "Available user preferences:"
    668837msgstr ""
    669838
    670 #: includes/Settings.php:238
     839#: includes/Settings.php:435
    671840msgid "Keyboard shortcut override"
    672841msgstr ""
    673842
    674 #: includes/Settings.php:239
     843#: includes/Settings.php:436
    675844msgid "Results per page"
    676845msgstr ""
    677846
    678 #: includes/Settings.php:240
     847#: includes/Settings.php:437
    679848msgid "Search debounce delay"
    680849msgstr ""
    681850
    682 #: includes/Settings.php:241
     851#: includes/Settings.php:438
    683852msgid "Hidden commands list"
    684 msgstr ""
    685 
    686 #: PATTERN_REGISTRATION_EXAMPLE.php:23
    687 msgid "Product ID Pattern"
    688 msgstr ""
    689 
    690 #: PATTERN_REGISTRATION_EXAMPLE.php:29
    691 #: PATTERN_REGISTRATION_EXAMPLE.php:48
    692 #: PATTERN_REGISTRATION_EXAMPLE.php:67
    693 msgid "PRODUCT FOUND"
    694 msgstr ""
    695 
    696 #: PATTERN_REGISTRATION_EXAMPLE.php:42
    697 msgid "Product ID Pattern (Simple)"
    698 msgstr ""
    699 
    700 #: PATTERN_REGISTRATION_EXAMPLE.php:61
    701 msgid "Product Slug Pattern"
    702 msgstr ""
    703 
    704 #: PATTERN_REGISTRATION_EXAMPLE.php:139
    705 #: PATTERN_REGISTRATION_EXAMPLE.php:195
    706 #: PATTERN_REGISTRATION_EXAMPLE.php:219
    707 #: PATTERN_REGISTRATION_EXAMPLE.php:277
    708 #: PATTERN_REGISTRATION_EXAMPLE.php:464
    709 #: PATTERN_REGISTRATION_EXAMPLE.php:510
    710 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:678
    711 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:733
    712 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:785
    713 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:820
    714 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:880
    715 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:921
    716 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:971
    717 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:1011
    718 msgid "Product not found"
    719 msgstr ""
    720 
    721 #: PATTERN_REGISTRATION_EXAMPLE.php:159
    722 #: PATTERN_REGISTRATION_EXAMPLE.php:298
    723 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:440
    724 msgid "Edit Product"
    725 msgstr ""
    726 
    727 #: PATTERN_REGISTRATION_EXAMPLE.php:166
    728 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:449
    729 msgid "View Product"
    730 msgstr ""
    731 
    732 #: PATTERN_REGISTRATION_EXAMPLE.php:245
    733 msgid "Custom product preview"
    734 msgstr ""
    735 
    736 #: PATTERN_REGISTRATION_EXAMPLE.php:306
    737 #: PATTERN_REGISTRATION_EXAMPLE.php:336
    738 msgid "Update Price"
    739 msgstr ""
    740 
    741 #: PATTERN_REGISTRATION_EXAMPLE.php:311
    742 msgid "Update Product Price"
    743 msgstr ""
    744 
    745 #. translators: %s: Product title
    746 #: PATTERN_REGISTRATION_EXAMPLE.php:313
    747 msgid "Update price for: %s"
    748 msgstr ""
    749 
    750 #: PATTERN_REGISTRATION_EXAMPLE.php:317
    751 msgid "Price"
    752 msgstr ""
    753 
    754 #: PATTERN_REGISTRATION_EXAMPLE.php:321
    755 msgid "Enter new price"
    756 msgstr ""
    757 
    758 #: PATTERN_REGISTRATION_EXAMPLE.php:327
    759 msgid "Sale Price (optional)"
    760 msgstr ""
    761 
    762 #: PATTERN_REGISTRATION_EXAMPLE.php:331
    763 msgid "Enter sale price"
    764 msgstr ""
    765 
    766 #: PATTERN_REGISTRATION_EXAMPLE.php:344
    767 msgid "Bulk Update"
    768 msgstr ""
    769 
    770 #: PATTERN_REGISTRATION_EXAMPLE.php:348
    771 msgid "Bulk Update Product"
    772 msgstr ""
    773 
    774 #. translators: %s: Product title
    775 #: PATTERN_REGISTRATION_EXAMPLE.php:350
    776 msgid "Update multiple fields for: %s"
    777 msgstr ""
    778 
    779 #: PATTERN_REGISTRATION_EXAMPLE.php:354
    780 msgid "Title"
    781 msgstr ""
    782 
    783 #: PATTERN_REGISTRATION_EXAMPLE.php:361
    784 msgid "Status"
    785 msgstr ""
    786 
    787 #: PATTERN_REGISTRATION_EXAMPLE.php:366
    788 msgid "Published"
    789 msgstr ""
    790 
    791 #: PATTERN_REGISTRATION_EXAMPLE.php:367
    792 msgid "Draft"
    793 msgstr ""
    794 
    795 #: PATTERN_REGISTRATION_EXAMPLE.php:368
    796 msgid "Pending Review"
    797 msgstr ""
    798 
    799 #: PATTERN_REGISTRATION_EXAMPLE.php:373
    800 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:503
    801 msgid "Stock Quantity"
    802 msgstr ""
    803 
    804 #: PATTERN_REGISTRATION_EXAMPLE.php:377
    805 msgid "Enter stock quantity"
    806 msgstr ""
    807 
    808 #: PATTERN_REGISTRATION_EXAMPLE.php:381
    809 msgid "Update Product"
    810 msgstr ""
    811 
    812 #: PATTERN_REGISTRATION_EXAMPLE.php:472
    813 msgid "Price must be greater than 0"
    814 msgstr ""
    815 
    816 #: PATTERN_REGISTRATION_EXAMPLE.php:486
    817 msgid "Product price updated successfully"
    818 msgstr ""
    819 
    820 #: PATTERN_REGISTRATION_EXAMPLE.php:541
    821 msgid "Product updated successfully"
    822853msgstr ""
    823854
     
    929960
    930961#: pro/src/Features/ActionCommands.php:85
    931 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:431
    932 #: assets/src/components/CommandPalette.jsx:780
     962#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:457
     963#: assets/src/components/CommandPalette.jsx:791
    933964#: assets/src/components/ConfirmDialog.jsx:43
    934965#: assets/src/components/FormModal.jsx:302
     
    936967msgstr ""
    937968
    938 #: pro/src/Features/ActionCommands.php:95
    939 msgid "Enable Maintenance Mode"
    940 msgstr ""
    941 
    942 #: pro/src/Features/ActionCommands.php:96
    943 msgid "Put the site in maintenance mode"
    944 msgstr ""
    945 
    946 #: pro/src/Features/ActionCommands.php:105
    947 msgid "Enabling maintenance mode..."
    948 msgstr ""
    949 
    950 #: pro/src/Features/ActionCommands.php:113
    951 msgid "Disable Maintenance Mode"
    952 msgstr ""
    953 
    954 #: pro/src/Features/ActionCommands.php:114
    955 msgid "Remove maintenance mode and make site live"
    956 msgstr ""
    957 
    958 #: pro/src/Features/ActionCommands.php:123
    959 msgid "Disabling maintenance mode..."
    960 msgstr ""
    961 
    962 #: pro/src/Features/ActionCommands.php:158
    963 #: pro/src/Features/ActionCommands.php:185
    964 #: pro/src/Features/ActionCommands.php:255
     969#: pro/src/Features/ActionCommands.php:125
     970#: pro/src/Features/ActionCommands.php:153
     971#: pro/src/Features/ActionCommands.php:226
    965972msgid "No transients found to delete"
    966973msgstr ""
    967974
    968975#. translators: %d: Number of transients deleted
    969 #: pro/src/Features/ActionCommands.php:184
     976#: pro/src/Features/ActionCommands.php:152
    970977msgid "Successfully deleted %d transients"
    971978msgstr ""
    972979
    973980#. translators: %1$d: Number deleted
    974 #: pro/src/Features/ActionCommands.php:251
     981#: pro/src/Features/ActionCommands.php:222
    975982msgid "Deleted %1$d transients"
    976983msgstr ""
    977984
    978 #: pro/src/Features/ActionCommands.php:321
    979 #: pro/src/Features/ActionCommands.php:396
     985#: pro/src/Features/ActionCommands.php:297
     986#: pro/src/Features/ActionCommands.php:372
    980987msgid "No images found to regenerate"
    981988msgstr ""
    982989
    983990#. translators: %d: Number of thumbnails regenerated
    984 #: pro/src/Features/ActionCommands.php:354
    985 #: pro/src/Features/ActionCommands.php:457
     991#: pro/src/Features/ActionCommands.php:330
     992#: pro/src/Features/ActionCommands.php:434
    986993msgid "%d thumbnails regenerated"
    987994msgstr ""
    988995
    989996#. translators: %d: Number of errors
    990 #: pro/src/Features/ActionCommands.php:358
    991 #: pro/src/Features/ActionCommands.php:461
     997#: pro/src/Features/ActionCommands.php:334
     998#: pro/src/Features/ActionCommands.php:438
    992999msgid "%d errors"
    9931000msgstr ""
    9941001
    995 #: pro/src/Features/ActionCommands.php:363
    996 #: pro/src/Features/ActionCommands.php:406
    997 #: pro/src/Features/ActionCommands.php:470
     1002#: pro/src/Features/ActionCommands.php:339
     1003#: pro/src/Features/ActionCommands.php:382
     1004#: pro/src/Features/ActionCommands.php:447
    9981005msgid "Thumbnail regeneration completed"
    9991006msgstr ""
    10001007
    1001 #: pro/src/Features/ActionCommands.php:519
    1002 #: pro/src/Features/ActionCommands.php:546
    1003 #: pro/src/Features/ActionCommands.php:598
     1008#: pro/src/Features/ActionCommands.php:502
     1009#: pro/src/Features/ActionCommands.php:530
     1010#: pro/src/Features/ActionCommands.php:582
    10041011msgid "No spam comments found"
    10051012msgstr ""
    10061013
    10071014#. translators: %d: Number of spam comments deleted
    1008 #: pro/src/Features/ActionCommands.php:563
     1015#: pro/src/Features/ActionCommands.php:547
    10091016msgid "Successfully deleted %d spam comment(s)"
    10101017msgstr ""
    10111018
    1012 #: pro/src/Features/ActionCommands.php:564
    1013 #: pro/src/Features/ActionCommands.php:652
     1019#: pro/src/Features/ActionCommands.php:548
     1020#: pro/src/Features/ActionCommands.php:637
    10141021msgid "Failed to delete spam comments"
    10151022msgstr ""
    10161023
    1017 #: pro/src/Features/ActionCommands.php:608
     1024#: pro/src/Features/ActionCommands.php:592
    10181025msgid "All spam comments deleted successfully"
    10191026msgstr ""
    10201027
    10211028#. translators: %1$d: Number deleted
    1022 #: pro/src/Features/ActionCommands.php:648
     1029#: pro/src/Features/ActionCommands.php:633
    10231030msgid "Deleted %1$d spam comment(s)"
    1024 msgstr ""
    1025 
    1026 #: pro/src/Features/ActionCommands.php:698
    1027 msgid "Failed to enable maintenance mode. Check file permissions."
    1028 msgstr ""
    1029 
    1030 #: pro/src/Features/ActionCommands.php:704
    1031 msgid "Maintenance mode enabled. Site is now offline."
    1032 msgstr ""
    1033 
    1034 #: pro/src/Features/ActionCommands.php:720
    1035 msgid "Failed to disable maintenance mode. Check file permissions."
    1036 msgstr ""
    1037 
    1038 #: pro/src/Features/ActionCommands.php:727
    1039 msgid "Maintenance mode disabled. Site is now live."
    10401031msgstr ""
    10411032
     
    10461037#: pro/src/Features/DynamicPatterns.php:45
    10471038#: pro/src/Features/DynamicPatterns.php:81
    1048 #: pro/assets/src/js/dynamic-patterns.js:196
     1039#: pro/assets/src/js/dynamic-patterns.js:188
    10491040msgid "USER FOUND"
    10501041msgstr ""
     
    10631054
    10641055#: pro/src/Features/DynamicPatterns.php:137
    1065 #: pro/assets/src/js/dynamic-patterns.js:35
    1066 #: pro/assets/src/js/dynamic-patterns.js:171
    1067 #: pro/assets/src/js/dynamic-patterns.js:222
    1068 #: pro/assets/src/js/dynamic-patterns.js:236
     1056#: pro/assets/src/js/dynamic-patterns.js:27
     1057#: pro/assets/src/js/dynamic-patterns.js:163
     1058#: pro/assets/src/js/dynamic-patterns.js:214
     1059#: pro/assets/src/js/dynamic-patterns.js:228
    10691060msgid "FOUND"
    10701061msgstr ""
     
    12181209#: pro/src/Features/SettingsCommands.php:210
    12191210#: pro/src/Features/SettingsCommands.php:270
    1220 #: pro/assets/src/js/settings-commands.js:243
    1221 #: pro/assets/src/js/settings-commands.js:299
    1222 #: pro/assets/src/js/settings-commands.js:359
     1211#: pro/assets/src/js/settings-commands.js:237
     1212#: pro/assets/src/js/settings-commands.js:301
     1213#: pro/assets/src/js/settings-commands.js:361
    12231214msgid "Setting updated successfully"
    12241215msgstr ""
     
    12421233msgstr ""
    12431234
    1244 #: pro/src/Features/SettingsCommands.php:419
     1235#: pro/src/Features/SettingsCommands.php:418
    12451236msgid "Invalid option selected"
    12461237msgstr ""
    12471238
    1248 #: pro/src/Features/SettingsCommands.php:461
     1239#: pro/src/Features/SettingsCommands.php:460
    12491240msgid "Enabled successfully"
    12501241msgstr ""
    12511242
    1252 #: pro/src/Features/SettingsCommands.php:461
     1243#: pro/src/Features/SettingsCommands.php:460
    12531244msgid "Disabled successfully"
    12541245msgstr ""
    12551246
    1256 #: pro/src/Features/SettingsCommands.php:468
     1247#: pro/src/Features/SettingsCommands.php:467
    12571248msgid "Toggle setting has no callback"
    12581249msgstr ""
    12591250
    12601251#. translators: %s: Setting title
    1261 #: pro/src/Features/SettingsCommands.php:492
     1252#: pro/src/Features/SettingsCommands.php:491
    12621253msgid "%s updated successfully"
    12631254msgstr ""
    12641255
    1265 #: pro/src/Features/SettingsCommands.php:495
    1266 #: pro/assets/src/js/settings-commands.js:253
    1267 #: pro/assets/src/js/settings-commands.js:258
    1268 #: pro/assets/src/js/settings-commands.js:309
    1269 #: pro/assets/src/js/settings-commands.js:314
    1270 #: pro/assets/src/js/settings-commands.js:376
    1271 #: pro/assets/src/js/settings-commands.js:381
     1256#: pro/src/Features/SettingsCommands.php:494
     1257#: pro/assets/src/js/settings-commands.js:255
     1258#: pro/assets/src/js/settings-commands.js:260
     1259#: pro/assets/src/js/settings-commands.js:311
     1260#: pro/assets/src/js/settings-commands.js:316
     1261#: pro/assets/src/js/settings-commands.js:378
     1262#: pro/assets/src/js/settings-commands.js:383
    12721263msgid "Failed to update setting"
    12731264msgstr ""
    12741265
    1275 #: pro/src/Features/SettingsCommands.php:498
     1266#: pro/src/Features/SettingsCommands.php:497
    12761267msgid "No save method configured. Provide either option_name or save_callback."
    12771268msgstr ""
    12781269
     1270#: pro/src/Features/SettingsCommands.php:506
     1271msgid "5 posts"
     1272msgstr ""
     1273
    12791274#: pro/src/Features/SettingsCommands.php:507
    1280 msgid "5 posts"
     1275msgid "10 posts"
    12811276msgstr ""
    12821277
    12831278#: pro/src/Features/SettingsCommands.php:508
    1284 msgid "10 posts"
     1279msgid "15 posts"
    12851280msgstr ""
    12861281
    12871282#: pro/src/Features/SettingsCommands.php:509
    1288 msgid "15 posts"
     1283msgid "20 posts"
    12891284msgstr ""
    12901285
    12911286#: pro/src/Features/SettingsCommands.php:510
    1292 msgid "20 posts"
     1287msgid "25 posts"
    12931288msgstr ""
    12941289
    12951290#: pro/src/Features/SettingsCommands.php:511
    1296 msgid "25 posts"
     1291msgid "50 posts"
    12971292msgstr ""
    12981293
    12991294#: pro/src/Features/SettingsCommands.php:512
    1300 msgid "50 posts"
    1301 msgstr ""
    1302 
    1303 #: pro/src/Features/SettingsCommands.php:513
    13041295msgid "100 posts"
    13051296msgstr ""
    13061297
    1307 #: pro/src/Features/SettingsCommands.php:527
     1298#: pro/src/Features/SettingsCommands.php:530
     1299#: pro/src/Features/SettingsCommands.php:544
     1300msgid "Posts Per Page"
     1301msgstr ""
     1302
     1303#: pro/src/Features/SettingsCommands.php:531
     1304msgid "Number of posts to show per page"
     1305msgstr ""
     1306
     1307#: pro/src/Features/SettingsCommands.php:539
     1308msgid "Update Posts Per Page"
     1309msgstr ""
     1310
     1311#. translators: %d: Number of posts
    13081312#: pro/src/Features/SettingsCommands.php:540
    1309 msgid "Posts Per Page"
    1310 msgstr ""
    1311 
    1312 #: pro/src/Features/SettingsCommands.php:528
    1313 msgid "Number of posts to show per page"
    1314 msgstr ""
    1315 
    1316 #: pro/src/Features/SettingsCommands.php:535
    1317 msgid "Update Posts Per Page"
    1318 msgstr ""
    1319 
    1320 #. translators: %d: Number of posts
    1321 #: pro/src/Features/SettingsCommands.php:536
    13221313msgid "Current: %d posts"
    13231314msgstr ""
    13241315
    1325 #: pro/src/Features/SettingsCommands.php:547
    1326 #: pro/src/Features/SettingsCommands.php:594
     1316#: pro/src/Features/SettingsCommands.php:551
     1317#: pro/src/Features/SettingsCommands.php:602
     1318#: pro/src/Features/SettingsCommands.php:651
     1319#: pro/src/Features/SettingsCommands.php:703
     1320#: pro/src/Features/SettingsCommands.php:749
     1321#: pro/src/Features/SettingsCommands.php:781
     1322#: pro/src/Features/SettingsCommands.php:813
     1323#: pro/src/Features/SettingsCommands.php:845
     1324#: pro/src/Features/SettingsCommands.php:877
     1325#: pro/src/Features/SettingsCommands.php:927
     1326#: pro/src/Features/SettingsCommands.php:959
     1327#: pro/src/Features/SettingsCommands.php:1010
     1328#: pro/src/Features/SettingsCommands.php:1131
     1329#: pro/src/Features/SettingsCommands.php:1200
     1330#: pro/src/Features/SettingsCommands.php:1248
     1331#: pro/src/Features/SettingsCommands.php:1282
     1332#: pro/src/Features/SettingsCommands.php:1330
     1333#: pro/src/Features/SettingsCommands.php:1380
     1334#: pro/src/Features/SettingsCommands.php:1442
     1335msgid "Update"
     1336msgstr ""
     1337
     1338#: pro/src/Features/SettingsCommands.php:582
     1339#: pro/src/Features/SettingsCommands.php:595
     1340msgid "Date Format"
     1341msgstr ""
     1342
     1343#: pro/src/Features/SettingsCommands.php:583
     1344msgid "How dates are displayed"
     1345msgstr ""
     1346
     1347#: pro/src/Features/SettingsCommands.php:590
     1348msgid "Update Date Format"
     1349msgstr ""
     1350
     1351#. translators: %s: Current value
     1352#: pro/src/Features/SettingsCommands.php:591
     1353#: pro/src/Features/SettingsCommands.php:640
     1354#: pro/src/Features/SettingsCommands.php:692
     1355#: pro/src/Features/SettingsCommands.php:738
     1356#: pro/src/Features/SettingsCommands.php:771
     1357#: pro/src/Features/SettingsCommands.php:803
     1358#: pro/src/Features/SettingsCommands.php:835
     1359#: pro/src/Features/SettingsCommands.php:867
     1360#: pro/src/Features/SettingsCommands.php:916
     1361#: pro/src/Features/SettingsCommands.php:949
     1362#: pro/src/Features/SettingsCommands.php:999
     1363#: pro/src/Features/SettingsCommands.php:1094
     1364#: pro/src/Features/SettingsCommands.php:1189
     1365#: pro/src/Features/SettingsCommands.php:1237
     1366#: pro/src/Features/SettingsCommands.php:1319
     1367#: pro/src/Features/SettingsCommands.php:1369
     1368#: pro/src/Features/SettingsCommands.php:1431
     1369#: pro/assets/src/js/settings-commands.js:62
     1370msgid "Current: %s"
     1371msgstr ""
     1372
     1373#: pro/src/Features/SettingsCommands.php:631
     1374#: pro/src/Features/SettingsCommands.php:644
     1375msgid "Time Format"
     1376msgstr ""
     1377
     1378#: pro/src/Features/SettingsCommands.php:632
     1379msgid "How times are displayed"
     1380msgstr ""
     1381
    13271382#: pro/src/Features/SettingsCommands.php:639
    1328 #: pro/src/Features/SettingsCommands.php:687
    1329 #: pro/src/Features/SettingsCommands.php:729
    1330 #: pro/src/Features/SettingsCommands.php:761
    1331 #: pro/src/Features/SettingsCommands.php:793
    1332 #: pro/src/Features/SettingsCommands.php:825
    1333 #: pro/src/Features/SettingsCommands.php:857
    1334 #: pro/src/Features/SettingsCommands.php:903
    1335 #: pro/src/Features/SettingsCommands.php:935
    1336 #: pro/src/Features/SettingsCommands.php:982
    1337 #: pro/src/Features/SettingsCommands.php:1094
    1338 #: pro/src/Features/SettingsCommands.php:1159
    1339 #: pro/src/Features/SettingsCommands.php:1203
     1383msgid "Update Time Format"
     1384msgstr ""
     1385
     1386#. translators: %s: Current value
     1387#: pro/src/Features/SettingsCommands.php:660
     1388#: pro/src/Features/SettingsCommands.php:692
     1389msgid "Sunday"
     1390msgstr ""
     1391
     1392#: pro/src/Features/SettingsCommands.php:661
     1393msgid "Monday"
     1394msgstr ""
     1395
     1396#: pro/src/Features/SettingsCommands.php:662
     1397msgid "Tuesday"
     1398msgstr ""
     1399
     1400#: pro/src/Features/SettingsCommands.php:663
     1401msgid "Wednesday"
     1402msgstr ""
     1403
     1404#: pro/src/Features/SettingsCommands.php:664
     1405msgid "Thursday"
     1406msgstr ""
     1407
     1408#: pro/src/Features/SettingsCommands.php:665
     1409msgid "Friday"
     1410msgstr ""
     1411
     1412#: pro/src/Features/SettingsCommands.php:666
     1413msgid "Saturday"
     1414msgstr ""
     1415
     1416#: pro/src/Features/SettingsCommands.php:684
     1417#: pro/src/Features/SettingsCommands.php:696
     1418msgid "Week Starts On"
     1419msgstr ""
     1420
     1421#: pro/src/Features/SettingsCommands.php:685
     1422msgid "First day of the week"
     1423msgstr ""
     1424
     1425#: pro/src/Features/SettingsCommands.php:691
     1426msgid "Update Week Starts On"
     1427msgstr ""
     1428
     1429#: pro/src/Features/SettingsCommands.php:725
     1430msgid "Uncategorized"
     1431msgstr ""
     1432
     1433#: pro/src/Features/SettingsCommands.php:730
     1434msgid "Default Post Category"
     1435msgstr ""
     1436
     1437#: pro/src/Features/SettingsCommands.php:731
     1438msgid "Category for new posts"
     1439msgstr ""
     1440
     1441#: pro/src/Features/SettingsCommands.php:737
     1442msgid "Update Default Post Category"
     1443msgstr ""
     1444
     1445#: pro/src/Features/SettingsCommands.php:742
     1446msgid "Default Category"
     1447msgstr ""
     1448
     1449#: pro/src/Features/SettingsCommands.php:763
     1450#: pro/src/Features/SettingsCommands.php:775
     1451msgid "Site Tagline"
     1452msgstr ""
     1453
     1454#: pro/src/Features/SettingsCommands.php:764
     1455msgid "Brief description of your site"
     1456msgstr ""
     1457
     1458#: pro/src/Features/SettingsCommands.php:770
     1459msgid "Update Site Tagline"
     1460msgstr ""
     1461
     1462#. translators: %s: Current value
     1463#: pro/src/Features/SettingsCommands.php:771
     1464#: pro/src/Features/SettingsCommands.php:949
     1465msgid "(empty)"
     1466msgstr ""
     1467
     1468#: pro/src/Features/SettingsCommands.php:795
     1469msgid "Admin Email Address"
     1470msgstr ""
     1471
     1472#: pro/src/Features/SettingsCommands.php:796
     1473msgid "Email address for admin notifications"
     1474msgstr ""
     1475
     1476#: pro/src/Features/SettingsCommands.php:802
     1477msgid "Update Admin Email Address"
     1478msgstr ""
     1479
     1480#: pro/src/Features/SettingsCommands.php:807
     1481msgid "Email Address"
     1482msgstr ""
     1483
     1484#: pro/src/Features/SettingsCommands.php:827
     1485#: pro/src/Features/SettingsCommands.php:839
     1486msgid "WordPress Address (URL)"
     1487msgstr ""
     1488
     1489#: pro/src/Features/SettingsCommands.php:828
     1490msgid "Where your WordPress core files live"
     1491msgstr ""
     1492
     1493#: pro/src/Features/SettingsCommands.php:834
     1494msgid "Update WordPress Address"
     1495msgstr ""
     1496
     1497#: pro/src/Features/SettingsCommands.php:859
     1498#: pro/src/Features/SettingsCommands.php:871
     1499msgid "Site Address (URL)"
     1500msgstr ""
     1501
     1502#: pro/src/Features/SettingsCommands.php:860
     1503msgid "Public URL visitors use to reach your site"
     1504msgstr ""
     1505
     1506#: pro/src/Features/SettingsCommands.php:866
     1507msgid "Update Site Address"
     1508msgstr ""
     1509
     1510#. translators: %s: Current value
     1511#: pro/src/Features/SettingsCommands.php:887
     1512#: pro/src/Features/SettingsCommands.php:916
     1513msgid "Subscriber"
     1514msgstr ""
     1515
     1516#: pro/src/Features/SettingsCommands.php:888
     1517msgid "Contributor"
     1518msgstr ""
     1519
     1520#: pro/src/Features/SettingsCommands.php:889
     1521msgid "Author"
     1522msgstr ""
     1523
     1524#: pro/src/Features/SettingsCommands.php:890
     1525msgid "Editor"
     1526msgstr ""
     1527
     1528#: pro/src/Features/SettingsCommands.php:908
     1529msgid "Default User Role"
     1530msgstr ""
     1531
     1532#: pro/src/Features/SettingsCommands.php:909
     1533msgid "Role assigned to new users"
     1534msgstr ""
     1535
     1536#: pro/src/Features/SettingsCommands.php:915
     1537msgid "Update Default User Role"
     1538msgstr ""
     1539
     1540#: pro/src/Features/SettingsCommands.php:920
     1541msgid "Default Role"
     1542msgstr ""
     1543
     1544#: pro/src/Features/SettingsCommands.php:941
     1545#: pro/src/Features/SettingsCommands.php:953
     1546msgid "Site Title"
     1547msgstr ""
     1548
     1549#: pro/src/Features/SettingsCommands.php:942
     1550msgid "The name of your site"
     1551msgstr ""
     1552
     1553#: pro/src/Features/SettingsCommands.php:948
     1554msgid "Update Site Title"
     1555msgstr ""
     1556
     1557#: pro/src/Features/SettingsCommands.php:991
     1558#: pro/src/Features/SettingsCommands.php:1003
     1559msgid "Timezone"
     1560msgstr ""
     1561
     1562#: pro/src/Features/SettingsCommands.php:992
     1563msgid "Choose a city in the same timezone as you"
     1564msgstr ""
     1565
     1566#: pro/src/Features/SettingsCommands.php:998
     1567msgid "Update Timezone"
     1568msgstr ""
     1569
     1570#: pro/src/Features/SettingsCommands.php:1032
     1571msgid "Timezone updated successfully"
     1572msgstr ""
     1573
     1574#: pro/src/Features/SettingsCommands.php:1046
     1575#: pro/src/Features/SettingsCommands.php:1061
     1576msgid "Your latest posts"
     1577msgstr ""
     1578
     1579#: pro/src/Features/SettingsCommands.php:1047
     1580msgid "A static page"
     1581msgstr ""
     1582
     1583#: pro/src/Features/SettingsCommands.php:1073
     1584msgid "— Select —"
     1585msgstr ""
     1586
     1587#: pro/src/Features/SettingsCommands.php:1086
     1588#: pro/src/Features/SettingsCommands.php:1098
     1589msgid "Front Page Display"
     1590msgstr ""
     1591
     1592#: pro/src/Features/SettingsCommands.php:1087
     1593msgid "What to show on the front page"
     1594msgstr ""
     1595
     1596#: pro/src/Features/SettingsCommands.php:1093
     1597msgid "Update Front Page Display"
     1598msgstr ""
     1599
     1600#: pro/src/Features/SettingsCommands.php:1106
     1601msgid "Homepage"
     1602msgstr ""
     1603
     1604#: pro/src/Features/SettingsCommands.php:1119
     1605msgid "Posts Page"
     1606msgstr ""
     1607
     1608#: pro/src/Features/SettingsCommands.php:1152
     1609msgid "Front page display updated successfully"
     1610msgstr ""
     1611
     1612#. translators: %s: Current value
     1613#: pro/src/Features/SettingsCommands.php:1163
     1614#: pro/src/Features/SettingsCommands.php:1189
     1615msgid "Open"
     1616msgstr ""
     1617
     1618#: pro/src/Features/SettingsCommands.php:1164
     1619msgid "Closed"
     1620msgstr ""
     1621
     1622#: pro/src/Features/SettingsCommands.php:1181
     1623msgid "Default Comment Status"
     1624msgstr ""
     1625
     1626#: pro/src/Features/SettingsCommands.php:1182
     1627msgid "Allow comments on new articles"
     1628msgstr ""
     1629
     1630#: pro/src/Features/SettingsCommands.php:1188
     1631msgid "Update Default Comment Status"
     1632msgstr ""
     1633
     1634#: pro/src/Features/SettingsCommands.php:1193
     1635msgid "Comment Status"
     1636msgstr ""
     1637
     1638#. translators: %s: Current value
     1639#: pro/src/Features/SettingsCommands.php:1211
    13401640#: pro/src/Features/SettingsCommands.php:1237
    1341 #: pro/src/Features/SettingsCommands.php:1281
    1342 #: pro/src/Features/SettingsCommands.php:1327
    1343 #: pro/src/Features/SettingsCommands.php:1385
    1344 msgid "Update"
    1345 msgstr ""
    1346 
    1347 #: pro/src/Features/SettingsCommands.php:574
    1348 #: pro/src/Features/SettingsCommands.php:587
    1349 msgid "Date Format"
    1350 msgstr ""
    1351 
    1352 #: pro/src/Features/SettingsCommands.php:575
    1353 msgid "How dates are displayed"
    1354 msgstr ""
    1355 
    1356 #: pro/src/Features/SettingsCommands.php:582
    1357 msgid "Update Date Format"
     1641msgid "Standard"
     1642msgstr ""
     1643
     1644#: pro/src/Features/SettingsCommands.php:1229
     1645msgid "Default Post Format"
     1646msgstr ""
     1647
     1648#: pro/src/Features/SettingsCommands.php:1230
     1649msgid "Format assigned to new posts"
     1650msgstr ""
     1651
     1652#: pro/src/Features/SettingsCommands.php:1236
     1653msgid "Update Default Post Format"
     1654msgstr ""
     1655
     1656#: pro/src/Features/SettingsCommands.php:1241
     1657msgid "Post Format"
     1658msgstr ""
     1659
     1660#: pro/src/Features/SettingsCommands.php:1262
     1661msgid "Feed Items to Display"
     1662msgstr ""
     1663
     1664#: pro/src/Features/SettingsCommands.php:1263
     1665msgid "Number of items shown in each feed"
     1666msgstr ""
     1667
     1668#: pro/src/Features/SettingsCommands.php:1269
     1669msgid "Update Feed Item Count"
     1670msgstr ""
     1671
     1672#. translators: %d: Number of items
     1673#: pro/src/Features/SettingsCommands.php:1270
     1674msgid "Current: %d items"
     1675msgstr ""
     1676
     1677#: pro/src/Features/SettingsCommands.php:1274
     1678msgid "Number of items"
    13581679msgstr ""
    13591680
    13601681#. translators: %s: Current value
    1361 #: pro/src/Features/SettingsCommands.php:583
    1362 #: pro/src/Features/SettingsCommands.php:628
    1363 #: pro/src/Features/SettingsCommands.php:676
    1364 #: pro/src/Features/SettingsCommands.php:718
    1365 #: pro/src/Features/SettingsCommands.php:751
    1366 #: pro/src/Features/SettingsCommands.php:783
    1367 #: pro/src/Features/SettingsCommands.php:815
    1368 #: pro/src/Features/SettingsCommands.php:847
    1369 #: pro/src/Features/SettingsCommands.php:892
    1370 #: pro/src/Features/SettingsCommands.php:925
    1371 #: pro/src/Features/SettingsCommands.php:971
    1372 #: pro/src/Features/SettingsCommands.php:1057
    1373 #: pro/src/Features/SettingsCommands.php:1148
    1374 #: pro/src/Features/SettingsCommands.php:1192
    1375 #: pro/src/Features/SettingsCommands.php:1270
    1376 #: pro/src/Features/SettingsCommands.php:1316
    1377 #: pro/src/Features/SettingsCommands.php:1374
    1378 #: pro/assets/src/js/settings-commands.js:70
    1379 msgid "Current: %s"
    1380 msgstr ""
    1381 
    1382 #: pro/src/Features/SettingsCommands.php:619
    1383 #: pro/src/Features/SettingsCommands.php:632
    1384 msgid "Time Format"
    1385 msgstr ""
    1386 
    1387 #: pro/src/Features/SettingsCommands.php:620
    1388 msgid "How times are displayed"
    1389 msgstr ""
    1390 
    1391 #: pro/src/Features/SettingsCommands.php:627
    1392 msgid "Update Time Format"
     1682#: pro/src/Features/SettingsCommands.php:1293
     1683#: pro/src/Features/SettingsCommands.php:1319
     1684msgid "Full text"
     1685msgstr ""
     1686
     1687#: pro/src/Features/SettingsCommands.php:1294
     1688msgid "Summary (excerpt)"
     1689msgstr ""
     1690
     1691#: pro/src/Features/SettingsCommands.php:1311
     1692#: pro/src/Features/SettingsCommands.php:1323
     1693msgid "Feed Content"
     1694msgstr ""
     1695
     1696#: pro/src/Features/SettingsCommands.php:1312
     1697msgid "Choose how much of each post to show in feeds"
     1698msgstr ""
     1699
     1700#: pro/src/Features/SettingsCommands.php:1318
     1701msgid "Update Feed Content"
    13931702msgstr ""
    13941703
    13951704#. translators: %s: Current value
    1396 #: pro/src/Features/SettingsCommands.php:648
    1397 #: pro/src/Features/SettingsCommands.php:676
    1398 msgid "Sunday"
    1399 msgstr ""
    1400 
    1401 #: pro/src/Features/SettingsCommands.php:649
    1402 msgid "Monday"
    1403 msgstr ""
    1404 
    1405 #: pro/src/Features/SettingsCommands.php:650
    1406 msgid "Tuesday"
    1407 msgstr ""
    1408 
    1409 #: pro/src/Features/SettingsCommands.php:651
    1410 msgid "Wednesday"
    1411 msgstr ""
    1412 
    1413 #: pro/src/Features/SettingsCommands.php:652
    1414 msgid "Thursday"
    1415 msgstr ""
    1416 
    1417 #: pro/src/Features/SettingsCommands.php:653
    1418 msgid "Friday"
    1419 msgstr ""
    1420 
    1421 #: pro/src/Features/SettingsCommands.php:654
    1422 msgid "Saturday"
    1423 msgstr ""
    1424 
    1425 #: pro/src/Features/SettingsCommands.php:668
    1426 #: pro/src/Features/SettingsCommands.php:680
    1427 msgid "Week Starts On"
    1428 msgstr ""
    1429 
    1430 #: pro/src/Features/SettingsCommands.php:669
    1431 msgid "First day of the week"
    1432 msgstr ""
    1433 
    1434 #: pro/src/Features/SettingsCommands.php:675
    1435 msgid "Update Week Starts On"
    1436 msgstr ""
    1437 
    1438 #: pro/src/Features/SettingsCommands.php:705
    1439 msgid "Uncategorized"
    1440 msgstr ""
    1441 
    1442 #: pro/src/Features/SettingsCommands.php:710
    1443 msgid "Default Post Category"
    1444 msgstr ""
    1445 
    1446 #: pro/src/Features/SettingsCommands.php:711
    1447 msgid "Category for new posts"
    1448 msgstr ""
    1449 
    1450 #: pro/src/Features/SettingsCommands.php:717
    1451 msgid "Update Default Post Category"
    1452 msgstr ""
    1453 
    1454 #: pro/src/Features/SettingsCommands.php:722
    1455 msgid "Default Category"
    1456 msgstr ""
    1457 
    1458 #: pro/src/Features/SettingsCommands.php:743
    1459 #: pro/src/Features/SettingsCommands.php:755
    1460 msgid "Site Tagline"
    1461 msgstr ""
    1462 
    1463 #: pro/src/Features/SettingsCommands.php:744
    1464 msgid "Brief description of your site"
    1465 msgstr ""
    1466 
    1467 #: pro/src/Features/SettingsCommands.php:750
    1468 msgid "Update Site Tagline"
    1469 msgstr ""
    1470 
    1471 #. translators: %s: Current value
    1472 #: pro/src/Features/SettingsCommands.php:751
    1473 #: pro/src/Features/SettingsCommands.php:925
    1474 msgid "(empty)"
    1475 msgstr ""
    1476 
    1477 #: pro/src/Features/SettingsCommands.php:775
    1478 msgid "Admin Email Address"
    1479 msgstr ""
    1480 
    1481 #: pro/src/Features/SettingsCommands.php:776
    1482 msgid "Email address for admin notifications"
    1483 msgstr ""
    1484 
    1485 #: pro/src/Features/SettingsCommands.php:782
    1486 msgid "Update Admin Email Address"
    1487 msgstr ""
    1488 
    1489 #: pro/src/Features/SettingsCommands.php:787
    1490 msgid "Email Address"
    1491 msgstr ""
    1492 
    1493 #: pro/src/Features/SettingsCommands.php:807
    1494 #: pro/src/Features/SettingsCommands.php:819
    1495 msgid "WordPress Address (URL)"
    1496 msgstr ""
    1497 
    1498 #: pro/src/Features/SettingsCommands.php:808
    1499 msgid "Where your WordPress core files live"
    1500 msgstr ""
    1501 
    1502 #: pro/src/Features/SettingsCommands.php:814
    1503 msgid "Update WordPress Address"
    1504 msgstr ""
    1505 
    1506 #: pro/src/Features/SettingsCommands.php:839
    1507 #: pro/src/Features/SettingsCommands.php:851
    1508 msgid "Site Address (URL)"
    1509 msgstr ""
    1510 
    1511 #: pro/src/Features/SettingsCommands.php:840
    1512 msgid "Public URL visitors use to reach your site"
    1513 msgstr ""
    1514 
    1515 #: pro/src/Features/SettingsCommands.php:846
    1516 msgid "Update Site Address"
    1517 msgstr ""
    1518 
    1519 #. translators: %s: Current value
    1520 #: pro/src/Features/SettingsCommands.php:867
    1521 #: pro/src/Features/SettingsCommands.php:892
    1522 msgid "Subscriber"
    1523 msgstr ""
    1524 
    1525 #: pro/src/Features/SettingsCommands.php:868
    1526 msgid "Contributor"
    1527 msgstr ""
    1528 
    1529 #: pro/src/Features/SettingsCommands.php:869
    1530 msgid "Author"
    1531 msgstr ""
    1532 
    1533 #: pro/src/Features/SettingsCommands.php:870
    1534 msgid "Editor"
    1535 msgstr ""
    1536 
    1537 #: pro/src/Features/SettingsCommands.php:884
    1538 msgid "Default User Role"
    1539 msgstr ""
    1540 
    1541 #: pro/src/Features/SettingsCommands.php:885
    1542 msgid "Role assigned to new users"
    1543 msgstr ""
    1544 
    1545 #: pro/src/Features/SettingsCommands.php:891
    1546 msgid "Update Default User Role"
    1547 msgstr ""
    1548 
    1549 #: pro/src/Features/SettingsCommands.php:896
    1550 msgid "Default Role"
    1551 msgstr ""
    1552 
    1553 #: pro/src/Features/SettingsCommands.php:917
    1554 #: pro/src/Features/SettingsCommands.php:929
    1555 msgid "Site Title"
    1556 msgstr ""
    1557 
    1558 #: pro/src/Features/SettingsCommands.php:918
    1559 msgid "The name of your site"
    1560 msgstr ""
    1561 
    1562 #: pro/src/Features/SettingsCommands.php:924
    1563 msgid "Update Site Title"
    1564 msgstr ""
    1565 
    1566 #: pro/src/Features/SettingsCommands.php:963
    1567 #: pro/src/Features/SettingsCommands.php:975
    1568 msgid "Timezone"
    1569 msgstr ""
    1570 
    1571 #: pro/src/Features/SettingsCommands.php:964
    1572 msgid "Choose a city in the same timezone as you"
    1573 msgstr ""
    1574 
    1575 #: pro/src/Features/SettingsCommands.php:970
    1576 msgid "Update Timezone"
    1577 msgstr ""
    1578 
    1579 #: pro/src/Features/SettingsCommands.php:1004
    1580 msgid "Timezone updated successfully"
    1581 msgstr ""
    1582 
    1583 #: pro/src/Features/SettingsCommands.php:1018
    1584 #: pro/src/Features/SettingsCommands.php:1029
    1585 msgid "Your latest posts"
    1586 msgstr ""
    1587 
    1588 #: pro/src/Features/SettingsCommands.php:1019
    1589 msgid "A static page"
    1590 msgstr ""
    1591 
    1592 #: pro/src/Features/SettingsCommands.php:1036
    1593 msgid "— Select —"
    1594 msgstr ""
    1595 
    1596 #: pro/src/Features/SettingsCommands.php:1049
    1597 #: pro/src/Features/SettingsCommands.php:1061
    1598 msgid "Front Page Display"
    1599 msgstr ""
    1600 
    1601 #: pro/src/Features/SettingsCommands.php:1050
    1602 msgid "What to show on the front page"
    1603 msgstr ""
    1604 
    1605 #: pro/src/Features/SettingsCommands.php:1056
    1606 msgid "Update Front Page Display"
    1607 msgstr ""
    1608 
    1609 #: pro/src/Features/SettingsCommands.php:1069
    1610 msgid "Homepage"
    1611 msgstr ""
    1612 
    1613 #: pro/src/Features/SettingsCommands.php:1082
    1614 msgid "Posts Page"
    1615 msgstr ""
    1616 
    1617 #: pro/src/Features/SettingsCommands.php:1115
    1618 msgid "Front page display updated successfully"
    1619 msgstr ""
    1620 
    1621 #. translators: %s: Current value
    1622 #: pro/src/Features/SettingsCommands.php:1126
    1623 #: pro/src/Features/SettingsCommands.php:1148
    1624 msgid "Open"
    1625 msgstr ""
    1626 
    1627 #: pro/src/Features/SettingsCommands.php:1127
    1628 msgid "Closed"
    1629 msgstr ""
    1630 
    1631 #: pro/src/Features/SettingsCommands.php:1140
    1632 msgid "Default Comment Status"
    1633 msgstr ""
    1634 
    1635 #: pro/src/Features/SettingsCommands.php:1141
    1636 msgid "Allow comments on new articles"
    1637 msgstr ""
    1638 
    1639 #: pro/src/Features/SettingsCommands.php:1147
    1640 msgid "Update Default Comment Status"
    1641 msgstr ""
    1642 
    1643 #: pro/src/Features/SettingsCommands.php:1152
    1644 msgid "Comment Status"
    1645 msgstr ""
    1646 
    1647 #. translators: %s: Current value
    1648 #: pro/src/Features/SettingsCommands.php:1170
    1649 #: pro/src/Features/SettingsCommands.php:1192
    1650 msgid "Standard"
    1651 msgstr ""
    1652 
    1653 #: pro/src/Features/SettingsCommands.php:1184
    1654 msgid "Default Post Format"
    1655 msgstr ""
    1656 
    1657 #: pro/src/Features/SettingsCommands.php:1185
    1658 msgid "Format assigned to new posts"
    1659 msgstr ""
    1660 
    1661 #: pro/src/Features/SettingsCommands.php:1191
    1662 msgid "Update Default Post Format"
    1663 msgstr ""
    1664 
    1665 #: pro/src/Features/SettingsCommands.php:1196
    1666 msgid "Post Format"
    1667 msgstr ""
    1668 
    1669 #: pro/src/Features/SettingsCommands.php:1217
    1670 msgid "Feed Items to Display"
    1671 msgstr ""
    1672 
    1673 #: pro/src/Features/SettingsCommands.php:1218
    1674 msgid "Number of items shown in each feed"
    1675 msgstr ""
    1676 
    1677 #: pro/src/Features/SettingsCommands.php:1224
    1678 msgid "Update Feed Item Count"
    1679 msgstr ""
    1680 
    1681 #. translators: %d: Number of items
    1682 #: pro/src/Features/SettingsCommands.php:1225
    1683 msgid "Current: %d items"
    1684 msgstr ""
    1685 
    1686 #: pro/src/Features/SettingsCommands.php:1229
    1687 msgid "Number of items"
    1688 msgstr ""
    1689 
    1690 #. translators: %s: Current value
    1691 #: pro/src/Features/SettingsCommands.php:1248
    1692 #: pro/src/Features/SettingsCommands.php:1270
    1693 msgid "Full text"
    1694 msgstr ""
    1695 
    1696 #: pro/src/Features/SettingsCommands.php:1249
    1697 msgid "Summary (excerpt)"
    1698 msgstr ""
    1699 
    1700 #: pro/src/Features/SettingsCommands.php:1262
    1701 #: pro/src/Features/SettingsCommands.php:1274
    1702 msgid "Feed Content"
    1703 msgstr ""
    1704 
    1705 #: pro/src/Features/SettingsCommands.php:1263
    1706 msgid "Choose how much of each post to show in feeds"
    1707 msgstr ""
    1708 
    1709 #: pro/src/Features/SettingsCommands.php:1269
    1710 msgid "Update Feed Content"
    1711 msgstr ""
    1712 
    1713 #. translators: %s: Current value
    1714 #: pro/src/Features/SettingsCommands.php:1292
    1715 #: pro/src/Features/SettingsCommands.php:1316
     1705#: pro/src/Features/SettingsCommands.php:1341
     1706#: pro/src/Features/SettingsCommands.php:1369
    17161707msgid "G — Suitable for all audiences"
    17171708msgstr ""
    17181709
    1719 #: pro/src/Features/SettingsCommands.php:1293
     1710#: pro/src/Features/SettingsCommands.php:1342
    17201711msgid "PG — Possibly offensive, but suitable for most audiences"
    17211712msgstr ""
    17221713
    1723 #: pro/src/Features/SettingsCommands.php:1294
     1714#: pro/src/Features/SettingsCommands.php:1343
    17241715msgid "R — Intended for adult audiences above 17"
    17251716msgstr ""
    17261717
    1727 #: pro/src/Features/SettingsCommands.php:1295
     1718#: pro/src/Features/SettingsCommands.php:1344
    17281719msgid "X — Even more mature than above"
    17291720msgstr ""
    17301721
    1731 #: pro/src/Features/SettingsCommands.php:1308
    1732 #: pro/src/Features/SettingsCommands.php:1320
     1722#: pro/src/Features/SettingsCommands.php:1361
     1723#: pro/src/Features/SettingsCommands.php:1373
    17331724msgid "Avatar Rating"
    17341725msgstr ""
    17351726
    1736 #: pro/src/Features/SettingsCommands.php:1309
     1727#: pro/src/Features/SettingsCommands.php:1362
    17371728msgid "Maximum allowed rating for avatars"
    17381729msgstr ""
    17391730
    1740 #: pro/src/Features/SettingsCommands.php:1315
     1731#: pro/src/Features/SettingsCommands.php:1368
    17411732msgid "Update Avatar Rating"
    17421733msgstr ""
    17431734
    1744 #: pro/src/Features/SettingsCommands.php:1338
     1735#: pro/src/Features/SettingsCommands.php:1391
    17451736msgid "Plain"
    17461737msgstr ""
    17471738
    1748 #: pro/src/Features/SettingsCommands.php:1339
     1739#: pro/src/Features/SettingsCommands.php:1392
    17491740msgid "Day and name"
    17501741msgstr ""
    17511742
    1752 #: pro/src/Features/SettingsCommands.php:1340
     1743#: pro/src/Features/SettingsCommands.php:1393
    17531744msgid "Month and name"
    17541745msgstr ""
    17551746
    1756 #: pro/src/Features/SettingsCommands.php:1341
     1747#: pro/src/Features/SettingsCommands.php:1394
    17571748msgid "Year and name"
    17581749msgstr ""
    17591750
    1760 #: pro/src/Features/SettingsCommands.php:1342
     1751#: pro/src/Features/SettingsCommands.php:1395
    17611752msgid "Post name"
    17621753msgstr ""
    17631754
    1764 #: pro/src/Features/SettingsCommands.php:1360
     1755#: pro/src/Features/SettingsCommands.php:1417
    17651756msgid "Custom"
    17661757msgstr ""
    17671758
    1768 #: pro/src/Features/SettingsCommands.php:1366
    1769 #: pro/src/Features/SettingsCommands.php:1378
     1759#: pro/src/Features/SettingsCommands.php:1423
     1760#: pro/src/Features/SettingsCommands.php:1435
    17701761msgid "Permalink Structure"
    17711762msgstr ""
    17721763
    1773 #: pro/src/Features/SettingsCommands.php:1367
     1764#: pro/src/Features/SettingsCommands.php:1424
    17741765msgid "How permalinks are structured"
    17751766msgstr ""
    17761767
    1777 #: pro/src/Features/SettingsCommands.php:1373
     1768#: pro/src/Features/SettingsCommands.php:1430
    17781769msgid "Update Permalink Structure"
    17791770msgstr ""
    17801771
    1781 #: pro/src/Features/SettingsCommands.php:1393
     1772#: pro/src/Features/SettingsCommands.php:1450
    17821773msgid "Permalink structure updated successfully. Please note that changing permalinks may affect existing URLs."
    17831774msgstr ""
    17841775
    1785 #: pro/src/Features/SettingsCommands.php:1415
     1776#: pro/src/Features/SettingsCommands.php:1472
    17861777msgid "Image Sizes"
    17871778msgstr ""
    17881779
    1789 #: pro/src/Features/SettingsCommands.php:1416
     1780#: pro/src/Features/SettingsCommands.php:1473
    17901781msgid "Control thumbnail, medium, and large dimensions"
    17911782msgstr ""
    17921783
    1793 #: pro/src/Features/SettingsCommands.php:1422
     1784#: pro/src/Features/SettingsCommands.php:1479
    17941785msgid "Update Image Sizes"
    17951786msgstr ""
    17961787
    1797 #: pro/src/Features/SettingsCommands.php:1423
     1788#: pro/src/Features/SettingsCommands.php:1480
    17981789msgid "Adjust the dimensions WordPress uses when generating images."
    17991790msgstr ""
    18001791
    1801 #: pro/src/Features/SettingsCommands.php:1427
     1792#: pro/src/Features/SettingsCommands.php:1484
    18021793msgid "Thumbnail Width (px)"
    18031794msgstr ""
    18041795
    1805 #: pro/src/Features/SettingsCommands.php:1434
     1796#: pro/src/Features/SettingsCommands.php:1491
    18061797msgid "Thumbnail Height (px)"
    18071798msgstr ""
    18081799
    1809 #: pro/src/Features/SettingsCommands.php:1441
     1800#: pro/src/Features/SettingsCommands.php:1498
    18101801msgid "Crop thumbnail to exact dimensions"
    18111802msgstr ""
    18121803
    1813 #: pro/src/Features/SettingsCommands.php:1447
     1804#: pro/src/Features/SettingsCommands.php:1504
    18141805msgid "Medium Width (px)"
    18151806msgstr ""
    18161807
    1817 #: pro/src/Features/SettingsCommands.php:1454
     1808#: pro/src/Features/SettingsCommands.php:1511
    18181809msgid "Medium Height (px)"
    18191810msgstr ""
    18201811
    1821 #: pro/src/Features/SettingsCommands.php:1461
     1812#: pro/src/Features/SettingsCommands.php:1518
    18221813msgid "Medium Large Width (px)"
    18231814msgstr ""
    18241815
    1825 #: pro/src/Features/SettingsCommands.php:1468
     1816#: pro/src/Features/SettingsCommands.php:1525
    18261817msgid "Medium Large Height (px)"
    18271818msgstr ""
    18281819
    1829 #: pro/src/Features/SettingsCommands.php:1475
     1820#: pro/src/Features/SettingsCommands.php:1532
    18301821msgid "Large Width (px)"
    18311822msgstr ""
    18321823
    1833 #: pro/src/Features/SettingsCommands.php:1482
     1824#: pro/src/Features/SettingsCommands.php:1539
    18341825msgid "Large Height (px)"
    18351826msgstr ""
    18361827
    1837 #: pro/src/Features/SettingsCommands.php:1488
     1828#: pro/src/Features/SettingsCommands.php:1545
    18381829msgid "Save Sizes"
    18391830msgstr ""
    18401831
    1841 #: pro/src/Features/SettingsCommands.php:1492
     1832#: pro/src/Features/SettingsCommands.php:1549
    18421833msgid "Invalid form submission"
    18431834msgstr ""
    18441835
    1845 #: pro/src/Features/SettingsCommands.php:1517
     1836#: pro/src/Features/SettingsCommands.php:1574
    18461837msgid "Image sizes updated successfully"
    18471838msgstr ""
    18481839
    1849 #: pro/src/Features/SmartDefaultView.php:260
     1840#: pro/src/Features/SmartDefaultView.php:257
    18501841msgid "Enable Favorites"
    18511842msgstr ""
    18521843
    1853 #: pro/src/Features/SmartDefaultView.php:266
     1844#: pro/src/Features/SmartDefaultView.php:263
    18541845msgid "Allow users to star their favorite commands for quick access"
    18551846msgstr ""
     
    18781869
    18791870#: pro/src/Features/ToggleCommands.php:238
    1880 #: pro/assets/src/js/settings-commands.js:63
    1881 #: pro/assets/src/js/settings-commands.js:239
    1882 #: pro/assets/src/js/smart-default-view.js:473
    1883 #: pro/assets/src/js/toggle-commands.js:151
     1871#: pro/assets/src/js/settings-commands.js:55
     1872#: pro/assets/src/js/settings-commands.js:233
     1873#: pro/assets/src/js/smart-default-view.js:465
     1874#: pro/assets/src/js/toggle-commands.js:143
    18841875msgid "ON"
    18851876msgstr ""
    18861877
    18871878#: pro/src/Features/ToggleCommands.php:238
    1888 #: pro/assets/src/js/settings-commands.js:63
    1889 #: pro/assets/src/js/settings-commands.js:239
    1890 #: pro/assets/src/js/smart-default-view.js:473
    1891 #: pro/assets/src/js/toggle-commands.js:151
     1879#: pro/assets/src/js/settings-commands.js:55
     1880#: pro/assets/src/js/settings-commands.js:233
     1881#: pro/assets/src/js/smart-default-view.js:465
     1882#: pro/assets/src/js/toggle-commands.js:143
    18921883msgid "OFF"
    18931884msgstr ""
     
    20422033
    20432034#. translators: %d: Number of orders
    2044 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:143
     2035#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:147
    20452036msgid "%d orders"
    20462037msgstr ""
    20472038
    20482039#. translators: %s: Total amount spent
    2049 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:145
     2040#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:149
    20502041msgid "Total: %s"
    20512042msgstr ""
    20522043
    20532044#. translators: %s: Last order date
    2054 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:149
     2045#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:153
    20552046msgid "Last order: %s"
    20562047msgstr ""
    20572048
    2058 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:151
     2049#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:155
    20592050msgid "No orders yet"
    20602051msgstr ""
    20612052
    2062 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:168
    2063 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:310
    2064 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:407
     2053#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:172
     2054#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:320
     2055#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:421
    20652056msgid "Edit Customer"
    20662057msgstr ""
    20672058
    2068 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:169
     2059#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:173
    20692060msgid "Edit customer profile"
    20702061msgstr ""
    20712062
    2072 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:176
    2073 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:317
     2063#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:180
     2064#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:327
    20742065msgid "View Orders"
    20752066msgstr ""
    20762067
    20772068#. translators: %d: Number of orders
    2078 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:178
     2069#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:182
    20792070msgid "View all %d orders"
    20802071msgstr ""
    20812072
    2082 #: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:186
     2073#: pro/src/Integration/WooCommerce/commands/CustomerCommands.php:190
    20832074msgid "Send an email to this customer"
    20842075msgstr ""
     
    21332124
    21342125#. translators: %d: Number of items in the order
    2135 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:303
     2126#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:329
    21362127msgid "%d items"
    21372128msgstr ""
    21382129
    2139 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:320
     2130#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:346
    21402131msgid "View Order Details"
    21412132msgstr ""
    21422133
    2143 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:337
    2144 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:356
    2145 msgid "Change Status"
    2146 msgstr ""
    2147 
    21482134#. translators: %s: Order number
    2149 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:342
     2135#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:368
    21502136msgid "Change Status for Order #%s"
    21512137msgstr ""
    21522138
    21532139#. translators: %s: Current order status
    2154 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:344
     2140#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:370
    21552141msgid "Current status: %s"
    21562142msgstr ""
    21572143
    2158 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:348
    2159 msgid "New Status"
    2160 msgstr ""
    2161 
    2162 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:352
     2144#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:378
    21632145msgid "Select the new order status"
    21642146msgstr ""
    21652147
    2166 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:364
    2167 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:382
     2148#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:390
     2149#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:408
    21682150msgid "Add Note"
    21692151msgstr ""
    21702152
    21712153#. translators: %s: Order number
    2172 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:369
     2154#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:395
    21732155msgid "Add Note to Order #%s"
    21742156msgstr ""
    21752157
    2176 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:370
     2158#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:396
    21772159msgid "Add a private note to this order. This note will be visible to administrators only."
    21782160msgstr ""
    21792161
    2180 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:374
     2162#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:400
    21812163msgid "Order Note"
    21822164msgstr ""
    21832165
    2184 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:376
     2166#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:402
    21852167msgid "Enter your note here..."
    21862168msgstr ""
    21872169
    2188 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:379
     2170#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:405
    21892171msgid "This note will be added to the order activity log."
    21902172msgstr ""
    21912173
    2192 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:390
     2174#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:416
    21932175msgid "Send Order Details"
    21942176msgstr ""
    21952177
    2196 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:399
     2178#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:425
    21972179msgid "Resend New Order Notification"
    21982180msgstr ""
    21992181
    2200 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:411
     2182#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:437
    22012183msgid "View Customer"
    22022184msgstr ""
    22032185
    22042186#. translators: %s: Order number
    2205 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:428
     2187#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:454
    22062188msgid "Move Order #%s to Trash?"
    22072189msgstr ""
    22082190
    2209 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:429
     2191#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:455
    22102192msgid "This order will be moved to trash. You can restore it later from the trash."
    22112193msgstr ""
    22122194
    2213 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:438
     2195#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:464
    22142196msgid "Recalculate Totals"
    22152197msgstr ""
    22162198
    2217 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:447
     2199#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:473
    22182200msgid "Copy Order Number"
    22192201msgstr ""
    22202202
    2221 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:462
     2203#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:488
    22222204msgid "Copy Customer Email"
    22232205msgstr ""
    22242206
    2225 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:477
     2207#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:503
    22262208msgid "Send Custom Email"
    22272209msgstr ""
    22282210
    2229 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:482
     2211#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:508
    22302212msgid "Send Email to Customer"
    22312213msgstr ""
    22322214
    22332215#. translators: %s: Customer email address
    2234 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:484
     2216#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:510
    22352217msgid "Send to: %s"
    22362218msgstr ""
    22372219
    2238 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:488
     2220#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:514
    22392221msgid "Subject"
    22402222msgstr ""
    22412223
    2242 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:490
     2224#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:516
    22432225msgid "Email subject..."
    22442226msgstr ""
    22452227
    2246 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:495
     2228#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:521
    22472229msgid "Message"
    22482230msgstr ""
    22492231
    2250 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:497
     2232#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:523
    22512233msgid "Your message..."
    22522234msgstr ""
    22532235
    2254 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:510
    2255 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:528
     2236#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:536
     2237#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:554
    22562238msgid "Apply Coupon"
    22572239msgstr ""
    22582240
    22592241#. translators: %s: Order number
    2260 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:516
     2242#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:542
    22612243msgid "Apply Coupon to Order #%s"
    22622244msgstr ""
    22632245
    2264 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:517
     2246#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:543
    22652247msgid "Enter a coupon code to apply discount to this order."
    22662248msgstr ""
    22672249
    2268 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:521
     2250#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:547
    22692251msgid "Coupon Code"
    22702252msgstr ""
    22712253
    2272 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:523
     2254#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:549
    22732255msgid "Enter coupon code..."
    22742256msgstr ""
    22752257
    2276 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:525
     2258#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:551
    22772259msgid "The coupon must be valid and active."
    22782260msgstr ""
    22792261
    22802262#. translators: %s: Order number
    2281 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:535
     2263#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:561
    22822264msgid "Order #%s"
    22832265msgstr ""
    22842266
    2285 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:553
    2286 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:581
    2287 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:616
    2288 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:643
    2289 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:729
    2290 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:769
    2291 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:806
    2292 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:857
    2293 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:914
     2267#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:579
     2268#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:607
     2269#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:642
     2270#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:669
     2271#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:755
     2272#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:795
     2273#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:832
     2274#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:883
     2275#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:940
    22942276msgid "Order ID is required"
    22952277msgstr ""
    22962278
    2297 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:561
     2279#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:587
     2280#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:622
     2281#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:650
     2282#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:678
     2283#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:770
     2284#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:803
     2285#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:840
     2286#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:891
     2287#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:955
     2288msgid "Order not found"
     2289msgstr ""
     2290
     2291#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:591
     2292msgid "Order marked as complete via Commandify"
     2293msgstr ""
     2294
     2295#. translators: %s: Order number
    22982296#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:596
    2299 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:624
    2300 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:652
    2301 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:744
    2302 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:777
    2303 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:814
    2304 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:865
    2305 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:929
    2306 msgid "Order not found"
    2307 msgstr ""
    2308 
    2309 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:565
    2310 msgid "Order marked as complete via Commandify"
     2297msgid "Order #%s marked as complete"
     2298msgstr ""
     2299
     2300#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:614
     2301msgid "Note text is required"
    23112302msgstr ""
    23122303
    23132304#. translators: %s: Order number
    2314 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:570
    2315 msgid "Order #%s marked as complete"
    2316 msgstr ""
    2317 
    2318 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:588
    2319 msgid "Note text is required"
     2305#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:632
     2306msgid "Note added to order #%s"
     2307msgstr ""
     2308
     2309#. translators: %s: Customer email address
     2310#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:659
     2311msgid "Order details sent to %s"
    23202312msgstr ""
    23212313
    23222314#. translators: %s: Order number
    2323 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:606
    2324 msgid "Note added to order #%s"
     2315#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:700
     2316msgid "New order notification sent for order #%s"
     2317msgstr ""
     2318
     2319#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:775
     2320msgid "Status changed via Commandify"
     2321msgstr ""
     2322
     2323#. translators: %1$s: Order number, %2$s: Old status, %3$s: New status
     2324#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:781
     2325msgid "Order #%1$s status changed from %2$s to %3$s"
     2326msgstr ""
     2327
     2328#. translators: %s: Order number
     2329#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:815
     2330msgid "Failed to trash order #%s"
     2331msgstr ""
     2332
     2333#. translators: %s: Order number
     2334#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:822
     2335msgid "Order #%s moved to trash"
     2336msgstr ""
     2337
     2338#. translators: %1$s: Order number, %2$s: New total
     2339#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:851
     2340msgid "Order #%1$s totals recalculated. New total: %2$s"
     2341msgstr ""
     2342
     2343#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:864
     2344msgid "Nothing to copy"
     2345msgstr ""
     2346
     2347#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:870
     2348msgid "Copied to clipboard!"
     2349msgstr ""
     2350
     2351#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:899
     2352msgid "Customer email not found"
     2353msgstr ""
     2354
     2355#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:911
     2356msgid "Failed to send email"
     2357msgstr ""
     2358
     2359#. translators: %s: Email subject
     2360#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:918
     2361msgid "Custom email sent: \"%s\""
    23252362msgstr ""
    23262363
    23272364#. translators: %s: Customer email address
    2328 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:633
    2329 msgid "Order details sent to %s"
    2330 msgstr ""
    2331 
    2332 #. translators: %s: Order number
    2333 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:674
    2334 msgid "New order notification sent for order #%s"
    2335 msgstr ""
    2336 
    2337 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:736
    2338 msgid "New status is required"
    2339 msgstr ""
    2340 
    2341 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:749
    2342 msgid "Status changed via Commandify"
    2343 msgstr ""
    2344 
    2345 #. translators: %1$s: Order number, %2$s: Old status, %3$s: New status
    2346 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:755
    2347 msgid "Order #%1$s status changed from %2$s to %3$s"
    2348 msgstr ""
    2349 
    2350 #. translators: %s: Order number
    2351 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:789
    2352 msgid "Failed to trash order #%s"
    2353 msgstr ""
    2354 
    2355 #. translators: %s: Order number
    2356 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:796
    2357 msgid "Order #%s moved to trash"
    2358 msgstr ""
    2359 
    2360 #. translators: %1$s: Order number, %2$s: New total
    2361 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:825
    2362 msgid "Order #%1$s totals recalculated. New total: %2$s"
    2363 msgstr ""
    2364 
    2365 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:838
    2366 msgid "Nothing to copy"
    2367 msgstr ""
    2368 
    2369 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:844
    2370 msgid "Copied to clipboard!"
    2371 msgstr ""
    2372 
    2373 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:873
    2374 msgid "Customer email not found"
    2375 msgstr ""
    2376 
    2377 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:885
    2378 msgid "Failed to send email"
    2379 msgstr ""
    2380 
    2381 #. translators: %s: Email subject
    2382 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:892
    2383 msgid "Custom email sent: \"%s\""
    2384 msgstr ""
    2385 
    2386 #. translators: %s: Customer email address
    2387 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:901
     2365#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:927
    23882366msgid "Email sent to %s"
    23892367msgstr ""
    23902368
    2391 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:921
     2369#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:947
    23922370msgid "Coupon code is required"
    23932371msgstr ""
    23942372
    23952373#. translators: %s: Coupon code
    2396 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:940
     2374#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:966
    23972375msgid "Coupon \"%s\" does not exist"
    23982376msgstr ""
    23992377
    24002378#. translators: %s: Coupon code
    2401 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:949
     2379#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:975
    24022380msgid "Coupon \"%s\" has already been applied to this order"
    24032381msgstr ""
    24042382
    24052383#. translators: %1$s: Coupon code, %2$s: Discount, %3$s: New total
    2406 #: pro/src/Integration/WooCommerce/commands/OrderCommands.php:974
     2384#: pro/src/Integration/WooCommerce/commands/OrderCommands.php:1000
    24072385msgid "Coupon \"%1$s\" applied successfully. Discount: %2$s. New total: %3$s"
    24082386msgstr ""
     
    24442422msgstr ""
    24452423
    2446 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:344
    2447 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:361
     2424#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:357
     2425#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:374
    24482426msgid "N/A"
    24492427msgstr ""
    24502428
    24512429#. translators: %d: Stock quantity
    2452 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:353
     2430#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:366
    24532431msgid "Stock: %d"
    24542432msgstr ""
    24552433
    2456 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:357
    2457 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:574
    2458 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:888
     2434#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:370
     2435#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:587
     2436#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:901
    24592437msgid "In Stock"
    24602438msgstr ""
    24612439
    2462 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:358
    2463 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:578
    2464 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:889
     2440#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:371
     2441#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:591
     2442#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:902
    24652443msgid "Out of Stock"
    24662444msgstr ""
    24672445
    2468 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:359
    2469 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:582
    2470 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:890
     2446#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:372
     2447#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:595
     2448#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:903
    24712449msgid "On Backorder"
    24722450msgstr ""
    24732451
    2474 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:366
     2452#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:379
    24752453msgid "(No SKU)"
    24762454msgstr ""
    24772455
    24782456#. translators: %s: Product SKU
    2479 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:369
     2457#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:382
    24802458msgid "SKU: %s"
    24812459msgstr ""
    24822460
    2483 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:442
     2461#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:453
     2462msgid "Edit Product"
     2463msgstr ""
     2464
     2465#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:455
    24842466msgid "Edit this product"
    24852467msgstr ""
    24862468
    2487 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:451
     2469#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:462
     2470msgid "View Product"
     2471msgstr ""
     2472
     2473#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:464
    24882474msgid "View this product on the frontend"
    24892475msgstr ""
    24902476
    2491 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:459
     2477#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:472
    24922478msgid "Trash/Delete Product"
    24932479msgstr ""
    24942480
    2495 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:461
     2481#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:474
    24962482msgid "Move product to trash or delete permanently"
    24972483msgstr ""
    24982484
    2499 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:466
     2485#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:479
    25002486msgid "Confirm Deletion"
    25012487msgstr ""
    25022488
    2503 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:468
     2489#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:481
    25042490msgid "Are you sure you want to delete this variation?"
    25052491msgstr ""
    25062492
    2507 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:469
     2493#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:482
    25082494msgid "Are you sure you want to delete this product? All variations will also be deleted."
    25092495msgstr ""
    25102496
    2511 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:474
     2497#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:487
    25122498msgid "Copy Product Link"
    25132499msgstr ""
    25142500
    2515 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:476
     2501#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:489
    25162502msgid "Copy product URL to clipboard"
    25172503msgstr ""
    25182504
    2519 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:483
     2505#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:496
    25202506msgid "Copy SKU"
    25212507msgstr ""
    25222508
    2523 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:485
     2509#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:498
    25242510msgid "Copy product SKU to clipboard"
    25252511msgstr ""
    25262512
    2527 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:492
     2513#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:505
    25282514msgid "Update Stock"
    25292515msgstr ""
    25302516
    2531 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:494
     2517#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:507
    25322518msgid "Update stock quantity"
    25332519msgstr ""
    25342520
    2535 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:499
     2521#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:512
    25362522msgid "Update Stock Quantity"
    25372523msgstr ""
    25382524
    2539 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:513
    2540 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:520
     2525#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:516
     2526msgid "Stock Quantity"
     2527msgstr ""
     2528
     2529#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:526
     2530#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:533
    25412531msgid "Update Regular Price"
    25422532msgstr ""
    25432533
    2544 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:515
     2534#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:528
    25452535msgid "Update regular price"
    25462536msgstr ""
    25472537
    2548 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:524
     2538#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:537
    25492539msgid "Regular Price"
    25502540msgstr ""
    25512541
    2552 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:535
    2553 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:542
     2542#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:548
     2543#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:555
    25542544msgid "Update Sale Price"
    25552545msgstr ""
    25562546
    2557 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:537
     2547#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:550
    25582548msgid "Update sale price"
    25592549msgstr ""
    25602550
    2561 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:546
     2551#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:559
    25622552msgid "Sale Price"
    25632553msgstr ""
    25642554
    2565 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:557
    2566 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:564
     2555#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:570
     2556#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:577
    25672557msgid "Update Stock Status"
    25682558msgstr ""
    25692559
    2570 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:559
     2560#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:572
    25712561msgid "Update stock status"
    25722562msgstr ""
    25732563
    2574 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:568
     2564#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:581
    25752565msgid "Stock Status"
    25762566msgstr ""
    25772567
    2578 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:592
    2579 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:599
     2568#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:605
     2569#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:612
    25802570msgid "Update SKU"
    25812571msgstr ""
    25822572
    2583 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:594
     2573#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:607
    25842574msgid "Update product SKU"
    25852575msgstr ""
    25862576
    2587 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:603
     2577#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:616
    25882578msgid "SKU"
    25892579msgstr ""
    25902580
    2591 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:670
    2592 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:718
    2593 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:762
    2594 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:812
    2595 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:865
    2596 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:913
    2597 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:963
    2598 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:1003
     2581#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:683
     2582#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:731
     2583#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:775
     2584#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:825
     2585#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:878
     2586#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:926
     2587#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:976
     2588#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:1016
    25992589msgid "Product ID is required"
    26002590msgstr ""
    26012591
    2602 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:690
     2592#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:691
     2593#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:746
     2594#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:798
     2595#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:833
     2596#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:893
     2597#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:934
     2598#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:984
     2599#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:1024
     2600msgid "Product not found"
     2601msgstr ""
     2602
     2603#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:703
    26032604msgid "Failed to delete product"
    26042605msgstr ""
    26052606
    2606 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:696
     2607#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:709
    26072608msgid "Variation deleted permanently"
    26082609msgstr ""
    26092610
    2610 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:697
     2611#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:710
    26112612msgid "Variation moved to trash"
    26122613msgstr ""
    26132614
    2614 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:699
     2615#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:712
    26152616msgid "Product and all variations deleted permanently"
    26162617msgstr ""
    26172618
    2618 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:700
     2619#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:713
    26192620msgid "Product and all variations moved to trash"
    26202621msgstr ""
    26212622
    2622 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:725
     2623#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:738
    26232624msgid "Stock quantity is required"
    26242625msgstr ""
    26252626
    26262627#. translators: %d: stock quantity
    2627 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:746
     2628#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:759
    26282629msgid "Stock updated to %d"
    26292630msgstr ""
    26302631
    2631 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:769
    2632 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:777
     2632#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:782
     2633#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:790
    26332634msgid "Valid regular price is required"
    26342635msgstr ""
    26352636
    26362637#. translators: %s: formatted price
    2637 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:796
     2638#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:809
    26382639msgid "Regular price updated to %s"
    26392640msgstr ""
    26402641
    2641 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:830
     2642#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:843
    26422643msgid "Sale price removed"
    26432644msgstr ""
    26442645
    2645 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:838
     2646#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:851
    26462647msgid "Sale price cannot be negative"
    26472648msgstr ""
    26482649
    26492650#. translators: %s: formatted price
    2650 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:849
     2651#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:862
    26512652msgid "Sale price updated to %s"
    26522653msgstr ""
    26532654
    2654 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:872
     2655#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:885
    26552656msgid "Invalid stock status"
    26562657msgstr ""
    26572658
    26582659#. translators: %s: stock status label
    2659 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:897
     2660#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:910
    26602661msgid "Stock status updated to %s"
    26612662msgstr ""
    26622663
    2663 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:932
     2664#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:945
    26642665msgid "SKU already exists for another product"
    26652666msgstr ""
    26662667
    2667 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:941
     2668#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:954
    26682669msgid "SKU removed"
    26692670msgstr ""
    26702671
    26712672#. translators: %s: SKU value
    2672 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:944
     2673#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:957
    26732674msgid "SKU updated to %s"
    26742675msgstr ""
    26752676
    2676 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:983
     2677#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:996
    26772678msgid "Unable to determine product link"
    26782679msgstr ""
    26792680
    2680 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:989
     2681#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:1002
    26812682msgid "Product link copied to clipboard"
    26822683msgstr ""
    26832684
    2684 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:1019
     2685#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:1032
    26852686msgid "Product does not have a SKU to copy"
    26862687msgstr ""
    26872688
    26882689#. translators: %s: SKU value
    2689 #: pro/src/Integration/WooCommerce/commands/ProductCommands.php:1027
     2690#: pro/src/Integration/WooCommerce/commands/ProductCommands.php:1040
    26902691msgid "SKU %s copied to clipboard"
    26912692msgstr ""
     
    27232724msgstr ""
    27242725
    2725 #: assets/src/components/CommandPalette.jsx:332
    2726 #: assets/src/components/CommandPalette.jsx:459
    2727 #: assets/src/components/CommandPalette.jsx:476
     2726#: assets/src/components/CommandPalette.jsx:335
     2727#: assets/src/components/CommandPalette.jsx:463
     2728#: assets/src/components/CommandPalette.jsx:485
    27282729msgid "Command executed successfully"
    27292730msgstr ""
    27302731
    2731 #: assets/src/components/CommandPalette.jsx:336
    2732 #: assets/src/components/CommandPalette.jsx:444
    2733 #: assets/src/components/CommandPalette.jsx:652
     2732#: assets/src/components/CommandPalette.jsx:339
     2733#: assets/src/components/CommandPalette.jsx:448
     2734#: assets/src/components/CommandPalette.jsx:663
    27342735msgid "Command execution failed"
    27352736msgstr ""
    27362737
    2737 #: assets/src/components/CommandPalette.jsx:343
     2738#: assets/src/components/CommandPalette.jsx:346
    27382739msgid "An error occurred"
    27392740msgstr ""
    27402741
    2741 #: assets/src/components/CommandPalette.jsx:388
    2742 #: assets/src/components/CommandPalette.jsx:753
     2742#: assets/src/components/CommandPalette.jsx:392
     2743#: assets/src/components/CommandPalette.jsx:764
    27432744msgid "Settings handler not loaded"
    27442745msgstr ""
    27452746
    2746 #: assets/src/components/CommandPalette.jsx:655
     2747#: assets/src/components/CommandPalette.jsx:666
    27472748msgid "An error occurred while executing the command"
    27482749msgstr ""
    27492750
    2750 #: assets/src/components/CommandPalette.jsx:768
     2751#: assets/src/components/CommandPalette.jsx:779
    27512752msgid "Toggle handler not loaded"
    27522753msgstr ""
    27532754
    2754 #: assets/src/components/CommandPalette.jsx:777
     2755#: assets/src/components/CommandPalette.jsx:788
    27552756#: assets/src/components/ConfirmDialog.jsx:32
    27562757msgid "Confirm Action"
    27572758msgstr ""
    27582759
    2759 #: assets/src/components/CommandPalette.jsx:778
     2760#: assets/src/components/CommandPalette.jsx:789
    27602761msgid "Are you sure you want to proceed?"
    27612762msgstr ""
    27622763
    2763 #: assets/src/components/CommandPalette.jsx:779
     2764#: assets/src/components/CommandPalette.jsx:790
    27642765#: assets/src/components/ConfirmDialog.jsx:51
    27652766msgid "Confirm"
    27662767msgstr ""
    27672768
    2768 #: assets/src/components/CommandPalette.jsx:930
     2769#: assets/src/components/CommandPalette.jsx:941
    27692770msgid "Type a command or search..."
    27702771msgstr ""
    27712772
    2772 #: assets/src/components/CommandPalette.jsx:951
     2773#: assets/src/components/CommandPalette.jsx:962
    27732774msgid "Navigate"
    27742775msgstr ""
    27752776
    2776 #: assets/src/components/CommandPalette.jsx:954
     2777#: assets/src/components/CommandPalette.jsx:965
    27772778msgid "Select"
    27782779msgstr ""
    27792780
    2780 #: assets/src/components/CommandPalette.jsx:958
     2781#: assets/src/components/CommandPalette.jsx:969
    27812782msgid "Back"
    27822783msgstr ""
    27832784
    2784 #: assets/src/components/CommandPalette.jsx:962
     2785#: assets/src/components/CommandPalette.jsx:973
    27852786msgid "Close"
    27862787msgstr ""
    27872788
    2788 #: assets/src/components/CommandPalette.jsx:967
     2789#: assets/src/components/CommandPalette.jsx:978
    27892790msgid "commands"
    27902791msgstr ""
     
    28122813msgstr ""
    28132814
    2814 #: pro/assets/src/js/dynamic-patterns.js:146
     2815#: pro/assets/src/js/dynamic-patterns.js:138
    28152816msgid "No results found"
    28162817msgstr ""
    28172818
    2818 #: pro/assets/src/js/dynamic-patterns.js:147
     2819#: pro/assets/src/js/dynamic-patterns.js:139
    28192820msgid "Pattern detected but no matching data"
    28202821msgstr ""
    28212822
    2822 #: pro/assets/src/js/dynamic-patterns.js:150
    2823 #: pro/assets/src/js/dynamic-patterns.js:269
     2823#: pro/assets/src/js/dynamic-patterns.js:142
     2824#: pro/assets/src/js/dynamic-patterns.js:261
    28242825msgid "PATTERN DETECTED"
    28252826msgstr ""
    28262827
    2827 #: pro/assets/src/js/dynamic-patterns.js:161
    2828 #: pro/assets/src/js/dynamic-patterns.js:230
     2828#: pro/assets/src/js/dynamic-patterns.js:153
     2829#: pro/assets/src/js/dynamic-patterns.js:222
    28292830msgid "Item Found"
    28302831msgstr ""
    28312832
    2832 #: pro/assets/src/js/dynamic-patterns.js:265
     2833#: pro/assets/src/js/dynamic-patterns.js:257
    28332834msgid "Detecting pattern..."
    28342835msgstr ""
    28352836
    2836 #: pro/assets/src/js/dynamic-patterns.js:266
     2837#: pro/assets/src/js/dynamic-patterns.js:258
    28372838msgid "Searching for matches"
    28382839msgstr ""
    28392840
    2840 #: pro/assets/src/js/settings-commands.js:202
     2841#: pro/assets/src/js/settings-commands.js:194
    28412842msgid "Invalid setting command"
    28422843msgstr ""
    28432844
    28442845#. translators: %s: Setting name
    2845 #: pro/assets/src/js/settings-commands.js:267
     2846#: pro/assets/src/js/settings-commands.js:269
    28462847msgid "Enter value for %s:"
    28472848msgstr ""
    28482849
    2849 #: pro/assets/src/js/settings-commands.js:320
     2850#: pro/assets/src/js/settings-commands.js:322
    28502851msgid "This setting type is not yet implemented"
    28512852msgstr ""
    28522853
    2853 #: pro/assets/src/js/smart-default-view.js:56
     2854#: pro/assets/src/js/smart-default-view.js:49
    28542855msgid "FAVORITES"
    28552856msgstr ""
    28562857
    2857 #: pro/assets/src/js/smart-default-view.js:72
     2858#: pro/assets/src/js/smart-default-view.js:65
    28582859msgid "RECENT"
    28592860msgstr ""
    28602861
    2861 #: pro/assets/src/js/smart-default-view.js:90
     2862#: pro/assets/src/js/smart-default-view.js:83
    28622863msgid "MOST USED"
    28632864msgstr ""
    28642865
    2865 #: pro/assets/src/js/smart-default-view.js:121
     2866#: pro/assets/src/js/smart-default-view.js:114
    28662867msgid "ACTIONS"
    28672868msgstr ""
    28682869
    2869 #: pro/assets/src/js/smart-default-view.js:145
     2870#: pro/assets/src/js/smart-default-view.js:138
    28702871msgid "ALL COMMANDS"
    28712872msgstr ""
    28722873
    2873 #: pro/assets/src/js/smart-default-view.js:400
    2874 #: pro/assets/src/js/smart-default-view.js:425
     2874#: pro/assets/src/js/smart-default-view.js:392
     2875#: pro/assets/src/js/smart-default-view.js:417
    28752876msgid "CONTEXTUAL"
    28762877msgstr ""
    28772878
    2878 #: pro/assets/src/js/smart-default-view.js:426
    2879 #: pro/assets/src/js/smart-default-view.js:432
     2879#: pro/assets/src/js/smart-default-view.js:418
     2880#: pro/assets/src/js/smart-default-view.js:424
    28802881msgid "GLOBAL"
    28812882msgstr ""
    28822883
    2883 #: pro/assets/src/js/toggle-commands.js:89
     2884#: pro/assets/src/js/toggle-commands.js:81
    28842885msgid "SETTINGS"
    28852886msgstr ""
    28862887
    2887 #: pro/assets/src/js/toggle-commands.js:116
     2888#: pro/assets/src/js/toggle-commands.js:108
    28882889msgid "TOGGLES"
    28892890msgstr ""
    28902891
    2891 #: pro/assets/src/js/toggle-commands.js:166
     2892#: pro/assets/src/js/toggle-commands.js:158
    28922893msgid "Setting toggled successfully"
    28932894msgstr ""
    28942895
    2895 #: pro/assets/src/js/toggle-commands.js:168
    2896 #: pro/assets/src/js/toggle-commands.js:173
     2896#: pro/assets/src/js/toggle-commands.js:160
     2897#: pro/assets/src/js/toggle-commands.js:165
    28972898msgid "Failed to toggle setting"
    28982899msgstr ""
  • commandify/trunk/package.json

    r3405278 r3407178  
    11{
    22  "name": "commandify",
    3   "version": "1.0.0",
     3  "version": "1.0.1",
    44  "private": true,
    55  "scripts": {
  • commandify/trunk/readme.txt

    r3405360 r3407178  
    55Tested up to: 6.8
    66Requires PHP: 7.4
    7 Stable tag: 1.0.0
     7Stable tag: 1.0.1
    88License: GPLv2 or later
    99License URI: http://www.gnu.org/licenses/gpl-2.0.html
     
    160160These tools replace multiple plugins and keep your site running efficiently.
    161161
     162### Check more plugins
     163
     164#### [Pollify](https://wordpress.org/plugins/poll-creator/) – Feedback Polls, Anonymous Polls, Up/down Voting, NPS Surveys, Export data
     165
     166Pollify lets you create a poll website in WordPress with awesome polling/online voting capabilities and unlock a series of advanced features to engage your audience like never before.
     167
     168
    162169== Installation ==
    163170
     
    216223
    217224== Changelog ==
     225
     226= 1.0.1 – December 01, 2025 =
     227* [New] Visit Site command lets you quickly open your site in a new tab.
     228* [New] Added the ability to log out instantly using the palette.
     229* [New] You can now change post status directly from post action options.
     230* [Fix] Search users command now displays a user icon.
     231* [Fix] Media search now shows thumbnail images for each file.
     232* [Fix] By default, search commands for posts, users, and media display the latest 10 results.
     233* [Fix] The palette now stays open after running cache clear, rewrite flush, or update checks.
     234* [Fix] Improved the search experience with debounced (delayed) API requests in JavaScript.
    218235
    219236= 1.0.0 – November 28, 2025 =
Note: See TracChangeset for help on using the changeset viewer.