| @@ -721,34 +721,8 @@ | ||
| 721 | 721 | // Site-wide games kill switch (Extended options). Exposed to |
| 722 | 722 | // every user — the shell skips the challenges Heartbeat |
| 723 | 723 | // channel when the framework is off. |
| 724 | 724 | 'gamesEnabled' => openstation_games_enabled(), |
| 725 | - // Comments-window AI moderation toggle — surfaced at the | |
| 726 | - // shell level so the OS Settings → Features tab can render | |
| 727 | - // the toggle without depending on the Comments window | |
| 728 | - // being registered for this user. URL is the same | |
| 729 | - // endpoint the comments-window config exposes; state is | |
| 730 | - // `null` for non-admins (the UI hides the row entirely). | |
| 731 | - 'commentsAiUrl' => esc_url_raw( rest_url( 'desktop-mode/v1/comments/ai-settings' ) ), | |
| 732 | - // Non-null only for admins on a site where the Core AI stack is | |
| 733 | - // present. Comment scoring routes through the AI Client (WP 7.0+), | |
| 734 | - // so on older WordPress the whole row is hidden — same as the | |
| 735 | - // assistant toggle — rather than shown disabled pointing at a | |
| 736 | - // Settings → Connectors screen that doesn't exist there. | |
| 737 | - 'commentsAi' => ( | |
| 738 | - current_user_can( 'manage_options' ) | |
| 739 | - && function_exists( 'openstation_ai_is_available' ) | |
| 740 | - && openstation_ai_is_available() | |
| 741 | - ) | |
| 742 | - ? array( | |
| 743 | - 'enabled' => function_exists( 'openstation_comments_ai_is_enabled' ) | |
| 744 | - ? openstation_comments_ai_is_enabled() | |
| 745 | - : false, | |
| 746 | - 'providerConfigured' => function_exists( 'openstation_comments_ai_provider_configured' ) | |
| 747 | - ? openstation_comments_ai_provider_configured() | |
| 748 | - : false, | |
| 749 | - ) | |
| 750 | - : null, | |
| 751 | 725 | 'currentUserIsAdmin' => current_user_can( 'manage_options' ), |
| 752 | 726 | // Null on single-site installs; its `networkAdmin` null |
| 753 | 727 | // without `manage_network`, which is what keeps the dock |
| 754 | 728 | // tile from registering. |
| @@ -758,8 +732,10 @@ | ||
| 758 | 732 | 'fromPortalIntent' => $from_portal_intent, |
| 759 | 733 | // One-shot like the boot target: a switch from another |
| 760 | 734 | // site's overview lands in this one's. |
| 761 | 735 | 'landInOverview' => openstation_shell_lands_in_overview(), |
| 736 | + 'arrivalDirection' => openstation_shell_arrival_direction(), | |
| 737 | + 'hopLinkOffer' => function_exists( 'openstation_network_link_offer' ) ? openstation_network_link_offer() : null, | |
| 762 | 738 | 'pwa' => array( |
| 763 | 739 | 'manifestUrl' => esc_url_raw( openstation_pwa_manifest_url() ), |
| 764 | 740 | 'swUrl' => esc_url_raw( openstation_pwa_sw_url() ), |
| 765 | 741 | // Extensionless retry target for hosts whose nginx 404s |