Files
usenet-indexer/public/index.html
T
Daan MeijerandClaude Opus 5.5 5132ab9083
Test and deploy / test (push) Successful in 3m5s
Test and deploy / deploy (push) Successful in 2m7s
Search: a word with a leading ^ matches at a word's start only
"^zed" finds "Zed Dead", "The_Zed_Files", not "Facialized": a regex on
release_texts, (^|[^[:alnum:]]) before the word, which the trigram index
serves (homelab: 551 texts for ^zed against 6,606 for zed, 35 ms warm).
Words without ^ match anywhere as before; the search box says so.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-10-29 20:19:52 +01:00

116 lines
5.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Voyager 2</title>
<link rel="icon" href="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' rx='7' fill='%232f6fed'/%3E%3Cpath d='M9 10h14M9 16h14M9 22h9' stroke='white' stroke-width='3' stroke-linecap='round'/%3E%3C/svg%3E" />
<link rel="stylesheet" href="/app.css" />
</head>
<body>
<header class="topbar">
<a class="brand" href="/" aria-label="Voyager 2, home">
<span class="brand-mark" aria-hidden="true"></span>
<span>Voyager 2</span>
</a>
<dl class="stats" id="stats" aria-label="Index statistics"></dl>
</header>
<main class="layout">
<section class="search" aria-label="Search">
<div class="search-row">
<label class="search-box">
<svg aria-hidden="true" viewBox="0 0 24 24"><circle cx="11" cy="11" r="7" /><path d="m20 20-3.5-3.5" /></svg>
<input id="q" type="search" autocomplete="off" spellcheck="false"
placeholder="Search release names… (^word: at a word's start)" aria-label="Search" />
<kbd aria-hidden="true">/</kbd>
</label>
<label class="select">
<span class="visually-hidden">Sort</span>
<select id="sort">
<option value="newest">Newest</option>
<option value="oldest">Oldest</option>
<option value="largest">Largest</option>
<option value="files">Most files</option>
<option value="name">Name</option>
</select>
</label>
</div>
<div class="filters" role="group" aria-label="Filters">
<button class="chip" type="button" data-filter="readable" aria-pressed="false">Readable names</button>
<button class="chip" type="button" data-filter="complete" aria-pressed="false">Complete</button>
<button class="chip" type="button" data-filter="unlocked" aria-pressed="false" title="Leave out releases found passworded">No password</button>
<label class="select select-small">
<span class="visually-hidden">Category</span>
<select id="cat">
<option value="">Any category</option>
</select>
</label>
<label class="select select-small">
<span class="visually-hidden">Recognised by</span>
<select id="source">
<option value="">Any source</option>
<option value="stem">Filename</option>
<option value="subject">Subject</option>
<option value="post">Post id</option>
</select>
</label>
<span class="field-chip" title="Release size in MB">
<label for="min_size">Size</label>
<input type="number" id="min_size" min="0" step="any" inputmode="decimal" placeholder="min" aria-label="Minimum size in MB" />
<span aria-hidden="true">–</span>
<input type="number" id="max_size" min="0" step="any" inputmode="decimal" placeholder="max" aria-label="Maximum size in MB" />
<span class="unit">MB</span>
</span>
<span class="chip chip-active" id="poster-filter" hidden>
<span id="poster-filter-label"></span>
<button type="button" id="poster-clear" aria-label="Remove poster filter">×</button>
</span>
</div>
</section>
<section class="results" aria-live="polite">
<p class="summary" id="summary"></p>
<ol class="release-list" id="list"></ol>
<div class="more">
<button type="button" class="button" id="more" hidden>Load more</button>
</div>
<p class="empty" id="empty" hidden>No releases match. Try fewer words or turn off a filter.</p>
</section>
</main>
<div class="scrim" id="scrim" hidden></div>
<aside class="drawer" id="drawer" aria-labelledby="detail-name" hidden>
<div class="drawer-head">
<div class="drawer-title">
<p class="eyebrow" id="detail-source"></p>
<h2 id="detail-name"></h2>
</div>
<button type="button" class="icon-button" id="close" aria-label="Close details">
<svg aria-hidden="true" viewBox="0 0 24 24"><path d="M6 6l12 12M18 6 6 18" /></svg>
</button>
</div>
<div class="drawer-body" id="detail"></div>
</aside>
<template id="row-template">
<li class="release">
<button type="button" class="release-main">
<span class="release-name"></span>
<span class="release-inner" hidden></span>
<span class="release-meta"></span>
</button>
<div class="release-side">
<span class="badges"></span>
<span class="release-size"></span>
<a class="icon-button nzb" title="Download NZB" aria-label="Download NZB">
<svg aria-hidden="true" viewBox="0 0 24 24"><path d="M12 4v11m0 0 4-4m-4 4-4-4M5 19h14" /></svg>
</a>
</div>
</li>
</template>
<script src="/app.js" type="module"></script>
</body>
</html>