1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8" /> 5 <!-- LICENSE covers this Open WebUI branding surface, including name, logo, 6 visual, textual, symbolic identifiers, metadata, and surrounding UI. 7 Do not alter, remove, obscure, or replace it except as LICENSE permits: 8 https://docs.openwebui.com/license. --> 9 <link rel="icon" type="image/png" href="/static/favicon.png" crossorigin="use-credentials" /> 10 <link 11 rel="icon" 12 type="image/png" 13 href="/static/favicon-96x96.png" 14 sizes="96x96" 15 crossorigin="use-credentials" 16 /> 17 <link 18 rel="icon" 19 type="image/svg+xml" 20 href="/static/favicon.svg" 21 crossorigin="use-credentials" 22 /> 23 <link rel="shortcut icon" href="/static/favicon.ico" crossorigin="use-credentials" /> 24 <link 25 rel="apple-touch-icon" 26 sizes="180x180" 27 href="/static/apple-touch-icon.png" 28 crossorigin="use-credentials" 29 /> 30 <link rel="manifest" href="/manifest.json" crossorigin="use-credentials" /> 31 <meta 32 name="viewport" 33 content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover, interactive-widget=resizes-content" 34 /> 35 <meta name="theme-color" content="#171717" /> 36 <meta name="robots" content="noindex,nofollow" /> 37 38
38<script src="/static/loader.js" defer crossorigin="use-credentials"></script>
38 39 <link rel="stylesheet" href="/static/custom.css" crossorigin="use-credentials" /> 40 41
41<script> 42 function resizeIframe(obj) { 43 obj.style.height = obj.contentWindow.document.documentElement.scrollHeight + 'px'; 44 } 45 </script>
45 46 47
47<script> 48 // On page load or when changing themes, best to add inline in `head` to avoid FOUC 49 (() => { 50 const metaThemeColorTag = document.querySelector('meta[name="theme-color"]'); 51 const prefersDarkTheme = window.matchMedia('(prefers-color-scheme: dark)').matches; 52 53 if (!localStorage?.theme) { 54 localStorage.theme = 'system'; 55 } 56 57 if (localStorage.theme === 'system') { 58 document.documentElement.classList.add(prefersDarkTheme ? 'dark' : 'light'); 59 metaThemeColorTag.setAttribute('content', prefersDarkTheme ? '#171717' : '#ffffff'); 60 } else if (localStorage.theme === 'oled-dark') { 61 document.documentElement.style.setProperty('--color-gray-800', '#101010'); 62 document.documentElement.style.setProperty('--color-gray-850', '#050505'); 63 document.documentElement.style.setProperty('--color-gray-900', '#000000'); 64 document.documentElement.style.setProperty('--color-gray-950', '#000000'); 65 document.documentElement.classList.add('dark'); 66 metaThemeColorTag.setAttribute('content', '#000000'); 67 } else if (localStorage.theme === 'light') { 68 document.documentElement.classList.add('light'); 69 metaThemeColorTag.setAttribute('content', '#ffffff'); 70 } else if (localStorage.theme === 'her') { 71 document.documentElement.classList.add('her'); 72 metaThemeColorTag.setAttribute('content', '#983724'); 73 } else { 74 document.documentElement.classList.add('dark'); 75 metaThemeColorTag.setAttribute('content', '#171717'); 76 } 77 78 // LICENSE covers these Open WebUI splash logo assets. 79 // Do not alter, remove, obscure, or replace them except as LICENSE permits: 80 // https://docs.openwebui.com/license. 81 const preloadHref = document.documentElement.classList.contains('dark') 82 ? '/static/splash-dark.png' 83 : '/static/splash.png'; 84 const preload = document.createElement('link'); 85 preload.rel = 'preload'; 86 preload.as = 'image'; 87 preload.href = preloadHref; 88 preload.setAttribute('fetchpriority', 'high'); 89 document.head.appendChild(preload); 90 91 window.matchMedia('(prefers-color-scheme: dark)').addListener((e) => { 92 if (localStorage.theme === 'system') { 93 if (e.matches) { 94 document.documentElement.classList.add('dark'); 95 document.documentElement.classList.remove('light'); 96 metaThemeColorTag.setAttribute('content', '#171717'); 97 } else { 98 document.documentElement.classList.add('light'); 99 document.documentElement.classList.remove('dark'); 100 metaThemeColorTag.setAttribute('content', '#ffffff'); 101 } 102 } 103 }); 104 const isDarkMode = document.documentElement.classList.contains('dark'); 105 106 const logo = document.createElement('img'); 107 logo.id = 'logo'; 108 logo.style = 109 'position: absolute; width: auto; height: 6rem; top: 44%; left: 50%; transform: translateX(-50%); display:block;'; 110 logo.loading = 'eager'; 111 logo.fetchPriority = 'high'; 112 // LICENSE covers this Open WebUI splash logo. 113 // Do not alter, remove, obscure, or replace it except as LICENSE permits: 114 // https://docs.openwebui.com/license. 115 logo.src = isDarkMode ? '/static/splash-dark.png' : '/static/splash.png'; 116 117 document.addEventListener('DOMContentLoaded', function () { 118 const splash = document.getElementById('splash-screen'); 119 if (document.documentElement.classList.contains('her')) { 120 return; 121 } 122 123 if (splash) splash.prepend(logo); 124 }); 125 })(); 126 </script>
126 127 128 <title>Open WebUI</title> 129 130 <link href="/_app/immutable/entry/start.DVTkig5c.js" rel="modulepreload"> 131 <link href="/_app/immutable/chunks/B_B5nTAF.js" rel="modulepreload"> 132 <link href="/_app/immutable/chunks/7a2fV5I9.js" rel="modulepreload"> 133 <link href="/_app/immutable/chunks/DIeogL5L.js" rel="modulepreload"> 134 <link href="/_app/immutable/entry/app.DyaYDsfM.js" rel="modulepreload"> 135 <link href="/_app/immutable/chunks/C1FmrZbK.js" rel="modulepreload"> 136 <link href="/_app/immutable/chunks/CzkjijAb.js" rel="modulepreload"> 137 <link href="/_app/immutable/chunks/CWj6FrbW.js" rel="modulepreload"> 138 <link href="/_app/immutable/chunks/Dw-yaK-_.js" rel="modulepreload"> 139 <link href="/_app/immutable/chunks/Cl6Xka7r.js" rel="modulepreload"> 140 <link href="/_app/immutable/chunks/DPBuKmzL.js" rel="modulepreload"> 141 <link href="/_app/immutable/nodes/0.Bmvwyxig.js" rel="modulepreload"> 142 <link href="/_app/immutable/chunks/69_IOA4Y.js" rel="modulepreload"> 143 <link href="/_app/immutable/chunks/CiyEWm25.js" rel="modulepreload"> 144 <link href="/_app/immutable/chunks/DKaByr9K.js" rel="modulepreload"> 145 <link href="/_app/immutable/chunks/3tOhmI7k.js" rel="modulepreload"> 146 <link href="/_app/immutable/chunks/CWFN-V6k.js" rel="modulepreload"> 147 <link href="/_app/immutable/chunks/dm1FmSOd.js" rel="modulepreload"> 148 <link href="/_app/immutable/chunks/SSgOjjKL.js" rel="modulepreload"> 149 <link href="/_app/immutable/chunks/QwQ8m0jw.js" rel="modulepreload"> 150 <link href="/_app/immutable/chunks/BmB58o_w.js" rel="modulepreload"> 151 <link href="/_app/immutable/chunks/BzfgYq-h.js" rel="modulepreload"> 152 <link href="/_app/immutable/chunks/CDs8OzhH.js" rel="modulepreload"> 153 <link href="/_app/immutable/chunks/B1RxOmHW.js" rel="modulepreload"> 154 <link href="/_app/immutable/chunks/DYcd1Z5v.js" rel="modulepreload"> 155 <link href="/_app/immutable/chunks/B-K6OmaW.js" rel="modulepreload"> 156 <link href="/_app/immutable/chunks/DKxluP3e.js" rel="modulepreload"> 157 <link href="/_app/immutable/chunks/__7d91Lc.js" rel="modulepreload"> 158 <link href="/_app/immutable/chunks/BT28bLwl.js" rel="modulepreload"> 159 <link href="/_app/immutable/chunks/QjJsDpFa.js" rel="modulepreload"> 160 <link href="/_app/immutable/chunks/tdtdASma.js" rel="modulepreload"> 161 <link href="/_app/immutable/chunks/C2X-vRQU.js" rel="modulepreload"> 162 <link href="/_app/immutable/chunks/DXtexrge.js" rel="modulepreload"> 163 <link href="/_app/immutable/chunks/Cojxxu7g.js" rel="modulepreload"> 164 <link href="/_app/immutable/chunks/CFQBFPIt.js" rel="modulepreload"> 165 <link href="/_app/immutable/chunks/Dxy4iZ9H.js" rel="modulepreload"> 166 <link href="/_app/immutable/chunks/Bfc47y5P.js" rel="modulepreload"> 167 <link href="/_app/immutable/chunks/YoyIeg0L.js" rel="modulepreload"> 168 <link href="/_app/immutable/chunks/IqCUZuIq.js" rel="modulepreload"> 169 <link href="/_app/immutable/chunks/BsoPO1g0.js" rel="modulepreload"> 170 <link href="/_app/immutable/chunks/C7eVKYlM.js" rel="modulepreload"> 171 <link href="/_app/immutable/chunks/Bre5lY_g.js" rel="modulepreload"> 172 <link href="/_app/immutable/chunks/2p5Upk8k.js" rel="modulepreload"> 173 <link href="/_app/immutable/chunks/DtgRq8KU.js" rel="modulepreload"> 174 175 <link href="/_app/immutable/assets/Toaster.DKF17Rty.css" rel="stylesheet"> 176 <link href="/_app/immutable/assets/Modal.CSlFhZkq.css" rel="stylesheet"> 177 <link href="/_app/immutable/assets/0.DgJjT2oH.css" rel="stylesheet"> 178 </head> 179 180 <body data-sveltekit-preload-data="hover"> 181 <div style="display: contents"> 182
182<script> 183 { 184 __sveltekit_1hnwqay = { 185 base: "" 186 }; 187 188 const element = document.currentScript.parentElement; 189 190 Promise.all([ 191 import("/_app/immutable/entry/start.DVTkig5c.js"), 192 import("/_app/immutable/entry/app.DyaYDsfM.js") 193 ]).then(([kit, app]) => { 194 kit.start(app, element); 195 }); 196 } 197 </script>
197 198 </div> 199 200 <div 201 id="splash-screen" 202 style="position: fixed; z-index: 100; top: 0; left: 0; width: 100%; height: 100%" 203 > 204 <style type="text/css" nonce=""> 205 html { 206 overflow-y: scroll !important; 207 } 208 </style> 209 210 <div 211 style=" 212 position: absolute; 213 top: 33%; 214 left: 50%; 215 216 width: 24rem; 217 transform: translateX(-50%); 218 219 display: flex; 220 flex-direction: column; 221 align-items: center; 222 " 223 > 224 <!-- LICENSE covers this Open WebUI splash logo. 225 Do not alter, remove, obscure, or replace it except as LICENSE permits: 226 https://docs.openwebui.com/license. --> 227 <img 228 id="logo-her" 229 style="width: auto; height: 13rem" 230 src="/static/splash.png" 231 loading="eager" 232 fetchpriority="high" 233 class="animate-pulse-fast" 234 /> 235 236 <div style="position: relative; width: 24rem; margin-top: 0.5rem"> 237 <div 238 id="progress-background" 239 style=" 240 position: absolute; 241 width: 100%; 242 height: 0.75rem; 243 244 border-radius: 9999px; 245 background-color: #fafafa9a; 246 " 247 ></div> 248 249 <div 250 id="progress-bar" 251 style=" 252 position: absolute; 253 width: 0%; 254 height: 0.75rem; 255 border-radius: 9999px; 256 background-color: #fff; 257 " 258 class="bg-white" 259 ></div> 260 </div> 261 </div> 262 263 <!-- <span style="position: absolute; bottom: 32px; left: 50%; margin: -36px 0 0 -36px"> 264 Footer content 265 </span> --> 266 </div> 267 </body> 268 269 <style type="text/css" nonce=""> 270 html { 271 overflow-y: hidden !important; 272 overscroll-behavior-y: none; 273 } 274 275 #splash-screen { 276 background: #fff; 277 } 278 279 html.dark #splash-screen { 280 background: #000; 281 } 282 283 html.her #splash-screen { 284 background: #983724; 285 } 286 287 #logo-her { 288 display: none; 289 } 290 291 #progress-background { 292 display: none; 293 } 294 295 #progress-bar { 296 display: none; 297 } 298 299 html.her #logo { 300 display: none; 301 } 302 303 html.her #logo-her { 304 display: block; 305 filter: invert(1); 306 } 307 308 html.her #progress-background { 309 display: block; 310 } 311 312 html.her #progress-bar { 313 display: block; 314 } 315 316 @media (max-width: 24rem) { 317 html.her #progress-background { 318 display: none; 319 } 320 321 html.her #progress-bar { 322 display: none; 323 } 324 } 325 326 @keyframes pulse { 327 50% { 328 opacity: 0.65; 329 } 330 } 331 332 .animate-pulse-fast { 333 animation: pulse 1.5s cubic-bezier(0.4, 0, 0.6, 1) infinite; 334 } 335 </style> 336</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.