Spaces:
Running
Running
Upload 126 files
Browse files- public/css/site.css +14 -0
- public/index.html +4 -0
- public/js/app.js +16 -2
public/css/site.css
CHANGED
|
@@ -494,3 +494,17 @@ body {
|
|
| 494 |
}
|
| 495 |
#intro-overlay .intro-content { opacity: 1; }
|
| 496 |
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 494 |
}
|
| 495 |
#intro-overlay .intro-content { opacity: 1; }
|
| 496 |
}
|
| 497 |
+
|
| 498 |
+
/* ── Notice Banner ── */
|
| 499 |
+
.notice-banner {
|
| 500 |
+
background: #20130e;
|
| 501 |
+
border-top: 1px solid #f97316;
|
| 502 |
+
border-bottom: 1px solid #f97316;
|
| 503 |
+
color: #fdba74;
|
| 504 |
+
padding: 0.8rem 2rem;
|
| 505 |
+
font-size: 0.72rem;
|
| 506 |
+
text-align: center;
|
| 507 |
+
line-height: 1.5;
|
| 508 |
+
letter-spacing: 0.05em;
|
| 509 |
+
font-weight: 500;
|
| 510 |
+
}
|
public/index.html
CHANGED
|
@@ -268,6 +268,10 @@
|
|
| 268 |
<span class="topbar-right">curated milestones in one-shot generation</span>
|
| 269 |
</div>
|
| 270 |
|
|
|
|
|
|
|
|
|
|
|
|
|
| 271 |
<div class="hero">
|
| 272 |
<div class="hero-eyebrow">Archive</div>
|
| 273 |
<h1>
|
|
|
|
| 268 |
<span class="topbar-right">curated milestones in one-shot generation</span>
|
| 269 |
</div>
|
| 270 |
|
| 271 |
+
<div class="notice-banner">
|
| 272 |
+
Fable 5 was taken down, this is what was made in the time it was around. You got an interesting game? Make a PR with it properly added and tested!
|
| 273 |
+
</div>
|
| 274 |
+
|
| 275 |
<div class="hero">
|
| 276 |
<div class="hero-eyebrow">Archive</div>
|
| 277 |
<h1>
|
public/js/app.js
CHANGED
|
@@ -29,11 +29,24 @@ async function updateStats(entries) {
|
|
| 29 |
}
|
| 30 |
}
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
async function renderList(container) {
|
| 33 |
container.innerHTML = '<div class="empty"><h2>Loading...</h2></div>';
|
| 34 |
try {
|
| 35 |
const res = await fetch('/api/entries');
|
| 36 |
-
const
|
|
|
|
| 37 |
updateStats(entries);
|
| 38 |
|
| 39 |
if (!entries.length) {
|
|
@@ -72,7 +85,8 @@ async function renderDetail(id, container) {
|
|
| 72 |
container.innerHTML = '<div class="empty"><h2>Entry not found</h2></div>';
|
| 73 |
return;
|
| 74 |
}
|
| 75 |
-
const
|
|
|
|
| 76 |
container.innerHTML = `
|
| 77 |
<div class="detail">
|
| 78 |
<div class="back" onclick="navigate('/')">← Back to archives</div>
|
|
|
|
| 29 |
}
|
| 30 |
}
|
| 31 |
|
| 32 |
+
function overrideEntry(e) {
|
| 33 |
+
if (!e) return e;
|
| 34 |
+
const overridden = { ...e };
|
| 35 |
+
overridden.model = 'Ultracode';
|
| 36 |
+
if (e.id === 'neonstrike') {
|
| 37 |
+
overridden.reasoning = '6 prompts ("Continue" only, basically one-shot)';
|
| 38 |
+
} else if (e.id === 'rblx') {
|
| 39 |
+
overridden.reasoning = '4 prompts ("Continue" only, basically one-shot)';
|
| 40 |
+
}
|
| 41 |
+
return overridden;
|
| 42 |
+
}
|
| 43 |
+
|
| 44 |
async function renderList(container) {
|
| 45 |
container.innerHTML = '<div class="empty"><h2>Loading...</h2></div>';
|
| 46 |
try {
|
| 47 |
const res = await fetch('/api/entries');
|
| 48 |
+
const rawEntries = await res.json();
|
| 49 |
+
const entries = rawEntries.map(overrideEntry);
|
| 50 |
updateStats(entries);
|
| 51 |
|
| 52 |
if (!entries.length) {
|
|
|
|
| 85 |
container.innerHTML = '<div class="empty"><h2>Entry not found</h2></div>';
|
| 86 |
return;
|
| 87 |
}
|
| 88 |
+
const rawEntry = await res.json();
|
| 89 |
+
const e = overrideEntry(rawEntry);
|
| 90 |
container.innerHTML = `
|
| 91 |
<div class="detail">
|
| 92 |
<div class="back" onclick="navigate('/')">← Back to archives</div>
|