Skip to content

Commit f4ce9bc

Browse files
committed
Landing copy: no em dashes, inline colons or semicolons
1 parent c9348c5 commit f4ce9bc

6 files changed

Lines changed: 23 additions & 23 deletions

File tree

‎site/src/data/site-content/changelog.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,13 +40,13 @@ export const releaseSummaries: Record<string, string> = {
4040
'v0.2.4':
4141
'v0.2.3 built the GUI installers but never attached them. Publishing is repaired here, along with the AUR deploy action that was blocking Linux packages.',
4242
'v0.2.3':
43-
'GUI installer builds move again once the Tauri JavaScript and Rust versions agree, and the AUR packaging handoff is fixed. CLI packages were already usable from v0.2.2; the GUI artifacts needed these pipeline fixes.',
43+
'GUI installer builds move again once the Tauri JavaScript and Rust versions agree, and the AUR packaging handoff is fixed. CLI packages were already usable from v0.2.2, and the GUI artifacts needed these pipeline fixes.',
4444
'v0.2.2':
4545
'This is a release-pipeline recovery build. It refreshes Cargo.lock so locked release builds can run reproducibly after dependency bumps, giving package-manager users a working replacement for the failed v0.2.1 artifacts.',
4646
'v0.2.1':
4747
'Desktop installers and signed release assets mean you no longer need a Rust toolchain to install. Adds concurrency tuning for networks that struggle with large parallel scans.',
4848
'v0.2.0':
49-
'Turns the initial scanner into something distributable. mDNS discovery and typed core errors on the product side; shell completions, man pages, package-manager templates and signed artifacts on the shipping side.',
49+
'Turns the initial scanner into something distributable. mDNS discovery and typed core errors on the product side, and shell completions, man pages, package-manager templates and signed artifacts on the shipping side.',
5050
'v0.1.1':
5151
'Cleans up the first public version with crate documentation, security notes and a structured changelog, plus the release workflow fixes that make binaries and pcap variants reproducible.',
5252
'v0.1.0':

‎site/src/data/site-content/faq.ts‎

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ export const faq: FaqItem[] = [
2929
// search engine and answer engine reads. The visible `aHtml` below was
3030
// already a template literal and rendered correctly, which is why the
3131
// page looked fine.
32-
a: `Install the netscli package for the CLI, terminal UI, and MCP server. On Windows, run: winget install netscli (the full identifier fstubner.netscli also works). On Linux or macOS, run: ${INSTALL_SH_COMMAND}. For the desktop app, run winget install netscli-gui on Windows or brew install --cask fstubner/tap/netscli-gui on macOS, or download it from GitHub releases. Linux has a .deb and an AppImage. With Rust installed you can also run: cargo install netscli.`,
32+
a: `Install the netscli package for the CLI, terminal UI, and MCP server. On Windows, run winget install netscli (the full identifier fstubner.netscli also works). On Linux or macOS, run ${INSTALL_SH_COMMAND}. For the desktop app, run winget install netscli-gui on Windows or brew install --cask fstubner/tap/netscli-gui on macOS, or download it from GitHub releases. Linux has a .deb and an AppImage. With Rust installed you can also run cargo install netscli.`,
3333
aHtml: `
3434
<p>Install the <code>netscli</code> package for the CLI, terminal UI, and MCP server:</p>
3535
<div class="faq-command-list" aria-label="Install commands">
@@ -48,9 +48,9 @@ export const faq: FaqItem[] = [
4848
{
4949
group: 'Interfaces and integrations',
5050
q: 'Can I use NetsCLI with Claude Code, Cursor, or another AI agent?',
51-
a: 'Yes. Running `netscli serve` starts a Model Context Protocol (MCP) server over stdio. It exposes structured local-network tools for host discovery, port scanning, ping, DNS, ARP, host inspection, network sweep, interface listing, and mDNS discovery. Packet-capture builds can also expose capture tools. Packet capture uses a job-style flow for long-running work: start the capture, poll status, then fetch the result.',
51+
a: 'Yes. Running `netscli serve` starts a Model Context Protocol (MCP) server over stdio. It exposes structured local-network tools for host discovery, port scanning, ping, DNS, ARP, host inspection, network sweep, interface listing, and mDNS discovery. Packet-capture builds can also expose capture tools. Packet capture uses a job-style flow for long-running work. Start the capture, poll status, then fetch the result.',
5252
aHtml:
53-
'Yes. Running <code>netscli serve</code> starts a Model Context Protocol (MCP) server over stdio. It exposes structured local-network tools for host discovery, port scanning, ping, DNS, ARP, host inspection, network sweep, interface listing, and mDNS discovery. Packet-capture builds can also expose capture tools. Packet capture uses a job-style flow for long-running work: start the capture, poll status, then fetch the result.',
53+
'Yes. Running <code>netscli serve</code> starts a Model Context Protocol (MCP) server over stdio. It exposes structured local-network tools for host discovery, port scanning, ping, DNS, ARP, host inspection, network sweep, interface listing, and mDNS discovery. Packet-capture builds can also expose capture tools. Packet capture uses a job-style flow for long-running work. Start the capture, poll status, then fetch the result.',
5454
},
5555
{
5656
group: 'Install and updates',
@@ -69,9 +69,9 @@ export const faq: FaqItem[] = [
6969
{
7070
group: 'Limits and dependencies',
7171
q: 'Does NetsCLI require libpcap or other system dependencies?',
72-
a: 'Not for the normal scan, discovery, DNS, ARP, ping, trace, or interface workflows. Packet capture is the exception: it requires libpcap on Linux/macOS or Npcap on Windows at runtime, and only works in the separate packet-capture downloads.',
72+
a: 'Not for the normal scan, discovery, DNS, ARP, ping, trace, or interface workflows. Packet capture is the exception. It requires libpcap on Linux/macOS or Npcap on Windows at runtime, and only works in the separate packet-capture downloads.',
7373
aHtml:
74-
'Not for the normal scan, discovery, DNS, ARP, ping, trace, or interface workflows. Packet capture is the exception: it requires libpcap on Linux/macOS or Npcap on Windows at runtime, and only works in the separate packet-capture downloads.',
74+
'Not for the normal scan, discovery, DNS, ARP, ping, trace, or interface workflows. Packet capture is the exception. It requires libpcap on Linux/macOS or Npcap on Windows at runtime, and only works in the separate packet-capture downloads.',
7575
},
7676
{
7777
group: 'Network workflows',
@@ -88,9 +88,9 @@ export const faq: FaqItem[] = [
8888
// folders and remote shutdown, and a comparison that omitted the thing a
8989
// reader can see on that page in ten seconds would discredit the rest of
9090
// the answer.
91-
a: 'NetsCLI overlaps with those tools for common LAN discovery tasks: finding live hosts, scanning TCP ports, resolving hostnames, and showing MAC vendors from the local ARP cache. It is not a drop-in clone of either. Advanced IP Scanner is Windows-only and closed-source freeware. NetsCLI runs on Windows, macOS, and Linux, is MIT-licensed, and offers the same scans from a desktop app, a terminal UI, a CLI, and an MCP server, with JSON, YAML, CSV and Markdown output. Angry IP Scanner is also open source and cross-platform, and ships its own command-line interface. What NetsCLI does not do is remote administration: Advanced IP Scanner can open shared folders, control machines over RDP or Radmin, and switch them off remotely, and NetsCLI has no equivalent.',
91+
a: 'NetsCLI overlaps with those tools for common LAN discovery tasks, such as finding live hosts, scanning TCP ports, resolving hostnames, and showing MAC vendors from the local ARP cache. It is not a drop-in clone of either. Advanced IP Scanner is Windows-only and closed-source freeware. NetsCLI runs on Windows, macOS, and Linux, is MIT-licensed, and offers the same scans from a desktop app, a terminal UI, a CLI, and an MCP server, with JSON, YAML, CSV and Markdown output. Angry IP Scanner is also open source and cross-platform, and ships its own command-line interface. NetsCLI does not do remote administration. Advanced IP Scanner can open shared folders, control machines over RDP or Radmin, and switch them off remotely, and NetsCLI has no equivalent.',
9292
aHtml:
93-
'NetsCLI overlaps with those tools for common LAN discovery tasks: finding live hosts, scanning TCP ports, resolving hostnames, and showing MAC vendors from the local ARP cache. It is not a drop-in clone of either. Advanced IP Scanner is Windows-only and closed-source freeware. NetsCLI runs on Windows, macOS, and Linux, is MIT-licensed, and offers the same scans from a <a href="#surfaces">desktop app, terminal UI, CLI, and MCP server</a>, with <code>--json</code>, <code>--yaml</code>, <code>--csv</code> and <code>--md</code> output. Angry IP Scanner is also open source and cross-platform, and ships its own command-line interface. What NetsCLI does not do is remote administration: Advanced IP Scanner can open shared folders, control machines over RDP or Radmin, and switch them off remotely, and NetsCLI has no equivalent.',
93+
'NetsCLI overlaps with those tools for common LAN discovery tasks, such as finding live hosts, scanning TCP ports, resolving hostnames, and showing MAC vendors from the local ARP cache. It is not a drop-in clone of either. Advanced IP Scanner is Windows-only and closed-source freeware. NetsCLI runs on Windows, macOS, and Linux, is MIT-licensed, and offers the same scans from a <a href="#surfaces">desktop app, terminal UI, CLI, and MCP server</a>, with <code>--json</code>, <code>--yaml</code>, <code>--csv</code> and <code>--md</code> output. Angry IP Scanner is also open source and cross-platform, and ships its own command-line interface. NetsCLI does not do remote administration. Advanced IP Scanner can open shared folders, control machines over RDP or Radmin, and switch them off remotely, and NetsCLI has no equivalent.',
9494
},
9595
{
9696
group: 'Network workflows',
@@ -112,8 +112,8 @@ export const faq: FaqItem[] = [
112112
aHtml: `
113113
<p>Yes. NetsCLI is MIT-licensed and free for personal, open-source, and commercial use.</p>
114114
<div class="faq-command-list" aria-label="Package manager commands">
115-
<div class="faq-command"><span>Winget — CLI</span><code>winget install netscli</code></div>
116-
<div class="faq-command"><span>Winget — app</span><code>winget install netscli-gui</code></div>
115+
<div class="faq-command"><span>Winget (CLI)</span><code>winget install netscli</code></div>
116+
<div class="faq-command"><span>Winget (app)</span><code>winget install netscli-gui</code></div>
117117
<div class="faq-command"><span>Scoop</span><code>scoop bucket add fstubner https://github.com/fstubner/scoop-bucket &amp;&amp; scoop install netscli</code></div>
118118
<div class="faq-command"><span>Homebrew</span><code>brew tap fstubner/tap &amp;&amp; brew install netscli</code></div>
119119
<div class="faq-command"><span>Install script</span><code>${INSTALL_SH_COMMAND}</code></div>
@@ -124,14 +124,14 @@ export const faq: FaqItem[] = [
124124
{
125125
group: 'Network workflows',
126126
q: 'Can NetsCLI replace nmap, and does it have a TUI?',
127-
a: 'NetsCLI covers the simpler cases nmap is often reached for: host discovery, TCP and UDP port scans, DNS lookups, and ARP-table inspection on a local network, with direct subcommands and structured output. It also ships a terminal UI — run netscli with no arguments to get an interactive, keyboard-driven scanner in the terminal, which nmap itself does not provide. For advanced service detection, NSE scripts, and OS fingerprinting, nmap remains the better tool.',
127+
a: 'NetsCLI covers the simpler cases nmap is often reached for, such as host discovery, TCP and UDP port scans, DNS lookups, and ARP-table inspection on a local network, with direct subcommands and structured output. It also ships a terminal UI. Run netscli with no arguments to get an interactive, keyboard-driven scanner in the terminal, which nmap itself does not provide. For advanced service detection, NSE scripts, and OS fingerprinting, nmap remains the better tool.',
128128
aHtml:
129-
'NetsCLI covers the simpler cases nmap is often reached for: host discovery, TCP and UDP port scans, DNS lookups, and ARP-table inspection on a local network, with direct subcommands and structured output. It also ships a <a href="#surfaces">terminal UI</a> — run <code>netscli</code> with no arguments to get an interactive, keyboard-driven scanner in the terminal, which nmap itself does not provide. For advanced service detection, NSE scripts, and OS fingerprinting, nmap remains the better tool.',
129+
'NetsCLI covers the simpler cases nmap is often reached for, such as host discovery, TCP and UDP port scans, DNS lookups, and ARP-table inspection on a local network, with direct subcommands and structured output. It also ships a <a href="#surfaces">terminal UI</a>. Run <code>netscli</code> with no arguments to get an interactive, keyboard-driven scanner in the terminal, which nmap itself does not provide. For advanced service detection, NSE scripts, and OS fingerprinting, nmap remains the better tool.',
130130
},
131131
{
132132
group: 'Network workflows',
133133
q: 'Is there a netscan command for Linux or Windows?',
134-
a: 'There is no standard netscan command on Linux, macOS, or Windows. People searching for one usually want a command-line network scanner, which is what NetsCLI is: netscli discover lists live hosts on your subnet, netscli scan checks TCP or UDP ports on a host, and netscli sweep does both across a range. Several unrelated third-party tools also use the name NetScan, so check which one you mean before installing.',
134+
a: 'There is no standard netscan command on Linux, macOS, or Windows. People searching for one usually want a command-line network scanner, which is what NetsCLI is. netscli discover lists live hosts on your subnet, netscli scan checks TCP or UDP ports on a host, and netscli sweep does both across a range. Several unrelated third-party tools also use the name NetScan, so check which one you mean before installing.',
135135
aHtml:
136136
'<p>There is no standard <code>netscan</code> command on Linux, macOS, or Windows. People searching for one usually want a command-line network scanner, which is what NetsCLI is:</p><div class="faq-command-list" aria-label="Scanning commands"><div class="faq-command"><span>Live hosts</span><code>netscli discover</code></div><div class="faq-command"><span>Ports on a host</span><code>netscli scan router.local -p 22,80,443</code></div><div class="faq-command"><span>Both, across a range</span><code>netscli sweep</code></div></div><p>Several unrelated third-party tools also use the name NetScan, so check which one you mean before installing.</p>',
137137
},

‎site/src/data/site-content/hero.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ export const hero: Hero = {
5252
// it. "All on one Rust core" carries the same point as "each interface
5353
// calls the same Rust core, so results stay consistent" -- the reader who
5454
// needs the longer version is already reading /docs/.
55-
'Discover LAN devices, scan TCP and UDP ports, query DNS, and inspect hosts from the desktop app, terminal UI, CLI, or MCP server — all on one Rust core.',
55+
'Discover LAN devices, scan TCP and UDP ports, query DNS, and inspect hosts from the desktop app, terminal UI, CLI, or MCP server, all on one Rust core.',
5656
// `winget install netscli` leads, and the shell script follows.
5757
//
5858
// os-tabs.ts already swapped these per-OS at runtime -- Windows visitors

‎site/src/data/site-content/install.ts‎

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ import { INSTALL_PS1_COMMAND, INSTALL_SH_COMMAND } from './install-urls';
44
export const installCopy: SectionCopy = {
55
heading: 'Get started',
66
leadHtml:
7-
'Install the desktop app or the command line — both drive the same Rust core. <a href="/docs/install/">Full install guide →</a>',
7+
'Install the desktop app or the command line. Both drive the same Rust core. <a href="/docs/install/">Full install guide →</a>',
88
};
99

1010
const RELEASE_DOWNLOAD = 'https://github.com/fstubner/netscli/releases/latest/download';
@@ -24,7 +24,7 @@ const RELEASE_DOWNLOAD = 'https://github.com/fstubner/netscli/releases/latest/do
2424
* refusal with no Open button. Apple's support page for opening an app from
2525
* an unknown developer gives only the System Settings route, which is what
2626
* this names now. */
27-
const MACOS_UNSIGNED_HINT = 'Unsigned — open it once, then System Settings → Privacy & Security → Open Anyway';
27+
const MACOS_UNSIGNED_HINT = 'Unsigned. Open it once, then System Settings → Privacy & Security → Open Anyway';
2828

2929
export const installByPlatform: Record<Platform, PlatformInstall> = {
3030
windows: {
@@ -128,7 +128,7 @@ export const installByPlatform: Record<Platform, PlatformInstall> = {
128128
{
129129
label: 'AppImage',
130130
href: `${RELEASE_DOWNLOAD}/netscli-gui-linux-x86_64.AppImage`,
131-
hint: 'Any distro — chmod +x and run',
131+
hint: 'Any distro. chmod +x and run',
132132
},
133133
{
134134
label: 'AUR (Arch)',
@@ -171,7 +171,7 @@ export const tryCommands: TryCommand[] = [
171171
* alternative route for every platform, which is what made it read as a wall
172172
* rather than a choice. */
173173
export const installBinariesNote =
174-
'Rust users can <code>cargo install netscli</code>. Every binary and installer is checksummed and signed with <a href="https://docs.sigstore.dev/cosign/overview/">Sigstore cosign</a> — see <a href="/docs/install/#verifying-a-download">how to verify a download</a>, plus standalone binaries and packet-capture builds.';
174+
'Rust users can <code>cargo install netscli</code>. Every binary and installer is checksummed and signed with <a href="https://docs.sigstore.dev/cosign/overview/">Sigstore cosign</a>. The install guide shows <a href="/docs/install/#verifying-a-download">how to verify a download</a> and lists the standalone binaries and packet-capture builds.';
175175

176176
// Two things /llms.txt says that no page does: a build-from-source route,
177177
// listed after the per-platform quickstart, and any caveat a reader acting
@@ -182,6 +182,6 @@ export const installFromSource = 'cargo install netscli';
182182

183183
export const installNotes = [
184184
'Packet capture is a compile-time feature. No published desktop installer',
185-
'includes it; capture-enabled CLI assets are published separately and also',
185+
'includes it. Capture-enabled CLI assets are published separately and also',
186186
'need a system capture library (libpcap or Npcap).',
187187
];

‎site/src/data/site-content/meta.ts‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ export const meta: Meta = {
66
// a search result shows on words nobody searches for. The interfaces are the
77
// differentiator, and MCP is the one term here with real intent behind it
88
// and almost no competition.
9-
title: 'NetsCLI — Network Scanner for Desktop, CLI, and MCP',
9+
title: 'NetsCLI | Network Scanner for Desktop, CLI, and MCP',
1010
// 153 characters. The previous one ran to 172 and was cut around 158, which
1111
// truncated the MCP mention off the end -- the most valuable word in it. It
1212
// also ran operations and interfaces through a single "for" series

‎site/src/data/site-content/surfaces.ts‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import type { SectionCopy, SurfaceCard } from './types';
33
export const surfacesCopy: SectionCopy = {
44
heading: 'Choose how to work with your network',
55
leadHtml:
6-
'Four ways in, one engine behind them. Whichever you pick — desktop app, terminal UI, CLI or MCP — a port scan means the same thing and returns the same answer. <a href="/docs/">Full docs →</a>',
6+
'Four ways in, one engine behind them. Whichever you pick (desktop app, terminal UI, CLI or MCP), a port scan means the same thing and returns the same answer. <a href="/docs/">Full docs →</a>',
77
};
88

99
export const surfaces: SurfaceCard[] = [
@@ -23,7 +23,7 @@ export const surfaces: SurfaceCard[] = [
2323
{
2424
title: 'Terminal UI',
2525
body:
26-
'Run <code>netscli</code> with no subcommand to start the terminal UI. It is the one to reach for when you are already in a shell and want to stay there — history and autocomplete included, with local interface activity beside the results.',
26+
'Run <code>netscli</code> with no subcommand to start the terminal UI. It is the one to reach for when you are already in a shell and want to stay there. History and autocomplete are included, with local interface activity beside the results.',
2727
image: {
2828
src: '/assets/tui-discover.png',
2929
webp: '/assets/tui-discover.webp',

0 commit comments

Comments
 (0)