|
| 1 | +<!DOCTYPE html> |
| 2 | +<html lang="en"> |
| 3 | + <head> |
| 4 | + <meta charset="utf-8"> |
| 5 | + <meta name="viewport" content="width=device-width, initial-scale=1.0"> |
| 6 | + <meta name="color-scheme" content="dark"> |
| 7 | + <meta name="theme-color" content="#0c121c"> |
| 8 | + <title>Dev Build — Source 2 Viewer</title> |
| 9 | + <link rel="preload" href="../static/Manrope.woff2" as="font" type="font/woff2" crossorigin> |
| 10 | + <link rel="icon" href="../favicon.ico" sizes="16x16 24x24 32x32 48x48 72x72 256x256"> |
| 11 | + <style> |
| 12 | + @font-face { |
| 13 | + font-family: "Manrope"; |
| 14 | + font-style: normal; |
| 15 | + font-weight: 200 800; |
| 16 | + font-display: fallback; |
| 17 | + src: url(../static/Manrope.woff2) format("woff2"); |
| 18 | + } |
| 19 | + |
| 20 | + *, |
| 21 | + *:before, |
| 22 | + *:after { |
| 23 | + box-sizing: border-box; |
| 24 | + } |
| 25 | + |
| 26 | + body { |
| 27 | + margin: 0; |
| 28 | + font: |
| 29 | + 18px / 1.6 Manrope, |
| 30 | + -apple-system, |
| 31 | + BlinkMacSystemFont, |
| 32 | + "Segoe UI", |
| 33 | + "Noto Sans", |
| 34 | + Helvetica, |
| 35 | + Arial, |
| 36 | + sans-serif; |
| 37 | + color: #fff; |
| 38 | + background-color: hsl(216 40% 8%); |
| 39 | + display: flex; |
| 40 | + align-items: center; |
| 41 | + justify-content: center; |
| 42 | + min-height: 100vh; |
| 43 | + } |
| 44 | + |
| 45 | + a:hover { |
| 46 | + color: #fff; |
| 47 | + } |
| 48 | + |
| 49 | + .border-v { |
| 50 | + position: fixed; |
| 51 | + top: 0; |
| 52 | + bottom: 0; |
| 53 | + left: calc(50% - 320px); |
| 54 | + width: 6px; |
| 55 | + background: repeating-linear-gradient(-45deg, rgb(255 170 0 / 60%), rgb(255 170 0 / 60%) 6px, rgb(30 30 30) 6px, rgb(30 30 30) 12px); |
| 56 | + pointer-events: none; |
| 57 | + } |
| 58 | + |
| 59 | + .under-construction { |
| 60 | + position: fixed; |
| 61 | + bottom: 16px; |
| 62 | + left: calc(50% - 16px); |
| 63 | + pointer-events: none; |
| 64 | + } |
| 65 | + |
| 66 | + .card { |
| 67 | + max-width: 560px; |
| 68 | + padding: 0 1.5rem; |
| 69 | + } |
| 70 | + |
| 71 | + h1 { |
| 72 | + display: flex; |
| 73 | + align-items: center; |
| 74 | + gap: 0.5rem; |
| 75 | + font-size: 2rem; |
| 76 | + font-weight: 700; |
| 77 | + margin: 0 0 1.5rem; |
| 78 | + } |
| 79 | + |
| 80 | + h1 svg { |
| 81 | + width: 42px; |
| 82 | + height: 42px; |
| 83 | + flex-shrink: 0; |
| 84 | + } |
| 85 | + |
| 86 | + .badge { |
| 87 | + font-size: 0.6875rem; |
| 88 | + font-weight: 600; |
| 89 | + text-transform: uppercase; |
| 90 | + letter-spacing: 0.05em; |
| 91 | + background: rgb(255 170 0 / 15%); |
| 92 | + color: rgb(255 200 100); |
| 93 | + border: 1px solid rgb(255 170 0 / 25%); |
| 94 | + border-radius: 4px; |
| 95 | + padding: 0.1em 0.45em; |
| 96 | + } |
| 97 | + |
| 98 | + p { |
| 99 | + color: rgb(255 255 255 / 70%); |
| 100 | + margin: 0 0 0.75rem; |
| 101 | + } |
| 102 | + |
| 103 | + .warning { |
| 104 | + color: rgb(255 200 100 / 70%); |
| 105 | + font-size: 0.9375rem; |
| 106 | + margin-bottom: 2rem; |
| 107 | + } |
| 108 | + |
| 109 | + .btn { |
| 110 | + display: inline-flex; |
| 111 | + align-items: center; |
| 112 | + gap: 0.5rem; |
| 113 | + padding: 0.75rem 2rem; |
| 114 | + background: #458fff; |
| 115 | + color: #fff; |
| 116 | + text-decoration: none; |
| 117 | + border-radius: 8px; |
| 118 | + font-size: 1.1875rem; |
| 119 | + font-weight: 600; |
| 120 | + transition: background 0.15s; |
| 121 | + } |
| 122 | + |
| 123 | + .btn:hover { |
| 124 | + background: #63a1ff; |
| 125 | + } |
| 126 | + |
| 127 | + .build-info { |
| 128 | + color: rgb(255 255 255 / 40%); |
| 129 | + font-size: 0.875rem; |
| 130 | + margin-top: 1rem; |
| 131 | + line-height: 1.7; |
| 132 | + } |
| 133 | + |
| 134 | + .build-info a { |
| 135 | + color: rgb(255 255 255 / 50%); |
| 136 | + } |
| 137 | + |
| 138 | + .build-info a:hover { |
| 139 | + color: #fff; |
| 140 | + } |
| 141 | + |
| 142 | + .back { |
| 143 | + display: inline-block; |
| 144 | + margin-top: 2rem; |
| 145 | + color: #63a1ff; |
| 146 | + text-decoration: underline; |
| 147 | + font-size: 0.9375rem; |
| 148 | + } |
| 149 | + </style> |
| 150 | + </head> |
| 151 | + <body> |
| 152 | + <div class="border-v"></div> |
| 153 | + <img |
| 154 | + class="under-construction" |
| 155 | + alt="" |
| 156 | + aria-hidden="true" |
| 157 | + width="38" |
| 158 | + height="38" |
| 159 | + src="data:image/gif;base64,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" |
| 160 | + > |
| 161 | + <div class="card"> |
| 162 | + <h1> |
| 163 | + <svg viewBox="0 0 160 160" aria-hidden="true"> |
| 164 | + <circle cx="75.25" cy="72.75" r="64.58" fill="#242a40" /> |
| 165 | + <path |
| 166 | + fill="#458fff" |
| 167 | + d="M143.69 21.16q0 1.04-.12 2.04s-4.59 27.94-7.58 45.96c-.5 3.03-1.46 9.4-1.66 10.01v.02a7.06 7.06 0 0 1-9.48 4.27 6.8 6.8 0 0 1-4.18-6.39v-.08c0-.38.21-3.16.22-4.18a48 48 0 0 0-.25-4.82 44 44 0 0 0-1.58-8.09 45.7 45.7 0 0 0-38.68-32.5 47 47 0 0 0-5.07-.29c-.84 0-4.1.21-4.19.19a7 7 0 0 1-1.68-13.74c.46-.14 6.66-1.18 9.68-1.72 18.25-3.24 44.55-7.88 44.55-7.88a17.3 17.3 0 0 1 11.74 2.35 17.4 17.4 0 0 1 8.29 14.83Z" |
| 168 | + /> |
| 169 | + <path |
| 170 | + fill="#385283" |
| 171 | + d="M132.81 87.2q-.22.88-.46 1.75a58 58 0 0 1-3.85 9.98c-.68 1.27-2.45 4.5-3.65 6.42a60 60 0 0 1-10.27 11.84s6.76 18.06 7.05 19.22q.5 1.94.5 4.05a16.6 16.6 0 0 1-16.66 16.61 16.6 16.6 0 0 1-13.92-7.56c-.37-.55-10.13-17.74-10.13-17.74q-4.34.46-8.84.26c-29.95-1.32-54.48-25.23-56.5-55.13a59.2 59.2 0 0 1 20.11-48.78 56 56 0 0 1 8.23-6.05 58 58 0 0 1 16.79-6.97 11.42 11.42 0 0 0 2.33 13.52c-4.7 1.15-12.04 3.47-18.94 10.35-9.78 9.76-16.33 23.06-14.72 38.42 2.35 22.4 20.95 40.03 43.46 40.95l.43.01a45.5 45.5 0 0 0 39.4-20.18c1.43-2.08 4.97-8.87 6.06-13.09l.08-.33a11.4 11.4 0 0 0 13.53 2.45Z" |
| 172 | + /> |
| 173 | + <path |
| 174 | + fill="#edf3fc" |
| 175 | + d="M95.73 68.92q5.22 2.91 7.4 9.5a20 20 0 0 1 .33 11.94 23 23 0 0 1-6.4 10.5 29 29 0 0 1-11.44 6.71A28 28 0 0 1 72 108.65a24 24 0 0 1-11.36-5.05c-2.46-2-4.34-4.73-5.5-6.92a8 8 0 0 1-.79-1.99 7.5 7.5 0 0 1 4.93-8.87 7.3 7.3 0 0 1 7.31 1.74l.11.12c.46.47 1.38 1.88 1.46 2.02a12.4 12.4 0 0 0 5.41 4.72q3.49 1.63 7.91.21c4.42-1.42 5.04-2.47 6.5-4.66a8 8 0 0 0 .91-7.22q-.9-2.77-3.51-3.34c-1.74-.38-10.38-.46-10.94-.46-.45 0-8.67.03-11.77-.26A25 25 0 0 1 52.6 75.3q-5.1-2.91-7.08-9.41a19 19 0 0 1-.02-11.59 23 23 0 0 1 6.41-10.04q4.63-4.35 11.11-6.41c6.48-2.06 8.91-1.83 13.17-1.14a24 24 0 0 1 11.11 4.67 22 22 0 0 1 5.51 6.58 9 9 0 0 1 .82 1.92 7.16 7.16 0 0 1-4.77 8.65c-2.63.84-5.4.11-7.28-1.67l-.11-.12a18 18 0 0 1-1.46-1.96q-1.92-3-5.34-4.54-3.41-1.53-7.74-.16c-4.33 1.37-4.94 2.4-6.39 4.52a7.7 7.7 0 0 0-.98 7.02q.86 2.7 3.42 3.27c1.71.37 10.28.44 10.84.43.45 0 8.64-.05 11.74.23q4.96.45 10.17 3.36Z" |
| 176 | + /> |
| 177 | + <path |
| 178 | + fill="#242a40" |
| 179 | + d="M137.85 33.08c.21.71.26 1.89-.03 2.48a2.3 2.3 0 0 1-1.44 1.23l-14.56 4.05c-4.59.83-6.59-2.59-5.54-5.66s9.05-15.2 9.55-15.77 1.03-1.54.78-2.4a3.8 3.8 0 0 0-2.08-2.54 4.6 4.6 0 0 0-3.33-.2 4.2 4.2 0 0 0-2.64 1.98 6 6 0 0 0-.72 3.12c0 .07.02.84-.02 1.14l-.01.07a3.1 3.1 0 0 1-2.11 2.47c-1.56.45-3.22-.55-3.79-2.25l-.07-.21a11.23 11.23 0 0 1 .16-4.72 10.72 10.72 0 0 1 7.53-7.41q2.76-.8 5.43-.22 2.69.57 4.71 2.38a10 10 0 0 1 2.86 4.59c.62 2.04.64 4.09-.05 5.7s-8.63 12.3-8.45 12.91l10.66-2.94c.79-.23 1.62 0 2.24.55a4 4 0 0 1 .93 1.62Z" |
| 180 | + /> |
| 181 | + </svg> |
| 182 | + SOURCE 2 VIEWER |
| 183 | + <span class="badge">Dev</span> |
| 184 | + </h1> |
| 185 | + <p>Dev builds are automatically compiled from the latest commit and include features and fixes not yet in an official release.</p> |
| 186 | + <p class="warning">Dev builds may be unstable or contain incomplete features.</p> |
| 187 | + <a class="btn" href="https://nightly.link/ValveResourceFormat/ValveResourceFormat/workflows/build/master/Source2Viewer.exe.zip"> |
| 188 | + <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"> |
| 189 | + <path d="M12 17V3" /> |
| 190 | + <path d="m6 11 6 6 6-6" /> |
| 191 | + <path d="M19 21H5" /> |
| 192 | + </svg> |
| 193 | + Download Dev Build |
| 194 | + </a> |
| 195 | + <div class="build-info"> |
| 196 | + <a id="js-build-number" href="#">…</a> |
| 197 | + <br> |
| 198 | + <span id="js-build-title">…</span> |
| 199 | + </div> |
| 200 | + <a class="back" href="/">Back to the homepage</a> |
| 201 | + </div> |
| 202 | + <script> |
| 203 | + fetch('https://api.github.com/repositories/42366054/actions/workflows/86119/runs?branch=master&status=success&per_page=1') |
| 204 | + .then((r) => r.json()) |
| 205 | + .then((data) => { |
| 206 | + const run = data.workflow_runs?.[0]; |
| 207 | + if (!run) return; |
| 208 | + const date = new Date(run.created_at); |
| 209 | + const formatted = date.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' }); |
| 210 | + const time = date.toLocaleTimeString('en-US', { hour: '2-digit', minute: '2-digit' }); |
| 211 | + const buildLink = document.getElementById('js-build-number'); |
| 212 | + buildLink.href = run.html_url; |
| 213 | + buildLink.textContent = `Build #${run.run_number} \u2014 ${formatted} ${time}`; |
| 214 | + document.getElementById('js-build-title').textContent = run.display_title; |
| 215 | + }) |
| 216 | + .catch((e) => { |
| 217 | + document.getElementById('js-build-title').textContent = e.message; |
| 218 | + }); |
| 219 | + </script> |
| 220 | + </body> |
| 221 | +</html> |
0 commit comments