Skip to content

Site: working Scoop commands, accurate history and comparison claims, fresh screenshots - #552

Merged
fstubner merged 21 commits into
mainfrom
fix/site-copy
Oct 7, 2026
Merged

fstubner merged 21 commits into
mainfrom
fix/site-copy

Conversation

@fstubner

@fstubner fstubner commented Oct 7, 2026

Copy link
Copy Markdown
Owner

Audit fixes for the landing page and docs copy (areas/site-docs-copy.md, local only). The privacy page is in #551.

What changes for visitors

  • Scoop installs work in the PowerShell that ships with Windows. The landing page and FAQ joined two commands with &&, which Windows PowerShell 5.1 rejects, so neither command ran. They are now two lines, which run in PowerShell 5.1, PowerShell 7 and cmd.
  • The copy buttons on the other install rows copy only the command. Found while fixing the above, and not in the audit: they copied the label glued to the front, for example "Scoopscoop bucket add ...", on the live site.
  • History is described as it is. The desktop app keeps the last 20 runs, not "the full history".
  • Screenshots retaken from the app's screenshot mode. The DNS shot showed an empty result, and the interfaces shot showed real MAC and IPv6 addresses. Each image is in this PR; DNS, interfaces and both scan shots were looked at.
  • The comparison table is precise about nmap:
    • MCP is "Third-party only".
    • Wake-on-LAN is "Wake-on-LAN only, via a script".
    • Open source is "Source available", because nmap's licence is not OSI-certified.
    • The footnote is updated and links each tool. No competitors were added.
  • The 0.2.4 and 0.2.6 changelog summaries are rewritten for people using the product, not for the pipeline.
  • Smaller fixes:
    • a dead cosign link
    • the signing claim limited to the CLI and desktop assets
    • the update-check wording in desktop.md
    • the TUI alt text
    • the Linux hero now shows Homebrew instead of the Arch-only AUR command
    • the download tooltip names its sources instead of saying "total"
    • FAQ text for JSON-LD without Markdown backticks
    • robots.txt and other comment fixes

Checked

  • In site/, all passing:
    • npm run check: 0 errors, 0 warnings
    • npm run build: 15 pages
    • check:changelog
    • check:structured-data
    • check:css
    • check:regions
    • check:wordmark
  • node scripts/check-file-size.mjs passes.
  • The prose checker passes on the changed copy.
  • In a browser on the built site: the copy payloads, the hero commands, the tooltip, and the table at 1280 and 390 px.
  • Not run locally: check:contrast, check:header and test:a11y. They need a browser driver this machine blocks. CI runs what it runs.

Follow-ups

  • Install.astro, landing-page.ts, social-types.ts and types.ts come from product-site-template. These fixes should go back there, or the next sync will conflict.

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.
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.
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.
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.
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).
Settings has had an MCP Server section (McpServerSection.tsx) that the
guide's list left out.
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.
…e 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.
… 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.
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.
…N-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.
….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.
The SVG's aria-label is read aloud and used a colon and three semicolons
inside one sentence. Use short sentences instead.
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.
…n 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).
…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.
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.
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.
It said favicon plus apple-touch-icon, but Page.astro emits only the SVG
rel=icon link.
The rest of the site's copy is American English (neighbor, licensed).
@github-actions

github-actions Bot commented Oct 7, 2026 •

Copy link
Copy Markdown
Contributor

Site preview: https://pr-552.netscli-site-preview.pages.dev

Built from ac0683e with NETSCLI_PREVIEW=1 — noindex, and analytics disabled so it does not report into netscli.com's numbers.

Production is unaffected: netscli.com is served from GitHub Pages via pages.yml, which is manual-only.

@fstubner
fstubner merged commit 35a372c into main Oct 7, 2026
15 checks passed
@fstubner
fstubner deleted the fix/site-copy branch October 7, 2026 23:04
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant