diff --git a/CLAUDE.md b/CLAUDE.md index f00c566..388c1a2 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -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); diff --git a/docs/social/VIDEO_PLAN.md b/docs/social/VIDEO_PLAN.md index 94dd38e..44ffbc8 100644 --- a/docs/social/VIDEO_PLAN.md +++ b/docs/social/VIDEO_PLAN.md @@ -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). | @@ -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. diff --git a/docs/social/demo-video-script.md b/docs/social/demo-video-script.md index e50afd7..1978262 100644 --- a/docs/social/demo-video-script.md +++ b/docs/social/demo-video-script.md @@ -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." diff --git a/docs/social/video-showcase-script.md b/docs/social/video-showcase-script.md index 7177349..d274a98 100644 --- a/docs/social/video-showcase-script.md +++ b/docs/social/video-showcase-script.md @@ -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." diff --git a/landing/browse/index.html b/landing/browse/index.html index a1f12b0..e7b4fa1 100644 --- a/landing/browse/index.html +++ b/landing/browse/index.html @@ -5,9 +5,9 @@ Browse the FS25 mod catalog — Silo - + - + @@ -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; } @@ -249,7 +248,7 @@

Browse the FS25 mod catalog.

Loading the catalog… - 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.

@@ -317,7 +316,7 @@

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 }; diff --git a/landing/c/index.html b/landing/c/index.html index 8f08bed..fce9be4 100644 --- a/landing/c/index.html +++ b/landing/c/index.html @@ -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; } diff --git a/landing/help/index.html b/landing/help/index.html index 8547d47..f6396b1 100644 --- a/landing/help/index.html +++ b/landing/help/index.html @@ -286,7 +286,7 @@

When to check it

Browsing & installing mods

-

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

+

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

Finding a mod

@@ -651,7 +649,7 @@

Why does a mod show "Unverified"?

The Integrity check in a mod's detail drawer compares your file against the trusted build SiloAPI hashed from its source. Unverified 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.

Connecting a GitHub account

-

Connecting GitHub is optional and lives in Settings → GitHub account → Connect GitHub: a browser opens to github.com/login/device; 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 collections. The token stays on your machine, and a Disconnect button removes it at any time. There is no Nexus account to connect — Nexus is index-only.

+

Connecting GitHub is optional and lives in Settings → GitHub account → Connect GitHub: a browser opens to github.com/login/device; 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 collections. The token stays on your machine, and a Disconnect button removes it at any time.

diff --git a/landing/index.html b/landing/index.html index 2a3a1ee..293d24f 100644 --- a/landing/index.html +++ b/landing/index.html @@ -5,9 +5,9 @@ Silo — the Farming Simulator 25 mod manager - + - + @@ -18,7 +18,7 @@ - + @@ -325,7 +325,7 @@ "applicationCategory": "UtilitiesApplication", "applicationSubCategory": "Mod Manager", "operatingSystem": "Windows, macOS, Linux", - "description": "Silo is a free, open-source mod manager for Farming Simulator 25. It organizes your mods, reads the game log to name the mod that crashed you, detects conflicts, aggregates ModHub, GitHub and Nexus into one canonical cross-source catalog, and verifies an installed mod against the trusted build its source published. Its changes to your mod folder are designed to be reversible.", + "description": "Silo is a free, open-source mod manager for Farming Simulator 25. It organizes your mods, reads the game log to name the mod that crashed you, detects conflicts, aggregates ModHub and GitHub into one canonical cross-source catalog, and verifies an installed mod against the trusted build its source published. Its changes to your mod folder are designed to be reversible.", "downloadUrl": "https://github.com/HLLMR/silo/releases", "softwareVersion": "beta", "releaseNotes": "https://github.com/HLLMR/silo/releases", @@ -337,7 +337,7 @@ "featureList": [ "Crash and log triage — names the mod at fault from log.txt", "Conflict detection across maps, filltypes, vehicle types and scripts", - "Cross-source catalog aggregating ModHub, GitHub and Nexus", + "Cross-source catalog aggregating ModHub and GitHub", "Mod integrity verification against canonical hashed builds (provenance, not antivirus)", "Guided bisection to isolate a bad mod", "Loadouts projected into the game folder via links; zips filed into a reversible local archive", @@ -355,10 +355,10 @@ "@type": "FAQPage", "mainEntity": [ { "@type": "Question", "name": "Is Silo free?", "acceptedAnswer": { "@type": "Answer", "text": "Yes — Silo is free and open source. There's no account to create, no paid tier, and no telemetry. The desktop app's every line is on GitHub to audit, fork or build yourself; the catalog it talks to is a separate hosted service." } }, - { "@type": "Question", "name": "What does Silo actually do?", "acceptedAnswer": { "@type": "Answer", "text": "It manages your Farming Simulator 25 mods. Silo organizes the library and reads log.txt to name the mod that crashed you. It flags conflicts such as duplicate maps and colliding filltypes, vehicle types or scripts. And it pulls ModHub, GitHub and Nexus into one catalog that shows the latest version found across all three." } }, + { "@type": "Question", "name": "What does Silo actually do?", "acceptedAnswer": { "@type": "Answer", "text": "It manages your Farming Simulator 25 mods. Silo organizes the library and reads log.txt to name the mod that crashed you. It flags conflicts such as duplicate maps and colliding filltypes, vehicle types or scripts. And it pulls ModHub and GitHub into one catalog that shows the latest version found across both." } }, { "@type": "Question", "name": "Does Silo move or modify my mod files?", "acceptedAnswer": { "@type": "Answer", "text": "It moves them, but reversibly. Silo files your ZIPs into a local archive, then links only your active set into the game's mods folder at launch. Every move is recorded so it can be undone, and it backs up before it overwrites anything or edits a savegame." } }, { "@type": "Question", "name": "Which platforms does Silo support?", "acceptedAnswer": { "@type": "Answer", "text": "Windows is the tested, supported platform today. macOS (Intel and Apple Silicon) and Linux builds exist but are experimental and largely untested — we're actively seeking testers on those platforms. It's one native app with per-OS game discovery and no runtime to install." } }, - { "@type": "Question", "name": "Does Silo work with ModHub, GitHub and Nexus?", "acceptedAnswer": { "@type": "Answer", "text": "Yes. Silo keeps one record per mod that pulls all three together, so you see the latest version found across them. You can act on each through your own accounts: star on GitHub, endorse on Nexus, rate on ModHub. Silo just opens the door; your credentials stay on your machine." } }, + { "@type": "Question", "name": "Does Silo work with ModHub and GitHub?", "acceptedAnswer": { "@type": "Answer", "text": "Yes. Silo keeps one record per mod that pulls both together, so you see the latest version found across them. You can act on each through your own accounts: star on GitHub, rate on ModHub. Silo just opens the door; your credentials stay on your machine." } }, { "@type": "Question", "name": "Does Silo collect any data about me?", "acceptedAnswer": { "@type": "Answer", "text": "No telemetry, no account, no analytics. Catalog search sends your search terms, and update and integrity checks send the mod identifiers and versions needed to answer — nothing more. Silo never uploads your saves, mod archives, notes or personal files; your library and actions stay on your machine and in your own source accounts." } } ] } @@ -374,7 +374,7 @@

Farming Simulator 25 · mod manager · free & open source

The mod manager FS25 should have shipped with.

-

Organize hundreds of mods, and Silo reads the game log to name the mod that actually crashed you, catches conflicts before you launch, verifies a mod is the real build, and pulls ModHub, GitHub and Nexus into one catalog. Its changes to your mod folder are designed to be reversible.

+

Organize hundreds of mods, and Silo reads the game log to name the mod that actually crashed you, catches conflicts before you launch, verifies a mod is the real build, and pulls ModHub and GitHub into one catalog. Its changes to your mod folder are designed to be reversible.

Download the beta View the source → @@ -405,7 +405,7 @@

FS25 hands you a flat folder and a shrug.

01Mystery crashes.

The log scrolls a wall of red and names nothing. You disable mods at random and pray.

02Silent conflicts.

Two mods claim the same map, filltype or vehicle type. One quietly wins, or your save corrupts.

03Version roulette.

ModHub says outdated, GitHub shipped days ago, and you can't tell which number is real.

-
04Scattered sources.

A mod lives on ModHub, its dev on GitHub, a mirror on Nexus. No one place tells the whole story.

+
04Scattered sources.

A mod lives on ModHub, its dev on GitHub. No one place tells the whole story.

@@ -431,12 +431,12 @@

Conflict detection

Cross-source catalog

-

One record per mod that pulls ModHub, GitHub and Nexus together, so you see the latest version found across them instead of whichever source happened to update last.

+

One record per mod that pulls ModHub and GitHub together, so you see the latest version found across them instead of whichever source happened to update last.

Integrity check

-

Silo hashes an installed mod and checks it against the trusted build its source published — a clean match, or the exact files that were changed. Provenance, not antivirus: it confirms what a mod is, it doesn't guess intent. It works across ModHub, GitHub and Nexus — a cross-source integrity check that's rare among mod tools.

+

Silo hashes an installed mod and checks it against the trusted build its source published — a clean match, or the exact files that were changed. Provenance, not antivirus: it confirms what a mod is, it doesn't guess intent. It works across ModHub and GitHub — a cross-source integrity check that's rare among mod tools.

@@ -457,7 +457,7 @@

Filltype bridge

Act on every source, from one drawer

-

Star the repo on GitHub, endorse it on Nexus, jump to the ModHub page to rate it, all through your own accounts. Silo just opens the door. Your credentials and data stay yours.

+

Star the repo on GitHub, jump to the ModHub page to rate it, all through your own accounts. Silo just opens the door. Your credentials and data stay yours.

Try it
@@ -473,7 +473,7 @@

One app for the whole job.

Real screens — click any to enlarge.

-
One catalog · every source
+
One catalog · every source
Verify it's the real build
Conflicts caught before launch
Crash triage names the culprit
@@ -534,7 +534,7 @@

Straight answers.

What does Silo actually do? -

It manages your Farming Simulator 25 mods. Silo organizes the library and reads log.txt to name the mod that crashed you. It flags conflicts such as duplicate maps and colliding filltypes, vehicle types or scripts. And it pulls ModHub, GitHub and Nexus into one catalog that shows the latest version found across all three.

+

It manages your Farming Simulator 25 mods. Silo organizes the library and reads log.txt to name the mod that crashed you. It flags conflicts such as duplicate maps and colliding filltypes, vehicle types or scripts. And it pulls ModHub and GitHub into one catalog that shows the latest version found across both.

Does Silo move or modify my mod files? @@ -545,8 +545,8 @@

Straight answers.

Windows is the tested, supported platform today. macOS (Intel & Apple Silicon) and Linux builds exist but are experimental and largely untested — we're actively seeking testers on those platforms. It's one native app with per-OS game discovery and no runtime to install.

- Does Silo work with ModHub, GitHub and Nexus? -

Yes. Silo keeps one record per mod that pulls all three together, so you see the latest version found across them. You can act on each through your own accounts: star on GitHub, endorse on Nexus, rate on ModHub. Silo just opens the door; your credentials stay on your machine.

+ Does Silo work with ModHub and GitHub? +

Yes. Silo keeps one record per mod that pulls both together, so you see the latest version found across them. You can act on each through your own accounts: star on GitHub, rate on ModHub. Silo just opens the door; your credentials stay on your machine.

