[object Object]

← back to Exo

fix: change RDMA AVAILABLE to RDMA NOT ENABLED warning (#1580)

1780e4ade45746b0154e568f93d9747ad200c81f · 2026-02-20 13:40:07 -0800 · Alex Cheema

## Summary
- Changed blue info badge "RDMA AVAILABLE" to yellow warning badge "RDMA
NOT ENABLED" — more accurately describes the state
- Added hover tooltip with enable instructions to all views (was missing
in 2 of 4 instances)
- Warning icon instead of info icon, consistent with other cluster
warnings (TB cycle, macOS mismatch)

## Screenshots

**Badge (yellow warning):**
![RDMA warning
badge](https://raw.githubusercontent.com/exo-explore/exo/3f7bdb482c5011d60f140aa84ab21023032e4a57/rdma-warning.png)

**Hover tooltip with instructions:**
![RDMA warning
hover](https://raw.githubusercontent.com/exo-explore/exo/3f7bdb482c5011d60f140aa84ab21023032e4a57/rdma-warning-hover.png)

## Test plan
- [x] Dashboard builds successfully
- [ ] Verify badge appears when 2+ TB5 nodes have RDMA disabled
- [ ] Verify hover tooltip shows in normal layout
- [ ] Verify hover tooltip shows in topology-only mode
- [ ] Verify dismiss button works
- [ ] Verify compact badge in status bar shows yellow warning

🤖 Generated with [Claude Code](https://claude.com/claude-code)

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Co-authored-by: rltakashige <rl.takashige@gmail.com>

Files touched

Diff

commit 1780e4ade45746b0154e568f93d9747ad200c81f
Author: Alex Cheema <41707476+AlexCheema@users.noreply.github.com>
Date:   Fri Feb 20 13:40:07 2026 -0800

    fix: change RDMA AVAILABLE to RDMA NOT ENABLED warning (#1580)
    
    ## Summary
    - Changed blue info badge "RDMA AVAILABLE" to yellow warning badge "RDMA
    NOT ENABLED" — more accurately describes the state
    - Added hover tooltip with enable instructions to all views (was missing
    in 2 of 4 instances)
    - Warning icon instead of info icon, consistent with other cluster
    warnings (TB cycle, macOS mismatch)
    
    ## Screenshots
    
    **Badge (yellow warning):**
    ![RDMA warning
    badge](https://raw.githubusercontent.com/exo-explore/exo/3f7bdb482c5011d60f140aa84ab21023032e4a57/rdma-warning.png)
    
    **Hover tooltip with instructions:**
    ![RDMA warning
    hover](https://raw.githubusercontent.com/exo-explore/exo/3f7bdb482c5011d60f140aa84ab21023032e4a57/rdma-warning-hover.png)
    
    ## Test plan
    - [x] Dashboard builds successfully
    - [ ] Verify badge appears when 2+ TB5 nodes have RDMA disabled
    - [ ] Verify hover tooltip shows in normal layout
    - [ ] Verify hover tooltip shows in topology-only mode
    - [ ] Verify dismiss button works
    - [ ] Verify compact badge in status bar shows yellow warning
    
    🤖 Generated with [Claude Code](https://claude.com/claude-code)
    
    ---------
    
    Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
    Co-authored-by: rltakashige <rl.takashige@gmail.com>
---
 dashboard/src/routes/+page.svelte | 199 +++++++++++++++++++++++++-------------
 1 file changed, 132 insertions(+), 67 deletions(-)

diff --git a/dashboard/src/routes/+page.svelte b/dashboard/src/routes/+page.svelte
index 76a3dbfd..6e712380 100644
--- a/dashboard/src/routes/+page.svelte
+++ b/dashboard/src/routes/+page.svelte
@@ -1948,32 +1948,12 @@
       {/if}
 
       {#if tb5WithoutRdma && !tb5InfoDismissed}
-        <div
-          class="flex items-center gap-2 px-3 py-2 rounded border border-blue-400/50 bg-blue-400/10 backdrop-blur-sm"
-          role="status"
-        >
-          <svg
-            class="w-5 h-5 text-blue-400 flex-shrink-0"
-            fill="none"
-            viewBox="0 0 24 24"
-            stroke="currentColor"
-            stroke-width="2"
-          >
-            <path
-              stroke-linecap="round"
-              stroke-linejoin="round"
-              d={infoIconPath}
-            />
-          </svg>
-          <span class="text-sm font-mono text-blue-200"> RDMA AVAILABLE </span>
-          <button
-            type="button"
-            onclick={() => (tb5InfoDismissed = true)}
-            class="ml-1 text-blue-300/60 hover:text-blue-200 transition-colors cursor-pointer"
-            title="Dismiss"
+        <div class="group relative" role="status">
+          <div
+            class="flex items-center gap-2 px-3 py-2 rounded border border-yellow-500/50 bg-yellow-500/10 backdrop-blur-sm cursor-help"
           >
             <svg
-              class="w-4 h-4"
+              class="w-5 h-5 text-yellow-400 flex-shrink-0"
               fill="none"
               viewBox="0 0 24 24"
               stroke="currentColor"
@@ -1982,10 +1962,61 @@
               <path
                 stroke-linecap="round"
                 stroke-linejoin="round"
-                d="M6 18L18 6M6 6l12 12"
+                d={warningIconPath}
               />
             </svg>
-          </button>
+            <span class="text-sm font-mono text-yellow-200">
+              RDMA NOT ENABLED
+            </span>
+            <button
+              type="button"
+              onclick={() => (tb5InfoDismissed = true)}
+              class="ml-1 text-yellow-300/60 hover:text-yellow-200 transition-colors cursor-pointer"
+              title="Dismiss"
+            >
+              <svg
+                class="w-4 h-4"
+                fill="none"
+                viewBox="0 0 24 24"
+                stroke="currentColor"
+                stroke-width="2"
+              >
+                <path
+                  stroke-linecap="round"
+                  stroke-linejoin="round"
+                  d="M6 18L18 6M6 6l12 12"
+                />
+              </svg>
+            </button>
+          </div>
+          <!-- Tooltip on hover -->
+          <div
+            class="absolute top-full left-0 mt-2 w-80 p-3 rounded border border-yellow-500/30 bg-exo-dark-gray/95 backdrop-blur-sm opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 z-50 shadow-lg"
+          >
+            <p class="text-xs text-white/80 mb-2">
+              Thunderbolt 5 hardware detected on multiple nodes. Enable RDMA for
+              significantly faster inter-node communication.
+            </p>
+            <p class="text-xs text-white/60 mb-1.5">
+              <span class="text-yellow-300">To enable:</span>
+            </p>
+            <ol
+              class="text-xs text-white/60 list-decimal list-inside space-y-0.5 mb-1.5"
+            >
+              <li>Connect nodes with TB5 cables</li>
+              <li>Boot to Recovery (hold power 10s → Options)</li>
+              <li>
+                Run
+                <code class="text-yellow-300 bg-yellow-400/10 px-1 rounded"
+                  >rdma_ctl enable</code
+                >
+              </li>
+              <li>Reboot</li>
+            </ol>
+            <p class="text-xs text-white/40">
+              Requires macOS 26.2+, TB5 cables, and matching OS versions.
+            </p>
+          </div>
         </div>
       {/if}
 
@@ -2289,11 +2320,11 @@
       {/if}
       {#if tb5WithoutRdma && !tb5InfoDismissed}
         <div
-          class="flex items-center gap-1.5 px-2 py-1 rounded border border-blue-400/50 bg-blue-400/10 backdrop-blur-sm"
-          title="Thunderbolt 5 detected — RDMA can be enabled for better performance"
+          class="flex items-center gap-1.5 px-2 py-1 rounded border border-yellow-500/50 bg-yellow-500/10 backdrop-blur-sm"
+          title="Thunderbolt 5 detected — RDMA not enabled. Enable for faster inter-node communication."
         >
           <svg
-            class="w-3.5 h-3.5 text-blue-400"
+            class="w-3.5 h-3.5 text-yellow-400"
             fill="none"
             viewBox="0 0 24 24"
             stroke="currentColor"
@@ -2302,10 +2333,11 @@
             <path
               stroke-linecap="round"
               stroke-linejoin="round"
-              d={infoIconPath}
+              d={warningIconPath}
             />
           </svg>
-          <span class="text-[10px] font-mono text-blue-200">RDMA AVAILABLE</span
+          <span class="text-[10px] font-mono text-yellow-200"
+            >RDMA NOT ENABLED</span
           >
         </div>
       {/if}
@@ -2403,38 +2435,19 @@
 
           {@render clusterWarnings()}
 
-          <!-- TB5 RDMA Available Info -->
+          <!-- TB5 RDMA Not Enabled Warning -->
           {#if tb5WithoutRdma && !tb5InfoDismissed}
             <div
-              class="absolute left-4 flex items-center gap-2 px-3 py-2 rounded border border-blue-400/50 bg-blue-400/10 backdrop-blur-sm"
+              class="absolute left-4 group"
               class:top-16={tbBridgeCycles.length > 0}
               class:top-4={tbBridgeCycles.length === 0}
               role="status"
             >
-              <svg
-                class="w-5 h-5 text-blue-400 flex-shrink-0"
-                fill="none"
-                viewBox="0 0 24 24"
-                stroke="currentColor"
-                stroke-width="2"
-              >
-                <path
-                  stroke-linecap="round"
-                  stroke-linejoin="round"
-                  d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
-                />
-              </svg>
-              <span class="text-sm font-mono text-blue-200">
-                RDMA AVAILABLE
-              </span>
-              <button
-                type="button"
-                onclick={() => (tb5InfoDismissed = true)}
-                class="ml-1 text-blue-300/60 hover:text-blue-200 transition-colors cursor-pointer"
-                title="Dismiss"
+              <div
+                class="flex items-center gap-2 px-3 py-2 rounded border border-yellow-500/50 bg-yellow-500/10 backdrop-blur-sm cursor-help"
               >
                 <svg
-                  class="w-4 h-4"
+                  class="w-5 h-5 text-yellow-400 flex-shrink-0"
                   fill="none"
                   viewBox="0 0 24 24"
                   stroke="currentColor"
@@ -2443,10 +2456,61 @@
                   <path
                     stroke-linecap="round"
                     stroke-linejoin="round"
-                    d="M6 18L18 6M6 6l12 12"
+                    d={warningIconPath}
                   />
                 </svg>
-              </button>
+                <span class="text-sm font-mono text-yellow-200">
+                  RDMA NOT ENABLED
+                </span>
+                <button
+                  type="button"
+                  onclick={() => (tb5InfoDismissed = true)}
+                  class="ml-1 text-yellow-300/60 hover:text-yellow-200 transition-colors cursor-pointer"
+                  title="Dismiss"
+                >
+                  <svg
+                    class="w-4 h-4"
+                    fill="none"
+                    viewBox="0 0 24 24"
+                    stroke="currentColor"
+                    stroke-width="2"
+                  >
+                    <path
+                      stroke-linecap="round"
+                      stroke-linejoin="round"
+                      d="M6 18L18 6M6 6l12 12"
+                    />
+                  </svg>
+                </button>
+              </div>
+              <!-- Tooltip on hover -->
+              <div
+                class="absolute top-full left-0 mt-2 w-80 p-3 rounded border border-yellow-500/30 bg-exo-dark-gray/95 backdrop-blur-sm opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 z-50 shadow-lg"
+              >
+                <p class="text-xs text-white/80 mb-2">
+                  Thunderbolt 5 hardware detected on multiple nodes. Enable RDMA
+                  for significantly faster inter-node communication.
+                </p>
+                <p class="text-xs text-white/60 mb-1.5">
+                  <span class="text-yellow-300">To enable:</span>
+                </p>
+                <ol
+                  class="text-xs text-white/60 list-decimal list-inside space-y-0.5 mb-1.5"
+                >
+                  <li>Connect nodes with TB5 cables</li>
+                  <li>Boot to Recovery (hold power 10s → Options)</li>
+                  <li>
+                    Run
+                    <code class="text-yellow-300 bg-yellow-400/10 px-1 rounded"
+                      >rdma_ctl enable</code
+                    >
+                  </li>
+                  <li>Reboot</li>
+                </ol>
+                <p class="text-xs text-white/40">
+                  Requires macOS 26.2+, TB5 cables, and matching OS versions.
+                </p>
+              </div>
             </div>
           {/if}
 
@@ -2495,7 +2559,7 @@
 
             {@render clusterWarnings()}
 
-            <!-- TB5 RDMA Available Info -->
+            <!-- TB5 RDMA Not Enabled Warning -->
             {#if tb5WithoutRdma && !tb5InfoDismissed}
               <div
                 class="absolute left-4 group"
@@ -2504,10 +2568,10 @@
                 role="status"
               >
                 <div
-                  class="flex items-center gap-2 px-3 py-2 rounded border border-blue-400/50 bg-blue-400/10 backdrop-blur-sm"
+                  class="flex items-center gap-2 px-3 py-2 rounded border border-yellow-500/50 bg-yellow-500/10 backdrop-blur-sm cursor-help"
                 >
                   <svg
-                    class="w-5 h-5 text-blue-400 flex-shrink-0"
+                    class="w-5 h-5 text-yellow-400 flex-shrink-0"
                     fill="none"
                     viewBox="0 0 24 24"
                     stroke="currentColor"
@@ -2516,16 +2580,16 @@
                     <path
                       stroke-linecap="round"
                       stroke-linejoin="round"
-                      d="M13 16h-1v-4h-1m1-4h.01M21 12a9 9 0 11-18 0 9 9 0 0118 0z"
+                      d={warningIconPath}
                     />
                   </svg>
-                  <span class="text-sm font-mono text-blue-200">
-                    RDMA AVAILABLE
+                  <span class="text-sm font-mono text-yellow-200">
+                    RDMA NOT ENABLED
                   </span>
                   <button
                     type="button"
                     onclick={() => (tb5InfoDismissed = true)}
-                    class="ml-1 text-blue-300/60 hover:text-blue-200 transition-colors cursor-pointer"
+                    class="ml-1 text-yellow-300/60 hover:text-yellow-200 transition-colors cursor-pointer"
                     title="Dismiss"
                   >
                     <svg
@@ -2546,14 +2610,14 @@
 
                 <!-- Tooltip on hover -->
                 <div
-                  class="absolute top-full left-0 mt-2 w-80 p-3 rounded border border-blue-400/30 bg-exo-dark-gray/95 backdrop-blur-sm opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 z-50 shadow-lg"
+                  class="absolute top-full left-0 mt-2 w-80 p-3 rounded border border-yellow-500/30 bg-exo-dark-gray/95 backdrop-blur-sm opacity-0 invisible group-hover:opacity-100 group-hover:visible transition-all duration-200 z-50 shadow-lg"
                 >
                   <p class="text-xs text-white/80 mb-2">
                     Thunderbolt 5 hardware detected on multiple nodes. Enable
                     RDMA for significantly faster inter-node communication.
                   </p>
                   <p class="text-xs text-white/60 mb-1.5">
-                    <span class="text-blue-300">To enable:</span>
+                    <span class="text-yellow-300">To enable:</span>
                   </p>
                   <ol
                     class="text-xs text-white/60 list-decimal list-inside space-y-0.5 mb-1.5"
@@ -2562,7 +2626,8 @@
                     <li>Boot to Recovery (hold power 10s → Options)</li>
                     <li>
                       Run
-                      <code class="text-blue-300 bg-blue-400/10 px-1 rounded"
+                      <code
+                        class="text-yellow-300 bg-yellow-400/10 px-1 rounded"
                         >rdma_ctl enable</code
                       >
                     </li>

← ab9273e7 downloads: add read_only flag to DownloadCompleted for EXO_M  ·  back to Exo  ·  chore: remove deprecated MlxIbv dashboard references (#1584) 18717023 →