update retention policy to a maximum of 2 days for completed archives and adjust related configurations
This commit is contained in:
+80
-24
@@ -4,38 +4,65 @@
|
||||
<meta charset="utf-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1">
|
||||
<meta name="theme-color" content="#151715">
|
||||
<meta name="application-name" content="SiteHarbor">
|
||||
<meta name="robots" content="index, follow">
|
||||
<meta
|
||||
name="description"
|
||||
content="Create browser-owned offline archives of public websites with SiteHarbor."
|
||||
content="Download public websites as private offline ZIP archives. SiteHarbor captures pages, static assets, and supported local links for offline browsing."
|
||||
>
|
||||
<title>{{ app_name }} - Public web capture</title>
|
||||
<meta property="og:site_name" content="SiteHarbor">
|
||||
<meta property="og:type" content="website">
|
||||
<meta property="og:title" content="Website Downloader & Offline Archive Tool | SiteHarbor">
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Create bounded, private offline ZIP archives of public websites with SiteHarbor."
|
||||
>
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebApplication",
|
||||
"name": "SiteHarbor",
|
||||
"applicationCategory": "UtilitiesApplication",
|
||||
"operatingSystem": "Web",
|
||||
"description": "A local website downloader for creating bounded offline archives of public websites."
|
||||
}
|
||||
</script>
|
||||
<title>Website Downloader & Offline Archive Tool | {{ app_name }}</title>
|
||||
<link rel="stylesheet" href="{{ url_for('static', path='app.css') }}">
|
||||
<script defer src="{{ url_for('static', path='app.js') }}"></script>
|
||||
</head>
|
||||
<body>
|
||||
<div class="site-shell">
|
||||
<header class="topbar">
|
||||
<header class="site-header">
|
||||
<a class="brand" href="/" aria-label="SiteHarbor home">
|
||||
<span class="brand-mark" aria-hidden="true"><i></i><i></i><i></i></span>
|
||||
<span>siteharbor</span>
|
||||
<span class="brand-copy">
|
||||
<span class="brand-kicker">LOCAL WEB ARCHIVER</span>
|
||||
<strong>SiteHarbor</strong>
|
||||
</span>
|
||||
</a>
|
||||
<div class="topbar-meta">
|
||||
<span class="public-label">PUBLIC WEB CAPTURE</span>
|
||||
<nav class="site-nav" aria-label="Primary navigation">
|
||||
<a href="#capture-workspace">Archive a site</a>
|
||||
<a href="#recent-captures">Your captures</a>
|
||||
<a href="#how-it-works">How it works</a>
|
||||
</nav>
|
||||
<div class="service-panel">
|
||||
<span class="service-panel-label">LOCAL SERVICE</span>
|
||||
<span class="service-status" id="service-status" aria-live="polite">
|
||||
<i></i><span>Checking service</span>
|
||||
</span>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<main>
|
||||
<section class="workbench" aria-label="Website capture workspace">
|
||||
<main id="main-content">
|
||||
<section class="workbench" id="capture-workspace" aria-label="Website capture workspace">
|
||||
<div class="observatory">
|
||||
<div class="observatory-copy">
|
||||
<p class="eyebrow">LIVE NETWORK SIGNAL</p>
|
||||
<h1>Copy the web.<br><em>Keep it close.</em></h1>
|
||||
<p class="eyebrow">OFFLINE WEBSITE DOWNLOADER</p>
|
||||
<h1>Archive the web.<br><em>Keep it offline.</em></h1>
|
||||
<p class="lede">
|
||||
Build an offline-ready snapshot of a public site. The service runs the crawl;
|
||||
this browser keeps the key to its own sessions.
|
||||
Create a private, offline-ready ZIP archive of a public website. SiteHarbor captures
|
||||
supported pages and assets, then prepares local links for offline browsing.
|
||||
</p>
|
||||
</div>
|
||||
|
||||
@@ -67,7 +94,7 @@
|
||||
<form class="capture-console" id="capture-form" novalidate>
|
||||
<div class="console-head">
|
||||
<div>
|
||||
<p class="eyebrow">NEW SESSION</p>
|
||||
<p class="eyebrow">NEW WEBSITE ARCHIVE</p>
|
||||
<h2>Set your crawl.</h2>
|
||||
</div>
|
||||
<span class="console-step">01 / 01</span>
|
||||
@@ -135,8 +162,8 @@
|
||||
<input id="max-duration" type="number" min="10" step="10" value="300">
|
||||
</label>
|
||||
<label>
|
||||
<span>Keep (days)</span>
|
||||
<input id="retention-days" type="number" min="1" step="1" value="7">
|
||||
<span>Keep (days, max 2)</span>
|
||||
<input id="retention-days" type="number" min="1" max="2" step="1" value="2">
|
||||
</label>
|
||||
</div>
|
||||
</details>
|
||||
@@ -197,30 +224,59 @@
|
||||
</form>
|
||||
</section>
|
||||
|
||||
<section class="activity-section" aria-labelledby="activity-title">
|
||||
<section class="activity-section" id="recent-captures" aria-labelledby="activity-title">
|
||||
<div class="section-heading">
|
||||
<div>
|
||||
<p class="eyebrow">THIS BROWSER</p>
|
||||
<h2 id="activity-title">Your local sessions</h2>
|
||||
<p>Session records stay in this browser's local storage. Reopen this page to reconnect to an active crawl.</p>
|
||||
<h2 id="activity-title">Your website archives</h2>
|
||||
<p>Private session records stay in this browser. Return to monitor a crawl or download an available offline archive.</p>
|
||||
</div>
|
||||
<button class="quiet-button" id="refresh-jobs" type="button">Refresh sessions</button>
|
||||
<button class="quiet-button" id="refresh-jobs" type="button">Refresh archives</button>
|
||||
</div>
|
||||
|
||||
<div class="empty-state" id="empty-state">
|
||||
<span class="empty-mark" aria-hidden="true">+</span>
|
||||
<div>
|
||||
<h3>No local sessions yet</h3>
|
||||
<p>Start a crawl above. Its status and archive will remain available from this browser after a reconnect.</p>
|
||||
<h3>No website archives yet</h3>
|
||||
<p>Start a crawl above. This browser can reconnect to its status and download it when ready.</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="job-grid" id="job-grid" aria-live="polite"></div>
|
||||
</section>
|
||||
</main>
|
||||
|
||||
<footer class="footer-note">
|
||||
<span>SiteHarbor captures browser-delivered static content.</span>
|
||||
<span>Dynamic APIs, logins, service workers, and server behavior may not work offline.</span>
|
||||
<footer class="site-footer" id="how-it-works">
|
||||
<div class="footer-top">
|
||||
<section class="footer-intro" aria-labelledby="footer-title">
|
||||
<p class="footer-kicker">SITEHARBOR / OFFLINE WEB ARCHIVES</p>
|
||||
<h2 id="footer-title">A practical website downloader for offline review.</h2>
|
||||
<p>
|
||||
Save a bounded, browser-owned copy of a public website without sending your archive
|
||||
to a third-party storage service.
|
||||
</p>
|
||||
</section>
|
||||
<div class="footer-points">
|
||||
<section class="footer-point">
|
||||
<span class="footer-index">01</span>
|
||||
<h3>Bounded crawl</h3>
|
||||
<p>Set page, depth, size, and time limits before SiteHarbor begins.</p>
|
||||
</section>
|
||||
<section class="footer-point">
|
||||
<span class="footer-index">02</span>
|
||||
<h3>Portable ZIP</h3>
|
||||
<p>Download captured pages, supported assets, and a manifest for offline browsing.</p>
|
||||
</section>
|
||||
<section class="footer-point">
|
||||
<span class="footer-index">03</span>
|
||||
<h3>Private by default</h3>
|
||||
<p>Archives stay scoped to this browser session and are removed after two days.</p>
|
||||
</section>
|
||||
</div>
|
||||
</div>
|
||||
<div class="footer-bottom">
|
||||
<span>Local-first web archiving with FastAPI, Uvicorn, and SQLite.</span>
|
||||
<span>Archive only websites you are authorized to copy.</span>
|
||||
</div>
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
|
||||
Reference in New Issue
Block a user