Does Silo collect any data about me? diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 0381d2b..1140b7f 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -429,12 +429,6 @@ async fn gh_watch( .map_err(|e| e.to_string())? } -// ── Nexus source card (keyless reads + endorse via the user's own API key) ── - -// Nexus is index-only (per its AUP): the silo-api catalog provides Nexus metadata and Silo -// links back to the mod page. No live Nexus API calls and no personal API keys live in the -// app anymore — the previous key-based connect/endorse commands were removed for compliance. - #[tauri::command] async fn download_update( _app: tauri::AppHandle, diff --git a/src-tauri/src/siloapi.rs b/src-tauri/src/siloapi.rs index 23669a9..d2e938b 100644 --- a/src-tauri/src/siloapi.rs +++ b/src-tauri/src/siloapi.rs @@ -139,14 +139,12 @@ pub struct ModSource { #[serde(default)] pub download_url: Option, // Raw per-source popularity signals — a source only fills what it natively reports - // (Nexus: downloads+endorsements, GitHub: downloads+stars, ModHub: rating+count). + // (GitHub: downloads+stars, ModHub: rating+count). #[serde(default)] pub downloads: Option, #[serde(default)] pub rating: Option, #[serde(default)] - pub endorsements: Option, - #[serde(default)] pub stars: Option, } diff --git a/src/lib/api.ts b/src/lib/api.ts index d7ac41f..3353edf 100644 --- a/src/lib/api.ts +++ b/src/lib/api.ts @@ -37,7 +37,6 @@ import type { CatalogModDetail, CategoryCount, LogReport, - // (Nexus status/stats types removed with the API-key flow) BisectStep, BindingReport, MpModRef, @@ -319,9 +318,6 @@ export function ghWatch(owner: string, repo: string, on: boolean): Promise("gh_watch", { owner, repo, on }); } -// Nexus is index-only: the catalog (silo-api) provides its metadata and Silo links back to -// the mod page for downloads. No live Nexus API calls, no personal API keys — per Nexus's AUP. - /** Download a release .zip and install it in place (backs up the old file). */ export function downloadUpdate(path: string, assetUrl: string): Promise { return invoke("download_update", { path, assetUrl }); diff --git a/src/lib/browse.ts b/src/lib/browse.ts index 1c1b533..b17baab 100644 --- a/src/lib/browse.ts +++ b/src/lib/browse.ts @@ -5,7 +5,7 @@ import { catalogImage } from "./api"; // Source-CDN hosts that gate hotlinking behind a Referer a browser can't set — // these must go through the Rust proxy (which adds the referer and disk-caches). -const REFERER_GATED = /(?:giants-software\.com|farming-simulator\.com|nexusmods\.com|githubusercontent\.com|github\.com)/i; +const REFERER_GATED = /(?:giants-software\.com|farming-simulator\.com|githubusercontent\.com|github\.com)/i; // Image loading. SiloAPI now caches most catalog images server-side and hands back an // `imageUrl` on its own host (referer-free, HTTP-cacheable) — those load DIRECTLY as a @@ -27,7 +27,6 @@ export function loadCatalogImage(url: string): Promise { export const SOURCE_LABEL: Record = { github: "GitHub", modhub: "ModHub", - nexus: "Nexus Mods", kingmods: "KingMods", }; @@ -35,7 +34,6 @@ export const SOURCE_LABEL: Record = { export const SOURCE_SHORT: Record = { github: "GH", modhub: "MH", - nexus: "Nexus", kingmods: "KM", }; @@ -46,8 +44,6 @@ export const label = (s: string): string => SOURCE_LABEL[s] ?? s; export function gatedReason(source: string): string { if (source === "modhub") return "ModHub blocks downloads from outside its website, so Silo can't install this for you. Opens the mod page."; - if (source === "nexus") - return "Nexus requires downloads to go through its own site. Opens the mod page."; return "This source doesn't allow direct downloads. Opens the mod page."; } @@ -69,12 +65,6 @@ export function parseRepo(url: string): { owner: string; repo: string } | null { return { owner: m[1], repo: m[2].replace(/\.git$/i, "") }; } -/** Pull the numeric Nexus mod id out of a source URL (…/mods/12345). */ -export function parseNexusId(url: string): number | null { - const m = url.match(/\/mods\/(\d+)/); - return m ? Number(m[1]) : null; -} - /** Whether a "Read more" affordance is worth showing: an ingested full body, or a * summary long enough that a dedicated modal helps. */ export function canExpand(d: CatalogModDetail): boolean { diff --git a/src/lib/components/BrowseDrawer.svelte b/src/lib/components/BrowseDrawer.svelte index 066fe13..1f51fb9 100644 --- a/src/lib/components/BrowseDrawer.svelte +++ b/src/lib/components/BrowseDrawer.svelte @@ -2,9 +2,8 @@ import type { CatalogModDetail, ModSourceOption } from "../types"; import { resizable } from "../resize"; import GithubCard from "./GithubCard.svelte"; - import NexusCard from "./NexusCard.svelte"; import ModHubCard from "./ModHubCard.svelte"; - import { label, gatedReason, fmtCount, parseRepo, parseNexusId, canExpand, loadCatalogImage } from "../browse"; + import { label, gatedReason, fmtCount, parseRepo, canExpand, loadCatalogImage } from "../browse"; let { detail, @@ -142,9 +141,8 @@ {/if} - {#if d.sources.some((s) => (s.source === "github" && parseRepo(s.sourceUrl)) || (s.source === "nexus" && parseNexusId(s.sourceUrl)) || s.source === "modhub")} + {#if d.sources.some((s) => (s.source === "github" && parseRepo(s.sourceUrl)) || s.source === "modhub")} {@const ghSrcs = d.sources.filter((s) => s.source === "github" && parseRepo(s.sourceUrl))} - {@const nxSrcs = d.sources.filter((s) => s.source === "nexus" && parseNexusId(s.sourceUrl))} {@const mhSrcs = d.sources.filter((s) => s.source === "modhub")}
Interact
@@ -160,16 +158,6 @@ /> {/if} {/each} - {#each nxSrcs as s (s.sourceUrl)} - {#if parseNexusId(s.sourceUrl) != null} - - {/if} - {/each} {#each mhSrcs as s (s.sourceUrl)} (null); /** Open the description modal with the best body the catalog has: the ingested full text - * if present, else the short summary. (Silo makes no live Nexus call — the index provides - * Nexus metadata; the deep-link still gets the user the full page.) */ + * if present, else the short summary. */ function openDesc(d: CatalogModDetail) { const summary = d.description ?? ""; if (d.descriptionFull) { diff --git a/src/lib/components/NexusCard.svelte b/src/lib/components/NexusCard.svelte deleted file mode 100644 index 3f92861..0000000 --- a/src/lib/components/NexusCard.svelte +++ /dev/null @@ -1,95 +0,0 @@ - - -
-
- Nexus Mods - {#if version}v{version.replace(/^v/i, "")}{/if} -
- - {#if downloads != null || endorsements != null} -
- {#if endorsements != null}👍 {fmt(endorsements)}{/if} - {#if downloads != null}⬇ {fmt(downloads)}{/if} -
- {/if} - -
- -
-
- - diff --git a/src/lib/types.ts b/src/lib/types.ts index 27dad9d..37aaf0e 100644 --- a/src/lib/types.ts +++ b/src/lib/types.ts @@ -232,7 +232,7 @@ export interface PollResult { // ── SiloAPI (mod browser) ── /** One place a mod can be got from. The API decides `installable` — ModHub's CDN - * blocks direct downloads and Nexus gates them, so those open their site instead. */ + * blocks direct downloads, so those open their site instead. */ export interface ModSourceOption { source: string; sourceUrl: string; @@ -243,7 +243,6 @@ export interface ModSourceOption { // only fills what it natively reports; null until the server backfill lands. downloads?: number | null; rating?: number | null; - endorsements?: number | null; stars?: number | null; } @@ -388,7 +387,7 @@ export interface ImportPlan { author: string | null; /** Silo can download these directly (a GitHub-style installable source). */ willInstall: ImportPlanRow[]; - /** In the catalog but download-gated (ModHub/Nexus) — get them from their page. */ + /** In the catalog but download-gated (ModHub) — get them from their page. */ openPage: ImportPlanRow[]; /** Already in your library at a matching (or unpinned) version. */ alreadyPresent: ImportPlanRow[];