Spaces:
Running
Running
Add WebGPU support check and hardware-adaptive model selection
Browse files- Shows clear unsupported overlay with iOS-specific guidance when WebGPU is unavailable
- Auto-detects GPU capabilities and selects optimal default model:
mobile/low-end → 0.8B (lite), mid-range → 2B (balanced), high-end/Apple → 4B (performance)
- Displays hardware tier in footer hint
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
assets/{main-D60Okk_s.js → main-BKlPaJuO.js}
RENAMED
|
The diff for this file is too large to render.
See raw diff
|
|
|
index.html
CHANGED
|
@@ -129,13 +129,20 @@
|
|
| 129 |
.toggle-btn.active { background: var(--accent); color: #fff; border-color: var(--accent); }
|
| 130 |
.toggle-btn:hover { border-color: var(--accent); }
|
| 131 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 132 |
/* Toast */
|
| 133 |
.toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(20px); padding: 10px 20px; border-radius: 6px; font-size: 13px; font-weight: 500; background: var(--bg-2); color: var(--text-1); border: 1px solid var(--border); opacity: 0; transition: all 0.3s; z-index: 1000; max-width: 480px; }
|
| 134 |
.toast.show { transform: translateX(-50%) translateY(0); opacity: 1; }
|
| 135 |
.toast-error { border-color: #ef4444; color: #ef4444; }
|
| 136 |
.toast-success { border-color: var(--accent); color: var(--accent); }
|
| 137 |
</style>
|
| 138 |
-
<script type="module" crossorigin src="./assets/main-
|
| 139 |
<link rel="modulepreload" crossorigin href="./assets/gpu-ops-PQDFq1iI.js">
|
| 140 |
<link rel="modulepreload" crossorigin href="./assets/qwen35-model-CmeFfImT.js">
|
| 141 |
<link rel="modulepreload" crossorigin href="./assets/safetensors-loader-CwGm5mJX.js">
|
|
|
|
| 129 |
.toggle-btn.active { background: var(--accent); color: #fff; border-color: var(--accent); }
|
| 130 |
.toggle-btn:hover { border-color: var(--accent); }
|
| 131 |
|
| 132 |
+
/* Unsupported overlay */
|
| 133 |
+
.unsupported { display: flex; flex-direction: column; align-items: center; justify-content: center; height: 100vh; text-align: center; padding: 24px; gap: 16px; }
|
| 134 |
+
.unsupported-icon { color: #f59e0b; margin-bottom: 8px; }
|
| 135 |
+
.unsupported h1 { font-size: 24px; font-weight: 700; color: var(--accent); }
|
| 136 |
+
.unsupported p { color: var(--text-2); font-size: 14px; line-height: 1.7; max-width: 480px; }
|
| 137 |
+
.unsupported-meta { display: flex; flex-direction: column; gap: 4px; margin-top: 12px; font-size: 10px; color: var(--text-3); font-family: var(--mono); max-width: 480px; word-break: break-all; }
|
| 138 |
+
|
| 139 |
/* Toast */
|
| 140 |
.toast { position: fixed; bottom: 24px; left: 50%; transform: translateX(-50%) translateY(20px); padding: 10px 20px; border-radius: 6px; font-size: 13px; font-weight: 500; background: var(--bg-2); color: var(--text-1); border: 1px solid var(--border); opacity: 0; transition: all 0.3s; z-index: 1000; max-width: 480px; }
|
| 141 |
.toast.show { transform: translateX(-50%) translateY(0); opacity: 1; }
|
| 142 |
.toast-error { border-color: #ef4444; color: #ef4444; }
|
| 143 |
.toast-success { border-color: var(--accent); color: var(--accent); }
|
| 144 |
</style>
|
| 145 |
+
<script type="module" crossorigin src="./assets/main-BKlPaJuO.js"></script>
|
| 146 |
<link rel="modulepreload" crossorigin href="./assets/gpu-ops-PQDFq1iI.js">
|
| 147 |
<link rel="modulepreload" crossorigin href="./assets/qwen35-model-CmeFfImT.js">
|
| 148 |
<link rel="modulepreload" crossorigin href="./assets/safetensors-loader-CwGm5mJX.js">
|