| @@ -551,9 +551,18 @@ | ||
| 551 | 551 | // /status block so the dashboard callout renders on first paint |
| 552 | 552 | // without waiting for a status re-fetch. |
| 553 | 553 | 'mobile_separate' => array( |
| 554 | 554 | 'enabled' => (bool) ( $opts['cache_enabled'] ? ( Settings_Manager::get( 'cache' )['mobile_separate'] ?? false ) : false ), |
| 555 | - 'blocking' => $rewrite_capable && 'mobile_separate' === Cache::static_rewrite_block_reason(), | |
| 555 | + // Gated to servers that HAVE a static fast path — on IIS or | |
| 556 | + // an undetected server block_reason still falls through to | |
| 557 | + // mobile_separate, and reporting that as "blocking" would | |
| 558 | + // nag about a rewrite that does not exist there (#108). | |
| 559 | + // LiteSpeed joined the capable set with the Static Fast | |
| 560 | + // Path opt-in (#509); its own refusal (litespeed_dropin) | |
| 561 | + // outranks mobile_separate, so this stays false there | |
| 562 | + // until the opt-in is on. | |
| 563 | + 'blocking' => ( $rewrite_capable || Server::LITESPEED === $server_type ) | |
| 564 | + && 'mobile_separate' === Cache::static_rewrite_block_reason(), | |
| 556 | 565 | 'needs_review' => Cache::mobile_separate_needs_review(), |
| 557 | 566 | ), |
| 558 | 567 | // One consolidated nginx server-block snippet aggregating |
| 559 | 568 | // every enabled module's directives (Cache static-rewrite, |
| @@ -656,8 +665,15 @@ | ||
| 656 | 665 | 'active_reason' => $module->active_reason(), |
| 657 | 666 | 'label' => $meta['label'] ?? ucfirst( $slug ), |
| 658 | 667 | 'icon' => $meta['icon'] ?? 'Square', |
| 659 | 668 | 'description' => $meta['description'] ?? '', |
| 669 | + // The dashboard group the module belongs to (cache, performance, | |
| 670 | + // network, insights, tools, ai-agents, settings), declared by the | |
| 671 | + // module itself. The Hub kept its own copy of this map, so every | |
| 672 | + // new module landed in its "Other" bucket until the Hub shipped. | |
| 673 | + // Must agree with src/components/sidebarGroups.ts; a unit test | |
| 674 | + // holds the two together. | |
| 675 | + 'group' => $meta['group'] ?? null, | |
| 660 | 676 | // Short label for the module's own tab when it hosts a tabbed |
| 661 | 677 | // page (FBS-83633). Only set on host modules. |
| 662 | 678 | 'tab_label' => $meta['tab_label'] ?? null, |
| 663 | 679 | // Public view: real values except secret fields, which are masked. |