Skip to content

Commit 35a372c

Browse files
authored
Site: working Scoop commands, accurate history and comparison claims, fresh screenshots (#552)
* site: copy only the command from the alternative install rows The copy button on every non-recommended install row fell back to the row's own text, so it copied the label glued to the front of the command ("Scoopscoop bucket add ...", "PowerShell scriptiwr -useb ..."). Give those rows data-copy, as the Try it rows already have. * site: show the Scoop install as two lines, not joined with && Windows PowerShell 5.1, the shell most Windows users have, rejects &&, so the landing page and FAQ Scoop commands ran nothing there. ; does not separate commands in cmd, so use two lines, as docs/install.md does. The install rows now keep a command's line break (pre-line, and pre in the narrow layout) and the copy button copies both lines. * site: retake the desktop screenshots from the app's screenshot mode The DNS screenshot showed an empty result under alt text that described rows. The interfaces screenshot showed the maintainer's real adapter MAC addresses and a global IPv6 address. Both scan screenshots predated the Version column, and the docs one showed a test fixture banner. All four are captured from the desktop frontend's screenshot mode (fixture data in the documentation address range) with headless Chrome, at the pixel sizes the old files had (2000x1125 for the docs, 1377x740 for the landing page, plus its WebP). The screenshot mode has no interfaces fixture, so that capture adds one at capture time, in the browser only. The scan alt text now says what the new image shows. * site: say the desktop app keeps your last 20 runs, not the full history The landing page promised "the full history kept as you go". The app keeps the last 20 runs and skips very large results (historyStorage.ts), and the privacy page already says 20. State the limit and the large-result exception in the desktop guide, and the Save History switch that turns it off. * site: say what the desktop update check fetches on each kind of install The guide said the check fetches one small file. That is true for installs that can update themselves (latest.json from the release downloads), but Scoop, AUR, .deb and AppImage installs that cannot write to their own folder call GitHub's API instead (services/releases.ts). * site: list the MCP Server section in the desktop Settings guide Settings has had an MCP Server section (McpServerSection.tsx) that the guide's list left out. * site: make three nmap cells in the comparison table precise A dash or a tick in each said more than nmap's own pages do. - AI agents: nmap ships no MCP server, but third-party ones are easy to find, so the cell says third-party only. - Wake-on-LAN: nmap's NSE script broadcast-wake-on-lan sends a Wake-on-LAN packet, so the cell says Wake-on-LAN only, via a script. - Open source: nmap.org/npsl says the licence has not been through OSI certification, so the cell says source available, with a footnote. Re-checked on 2026-10-07 (nmap 7.991 dated 2026-08-06, Angry IP Scanner 3.10.0 dated 2026-08-31, Advanced IP Scanner Windows 11 to 7), and the footnote now says October. No competitors added. * site: write the 0.2.4 and 0.2.6 release summaries for people using the product 0.2.4 named a CI action and 0.2.6 named internal refactors. Say what each release changed for a user, using CHANGELOG.md as the source (the desktop installers were missing from 0.2.3, and 0.2.6 fixed the version shown in the app and the Windows title-bar buttons). Also split the mid-sentence colon in the 0.3.3 summary into two sentences. CHANGELOG.md is unchanged. * site: fix the dead cosign link and limit the signing claim to CLI and desktop assets docs.sigstore.dev/cosign/overview/ redirects to a 404. Use /cosign/signing/overview/, which returns 200 and is what packaging/README.md already links to. install.md said every asset ships a .sig and a .pem. The .mcpb bundles and latest.json do not (publish.yml uploads only the .mcpb files), so say CLI and desktop assets, as the sentence at the top of the section already does. * site: describe the terminal UI screenshot as it is The alt text (also the twitter:image:alt) promised response times, but the image has Host, Device ID, Vendor and Hostname columns. Reuse the wording docs/tui.md already has. * site: keep Markdown backticks out of the FAQ answers that go into JSON-LD The plain-text a field is copied verbatim into the FAQPage structured data (faq.ts says it must stay real prose), but three answers carried Markdown backticks. Write the commands as plain text, as the other answers do. The one with a <subnet> placeholder now gives an example subnet, since an angle-bracket placeholder reads as an HTML tag. * site: drop maintainer history from robots.txt and correct the install.sh header comment robots.txt is public and carried a ticket id (B-24) and the story of a deleted sitemap. Keep the directives and the llms.txt pointer, and leave the history to git. install.sh.ts said it serves text/plain so a browser shows the script. GitHub Pages ignores that header: the live site serves /install.sh as application/x-sh and /install.ps1 as application/octet-stream. Say so. The PowerShell script's non-ASCII dash (scripts/install.ps1:271), the other half of that finding, is outside site/ and is not changed here. * site: write the dependency graph's aria-label as plain sentences The SVG's aria-label is read aloud and used a colon and three semicolons inside one sentence. Use short sentences instead. * site: document NETSCLI_OUI_PATH in the core library module map oui.rs reads the vendor list from NETSCLI_OUI_PATH before any other path, and crates/netscli-core/README.md already documents it for library users. The site had no mention. Mirrors the README; a maintainer call whether it should stay a documented setting. * site: stop showing the Arch-only AUR command to every Linux visitor in the hero The second hero command for Linux was yay -S netscli-bin. install.ts already moved AUR to the end of the Linux install tabs for being Arch-only, so use Homebrew here, which the formula supports on Linux (packaging/homebrew/netscli.rb has on_linux builds). * site: name the sources of the download count instead of calling it a total The hero's download count is GitHub release assets plus crates.io, but its label said "Downloads: N total" while npx netscli, a documented route, is not counted. Setting npmPackage would count it, but it would also send every visitor's browser to api.npmjs.org (a new third-party contact the privacy page does not list) and point the count's link at npm, so name the sources instead: "Downloads: N from GitHub releases and crates.io". Also split the semicolon in the partial-count label. landing-page.ts is shared with the site template, so this edit will need carrying over when the template is next synced. * site: say the CLI and sweep samples are trimmed The landing CLI sample leaves out protocol and status, which every port result carries (PortResult serializes both), and result-model.md called a three-field host object a whole one. Say the samples are trimmed rather than show full objects. * site: link each tool's own page from the comparison footnote The sources for the competitor cells lived only in a code comment. Link the version each was checked against to the tool's own site, so a reader can verify a cell. * site: correct the faviconPath doc comment It said favicon plus apple-touch-icon, but Page.astro emits only the SVG rel=icon link. * site: use the American spelling of license in the comparison footnote The rest of the site's copy is American English (neighbor, licensed).
1 parent 59e95c4 commit 35a372c

22 files changed

Lines changed: 93 additions & 52 deletions

‎site/public/assets/gui-dns.png‎

41.9 KB
Loading
-59 KB
Loading

‎site/public/assets/gui-scan.png‎

49.9 KB
Loading

‎site/public/gui-scan.png‎

-9.39 KB
Loading

‎site/public/gui-scan.webp‎

8.13 KB
Loading

‎site/public/robots.txt‎

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,6 @@
11
User-agent: *
22
Allow: /
33

4-
# The Starlight/@astrojs/sitemap integration generates sitemap-index.xml on
5-
# every build, so it is always current. A hand-written public/sitemap.xml used
6-
# to ship alongside it with all 13 lastmod values frozen at 2026-07-02, and
7-
# this file pointed at that stale copy rather than the generated one (B-24).
84
Sitemap: https://netscli.com/sitemap-index.xml
95

10-
# A curated map of this site for answer engines, generated from the same
11-
# content the pages render (src/pages/llms.txt.ts) so it cannot drift from
12-
# them. Not a standard robots.txt directive -- a discovery hint, since the
13-
# convention has no other advertised location.
146
# llms.txt: https://netscli.com/llms.txt

‎site/src/components/Install.astro‎

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,11 @@ const groups = [
7070
{alternatives.length > 0 && (
7171
<div class="alts">
7272
{alternatives.map((e) => (
73-
<div class={`alt${e.command ? ' has-copy' : ''}`}>
73+
/* `data-copy` is the command and nothing else. Without
74+
it the copy button falls back to the row's text,
75+
which is the label glued to the front of the
76+
command ("Scoopscoop bucket add ..."). */
77+
<div class={`alt${e.command ? ' has-copy' : ''}`} data-copy={e.command}>
7478
<div class="alt-label">
7579
{e.label}
7680
{/* A caveat about a command belongs by the label;
@@ -254,6 +258,9 @@ html[data-theme='light'] #install .reco{
254258
font-family:ui-monospace,"SF Mono",Menlo,monospace;font-size:.82rem;
255259
color:var(--ui-text);overflow-wrap:anywhere;word-break:normal;
256260
}
261+
/* A command can be more than one line (Scoop's bucket add and install), and
262+
the break has to show: collapsed into a space it reads as one command. */
263+
.alt-cmd:not(.install-download){white-space:pre-line}
257264
/* Reserve for the copy button, which only command rows have. It used to sit
258265
on `.alt-cmd` unconditionally, so a download row reserved 50px for a button
259266
that is never rendered there -- dead space the Download button was then
@@ -457,9 +464,11 @@ a.install-download:focus-visible{
457464
/* `.alt-cmd` too. It was left on `overflow-wrap:anywhere`, so while the
458465
recommended command truncated to one line the alternates below it broke
459466
mid-token across four -- the Scoop line did exactly that at 375px. Same
460-
treatment, same reason: the copy button carries the full command. */
467+
treatment, same reason: the copy button carries the full command.
468+
`pre` rather than `nowrap` so a two-line command keeps its break; for a
469+
one-line command the two are the same. */
461470
.alt-cmd:not(.install-download){
462-
white-space:nowrap;
471+
white-space:pre;
463472
overflow:hidden;
464473
text-overflow:ellipsis;
465474
}

‎site/src/content/docs/docs/core-library.md‎

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Interface layers use the core `Ops` facade instead of implementing their own pro
2121
Dependency flow stays one-way:
2222

2323
<svg viewBox="0 0 720 300" role="img" width="100%"
24-
aria-label="Dependency graph: netscli (CLI, TUI and serve) depends on netscli-mcp and on netscli-core; netscli-mcp depends on netscli-core; netscli-gui depends on netscli-core; netscli-core depends on none of them"
24+
aria-label="Dependency graph. netscli (CLI, TUI and serve) depends on netscli-mcp and netscli-core. netscli-mcp depends on netscli-core. netscli-gui depends on netscli-core. netscli-core depends on none of them."
2525
style="max-width:720px;height:auto;margin-block:1.25rem">
2626
<defs><marker id="dep-arrow" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M0 0 L10 5 L0 10 z" fill="var(--sl-color-gray-3, #8b919b)"/></marker></defs>
2727
<g fill="none" stroke="var(--sl-color-gray-3, #8b919b)" stroke-width="1.5" marker-end="url(#dep-arrow)"><path d="M170 86 L170 112"/><path d="M300 52 L360 52 L360 210"/><path d="M170 176 L170 196 L250 196 L250 210"/><path d="M540 86 L540 196 L470 196 L470 210"/></g>
@@ -78,6 +78,7 @@ Exact method signatures can change as operations gain richer structured data. Pr
7878
| `dns` | Record lookup and reverse lookup behavior. |
7979
| `mdns` | Local mDNS/DNS-SD service discovery behind the `mdns` feature. |
8080
| `arp` | Local neighbor cache and MAC vendor enrichment. |
81+
| `oui` | MAC vendor lookup from an IEEE list embedded in the crate. Set `NETSCLI_OUI_PATH` to a `.json` or `.json.gz` file to use a newer or filtered list instead. |
8182
| `stats` | Local interface traffic counters. |
8283
| `pcap` | Optional capture execution and packet parsing behind the `pcap` feature. |
8384
| `db` | SQLite persistence for host records and scan history. |

‎site/src/content/docs/docs/desktop.md‎

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ head:
88

99
NetsCLI Desktop is the interactive interface for reviewing network results. It is built for users who want tables, filters, row details, history, exports, and multiple operation tabs open at once.
1010

11-
<img src="/assets/gui-scan.png" width="2000" height="1125" alt="Port scan results in NetsCLI Desktop, with the details pane open below the table showing the banner and raw response for the selected row" />
11+
<img src="/assets/gui-scan.png" width="2000" height="1125" alt="Port scan results in NetsCLI Desktop, with a Version column and the details pane open below the table showing the banner for the selected row" />
1212

1313
*Port scan. The details pane carries the banner, headers and raw response for the selected row.*
1414

@@ -109,7 +109,7 @@ The pane can be collapsed, resized, or expanded to fill the content area.
109109

110110
## History and exports
111111

112-
History records recent operations so you can reopen or repeat work. If history persistence is enabled, command history and result snapshots survive app restarts.
112+
History keeps your last 20 runs, with their results, so you can reopen or repeat them. Very large results are skipped. The history survives app restarts. To stop keeping it, turn off **Save History** in Settings, which also clears the runs already saved.
113113

114114
Export options:
115115

@@ -133,11 +133,12 @@ Settings control:
133133
- Network interface used for local status indicators.
134134
- Address family preference for the selected interface display.
135135
- Traffic unit and precision display.
136+
- MCP server setup, which gives you the config to paste into your MCP client, or the command to install `netscli` first when the app cannot find it.
136137

137138
## Updates
138139

139140
When the app opens, it checks GitHub for a newer release. If there is one, a
140-
notice appears in the corner. The check fetches one small file and nothing else. You can turn it off under **Settings → Release Notifications**.
141+
notice appears in the corner. The check is one small request. Installs that can update themselves fetch a small file from the release downloads, and the rest ask GitHub's API for the latest release. Nothing else is fetched. You can turn it off under **Settings → Release Notifications**.
141142

142143
Where the app can update itself, the notice opens a dialog with the new version's release notes and three choices, **Install and restart**, **Later** or **Skip this version**. Nothing downloads until you choose to install. The
143144
update is checked against NetsCLI's signing key before it is installed. On

‎site/src/content/docs/docs/install.md‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -252,9 +252,9 @@ A checksum only proves the file matches its own sidecar, and both come from
252252
the same place. The signature is what ties the asset to the workflow run that
253253
built it.
254254

255-
Every asset is signed with [Sigstore
256-
cosign](https://docs.sigstore.dev/cosign/overview/) by the release workflow,
257-
and the signature is tied to the exact run that built it. Each asset ships a
255+
Every CLI and desktop asset is signed with [Sigstore
256+
cosign](https://docs.sigstore.dev/cosign/signing/overview/) by the release workflow,
257+
and the signature is tied to the exact run that built it. Each of those assets ships a
258258
`.sig` and a `.pem` beside it:
259259

260260
```bash

0 commit comments

Comments
 (0)