Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,9 +18,9 @@ at launch (via symlink/junction, with a copy fallback). See [docs/](docs/):

Beyond the MVP management layer above:

- **Browse tab** — the SiloAPI canonical catalog (GitHub + ModHub + Nexus), search,
- **Browse tab** — the SiloAPI canonical catalog (GitHub + ModHub), search,
category filter, pagination, per-source buttons w/ versions, in-app GitHub install
with a streaming progress bar, detail drawer. ModHub/Nexus are index-only
with a streaming progress bar, detail drawer. ModHub is index-only
(open-page; their CDNs gate direct download).
- **Catalog-routed updates** — "⟳ Updates" checks the whole library against the
catalog's latest-across-sources (fixes the GitHub-vs-ModHub false-"outdated" bug);
Expand Down
4 changes: 2 additions & 2 deletions docs/social/VIDEO_PLAN.md
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ from this set — you should almost never re-shoot.
| V4 | **Organize dry-run** | The read-only preview ("12 into Vehicles, 3 into Maps") before anything moves. |
| V5 | **Conflicts** | A real one from your set — duplicate active map (instant-crash) or a filltype/script collision. |
| V6 | **Provenance / integrity** | A mod's drawer → integrity check → **✓ Verified** (and a **Modified** with changed files if you have one). |
| V7 | **Browse one catalog** | Search a mod; show ModHub/GitHub/Nexus folded into one record with the latest version; a GitHub in-app install with the progress bar. |
| V7 | **Browse one catalog** | Search a mod; show ModHub/GitHub folded into one record with the latest version; a GitHub in-app install with the progress bar. |
| V8 | **Update by drop → Adopt** | Drop a newer ModHub `.zip` into the folder; open the mod; the drawer's "newer build — Adopt vX" banner; adopt; version updates. |
| V9 | **Loadouts** | Save the current set; switch to another; watch the active set change. |
| V10 | **Collections** | Publish the active set as a link (secret gist); open a shared link and show the preview + "heads-up" (what you'd need to install). |
Expand All @@ -67,7 +67,7 @@ The old [`demo-video-script.md`](./demo-video-script.md) was written ~2026-07-31
- **Collections** (V10) — share a mod-set as a *link* (secret gist or public repo), with an import
preview that tells you what you'd need. The "here's my co-op pack / the server's list" story.
Missing entirely from the old script.
- **Update by drop → Adopt** (V8) — the real ModHub/Nexus update flow: drop the new zip, Silo says
- **Update by drop → Adopt** (V8) — the real ModHub update flow: drop the new zip, Silo says
"newer build — Adopt," done. Very demo-able; add to the "keeps mods current" beat.
- **Tile UI + green active switch** (V3) — the old script says "click the dot." Visuals changed;
re-shoot those beats.
Expand Down
8 changes: 4 additions & 4 deletions docs/social/demo-video-script.md
Original file line number Diff line number Diff line change
Expand Up @@ -78,16 +78,16 @@ A follow-along beat sheet for a **narrated screen-share** on your own machine (y
against the real build its source published. Verified means byte-for-byte the same. Modified
tells you exactly which files differ."
- "It's provenance, not antivirus — it proves *what* a mod is, it doesn't guess intent. And it
works across ModHub, GitHub, and Nexus."
works across ModHub and GitHub."

### 6 · One catalog, every source — and easy updates (6:30–7:45)
- **DO:** Open **Browse**. Search a mod. Show it pulling ModHub/GitHub/Nexus into one record with the
- **DO:** Open **Browse**. Search a mod. Show it pulling ModHub/GitHub into one record with the
latest version. If it's a GitHub mod, show the in-app install with the progress bar. Then show the
**update-by-drop** flow: with a mod out of date, drop the newer `.zip` into your folder, open the
mod, and hit the drawer's **⬆ Adopt** banner.
- **SAY:**
- "A mod might live on ModHub, get newer builds on GitHub, and a mirror on Nexus. Silo pulls them
into one record so you actually see the latest version across all three — not whichever site
- "A mod might live on ModHub, get newer builds on GitHub. Silo pulls them
into one record so you actually see the latest version across both — not whichever site
updated last."
- "ModHub won't let anyone download for you, so you grab the zip and drop it in — and Silo notices
it's a newer build and offers to adopt it in one click. That's the whole update, done."
Expand Down
6 changes: 3 additions & 3 deletions docs/social/video-showcase-script.md
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,12 @@ changed files if you have one).
> "Here's the part I haven't seen anywhere else. Silo hashes your installed mod and checks it against
> the real build its source published. Verified means byte-for-byte identical. Modified tells you
> exactly which files differ. It's provenance, not antivirus — it proves *what* a mod is, and it
> works across ModHub, GitHub, and Nexus."
> works across ModHub and GitHub."

### 2:00–2:30 · One catalog, every source + updates *(V7, V8)*
`[SHOW]` **Browse**; search a mod; the merged ModHub/GitHub/Nexus record with the latest version. Then
`[SHOW]` **Browse**; search a mod; the merged ModHub/GitHub record with the latest version. Then
quick: drop a new zip in → the mod drawer's **Adopt** banner.
> "A mod might live on ModHub, get newer builds on GitHub, and mirror on Nexus. Silo folds them into
> "A mod might live on ModHub, get newer builds on GitHub. Silo folds them into
> one record so you see the actual latest — not whichever site updated last. And when you drop a new
> version in to update, Silo spots it and offers to adopt it in a click."

Expand Down
9 changes: 4 additions & 5 deletions landing/browse/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,9 @@
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Browse the FS25 mod catalog — Silo</title>
<script src="/nav.js"></script>
<meta name="description" content="Browse the Farming Simulator 25 mod catalog Silo has aggregated from ModHub, GitHub and Nexus — search, filter, and see which builds are integrity-verified. No account, no download, no tracking. Every mod links back to its original source." />
<meta name="description" content="Browse the Farming Simulator 25 mod catalog Silo has aggregated from ModHub and GitHub — search, filter, and see which builds are integrity-verified. No account, no download, no tracking. Every mod links back to its original source." />
<meta property="og:title" content="Browse the FS25 mod catalog — Silo" />
<meta property="og:description" content="Search thousands of Farming Simulator 25 mods aggregated from ModHub, GitHub and Nexus. No account, no tracking — every mod links back to its source." />
<meta property="og:description" content="Search thousands of Farming Simulator 25 mods aggregated from ModHub and GitHub. No account, no tracking — every mod links back to its source." />
<meta property="og:type" content="website" />
<meta property="og:url" content="https://silo.hllmr.com/browse/" />
<meta property="og:site_name" content="Silo" />
Expand Down Expand Up @@ -184,7 +184,6 @@
}
.src-chip.modhub { color: #b8791c; border-color: color-mix(in srgb, #e3b23c 40%, var(--border)); }
.src-chip.github { color: var(--text); }
.src-chip.nexus { color: #c56a2c; border-color: color-mix(in srgb, #d2691e 35%, var(--border)); }
.card .ver { margin-left: auto; font-family: var(--font-mono); font-size: 11px; color: var(--muted); }
.card .rating { color: var(--gold-700); font-size: 12px; font-weight: 700; }

Expand Down Expand Up @@ -249,7 +248,7 @@
<h2>Browse the FS25 mod catalog.</h2>
<p>
<span class="count" id="statLine">Loading the catalog…</span>
aggregated from ModHub, GitHub and Nexus into one searchable record each.
aggregated from ModHub and GitHub into one searchable record each.
Every mod links back to its original source — Silo indexes, it doesn't host.
</p>
</div>
Expand Down Expand Up @@ -317,7 +316,7 @@ <h3 id="sheetTitle">—</h3>
return (p || "https://silo-api.hllmr.com").replace(/\/+$/, "");
})();

