ipx asks ipx-directory on its people's behalf, with the token an admin set in the new Admin, Directory tab, so the page never talks to it and never sees the token or a feed's address. /api/directory, /api/popular and a feed's Directory page answer from it; subscribing takes the address from the directory and goes through Add feed's steps. With no directory set up, the Directory says so. The local directory code is gone; its privacy checks are the snapshot builder's now, and their tests moved with them. With sharing on, ipx sends its snapshot after every scan, whenever the config changes (set_cfg) and every half hour: each public feed and how many here subscribe, never an OPML or Patreon creator itself or anything private. A feed can be marked private in its settings, for a paid feed whose address does not give it away; anyone subscribed may mark it, only an admin unmark it. The admin's category for a feed that names none goes with it, which the directory uses only while the feed names none, so the category an admin gives a blog still reaches the Directory. The directory lists only feeds it has read as a feed: the first snapshot after a start went before the first scan, when an OPML was not yet known to be one, and the directory listed the OPML. It now fetches what a snapshot brings in at once instead of within the minute. The browser suite runs its own ipx-directory on SQLite; the Directory's tests match feeds by title, since the directory names them by address. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
38 lines
1.5 KiB
HTML
38 lines
1.5 KiB
HTML
<!doctype html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="utf-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<meta name="color-scheme" content="dark light">
|
|
<meta name="theme-color" content="#0a1726">
|
|
<title>iPX admin</title>
|
|
<link rel="icon" type="image/png" sizes="128x128" id="favicon" href="/favicon.png" data-light="/favicon.png" data-dark="/favicon-dark.png">
|
|
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
|
|
<link rel="stylesheet" data-src="app.css">
|
|
</head>
|
|
<body class="adminpage">
|
|
<!-- The server sends this page, and its script, to admins only. -->
|
|
<header id="topbar">
|
|
<a class="btn ico" href="/" title="Back to iPX" aria-label="Back to iPX" data-icon="left"></a>
|
|
<img class="logo onlight" src="/logo.svg" alt="" width="26"><img class="logo ondark" src="/logo-dark.svg" alt="" width="26"><img class="logo classic" src="/icon.png" alt="" width="26">
|
|
<h1>Admin</h1>
|
|
<span class="grow"></span>
|
|
<nav class="tabs" id="atabs">
|
|
<a href="#server" data-t="server">Server</a>
|
|
<a href="#accounts" data-t="accounts">Accounts</a>
|
|
<a href="#directory" data-t="directory">Directory</a>
|
|
<a href="#log" data-t="log">Log</a>
|
|
</nav>
|
|
</header>
|
|
<main class="wrap plain" id="admin">
|
|
<section id="server" hidden></section>
|
|
<section id="accounts" hidden></section>
|
|
<section id="directory" hidden></section>
|
|
<section id="log" hidden></section>
|
|
</main>
|
|
<div id="toasts"></div>
|
|
|
|
<script data-src="web/src"></script>
|
|
</body>
|
|
</html>
|