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
10 changes: 10 additions & 0 deletions site/src/data/site-content/privacy-types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
/** The privacy page's text. All of it is the product's to write: what the
* product collects is a fact about the product, and a policy copied from a
* template is a claim nobody checked. */
export interface PrivacyCopy {
heading: string;
/** One or two sentences under the heading. HTML allowed. */
leadHtml: string;
/** The policy itself, as HTML: `<h2>` sections, paragraphs and lists. */
bodyHtml: string;
}
34 changes: 34 additions & 0 deletions site/src/data/site-content/privacy.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
import type { PrivacyCopy } from './privacy-types';

// The privacy page (/privacy/). Every claim here was checked against the code
// on 2026-10-04: the desktop app's history limit and settings, its GitHub
// release check, the CLI's lack of outbound calls, and the site's analytics.
// Re-check before changing what any of them do.
export const privacyCopy: PrivacyCopy = {
heading: 'Privacy',
leadHtml:
'NetsCLI has no accounts, no advertising and no telemetry. Nothing you scan is sent to the developer or to anyone else.',
bodyHtml: `
<h2>What stays on your computer</h2>
<p>NetsCLI reads information about your local network to do its job. That includes IP addresses, MAC addresses and the maker they belong to, hostnames, open ports, and the greetings services send back. It is shown to you and is not uploaded anywhere.</p>
<p>Some of it is kept on your computer.</p>
<ul>
<li>The desktop app can keep your 20 most recent runs, with their results, so you can reopen them. Clearing history removes them.</li>
<li>The desktop app and terminal UI remember their settings.</li>
<li>Exports and packet captures are written only where you choose to save them.</li>
</ul>

<h2>What reaches the internet</h2>
<ul>
<li><strong>Scans go where you point them.</strong> A port scan, ping, trace or DNS lookup contacts the hosts and DNS servers you ask it to, the same as any network tool.</li>
<li><strong>The desktop app checks for new releases.</strong> It asks GitHub's API for the latest release, which shares your IP address with GitHub. You can turn the check off in Preferences. If you choose to install an update, it is downloaded from GitHub Releases.</li>
<li><strong>The command line, terminal UI and MCP server</strong> make no connections of their own beyond the operations you run.</li>
</ul>

<h2>This website</h2>
<p>This site is hosted on GitHub Pages and uses Cloudflare Web Analytics, which counts page views without cookies and without identifying visitors. The landing page asks GitHub and crates.io for the star and download counts it shows, so your browser contacts both.</p>

<h2>Contact</h2>
<p>Questions about privacy can go to the <a href="https://github.com/fstubner/netscli/issues">issue tracker</a>.</p>
`,
};
67 changes: 10 additions & 57 deletions site/src/pages/privacy.astro
Original file line number Diff line number Diff line change
Expand Up @@ -3,77 +3,30 @@ import Page from '../layouts/Page.astro';
import Nav from '../components/Nav.astro';
import Footer from '../components/Footer.astro';
import { site } from '../data/site';
import { privacyCopy } from '../data/site-content/privacy';

const { meta, social } = site;
const { meta } = site;

/* Its own page rather than a docs page. It is a policy, not documentation;
app stores link to it, so the address has to outlive any reshuffle of the
docs; and it has to exist on a site with the docs switched off. */
docs; and it has to exist on a site with the docs switched off. The words
are content (src/data/site-content/privacy.ts); this file is only the
page around them. */
---

<Page
title={`Privacy | ${meta.siteName}`}
description={`What ${meta.siteName} collects, what stays on your computer, and the few things that reach the internet.`}
title={`${privacyCopy.heading} | ${meta.siteName}`}
description={`What ${meta.siteName} collects, what stays on your computer, and what reaches the internet.`}
canonicalPath="/privacy/"
includeFaqSchema={false}
>
<Nav />
<main id="main" class="policy-shell">
<header class="policy-hero">
<h1>Privacy</h1>
<p>
{meta.siteName} has no accounts, no advertising and no telemetry. Nothing you scan is sent
to the developer or to anyone else.
</p>
<h1>{privacyCopy.heading}</h1>
<p set:html={privacyCopy.leadHtml} />
</header>

<div class="policy-body">
<h2>What stays on your computer</h2>
<p>
{meta.siteName} reads information about your local network to do its job. That includes IP
addresses, MAC addresses and the maker they belong to, hostnames, open ports, and the
greetings services send back. It is shown to you and is not uploaded anywhere.
</p>
<p>Some of it is kept on your computer.</p>
<ul>
<li>
The desktop app can keep your 20 most recent runs, with their results, so you can reopen
them. Clearing history removes them.
</li>
<li>The desktop app and terminal UI remember their settings.</li>
<li>Exports and packet captures are written only where you choose to save them.</li>
</ul>

<h2>What reaches the internet</h2>
<ul>
<li>
<strong>Scans go where you point them.</strong> A port scan, ping, trace or DNS lookup
contacts the hosts and DNS servers you ask it to, the same as any network tool.
</li>
<li>
<strong>The desktop app checks for new releases.</strong> It asks GitHub's API for the
latest release, which shares your IP address with GitHub. You can turn the check off in
Preferences. If you choose to install an update, it is downloaded from GitHub Releases.
</li>
<li>
<strong>The command line, terminal UI and MCP server</strong> make no connections of their
own beyond the operations you run.
</li>
</ul>

<h2>This website</h2>
<p>
This site is hosted on GitHub Pages and uses Cloudflare Web Analytics, which counts page
views without cookies and without identifying visitors. The landing page asks GitHub and
crates.io for the star and download counts it shows, so your browser contacts both.
</p>

<h2>Contact</h2>
<p>
Questions about privacy can go to the
<a href={`https://github.com/${social.repo}/issues`}>issue tracker</a>.
</p>
</div>
<div class="policy-body" set:html={privacyCopy.bodyHtml} />
</main>
<Footer />
</Page>
Expand Down
Loading