Self-contained, no-JS landing page (tinygrad-minimal) that doubles as the artifact download host, served by Caddy on an internal :80 box. - site/index.html: static page, "Same tool, only a little different", feature highlights (remote->remote, symmetric panels, ssh_config awareness, edit-in- place, self-copy guard, ...), fixed stable download links, FAQ (unsigned notes). - site/Caddyfile: one flat /dl/ folder with browse + range requests and per-type Cache-Control (patches immutable, update.json no-cache, installers short). - site/deploy.sh: drop a build's artifacts/stable-* into /dl/ (renames the win portable zip to a stable name). - Flat folder matches electrobun's artifacts/ layout, so it's also the future updater baseUrl; per-build folders/symlink dropped in favor of it. - docs/build-and-release.md: document the download host + deploy flow. Verified: caddy validate + live smoke test (links, cache headers, 206 range, 404 fallback, deploy.sh copy/rename) against a temp root. Co-Authored-By: Claude <noreply@anthropic.com>
150 lines
6.8 KiB
HTML
150 lines
6.8 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1">
|
|
<title>miniSCP: a dual-pane SFTP file manager</title>
|
|
<style>
|
|
body {
|
|
font-family: 'Lucida Console', Menlo, Consolas, monospace;
|
|
font-size: 18px;
|
|
line-height: 1.5;
|
|
color: #111;
|
|
background-color: white;
|
|
max-width: 1000px;
|
|
margin: 0 auto;
|
|
padding: 0 50px;
|
|
box-sizing: border-box;
|
|
}
|
|
a { color: inherit; }
|
|
.landing {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 100vh; min-height: 100dvh;
|
|
text-align: center;
|
|
}
|
|
.wordmark { font-size: 64px; font-weight: bold; letter-spacing: -2px; margin: 0; }
|
|
.wordmark .lo { color: #999; }
|
|
.tagline { color: #555; margin: 10px 0 0; }
|
|
/* Image slot for the logo — drop assets/logo.svg in later.
|
|
<img class="logo" src="assets/logo.svg" alt="miniSCP"> */
|
|
.logo { width: 128px; height: 128px; display: block; margin: 0 auto 10px; }
|
|
.links-container { font-size: 22px; margin: 24px; }
|
|
.links-container a { text-decoration: none; margin: 0 6px; }
|
|
.separator { letter-spacing: -9px; color: #ccc; }
|
|
hr { border: none; height: 2px; background-color: lightgrey; width: 100%; margin: 40px auto; }
|
|
h2 { font-weight: bold; }
|
|
.feat { margin: 0 0 14px; }
|
|
.feat b { display: inline; }
|
|
/* Screenshot slot — drop assets/screenshot.png in later.
|
|
<img class="shot" src="assets/screenshot.png" alt="miniSCP screenshot"> */
|
|
.shot { display: block; max-width: 100%; margin: 20px auto; border: 1px solid #ddd; }
|
|
.downloads { display: flex; flex-wrap: wrap; gap: 12px; }
|
|
.dl {
|
|
flex: 1 1 200px;
|
|
text-decoration: none;
|
|
border: 2px solid #111;
|
|
padding: 14px 18px;
|
|
text-align: center;
|
|
}
|
|
.dl:hover { background: #111; color: #fff; }
|
|
.dl small { display: block; color: #888; font-size: 13px; margin-top: 4px; }
|
|
.dl:hover small { color: #bbb; }
|
|
.browse { color: #888; font-size: 14px; margin-top: 14px; }
|
|
.faqtable dt { margin-bottom: 0.4em; font-style: italic; }
|
|
.faqtable dd { margin-left: 0; margin-bottom: 1.6em; }
|
|
code { background: #f2f2f2; padding: 1px 5px; }
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div class="landing">
|
|
<!-- logo image slot goes here later -->
|
|
<h1 class="wordmark">mini<span class="lo">SCP</span></h1>
|
|
<p class="tagline">A dual-pane SFTP file manager.<br>Same tool, only a little different.</p>
|
|
<div class="links-container">
|
|
<a href="#different">what's different</a><span class="separator">|</span>
|
|
<a href="#download">download</a><span class="separator">|</span>
|
|
<a href="#faq">FAQ</a>
|
|
</div>
|
|
</div>
|
|
|
|
<hr>
|
|
<h2 id="different">Same tool, only a little different</h2>
|
|
<p>If you've ever used a two-pane file manager to move files over SFTP, you already know how to
|
|
use miniSCP. Two panels, a connection on each side, copy between them. Nothing to relearn.</p>
|
|
|
|
<p>The difference is in the corners. Both panels are fully symmetric — either side can be
|
|
your local disk or any saved server — so a copy isn't only up or down. You can move files
|
|
<b>straight from one server to another</b>, remote to remote, without staging them on your
|
|
machine first.</p>
|
|
|
|
<p>It's the same familiar tool, sanded down where the old ones snag.</p>
|
|
|
|
<!-- screenshot slot goes here later -->
|
|
|
|
<p><b>What's different:</b></p>
|
|
|
|
<p class="feat"><b>Remote → remote.</b> Copy straight between two servers — nothing
|
|
staged on your machine.</p>
|
|
<p class="feat"><b>Symmetric panels.</b> Either side is your local disk or any saved server. Every
|
|
panel is equal.</p>
|
|
<p class="feat"><b>Knows your servers already.</b> Reads the hosts from your
|
|
<code>~/.ssh/config</code>, and imports the saved sessions from your previous client.</p>
|
|
<p class="feat"><b>Tabs that keep working.</b> Open several sessions at once; transfers keep
|
|
running in background tabs.</p>
|
|
<p class="feat"><b>Edit in place.</b> Open a remote file in your editor — every save uploads
|
|
itself, automatically, until you disconnect.</p>
|
|
<p class="feat"><b>Won't eat your files.</b> A multi-layer guard catches when the source and
|
|
destination are secretly the same file, even behind NAT or split-DNS, before it can truncate
|
|
anything.</p>
|
|
<p class="feat"><b>Honest overwrites.</b> Compares size and date, tells you which copy is newer,
|
|
and lets you replace-all or skip-all in one go.</p>
|
|
<p class="feat"><b>A queue with an ETA.</b> Per-file speed and estimate, cancel anytime.</p>
|
|
<p class="feat"><b>Permissions.</b> Rename, delete, create folders and files, and change
|
|
permissions (chmod) on remote files.</p>
|
|
<p class="feat"><b>Themes.</b> Light, dark, or follow the system — with a set of accent
|
|
tones.</p>
|
|
<p class="feat"><b>macOS and Windows.</b> macOS is the primary target; Windows 11+ (x64) is in
|
|
beta.</p>
|
|
|
|
<hr>
|
|
<h2 id="download">Download</h2>
|
|
<p>Always the latest stable build.</p>
|
|
<div class="downloads">
|
|
<a class="dl" href="/dl/stable-macos-arm64-miniSCP.dmg">macOS<small>Apple Silicon</small></a>
|
|
<a class="dl" href="/dl/stable-macos-x64-miniSCP.dmg">macOS<small>Intel</small></a>
|
|
<a class="dl" href="/dl/stable-win-x64-miniSCP-Setup.zip">Windows<small>Installer</small></a>
|
|
<a class="dl" href="/dl/stable-win-x64-miniSCP-portable.zip">Windows<small>Portable</small></a>
|
|
</div>
|
|
<p class="browse">Looking for everything? <a href="/dl/">browse all files</a>.</p>
|
|
|
|
<hr>
|
|
<h2 id="faq">FAQ</h2>
|
|
<dl class="faqtable">
|
|
<dt>Which platforms are supported?</dt>
|
|
<dd>macOS (Apple Silicon and Intel) and Windows 11+ (x64). macOS is the primary target;
|
|
Windows is currently in beta.</dd>
|
|
|
|
<dt>macOS says the app is "damaged and can't be opened".</dt>
|
|
<dd>The builds aren't code-signed yet, so macOS quarantines them on download. Clear the
|
|
quarantine flag once and it opens normally:
|
|
<br><code>xattr -cr /Applications/miniSCP.app</code></dd>
|
|
|
|
<dt>Windows warns me with a blue SmartScreen box.</dt>
|
|
<dd>The Windows builds aren't signed yet either, so SmartScreen flags them on first run. Choose
|
|
"More info" → "Run anyway". The installer unpacks to your local app data; the portable
|
|
zip runs from anywhere.</dd>
|
|
|
|
<dt>Can I bring my existing servers over?</dt>
|
|
<dd>Yes. miniSCP reads the hosts from your <code>~/.ssh/config</code> automatically, and it can
|
|
import the saved sessions exported from your previous file-transfer client.</dd>
|
|
|
|
<dt>Installer or portable on Windows?</dt>
|
|
<dd>The installer sets miniSCP up in your user profile with a desktop shortcut. The portable zip
|
|
is just the app — unzip it anywhere and run it, no install.</dd>
|
|
</dl>
|
|
</body>
|
|
</html>
|