var SRC_LABEL = { modhub: "ModHub", github: "GitHub", nexus: "Nexus", kingmods: "KingMods", silo: "Silo" };
var SRC_LABEL = { modhub: "ModHub", github: "GitHub", kingmods: "KingMods", silo: "Silo" };

// ── State ──
var state = { q: "", category: "", sort: "popular", tags: [], availableBy: null, offset: 0, limit: 30, total: 0, loading: false };
Expand Down
1 change: 0 additions & 1 deletion landing/c/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,6 @@
border: 1px solid var(--border); color: var(--muted); white-space: nowrap;
}
.src.modhub { color: #b8791c; border-color: color-mix(in srgb, #e3b23c 40%, var(--border)); }
.src.nexus { color: #c56a2c; border-color: color-mix(in srgb, #d2691e 35%, var(--border)); }
.scroll { max-height: 340px; overflow-y: auto; }

.actions { display: flex; flex-direction: column; gap: 10px; margin-top: 22px; }
Expand Down
20 changes: 9 additions & 11 deletions landing/help/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -286,7 +286,7 @@ <h3>When to check it</h3>

<section id="browsing-installing"><h2 id="browsing-installing-h">Browsing &amp; installing mods</h2>

<p>The <strong>Browse</strong> tab is where you find new mods without leaving Silo. It reads the SiloAPI catalog, a single index that merges the same mod across <strong>GitHub</strong>, <strong>ModHub</strong>, and <strong>Nexus Mods</strong>, so you see one card per mod instead of three scattered listings. The header shows how many mods and sources the catalog currently holds.</p>
<p>The <strong>Browse</strong> tab is where you find new mods without leaving Silo. It reads the SiloAPI catalog, a single index that merges the same mod across <strong>GitHub</strong> and <strong>ModHub</strong>, so you see one card per mod instead of scattered listings. The header shows how many mods and sources the catalog currently holds.</p>

<h3>Finding a mod</h3>
<ul>
Expand All @@ -298,15 +298,15 @@ <h3>Finding a mod</h3>
<p>Any mod you already have shows an <strong>In library</strong> badge, so you can tell at a glance what is new.</p>

<h3>Source buttons and versions</h3>
<p>Each card carries one button per source the mod lives on — <code>GH</code>, <code>MH</code>, <code>Nexus</code> — each labelled with <em>that source's own version</em>, because those versions drift apart. A download arrow (⬇) means Silo can install it for you; an up-right arrow (↗) means the button opens the source's page instead.</p>
<p>Each card carries one button per source the mod lives on — <code>GH</code>, <code>MH</code> — each labelled with <em>that source's own version</em>, because those versions drift apart. A download arrow (⬇) means Silo can install it for you; an up-right arrow (↗) means the button opens the source's page instead.</p>

<h3>Installing from GitHub, in-app</h3>
<p>GitHub release mods are directly installable. Click the GitHub button (or <strong>Install ⬇</strong> in the detail drawer) and Silo downloads the <code>.zip</code> straight into your mods folder, showing a live progress bar with the megabytes transferred. When it finishes you'll see <em>Installed …</em> and the library rescans automatically. You do not need to connect a GitHub account just to install — connecting is only for Star/Watch actions.</p>

<blockquote class="note">Installing only adds a new <code>.zip</code> to your mods folder; it never edits or removes anything you already have. To undo an install, remove that mod from your library like any other.</blockquote>

<h3>ModHub and Nexus are index-only</h3>
<p>Silo can list ModHub and Nexus mods but cannot download them for you — those CDNs require the download to go through their own website. Their buttons read <strong>Open page ↗</strong> and take you to the source. Grab the <code>.zip</code> there, drop it in your mods folder, and Silo files a new mod automatically on the next scan. If you're <em>updating</em> a mod you already manage — dropping the newer <code>.zip</code> over Silo's copy — Silo notices the newer build and offers to adopt it; see <a href="#updates">Applying an update</a>.</p>
<h3>ModHub is index-only</h3>
<p>Silo can list ModHub mods but cannot download them for you — its CDN requires the download to go through the ModHub website. The button reads <strong>Open page ↗</strong> and takes you to the source. Grab the <code>.zip</code> there, drop it in your mods folder, and Silo files a new mod automatically on the next scan. If you're <em>updating</em> a mod you already manage — dropping the newer <code>.zip</code> over Silo's copy — Silo notices the newer build and offers to adopt it; see <a href="#updates">Applying an update</a>.</p>

<h3>The detail drawer</h3>
<p>Click <strong>anywhere on a card</strong> to open a side drawer with the cover image, author, version, category, tech name, rating and downloads, and the full <em>Available from</em> source list. For a GitHub source it also shows live repo stats (stars, forks, watchers, issues) and, once you connect GitHub, Star and Watch buttons. Use <em>Read more →</em> to expand the full description.</p>
Expand All @@ -327,7 +327,7 @@ <h3>Running the library-wide check</h3>
<p>Two things happen behind the scenes:</p>

<ol>
<li>One request sends your whole library to the SiloAPI catalog, which answers with the latest version per mod across GitHub, ModHub, and Nexus.</li>
<li>One request sends your whole library to the SiloAPI catalog, which answers with the latest version per mod across GitHub and ModHub.</li>
<li>Any mods you have personally linked to a GitHub repo are then checked directly, and that result takes precedence for those mods — your chosen source wins.</li>
</ol>

Expand All @@ -343,10 +343,10 @@ <h3>Applying an update</h3>

<p>Where a downloadable asset exists, click <strong>Install</strong> in the Updates panel (or <strong>Download &amp; install</strong> in the drawer). Silo downloads the new archive, verifies it is a valid, complete <code>.zip</code>, backs up your current file, and only then writes the new version in place. Afterward it rescans so your library reflects the new version.</p>

<blockquote class="note">Safety: Silo will not overwrite your file until the download is validated and a backup is made. If the write fails partway, it restores the original from that backup, so you're never left with a broken mod. Mods indexed as open-page only (typical for ModHub and Nexus) have no direct-download asset — for those, update by drop-in, below.</blockquote>
<blockquote class="note">Safety: Silo will not overwrite your file until the download is validated and a backup is made. If the write fails partway, it restores the original from that backup, so you're never left with a broken mod. Mods indexed as open-page only (typical for ModHub) have no direct-download asset — for those, update by drop-in, below.</blockquote>

<h3>Updating a ModHub or Nexus mod (drop-in)</h3>
<p>ModHub and Nexus don't allow direct download, so you update those the manual way: on the source page, download the new <code>.zip</code> and save it into your <code>mods/</code> folder, replacing the file that's there. Silo sees that the file no longer matches its managed copy and, rather than silently trusting or discarding it, surfaces it as something to reconcile.</p>
<h3>Updating a ModHub mod (drop-in)</h3>
<p>ModHub doesn't allow direct download, so you update those the manual way: on the mod's page, download the new <code>.zip</code> and save it into your <code>mods/</code> folder, replacing the file that's there. Silo sees that the file no longer matches its managed copy and, rather than silently trusting or discarding it, surfaces it as something to reconcile.</p>
<p>Open that mod and the drawer leads with a banner: <em>"A newer build is in your mods folder — v1.0.3.0. Silo manages v1.0.2.0."</em> with two buttons:</p>
<ul>
<li><strong>⬆ Adopt v1.0.3.0</strong> — promotes the build you dropped in to be Silo's managed version. The old version is tucked into <code>backups/</code>, and if the mod is active the new build is re-projected. The library now shows the new version; you're done.</li>
Expand Down Expand Up @@ -616,8 +616,6 @@ <h3>Library layout &amp; maintenance</h3>
<h3>Connecting GitHub</h3>
<p>Under <strong>GitHub account</strong>, press <strong>Connect GitHub</strong>. A browser opens to <strong>github.com/login/device</strong>; enter the code Silo shows and authorize. Connecting gives faster update checks (5,000 requests/hour) and access to private repos, and it enables in-app GitHub installs from the Browse tab. By default the connection is read-only; use <strong>Enable actions</strong> to grant the <code>public_repo</code> scope so <em>Star</em> and <em>Watch</em> land on your account. You can <strong>Disconnect</strong> anytime, or use a Personal Access Token instead via the token option.</p>

<h3>Nexus Mods</h3>
<p>Silo does <strong>not</strong> ask for a Nexus account or API key. Nexus mods appear in the Browse catalog as an <strong>index only</strong>: Silo links back to each mod's Nexus page (<strong>Open page ↗</strong>) so you download from Nexus directly. There's nothing to connect and no key stored, and adult / age-restricted content is excluded from the index. This keeps Silo within Nexus's API terms while still letting you find and open their mods from one place.</p>

<p>The panel footer shows your installed Silo version.</p>
</section>
Expand Down Expand Up @@ -651,7 +649,7 @@ <h3>Why does a mod show "Unverified"?</h3>
<p>The <strong>Integrity</strong> check in a mod's detail drawer compares your file against the trusted build SiloAPI hashed from its source. <strong>Unverified</strong> means there's no trusted build to compare against yet — usually because that mod isn't in the catalog. It is not a warning about the mod. Folder mods can't be verified at all (there's no archive to hash). This is a provenance check, not a virus scan.</p>

<h3>Connecting a GitHub account</h3>
<p>Connecting GitHub is optional and lives in <strong>Settings → GitHub account → Connect GitHub</strong>: a browser opens to <code>github.com/login/device</code>; type in the code shown. This raises update-check limits to 5,000/hr, enables in-app installs and Star/Watch on mod pages, and lets you publish <a href="#collections">collections</a>. The token stays on your machine, and a <strong>Disconnect</strong> button removes it at any time. There is no Nexus account to connect — Nexus is <a href="#settings-accounts">index-only</a>.</p>
<p>Connecting GitHub is optional and lives in <strong>Settings → GitHub account → Connect GitHub</strong>: a browser opens to <code>github.com/login/device</code>; type in the code shown. This raises update-check limits to 5,000/hr, enables in-app installs and Star/Watch on mod pages, and lets you publish <a href="#collections">collections</a>. The token stays on your machine, and a <strong>Disconnect</strong> button removes it at any time.</p>
</section>
</main>
</div>
Expand Down
Loading
Loading