netscliのバージョンを、2026年4月18日から最新の0.3.4まで9件掲載しています。いずれも提供元の公式インストーラーにリンクしています。
| バージョン | 日付 | サイズ | ファイル |
|---|---|---|---|
| 0.3.4最新版 | 2026年10月4日 | — | 64ビット ポータブル リリースノートPort scans now name the software and version a service reports, can check common UDP services, and report closed ports as closed on Windows instead of filtered. The CLI writes CSV and Markdown tables, inspect gives an OS hint, and the desktop app can update itself. Discovery no longer lists the network broadcast address as a device.
Added
- The CLI can write CSV and Markdown tables. --csv and --md work on
every command that returns a list (discover, scan, sweep, dns,
ping, arp, interfaces, mdns and pcap). The columns are the same
field names --json uses, one row per host, port, record or packet, so a
result opens straight in a spreadsheet or pastes into an issue without
going through jq. Text a scanned host chose is made safe for each. A
banner that starts like a spreadsheet formula is defused, the same way the
desktop app's CSV export already does it, and one containing Markdown or
HTML is escaped.
- Port scans show the software and version where a service states them.
An SSH server's identification line, a web server's Server header, an
FTP or mail server's greeting and a MySQL or MariaDB server's connection
greeting usually name the software, often with its version:
OpenSSH 9.6p1, nginx 1.25.3, MariaDB 10.11.6. Redis, Valkey and
Memcached say nothing until asked, so each gets the one read-only question
that returns its version. Scans report this as product and version in
the JSON, and in a Version column in the CLI, the terminal UI and the
desktop app. It's far narrower than nmap's -sV: a service that doesn't
announce itself, and isn't one of those three, gets no version.
- UDP scanning. netscli scan <host> --udp checks the UDP services most
networks run (DNS, NTP, NetBIOS, SSDP and mDNS), each sent the request it
expects, or the ports you give with -p. A reply reads as open, with what
came back (NTP v4, stratum 2, a UPnP device's server string, a Windows
machine's NetBIOS name). A port-unreachable reads as closed, and silence
reads as open|filtered, because UDP can't tell a quiet service from a
firewall. It needs no administrator rights. The terminal UI takes
/scan <host> --udp, the MCP server's scan_ports takes udp: true, and
the desktop app's Port Scan has a TCP/UDP switch.
- Inspect gives an OS hint. netscli inspect now says what the host
probably runs, with the clues behind it, such as a Windows machine's exact
version and build from the start of an SMB connection (no login), the
distribution an SSH banner names, an (Ubuntu) or IIS web server header,
Windows' RPC and file-sharing ports, an Apple or Raspberry Pi network card,
and the ping reply's TTL. It also shows the host's MAC address and vendor
when it's on the same network. It's a hint, not nmap's packet
fingerprinting, and needs no administrator rights. The same hint is in the
terminal UI, the desktop app's Inspect details and the MCP server's
inspect_host.
- The desktop app can update itself. It already told you when a newer
release was out and linked to the release page. Now, where it can, the
notice opens a dialog with the release notes and an Install and
restart button. The update is downloaded, checked against NetsCLI's
signing key, installed, and the app reopens. Nothing downloads unless you
click it, and the existing setting still turns the check off entirely.
Installs that a package manager owns keep the old link, because an update
from inside the app would fight it. That covers Scoop, the AUR package and
.deb installs. The Homebrew cask now declares auto_updates, so
Homebrew leaves updates to the app.
This takes effect from the version after this one. An app can only update
itself if it was built with the updater, so 0.3.4 is the first that can,
and 0.3.5 is the first update it will install.
Changed
- MCP scan replies leave out closed and filtered ports. scan_ports and
inspect_host returned one entry for every port scanned, so a 1,024-port
scan of a machine with two open ports came to 136,834 bytes of mostly
"closed". They now return open, open|filtered a |
| 0.3.3 | 2026年9月23日 | — | 64ビット ポータブル リリースノートWindows executables and the desktop installer are signed, so Windows no longer warns that the publisher is unknown. Connecting the MCP server to a client no longer means installing netscli first and writing the configuration by hand: npx netscli serve works, and each release carries a one-click bundle for clients that support them.
Added
- Windows executables and the desktop installer are signed. Both netscli
builds and the .msi now carry an Authenticode signature from a Certum
certificate, timestamped so it keeps verifying after the certificate
expires. Windows has been showing an unknown-publisher warning on every
download since the first release, and SmartScreen treats an unsigned
installer from a low-reputation domain as something to discourage rather
than merely flag.
Signing happens in one job, after the builds and before anything is
uploaded, so a release carries all three signed or none of them. Half a
signed release would be worse than none: nothing on the page would say
which artifacts were which.
- Two new ways to connect the MCP server, so it no longer has to be a
hand-written config file. Until now the only route was installing netscli,
finding where it landed, and writing the JSON yourself.
npx netscli serve now works: netscli is on npm as a small launcher plus
one prebuilt binary per platform, and npm fetches only the one that matches
your machine. This is the form every MCP client's documentation already uses.
There are also .mcpb bundles on each release, one per platform. A client
that supports MCP bundles installs one in a single action — the binary is
inside, so nothing else is needed. The install prompt carries a switch for
the local-network default described below, which is the first time that
choice has been visible to the person making it rather than buried in an
environment variable.
Anyone who already has netscli installed should keep pointing their client
at it. That copy is the version you chose, there is only one of it, and it
is the only one of the three that can capture packets — libpcap and Npcap
cannot be shipped inside an npm package or a bundle.
Documentation
- The MCP page now says what the local-network default is and why. The
server has refused targets outside your own networks since 0.3.1, and the
only description of that lived in a source comment, so the first anyone
heard of it was an error message naming a variable. It is now written down
next to the reason: this is the one surface where a scan can be requested by
something a model read rather than by the person at the keyboard.
Full changelog: v0.3.2...v0.3.3 |
| 0.3.2 | 2026年9月21日 | — | 64ビット ポータブル リリースノートRepairs the Linux packaging. The AUR desktop package installed a file that could not start, and the AppImage aborted before opening a window on any host with a recent Mesa. A desktop window that opens blank now recovers by itself, netscli with no arguments no longer hangs where there is no terminal, and discover names devices from mDNS when reverse DNS comes back empty.
Added
- Discover names hosts from mDNS when reverse DNS cannot. Consumer routers
do not serve PTR records for their own DHCP clients, and appliances ignore
LLMNR and NetBIOS, so reverse lookup returned nothing for exactly the devices
someone opened the app to identify. Those devices announce their names over
mDNS constantly, and netscli has shipped an mDNS browser all along as a
separate operation that discover never consulted. It does now, filling only
the blanks, so nothing that resolves today changes. On one ordinary /24 that
named 3 more of 26 hosts, taking 21 named to 24. Results carry a
hostname_source of reverse or mdns, since a name from a device's own
announcement is a different kind of claim from one in DNS.
- The desktop app says the MCP server exists. Someone who only ever opens
the app had no way to learn that netscli ships an MCP server, let alone
connect an agent to one. There is now a panel that looks for a netscli binary
and gives you the client configuration to paste, including what to do when it
cannot find one — the desktop installers do not carry the CLI.
Fixed
- netscli with no arguments no longer hangs when there is no terminal.
With no subcommand it opens the TUI, which needs a terminal to draw on and
read from. Without one it did not fail, it blocked forever: raw mode was
entered and the runtime then waited on input that could never arrive. So
netscli | head, or netscli from a script or a CI job, ran until
something killed it. It now prints what --help prints and exits 0. The TUI
is unchanged wherever there is a terminal.
This has been the behaviour since 0.1.0, and it is what has kept the CLI's
winget package on 0.2.6. Winget's validation runs the executable and waits
for it, so the 0.3.1 submission has sat since 12 September carrying
Validation-Executable-Error while the desktop app's went through the same
day.
- The docs site lost its navigation and its theme switch between 800px and
1152px wide, and the search button sat stranded beside the wordmark. The
header links — Features, Install, FAQ, Docs, Changelog, GitHub — and the
light/dark control were both hidden across that range, on the understanding
that the mobile menu carried them from there down. The button that opens
that menu only appears below 800px, so for 352px of width there was nothing
to press and no way to reach any of it. The docs sidebar is not a
substitute: it lists the pages of the docs and carries five of those six
links nowhere.
The search button had a second fault behind it. The width at which the links
hide moved from 900px to 1152px and two rules that depended on that number
stayed put, so the layout seam ended up on a hidden element, which takes no
part in the layout. Search fell back to the left with up to 861px of empty
bar beside it.
A new check measures where the header's controls sit at seventeen widths.
Neither fault was visible to the existing accessibility, contrast or
performance gates, because both are about position rather than markup,
colour or speed.
- netscli-gui-bin on the AUR installed a desktop app that could not
start. The PKGBUILD did not set options=('!strip'), and strip is in
makepkg's default options. An AppImage is the AppImage runtime — an
ordinary static ELF — with a squashfs image appended after everything the
ELF headers describe, so stripping it rewrote the file from its section
table and threw the appended image away. What reached /usr/bin was the
944,632-byte runtime out of a 79 MB download, and running it said only
"This doesn't look like a squashfs image". The package built, installed and
verified its checksum at every step, bec |
| v0.2.6 | 2026年5月6日 | — | 64ビット ポータブル リリースノートWhat's new in 0.2.6
- refactor(cli): decompose tui/state.rs into 5 focused module files (#67) @fstubner
- refactor(cli): split tui.rs into tui/ module + extract TUI surface from main.rs (#66) @fstubner
- refactor(cli): extract commands.rs from main.rs (#65) @fstubner
- refactor(gui): split App.tsx per-tab JSX into views/*View.tsx (#64) @fstubner
- refactor(cli): rename formatter.rs -> tui_formatter.rs for naming consistency (#63) @fstubner
- fix(gui): wire up Tauri 2 capabilities so the title-bar buttons work (#62) @fstubner
- ci: cut PR runner-minute spend by ~70% (#61) @fstubner
Full changelog: v0.2.5...v0.2.6 |
| v0.2.5 | 2026年5月4日 | — | 64ビット ポータブル リリースノートWhat's new in 0.2.5
- release: v0.2.5 windows scan fix + GUI styling fix + 13 dep bumps (#60) @fstubner
- fix(gui): scans return all hosts on Windows + dashboard recent-scans styling (#59) @fstubner
- deps: bump crossterm 0.27->0.28, tui-textarea 0.4->0.7, mdns-sd 0.13->0.19 (#58) @fstubner
- packaging: add schema header to GUI Winget manifest templates (#56) @fstubner
- deps: bump hickory-resolver 0.24 -> 0.26 (closes RUSTSEC-2026-0119) (#55) @fstubner
- release: extend publish.yml with 4 GUI-channel jobs (#54) @fstubner
- packaging: GUI installer manifest templates (Cask, Winget GUI, Scoop, AUR) (#53) @fstubner
- audit: ignore RUSTSEC-2026-0119 (hickory-proto, not reachable in our usage) (#52) @fstubner
Maintenance
- build(deps): bump the rust-patch group across 1 directory with 2 updates (#57) @dependabot[bot]
- build(deps): bump dialoguer from 0.11.0 to 0.12.0 (#48) @dependabot[bot]
- build(deps): bump clap_mangen from 0.2.33 to 0.3.0 (#46) @dependabot[bot]
- build(deps): bump pcap from 1.3.0 to 2.4.0 (#45) @dependabot[bot]
- build(deps): bump dirs from 5.0.1 to 6.0.0 (#51) @dependabot[bot]
- build(deps): bump clap from 4.5.60 to 4.6.1 in the rust-minor group across 1 directory (#43) @dependabot[bot]
Full changelog: v0.2.4...v0.2.5 |
| v0.2.4 | 2026年5月3日 | — | 64ビット ポータブル リリースノートWhat's new in 0.2.4
- No changes
Full changelog: v0.2.3...v0.2.4 |
| v0.2.3 | 2026年5月3日 | — | 64ビット ポータブル リリースノートWhat's new in 0.2.3
- release: v0.2.3 fix tauri version skew + AUR publish path (#40) @fstubner
Full changelog: v0.2.2...v0.2.3 |
| v0.2.2 | 2026年5月3日 | — | 64ビット ポータブル リリースノートWhat's new in 0.2.2
- release: v0.2.2 lockfile fix + workspace bump (recovers v0.2.1 release.yml failure) (#39) @fstubner
Full changelog: v0.2.1...v0.2.2 |
| 0.2.0 | 2026年4月18日 | — | 64ビット ポータブル リリースノートFirst major feature pass since v0.1.0. Adds mDNS/DNS-SD discovery, a typed
public API, shell completions, man pages, and sigstore-signed release
binaries. |