Skip to content

Commit 7d631f4

Browse files
committed
Create /dev page
1 parent 35c9e44 commit 7d631f4

File tree

2 files changed

+222
-1
lines changed

2 files changed

+222
-1
lines changed

dev/index.html

Lines changed: 221 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,221 @@
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="#">&hellip;</a>
197+
<br>
198+
<span id="js-build-title">&hellip;</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>

index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ <h3>Fully open-source and reverse-engineered.</h3>
170170
</svg>
171171
</a>
172172
<div class="download-footer">
173-
<a href="https://nightly.link/ValveResourceFormat/ValveResourceFormat/workflows/build/master/Source2Viewer.zip">Download dev build</a>
173+
<a href="/dev/">Download dev build</a>
174174
<span
175175
>OpenGL 4.6 · Windows 11
176176
<svg width="14" height="14" viewBox="0 0 36 36" aria-hidden="true">

0 commit comments

Comments
 (0)