Skip to main content

NetBase - Releases

← App details

Nextcloud 35

NetBase 0.6.2
Release Details
UpdatedSept. 17, 2026, 10:45 a.m.
Changelog

Changed

  • Nextcloud 35 is now supported. There are no other changes. The supported range is widened from 30–34 to 30–35. The app itself is unchanged from 0.6.1: it was tested on Nextcloud 35 against the changes that release makes for apps, and ran without modification. (Nextcloud 35 に対応した。それ以外の変更はない。 対応範囲を 30〜34 から 30〜35 に 広げた。アプリ本体は 0.6.1 から変わっていない。Nextcloud 35 でアプリ向けに変わった点に 照らして試験し、修正なしで動くことを確かめた。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureovYzjgphrZG9qwzRnUkQE6ciV6DE9L0exbPrr2vAdkG4vEunPZAzj+jynTjvITfB0AEM1uHMkSvuVlPn8LXaqGp5tAhY7ZTFpf9FPRXx9zt+1sofQGRVIW5iDWAU+nsj2jr1HROnDVcb+q0Wb5Xm5nr3wL9zX5Cto9xPu1VjM5+KxVl0xbaUAnVWUj5nKZQN9yLHmpksAdt/VsAKO8BEclfnXI2z+4VV/EL7A3gaHW5SrOEm+0bqDj2nGPit2UfuXPcSYCnEtmwkSmwwCWzfKC3yVrZ3toqgwWQIJy1cYNh6H1BKvuZSzaec/ZkRFXdLHM7WiATnzBVvY57voAVNlkQ4TLbgw5AQDQgPPDnIK7TaeCUMrGfLQwSPmznfiD5Y51O5CeIR/chXKLOWJBHdDex4yLgm2H5pwl+0EAN7E9ct8qjPBdF+sTdiGcBf5p6QYTGJmVAku7ic3lql6DTDNsHRIo6+NP/aXXJ5BSbhim4mzrb7jTVMFmB8xlMkyI+dr4EiJnvkokNw9CciiU6ddXkQoNBjjPMsBmI1S4yplH0maYsMSc9wryjhOVePzgX2phIRbFFqVfe7Q+phJp0EtHjEqyULrmH3HRkNtoQIYoVmPmuls1hkt5F38ZMUzyU6vvqKIPc4ZGtDGLZYGzOBa+8SVI2WKOsZW4dJqvv/BHM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32

Nextcloud 34

NetBase 0.6.2
Release Details
UpdatedSept. 17, 2026, 10:45 a.m.
Changelog

Changed

  • Nextcloud 35 is now supported. There are no other changes. The supported range is widened from 30–34 to 30–35. The app itself is unchanged from 0.6.1: it was tested on Nextcloud 35 against the changes that release makes for apps, and ran without modification. (Nextcloud 35 に対応した。それ以外の変更はない。 対応範囲を 30〜34 から 30〜35 に 広げた。アプリ本体は 0.6.1 から変わっていない。Nextcloud 35 でアプリ向けに変わった点に 照らして試験し、修正なしで動くことを確かめた。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureovYzjgphrZG9qwzRnUkQE6ciV6DE9L0exbPrr2vAdkG4vEunPZAzj+jynTjvITfB0AEM1uHMkSvuVlPn8LXaqGp5tAhY7ZTFpf9FPRXx9zt+1sofQGRVIW5iDWAU+nsj2jr1HROnDVcb+q0Wb5Xm5nr3wL9zX5Cto9xPu1VjM5+KxVl0xbaUAnVWUj5nKZQN9yLHmpksAdt/VsAKO8BEclfnXI2z+4VV/EL7A3gaHW5SrOEm+0bqDj2nGPit2UfuXPcSYCnEtmwkSmwwCWzfKC3yVrZ3toqgwWQIJy1cYNh6H1BKvuZSzaec/ZkRFXdLHM7WiATnzBVvY57voAVNlkQ4TLbgw5AQDQgPPDnIK7TaeCUMrGfLQwSPmznfiD5Y51O5CeIR/chXKLOWJBHdDex4yLgm2H5pwl+0EAN7E9ct8qjPBdF+sTdiGcBf5p6QYTGJmVAku7ic3lql6DTDNsHRIo6+NP/aXXJ5BSbhim4mzrb7jTVMFmB8xlMkyI+dr4EiJnvkokNw9CciiU6ddXkQoNBjjPMsBmI1S4yplH0maYsMSc9wryjhOVePzgX2phIRbFFqVfe7Q+phJp0EtHjEqyULrmH3HRkNtoQIYoVmPmuls1hkt5F38ZMUzyU6vvqKIPc4ZGtDGLZYGzOBa+8SVI2WKOsZW4dJqvv/BHM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
NetBase 0.6.1
Release Details
UpdatedSept. 17, 2026, 10:44 a.m.
Changelog

Added

  • A device in the list can be pinged: right-click a row and ask it. The answer is the packet count, the loss and the round-trip times, kept on screen until it is closed rather than fading like a notice — the numbers and their caveat are worth reading twice. A result of "nothing came back" says so plainly and adds that plenty of devices and firewalls ignore ping while answering perfectly well on a port, because a bare 100% reads as "the device is off" and often it is not. It reaches the local network and nothing beyond it, in two ways at once: the request names a device by its row rather than by an address, so there is no field in which to aim it at the internet, and the server checks the address against its own subnets before a single packet leaves. An address on no subnet of this server is refused rather than tried. (一覧の機器に ping を送れるようにした。行を右クリックするだけ。 送信数・受信数・ 損失率・往復時間を、消えてしまう通知ではなく閉じるまで残る小窓に出す。数字とその 読み方は二度読む価値があるため。応答がない場合は「多くの機器やファイアウォールは ping を無視しつつポートには応答する」と添える。損失 100% だけを見せると「電源が 落ちている」と読めてしまうが、実際はそうでないことが多いからである。外部には届かない。 仕掛けは二重で、①要求はアドレスではなく機器の行を指定するため、外部を狙う入力欄が そもそも無い、②サーバー側が送信前にアドレスを自分の持つネットワークと照合する。 どこにも属さないアドレスは、試さずに拒否する。)

  • A machine with a foot in several networks is pinged at the address that means something. Such a machine is one row per address, shown as one device, and the row menu hands over whichever row carries the name — which is not chosen for being reachable. On the development server that picked the container bridge over the address anyone would mean, and it could as easily have picked a stale address on a network the machine no longer has, which the server then refuses. The address is now chosen on its own merits: the routed networks first, primary before secondary, then an address this server merely has an interface on, and never one it has no interface on at all. Ties fall to the lowest address, so the choice does not wander between scans. (複数のネットワークに足を持つ機器では、意味のあるアドレスに送るようにした。 この種の機器はアドレスごとに別の行になり、一覧では1台として表示される。右クリックが 渡すのは「名前を持っている行」で、届くかどうかで選ばれていない。開発機では、誰もが 思い浮かべるアドレスではなくコンテナ橋の側が選ばれていた。条件次第では、その機械が すでに持たないネットワークの古いアドレスが選ばれ、サーバーに拒否されて終わることも あり得た。アドレス自体の素性で選ぶようにした。経路のあるネットワークを優先し (主たるものを副次より先に)、次にこのサーバーが足だけ持つネットワーク、足を持たない ものは選ばない。同順位なら小さいアドレスを採り、探索のたびに揺れないようにした。)

Fixed

  • A device type you chose by hand no longer disappears when a container restarts. Reported from an all-container estate: a type changed to "Container" was back to "Unknown" after the container was restarted and the devices refreshed. The guard that stops a scan replacing a hand-picked type with a guess was working; something else was undoing it. NetBase identifies a device by its MAC address, and a container is handed a new one every time it starts — podman gives it a new address as well. The machine that came back was, as far as NetBase could tell, a different machine. Reproduced both ways it plays out: where the address changed too, the old row survives offline with its type and a new "Unknown" appears beside it; where the address stayed, the old row was deleted outright and the type went with it. That deletion is deliberate — when a DHCP lease passes from an old PC to a new device, the old machine's name and type must not follow the address to its new occupant — and a restarted container is indistinguishable from a reassigned lease from the outside. So the line is drawn differently: everything the machine reported about itself (its ports, its names, its vendor, its history) is still dropped with its row, and what a person typed is carried across — the name they gave it, their notes and tags, and a type they picked by hand. A guessed type is still left behind, because "Printer" was the scan's opinion of the machine that left and says nothing about whatever holds the address now. (手で決めた機器の種別が、コンテナの再起動で消えてしまう不具合を修正。 すべてを コンテナで運用されている方からの報告で、「コンテナ」に変えた種別が、再起動して機器を 更新すると「不明」に戻っていた。推測による上書きを防ぐ仕組みは正しく働いており、 別のものが打ち消していた。NetBase は機器を MAC アドレスで見分けるが、コンテナは 起動のたびに新しい MAC を受け取る。podman ではアドレスまで変わる。戻ってきた機械は、 NetBase から見れば別の機械だった。起こり方は2通りあり、両方を再現した。アドレスも 変わる場合は、古い行が種別を保ったままオフラインで残り、隣に新しい「不明」が現れる。 アドレスが同じ場合は、古い行が削除され、種別ごと消える。この削除は意図的なもので、 DHCP で古い PC からアドレスが別の機器へ渡ったとき、前の機器の名前や種別を新しい 持ち主に引き継いではならないためである。そして再起動したコンテナと、渡されたアドレスは 外から見分けがつかない。そこで線を引き直した。機械が自分について報告したもの (ポート、名前、製造元、履歴)は従来どおり古い行とともに捨て、人が入力したものだけを 引き継ぐ — 付けた名前、メモ、付箋、そして自分で選んだ種別。推測された種別は 引き継がない。「プリンター」は去った機械についての意見であって、いまそのアドレスを 持つものについては何も語らないからである。)

  • The settings screen no longer answers 500 on a confined install. Listing the fonts a terminal can borrow walks the font folders, and on a confined install — a snap, for one — /usr/share/fonts is refused outright. A folder that cannot be opened throws rather than warns, and the @ in front of it does nothing about a thrown error, so the exception travelled out of the font list, through the settings handler, and turned the whole screen into a 500. The walk is now guarded, and the same refusal arriving from a folder deeper in is caught too rather than only the opening of the top one. A font nobody can read is not worth a broken screen: the folder is skipped instead. (限定された環境で設定画面が 500 になる不具合を修正。 端末に貸せるフォントを 数えるためにフォント用のフォルダーを辿るが、限定された環境 — snap などがそうである — では /usr/share/fonts が丸ごと拒否される。開けないフォルダーは警告ではなく例外を 投げるため、前に付けた @ では抑えられない。例外はフォント一覧から設定の処理まで 抜けていき、画面全体が 500 になっていた。辿る処理そのものを保護し、先頭のフォルダーを 開くときだけでなく、途中のフォルダーから同じ拒否が来た場合も受け止めるようにした。 読めないフォント1つのために画面を壊す価値はない。そのフォルダーは飛ばす。)

Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureMWUIO4DhCXKnL5EV46opf++sOrtHiPQGJ+lzsEhFjx5QuFWz7OcXA3gA0lV43t5W2WOCdEuP+QKcuDbmCCmsJrGe0i0ekeNtlT8QPwm3qgMXeFHIcCOogH3Lkh4uawbBI9CRXjtqBRMjJAq59WaJ6fhp2ek9fRt/E3abwNrGgSccb5wmVI3mq52I7zaKYYpDUlzc8bme5nuRxjygb2N6bnaufCmHGMWLBglwnWbgTYHDnjiM9Dp0q7xdsA+tw1ICZWHvjeafYz8HuEkVOL0aGjoiX19mRMg8eBePlFWZfTkGHLdR0jLhuL7n669AxeiUKPCV7ZQBxRieu6oXKL3M2ifYO36tLjglkZ1kD6gUJVPqD+A9ANitG9OiP+tp9Vff0KoSBf+tODGvPjM0ZLyPbuxbS8SFxh4vhy+MPeu0kPqSeY0evnQz00YnV+FI+DoLwthbPtl+OsUzwJlnp1Y4JoBeEHsGgWcrEl26UYQA61AhtL5z6D//VfOQnkcZ5m+wJwzRIAz0I5nBX8W93wqqdUsIE/Nvscdb/g4j8pG47oXha8duf9aiphK3kGxYn3MHqGZDb91EVBas9SNH/TwBOzEhh+HOzVAXGyxhD+jNJ2AKcknSn7qhUnFKCEi7BW/DXl/vGgXmUKR6X9dQSVpc7QilFKz8Px5eYN+hzy9aYcc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.6.0
Release Details
UpdatedSept. 16, 2026, 6:03 a.m.
Changelog

A bigger step than 0.4.3 → 0.5.0 was. Please read the first entry before you update: saved connections move to RegiBase, and the ones stored before this release are gone. (0.4.3 から 0.5.0 のときよりも変更点が多い版です。更新前に最初の項目を必ずお読み ください。保存済みの接続先は RegiBase へ移り、これまでに保存したものは消えます。)

Changed

  • The settings dialog is wider, its tabs sit in one row, and the tabs are easier to tell apart. Four tabs in a 560-pixel dialog wrapped to two rows with room to spare on each; the dialog is the ordinary 660 now and they fit in one, sharing the width and wrapping only when the names cannot be read any narrower. The closed tabs were a muted grey on a near-white ground, which is hard to separate from the panel at a glance: the ground is darker and the text is the ordinary text colour. Measured rather than guessed — the text now sits at 12.1 against its own ground where it was 4.3, and the open and closed states differ by 1.21 where they differed by 1.11. Five mixes were compared before settling on one. (設定ダイアログを広げ、タブを1段にし、開いているタブと閉じているタブを見分けやすく しました。 560ピクセルの幅に4つのタブは収まらず2段に折り返していましたが、各段には 余白がありました。通常の660ピクセルに広げ、タブが幅を分け合って1段に収まり、名前が 読めなくなるときだけ折り返すようにしました。閉じているタブは白に近い地に薄い灰色の 文字で、ひと目では本文と区別がつきませんでした。地を濃くし、文字を通常の文字色に しています。当てずっぽうではなく実測しました。文字と地の比は 4.3 → 12.1、開と閉の 地色の差は 1.11 → 1.21。5通りの濃さを比べたうえで決めています。)

  • Acting as root now lapses on its own. The sudo password was never stored, but it stayed usable for as long as the page was open — and a page left open on an unlocked screen is somebody else's root. It is given up after a set time with nothing touched: ten minutes to start with, adjustable from one to thirty in the settings, or never for anyone who would rather decide for themselves. The remaining time is shown beside the notice, and "Give up root now" is a button rather than a line of small print. Working in NetBase resets the clock; merely having the tab in front of you does not, because a tab left on this screen while its owner is elsewhere is the case this is for. (root として操作している状態が、自動で切れるようになりました。 sudo のパスワードは もともとどこにも保存していませんが、画面を開いている限り使える状態が続いていました。 施錠されていない端末に開いたまま置かれた画面は、そこにいる誰にとっても root です。 何も操作しないまま一定時間が過ぎたら手放します。既定は10分、設定で1〜30分から選べ、 「自分からは手放さない」も選べます。残り時間は知らせの横に出し、「いま root を手放す」 は小さな文字の一行ではなくボタンにしました。NetBase で何か操作すれば数え直しますが、 画面が目の前にあるだけでは数え直しません。持ち主が席にいないままこの画面が開かれて いる、という場合のための仕組みだからです。)

  • A folder can be downloaded now, as one ZIP file. Only single files could be brought back; a folder had to be walked into and its files fetched one at a time. The archive is built on this server rather than on the far end, because that is the only way that works everywhere: a host reached over FTP has no commands at all, and even among Unix servers zip is often missing — the test server here has tar but no zip. Nothing has to be installed on the server being visited. Three limits keep one request from running away: how deep it walks, how many files it takes, and how many bytes in total; reaching one stops the walk and says so, rather than quietly handing over half a folder. (フォルダーを、1つの ZIP ファイルとしてダウンロードできるようにしました。 これまで 取り込めるのは単体のファイルだけで、フォルダーは中へ入って1つずつ取るしかありません でした。書庫は接続先ではなくこのサーバーで組み立てます。それが唯一どこでも同じに 動く方法だからです。FTP の相手にはそもそもコマンドがなく、Unix のサーバーでも zip は 入っていないことが多く(この検証機も tar はあるが zip は無し)、相手側に何も導入する 必要がありません。1回の要求が際限なく走らないよう、深さ・件数・総量の3つに上限を 設けています。上限に達したら walk を止めてその旨をお伝えします。黙って半分だけ渡す ことはしません。)

  • "Download to my files" in the right-click menu is just "Download" now. What it did was plain; the wording was not. (右クリックの「自分のファイルへ取り込む」を「ダウンロード」にしました。 している ことは単純なのに、言い方が回りくどいものでした。フォルダーでは「ZIPでダウンロード」と 出ます。)

  • The settings dialog is tabbed too, and the tabs take one row where they fit. Four groups stacked one under another made a dialog longer than the screen: appearance, terminal, connections and keys, and the tool order all had to be scrolled past to reach the last of them. They are four tabs now, the same ones the connection list uses. The tabs were fixed at two to a row, which forced a second row even where there was width to spare; they fill the row and wrap only when they must. (設定ダイアログもタブにし、タブは収まるなら1段にしました。 4つの群を縦に並べて いたためダイアログが画面より長くなり、外観・端末・接続先と鍵・ツールの並びのうち最後の ものへ行くには手前の3つを通り過ぎる必要がありました。接続先リストと同じ形の4つのタブに しました。タブは2つずつの2段に固定していましたが、幅に余裕があっても2段になって しまうため、収まるだけ横に並べ、入らないときだけ折り返すようにしました。)

  • The connection list settings are four tabs now, two to a row. The four kinds were stacked one under another, which ran the dialog well past the bottom of the screen: the one being worked on was never wholly in view, and finding the right one meant scrolling through the other three. Putting them behind a single selector had been worse — three of the four were invisible and there was no telling what was set up. The tabs say both at once: which one is open, and which of the others still have nowhere to keep their connections (a dot on the tab). (接続先リストの設定を、2段のタブにしました。 4つの種別を縦に並べていたため、 ダイアログが画面の下へ大きくはみ出し、作業中の種別が一度に収まらず、目的のものを 探すのに他の3つを通り過ぎる必要がありました。かといって1つの選択欄にまとめたときは もっと悪く、4つのうち3つが見えず、何が設定済みかも分かりませんでした。タブなら 両方が一目で分かります。いまどれを開いているかと、残りのどれがまだ未設定か(タブに 点が付きます)。)

  • Fixed: reordering the tool list stopped the whole sidebar from working. Dragging a tool into a new place left Settings, System information and Open a shell unresponsive. They were not covered by anything and had not been replaced — the screen had simply stopped redrawing. The list was built by a <template v-for> holding a button and a conditional rule, with the key on the template rather than on the elements: one turn of the loop produced two nodes or one, so once the order changed Vue could no longer match them up. It threw inside its own patch ("insertBefore: parameter 1 is not of type Node"), abandoned the update, and never drew anything again. The error did not reach window.onerror, which is why it survived my checks. The list is now one element per item, keyed on the element, and the rule between the two groups is drawn by the item it belongs to. (不具合修正:ツールの並び替えをすると、サイドバー全体が動かなくなっていました。 項目をドラッグして並び替えると、「設定」「システム情報」「シェルを開く」が押しても 反応しなくなります。何かに覆われていたのでも、ボタンが作り直されていたのでもなく、 画面の更新そのものが止まっていました。一覧は <template v-for> の中にボタンと 条件付きの区切り線を入れ、キーを template にだけ付けていました。繰り返し1回が 2要素になったり1要素になったりするため、順序が変わると Vue が要素を対応づけられず、 自身の更新処理の中で例外を投げて(insertBefore: parameter 1 is not of type Node) 更新を放棄していました。この例外は window.onerror に届かないため、私の検査を すり抜けていました。一覧を1項目1要素・要素にキーを付ける形に改め、区切り線は その上の項目が引くようにしました。)

  • Fixed: "act as root" did nothing for a saved SSH connection. SCP offers the SSH connections because it signs in the same way — but opening one still went through SFTP, which has no shell behind it and cannot put a command through sudo. So the tick was there, the password was taken, and /root came back unreadable anyway. Which protocol the screen is set to is now sent with every request, and SCP opens over SCP even when the connection was saved as SSH. (不具合修正:保存済みの SSH 接続先では「root として操作する」が効いていませんでした。 SCP はサインインの仕方が同じなので SSH の接続先を候補に出しますが、開くときは SFTP を 使っていました。SFTP の背後にはシェルが無く、sudo を通せません。そのため切り替えは あるのにパスワードも受け取られ、それでも /root は読めないままでした。画面がどの手順に 設定されているかを毎回の要求に添えるようにし、SSH として保存された接続先でも SCP は SCP で開きます。)

  • The file list works like a file manager now. It was a table with three buttons on every row, and a folder could only be entered by hitting its name exactly. Now: a row is selected by clicking it, a folder opens on double-click, and the right button offers what can be done with that row — open, download, copy the path, rename, change permissions, delete. The columns sort (folders stay above files whichever one is used), ".." walks up from inside the list, the owner is shown, and there is a refresh button. (ファイルの一覧を、ファイル管理ソフトらしい操作にしました。 これまでは各行に ボタンが3つ並ぶ表で、フォルダーは名前を正確に狙わないと開けませんでした。行は クリックで選択、フォルダーはダブルクリックで開き、右クリックでその行にできること (開く・自分のファイルへ取り込む・パスをコピー・改名・権限を変更・削除)が出ます。列は 並べ替えられ(どの列で並べてもフォルダーが上に残ります)、一覧の中から「..」で上の階層へ 戻れ、所有者の列と再読み込みのボタンを足しました。)

  • The master key prompt says how long the key lasts. Where the key is asked for, under the box: it is held until the browser is closed, for that session and nothing more. Somebody typing a master key deserves to know what they are agreeing to before they type it, not after. (マスターキーを尋ねる場所に、有効期間を明記しました。 入力欄の下に「このマスター キーはブラウザーを閉じるまで有効です(このセッションのみ有効)」と出します。マスター キーを打つ人は、打つ前に何に同意しているのかを知っているべきです。)

  • Fixed: the saved list could be chosen from without the master key, and then would not connect. A name and an address in RegiBase are not secret and read back without the key; the password and the private key are, and do not. So a locked list looked complete — every server there, selectable — and failed at the moment of use, with the key asked for only once the connection had already been attempted. Offering a choice that cannot be carried out is worse than offering none. Choosing the list now asks for the key in the place the list would have been — "Please enter the RegiBase master key." — on both the SSH screen and file transfer. (不具合修正:マスターキーが無くても保存済みの一覧から選べてしまい、選んでも接続でき ませんでした。 RegiBase では名前やアドレスは秘密の項目ではないため鍵が無くても読め、 パスワードや秘密鍵は読めません。そのため一覧は完全に見え、どれでも選べるのに、使う 段になって失敗し、鍵を尋ねられるのは接続を試みたあとでした。実行できない選択肢を 差し出すのは、何も出さないより悪いことです。リストを選んだ時点で、一覧があった場所に 「RegiBaseのマスターキーを入力して下さい」と出して先に尋ねるようにしました。SSH 画面と ファイル転送の両方です。)

  • SCP offers the SSH connections again. Splitting the lists by type was right for storage but wrong for SCP at the screen: SCP signs in over SSH with the same account and the same key, so every connection saved as SSH is one SCP can open. With the lists split, sixteen saved servers became an empty list on a screen that could have opened any of them. SCP's list now offers the SSH connections as well. Where they are stored has not widened — that is still one collection per type. (SCP のリストに SSH の接続先を再び出すようにしました。 種別でリストを分けたのは 保存先としては正しかったのですが、画面の SCP については誤りでした。SCP は SSH に 同じアカウント・同じ鍵でサインインするため、SSH として保存した接続先はすべて SCP で 開けます。リストを分けた結果、16件が保存されているのに一覧が空になり、開ける相手が 1件も出なくなっていました。SCP の一覧には SSH の接続先も出します。保存先が広がった わけではありません ― 保存先は従来どおり種別ごとに1つです。)

  • The settings name the groups the way they were asked to be named. They had been relabelled "SSH", "SCP", "FTP and SFTP" and "Mail (SMTP, IMAP, POP3)" — wording of my own, in which Telnet had quietly disappeared. They read "SSH / Telnet", "SCP", "FTP / SFTP" and "SMTP / IMAP / POP3" again. (設定の群の名前を、ご指示どおりの括り方に戻しました。 私が勝手に「SSH」「SCP」 「FTP and SFTP」「Mail (SMTP, IMAP, POP3)」と付け替えており、Telnet が消えて いました。「SSH/Telnet」「SCP」「FTP/SFTP」「SMTP/IMAP/POP3」に戻しました。)

  • The SSH screen no longer repeats its own name. It carried a heading reading "SSH and Telnet" directly under the menu entry that already says so — the only screen of the thirteen to do it, and the same words twice in the same glance. The heading is gone, and the styling that existed only for it went with it. (SSH の画面で、自分の名前を繰り返すのをやめました。 左のメニューに「SSH・Telnet」と 書いてあるすぐ下に、同じ「SSH・Telnet」という見出しを置いていました。13画面のうちこの 画面だけで、同じ言葉が一目の中に二度あることになります。見出しを外し、その見出しの ためだけにあった体裁指定も併せて削除しました。)

  • FTP and SCP no longer share one list. The storage was split by type, but the screen was not: one list offered every saved FTP, SFTP, SCP and SSH connection together, so a server saved for FTP was offered to SCP — a machine that cannot answer the protocol being asked for — and the fact that the two are kept in different collections was hidden. The type is chosen on the screen now, and it picks the list as well as the protocol: SCP shows the SCP list, FTP and SFTP share theirs, SSH keeps its own. (FTP と SCP でリストを分けました。 保存先は種別ごとに分けたのに、画面のリストを 分けていませんでした。1つのリストに FTP・SFTP・SCP・SSH の保存済み接続先がすべて並び、 FTP 用に保存した相手が SCP の候補として出ていました。その機器は求められた手順に 応えられません。別のコレクションに保存されているという事実も隠れていました。画面で種別を 選ぶようにし、種別が手順とリストの両方を決める形にしました。SCP は SCP の一覧、 FTP と SFTP は共通の一覧、SSH は SSH の一覧です。)

  • Picking from the list no longer connects on its own. On the file transfer screen, choosing a saved connection opened it there and then, while the SSH screen waited for the button that says so. Both wait now. (リストから選んだだけでは接続しないようにしました。 ファイル転送の画面では保存済みを 選んだ瞬間に接続していましたが、SSH 画面はボタンを押すまで待ちます。両方とも待つように 揃えました。)

  • The menu entry is "File transfer" again. It had been renamed to the list of protocols it speaks, which is not what it is for. (メニューの項目名を「ファイル転送」に戻しました。 扱える手順の名前を並べた表記に なっていましたが、それはこの画面が何をするためのものかを表していません。)

  • The file transfer screen now works the way the SSH screen does. The two do the same job — name a server, then use it — and asked for it differently: the SSH screen put the choice first and everything under it in one card, while file transfer had the typing in one card and the choice in another below it, with the two buttons in the opposite order and the opposite default. Nothing was wrong with either on its own; having both was. File transfer now follows the SSH screen exactly — the same choice, in the same order, in one card, with the chosen connection shown back the same way. (ファイル転送の画面を、SSH 画面と同じ操作に揃えました。 どちらも「相手を決めて 使う」という同じ仕事なのに、訊き方が違っていました。SSH 画面は選択を先頭に置いて その下にすべてを1枚で収めていたのに対し、ファイル転送は手入力が上のカード、選択が下の カードで、ボタンの並び順も既定も逆でした。片方だけを見れば問題はなく、両方ある ことが問題でした。ファイル転送を SSH 画面に合わせ、同じ選択・同じ順序・1枚のカードに し、選んだ接続先の表示の仕方も揃えました。)

  • Where connections are kept now shows every kind at once. Separating the storage by kind arrived with a selector in front of it: one kind was on screen and the other three were not, so there was no way to see at a glance what was set up and what was not — and only ever one list picker, whatever you were looking for. All four are listed together now, each with its own collection and its own field assignment, each saved on its own. (接続先の保存先設定で、4つの種別すべてを同時に表示するようにしました。 種別ごとに 保存先を分ける機能を入れた際、その前に種別を選ぶ欄を置いてしまいました。画面に出るのは 1種別だけで残り3つは見えず、何が設定済みで何が未設定かが一目で分からないうえ、 リスト選択も常に1つしかありませんでした。SSH・SCP・FTP/SFTP・メールを並べて表示し、 それぞれに保存先コレクションと項目の割り当てを持たせ、個別に保存できるようにしました。)

  • The same choice of "type it in" or "pick from the list" on both screens. The file transfer screen had a card for typing and a card for the saved list sitting one above the other, both asking for the same server with nothing to say which one was in use. It is one card with the same two buttons the SSH screen has. (ファイル転送の画面にも、SSH と同じ「手入力する/リストから選ぶ」の切り替えを付けました。 これまでは手入力のカードと保存済みのカードが上下に並び、どちらを使っているのかが 分からないまま、同じ相手を二重に尋ねていました。1枚にまとめ、SSH 画面と同じ2つのボタンで 切り替えます。)

  • Fixed: merging the SSH screen hid the fields you type into. Naming the server became one list, and "type an address below" was the first entry in it. Choosing a saved connection then made the typing fields disappear with nothing on screen to say they could come back — so they read as deleted. It was worst for Telnet, which is only ever typed in and never saved, and so looked unreachable. How the server is named is now a choice shown as one: Enter it by hand or Pick from the list, always visible, always switchable. The typed details are kept when you go to the list and back. (不具合修正:SSH 画面を1枚にまとめた際、手入力欄が隠れていました。 相手の指定を 1つの一覧にまとめ、「下に直接入力する」をその先頭の項目にしていました。保存済みを選ぶと 手入力欄が消え、戻れることが画面のどこにも書かれていないため、消したようにしか 見えませんでした。とくに Telnet は手入力しかなく保存もしないため、接続できないように 見えていました。相手の指定方法を選択として画面に出す形に改めます。「手入力する」と 「リストから選ぶ」を常に表示し、いつでも切り替えられます。リストへ行って戻っても、 入力済みの内容は保たれます。)

  • A folder only root can read can now be opened over SCP. There was no way to elevate at all: the listing, and every rename, delete and permission change with it, ran as the account that signed in, so a directory belonging to root came back empty — indistinguishable from an empty one. Ticking Act as root asks for the sudo password on the spot, uses it for that request, and keeps it nowhere: not in the settings, not in RegiBase, not on disk. It is held in the open page and nothing else, so reloading asks again. That is deliberate — a password that is never written down cannot be read out of a stolen database.

What it does not cover: downloading and uploading a file. SCP carries the file itself over the very input the password would have to be typed into, so the two cannot share a connection. Those two actions stay unelevated and the far end refuses them as it always did, rather than appearing to work and quietly returning nothing. (root しか読めないフォルダーを SCP で開けるようにしました。 これまでは昇格する 手段が一切なく、一覧も改名・削除・権限変更もサインインした利用者のまま実行されて いました。root 所有のディレクトリは空として返り、本当に空の場合と見分けがつきません でした。「root として操作する」を入れるとその場で sudo のパスワードを尋ね、その リクエストにだけ使い、どこにも保存しません。設定にも RegiBase にもディスクにも 残さず、開いている画面の中だけで保持するため、再読み込みすれば再び尋ねます。書き残さ ないものは、データベースを盗まれても読み出せないという考えによるものです。

対象外:ファイルのダウンロードとアップロード。 SCP はファイル本体を、パスワードを 打ち込むべき入力そのものに流すため、両立できません。この2つは昇格せず、これまでどおり 接続先に拒否されます。動いたように見せて黙って何も返さないことはしません。)

  • "Create one for me" now builds a collection shaped for the kind you asked for. It made one shape for everything, so a mailbox list arrived with a private key field and an SSH list with a sender address — fields nobody would ever fill in, on every record. There is a template per kind now: SSH and SCP carry the key fields, FTP and SFTP carry the password ones, and mail carries what a mailbox actually needs. The type field offers only the types that collection is for, rather than all seven. The templates belong to NetBase and are handed to RegiBase outright, so nothing had to be added to RegiBase to make them possible, and a collection built by hand still works exactly as well — which field means what is decided by the assignment, not by these names. (「作ってもらう」が、選んだ種別に合った形のコレクションを作るようになりました。 これまではどの種別でも同じ1つの形を作っていたため、メールの一覧に秘密鍵の欄が、 SSH の一覧に差出人アドレスの欄が付いてきました。誰も埋めない欄が全レコードに並ぶ 状態です。種別ごとのテンプレートを用意しました。SSH と SCP は鍵の欄を、FTP・SFTP は パスワードの欄を、メールはメールボックスに実際に要るものだけを持ちます。種別の欄も、 そのコレクションが対象とする種別だけを選択肢に出します。テンプレートは NetBase 側に あり、RegiBase へはそのまま渡すだけなので、RegiBase に何かを追加する必要はありません。 手作りのコレクションがこれまでどおり使えることも変わりません。どの項目が何にあたるかは、 これらの名前ではなく割り当てが決めるためです。)

  • Each kind of connection now has its own place in RegiBase. One collection held everything, which was wrong the moment the kinds diverged: SCP reuses the SSH credentials, but FTP is a different account on a different machine, and both were being read out of the same list. SSH, SCP, FTP-and-SFTP and mail each name their own collection and their own field assignment now. Naming the same collection for several kinds is expressly allowed — SSH and SCP usually are the same list — so separating them costs nothing to anyone who does not need it. Nothing moves on upgrade: a kind that has not been given a collection of its own still reads the single one chosen before, so the list is unchanged until you separate something deliberately. (接続先の種別ごとに、RegiBase の保存先を分けられるようにしました。 これまでは すべてを1つのコレクションに入れており、種別が食い違った時点で破綻していました。SCP は SSH の情報をそのまま使いますが、FTP は別の機器の別アカウントです。それを同じ一覧から 読んでいました。SSH・SCP・FTP/SFTP・メールが、それぞれ自分のコレクションと項目の割り当てを 持ちます。複数の種別に同じコレクションを指定して構いません ― SSH と SCP はたいてい同じ 一覧です。更新しただけでは何も動きません。自分のコレクションをまだ持たない種別は、 これまでの単一の設定をそのまま読むため、意図して分けるまで一覧は変わりません。)

  • A record that does not say what it is, is no longer assumed to be SSH. It is taken as whatever the collection it was read from is for. The old assumption put FTP servers in the SSH list. (種別が書かれていないレコードを、SSH と決めつけるのをやめました。 読み出した コレクションが何のためのものかで判断します。これまではFTPの機器がSSHの一覧に並んでいました。)

  • SFTP is no longer offered as a separate kind to create. It is not a kind of FTP but a subsystem of SSH, and since a saved SSH connection is opened for files over SFTP already, offering it separately only asked people to decide something that made no difference. FTP keeps its encryption choice, which is the question that was actually being asked. A connection saved as SFTP before this still works and still shows its own kind. (SFTP を、新規作成の種別としては出さないようにしました。 SFTP は FTP の一種では なく SSH の副系統です。保存済みの SSH 接続先はすでに SFTP でファイルを開くため、別々に 出しても違いの無い選択を迫るだけでした。FTP には暗号化の選択肢が残っており、実際に 訊きたかったのはそちらです。これまでに SFTP として保存した接続先はそのまま動き、 種別も SFTP のまま表示されます。)

  • The speed test now lets you choose what to measure against. It measured against M-Lab and used Cloudflare only when M-Lab could not be reached at all, and there was no way to ask for the other one. A network that reaches one may not reach the other — M-Lab needs an outbound WebSocket — and two independent readings of the same line are worth more than one, so both are now offered: Nearest (automatic), M-Lab or Cloudflare. Naming one means it, rather than quietly measuring against the other: asking for M-Lab where no M-Lab server answers now says so instead of handing back Cloudflare's figure under M-Lab's name. (速度テストで、どこと測るかを選べるようにしました。 これまでは M-Lab で測り、 M-Lab へまったく届かないときだけ Cloudflare に落ちる作りで、もう一方を指定する 手段がありませんでした。片方に届く回線がもう片方に届くとは限らず(M-Lab は外向きの WebSocket を必要とします)、同じ回線を独立した2つの物差しで測れるほうが確かなため、 「最も近いところ(自動)」「M-Lab」「Cloudflare」から選べるようにしました。名指しした 場合はその指定を守ります。M-Lab を指定して1台も応答しないときは、Cloudflare の数値を M-Lab の名前で返すことはせず、届かなかったとお伝えします。)

  • Fixed: the speed test reported someone else's latency. When measuring against M-Lab, the throughput came from the M-Lab server but the latency and jitter shown beside it were timed against speed.cloudflare.com — a different network, a different distance. The two numbers on screen described two different paths. Latency is now timed against the very machine the throughput came from. (不具合修正:速度テストの遅延が、別の相手のものになっていました。 M-Lab で測る とき、速度は M-Lab のサーバーから得ているのに、その横に並ぶ遅延とジッターは speed.cloudflare.com に対して計っていました。相手も距離も違うため、画面の数値が 別々の経路の話になっていました。遅延も、速度を測ったのと同じ機器に対して計るよう にしました。)

  • A saved SSH connection can now be browsed for files. Sixteen servers were saved here as SSH connections, and the file transfer panel offered none of them: it asked for a connection of type SFTP or SCP, and refused the rest with "this connection is not a file transfer connection". But it is the same machine, the same account and the same key — the only difference is which subsystem is asked for after the sign-in. An SSH connection now opens over SFTP, and over SCP for a server that offers a shell but no SFTP subsystem. (保存済みの SSH 接続先で、そのままファイルを開けるようにしました。 ここには SSH 接続先が16件保存されていましたが、ファイル転送の一覧には1件も出ませんでした。 種別が SFTP か SCP のものしか受け付けず、それ以外は「転送用の接続ではない」と撥ねて いたためです。しかし同じ機器・同じアカウント・同じ鍵で、違うのはサインイン後にどの 副系統を頼むかだけです。SSH の接続先は SFTP で開き、SFTP を持たない相手には SCP で 開くようにしました。)

  • The speed test now asks which server is nearest, instead of being told. M-Lab returns its candidates in an order worked out from the address the request came from — a guess about geography, and here it put Seoul ahead of Tokyo. A measurement to the wrong country reads as a slow line rather than a distant one. The nearest few are now asked directly, one timed connection each, and the quickest is used: it costs about half a second and replaces a guess with a measurement. On this server it moved the reading from 187 Mbps down to 427. (速度テストの計測先を、言われるままではなく実測で選ぶようにしました。 M-Lab は 接続元のアドレスから推定した順で候補を返しますが、ここではソウルが東京より前に 来ていました。国の違う相手を測ると、遠いのではなく回線が遅いように見えます。上位数件へ 実際に接続して所要時間を測り、最も速いものを使います。かかるのは約0.5秒で、推測を実測に 置き換えられます。当サーバーでは下りの読みが 187 Mbps から 427 Mbps になりました。)

  • SCP can now actually be used. The protocol was added, tested and reachable by the server — and by nothing else: the file transfer panel offered only SFTP and FTP, the list of saved connections filtered SCP out, and every label still read "FTP and SFTP". An SCP connection could be saved and never opened. It is now offered wherever SFTP is. (SCP が実際に使えるようになりました。 実装と試験は済み、サーバー側では動いて いましたが、画面のどこからも選べませんでした。転送画面の選択肢は SFTP と FTP だけ、保存済み接続先の絞り込みは SCP を落とし、名称もすべて「FTP・SFTP」のまま。 保存はできても開けない状態でした。SFTP が使えるところでは SCP も選べます。)

  • "Which field means what" is now "Field assignment", and the master key is named for what it belongs to. A heading that describes a question rather than naming a thing makes the reader do the work twice. "Master key" alone does not say whose. (「どの項目が何にあたるか」を「項目の割り当て」に、「マスターキー」を 「RegiBase参照のためのマスターキー」に改めました。 問いかけを見出しにすると、 読む側が二度手間になります。「マスターキー」だけでは何の鍵か分かりません。)

  • The administration settings read better in Japanese. "Devices — read the device list" had been translated as "device survey", which is not what it does; the two buttons that set every tool at once read as fragments; and the wording for scanning was inconsistent with the rest of the app. (管理設定の日本語を整えました。 Devices — read the device list が 「接続機器調査」と訳されていましたが、実際は一覧を見るだけです。全ツールを一括で 切り替える2つのボタンは「すべて全利用者」のように語として立っておらず、探索まわりの 用語も他の画面と揃っていませんでした。)

  • The settings dialog is four groups, not eleven headings. It had grown by addition until the terminal's font, the shell's language and the shell's log sat in three separate places with the connection list wedged between them, and the word "language" appeared twice at the same size meaning two different things — the app's language and the shell's. The subjects are now Appearance and language, Terminal (shell and SSH), Connections and keys and The list of tools, each with its own title and a rule between them, and the settings inside a group sit a level below it. A setting an administrator changes for the whole server now says so on its label, instead of looking like one of the reader's own. (設定画面を、見出し11個の一本道から4つの束に改めました。 追加を重ねた結果、 端末のフォント・シェルの言語・シェルのログ記録が3か所に分かれ、その間に接続先 リストが挟まる並びになっていました。「言語」という同じ語が同じ大きさで2か所に出て、 一方はアプリの言語、もう一方はシェルの言語を指していました。外観と言語/ 端末(シェルとSSH)/接続先と鍵/ツールの並びの4束にまとめ、束ごとに見出しと 区切りを置き、その中の項目は一段下げました。管理者がサーバー全体に対して変える 設定には、その旨をラベルに明示しました。)

  • NetBase now carries its own copy of phpseclib 3, under its own name. Nextcloud ships only phpseclib 2, which cannot read an Ed25519 or an ECDSA private key and has no SCP at all. Until now the newer library arrived by accident — another app happened to bundle it — so whether a modern key worked depended on whether an unrelated app was installed, and where it was not the failure was quiet.

Carrying a second copy under the same name would only have moved the problem: one library can answer to a name in a running PHP process, so whichever app loaded first would decide which copy both apps used, and NetBase would be running on a version it never shipped or tested. The copy therefore lives under OCA\NetBase\Vendor\phpseclib3, which collides with nothing. NetBase always uses the library it ships; every other app keeps using its own, untouched. Nothing needs registering — Nextcloud's own autoloader finds it. (phpseclib 3 を、NetBase 専用の名前で同梱するようにしました。 Nextcloud 本体は phpseclib 2 のみで、Ed25519 や ECDSA の秘密鍵を読めず、SCP も持って いません。これまで新しい版は「別のアプリがたまたま同梱していた」ために使えて いただけで、無関係なアプリの有無で鍵が使えるかどうかが決まっていました。

同じ名前のまま2つ目を積んでも問題は移るだけです。1つの PHP 処理の中で1つの 名前に応えられるライブラリは1つだけで、先に読み込まれたアプリの版が両方の アプリに使われます。つまり NetBase は、同梱も試験もしていない版で動くことに なります。そこで OCA\NetBase\Vendor\phpseclib3 という NetBase 専用の名前に 改めました。衝突が起きないため、NetBase は常に自分が同梱した版で動き、他の アプリは自分の版のまま一切影響を受けません。登録の仕組みも不要で、Nextcloud 本体の読み込み器がそのまま見つけます。)

  • SCP has been added to the saved connections. A server can offer SSH without the SFTP subsystem, and on that machine SCP is the only way to move a file. SCP itself copies a named file and nothing else — no listing, no rename, no mkdir — so those are supplied over the shell the SSH connection already provides, with every argument quoted. It is offered only where this server has a library that can speak it. (接続の種類に SCP を追加しました。 SFTP サブシステムを持たない SSH サーバーでは、 SCP だけがファイルを送る手段になります。SCP 自体は指定したファイルを複製するだけで、 一覧・改名・作成の機能を持たないため、それらは SSH のシェル越しに補っています(引数は すべて安全に括ります)。対応ライブラリがあるサーバーでのみ選択肢に現れます。)
  • Telnet is no longer a box of its own. It was a second card asking for the same host and port as the one above it. The connection form now carries a type beside the address — SSH or Telnet — and the fields only SSH needs appear only for SSH. (Telnet の専用枠をやめました。 すぐ上の欄と同じホストとポートを二度尋ねる作りに なっていました。接続フォームにアドレスと並べて種別(SSH/Telnet)を置き、SSH でしか 使わない欄は SSH のときだけ出します。)
  • Words that explained nothing have been replaced, and the settings screen reads as separate subjects again: a rule between the headings, and the long grey paragraphs cut to what is worth saying. (意味の伝わらない言葉を入れ替え、設定画面を読めるように整えました。「サーバーを 調べる」→「SSHサーバーを調べる」、「サーバーを操作する」→「サーバーに接続する」、 「接続先の保存先」→「SSH/Telnet/FTP/SFTP/SCPの接続先リスト」、「端末の記録」→ 「シェルのログ記録」。節の間に区切り線を入れ、説明文も刈り込みました。)
  • A measurement now runs for at least two seconds. A small size could end an upload while the first megabytes were still sitting in the socket buffer, which reported the speed of the buffer rather than of the line — an upload came out faster than the download. The size still caps the traffic, but only once the measurement has had long enough to mean anything. (測定は最低2秒は行うようにしました。 小さいサイズを選ぶと、最初の数MBが送信バッファに 入った時点で上りが終わってしまい、回線ではなくバッファの速さを報告していました(上りが 下りより速く出る原因です)。サイズによる通信量の上限は残しつつ、意味のある長さに達する までは打ち切らないようにしました。)

  • Saved connections have moved into RegiBase, and the ones stored before this release are gone. Please write down anything you need before updating: host, user name and settings can be typed again, but a password or a private key kept only in NetBase cannot be recovered afterwards. Nothing is migrated, deliberately — the old store could be read back by the server that held it, and carrying those secrets across would have carried that weakness with them. (保存済みの接続先は RegiBase へ移行し、これまでに保存した接続先は消えます。 更新前に必要な情報の控えをお取りください。ホスト・ユーザー名・設定は入力し直せますが、 NetBase にしか無いパスワードや秘密鍵は後から取り出せません。移行は意図的に行いません。 従来の保存方式はサーバー自身が読み戻せる形だったため、そのまま持ち越すと同じ弱さを 持ち込むことになるからです。)

  • Why the move. A password in RegiBase is sealed in the browser with a key derived from a master key that is stored nowhere — not in the database, not in the configuration, not on disk. NetBase could not offer that on its own: its own store was encrypted with the instance secret, which sits on the same server as the data it protects. A stolen database is now a database of ciphertext. (移行の理由。RegiBase のパスワードはブラウザ側で封印され、その鍵はどこにも保存され ないマスターキーから導かれます。データベースにも設定にもディスクにも残りません。NetBase 単独ではこれを提供できませんでした。従来はインスタンス秘密鍵で暗号化しており、それは 守るべきデータと同じサーバー上にあるからです。データベースを盗まれても、そこにあるのは 暗号文だけになります。)
  • RegiBase is now required in order to save a connection. Without it, a server can still be reached by typing its details each time; nothing is stored, and nothing needs to be. (接続先の保存には RegiBase が必要になりました。 無い場合でも、毎回入力すれば接続は できます。その場合は何も保存されません。)
  • The collection is yours, and so is its shape. NetBase does not demand a collection built to its own design: you say which field is the host, which is the password, and so on, and it adapts. A ready-made collection can be created for you if you would rather not build one. A password can only be matched to a field RegiBase itself treats as secret, so it can never be written in the clear. A public key is deliberately not treated as secret. (コレクションの構成は自由です。 NetBase 専用の形を強いません。どの項目がホストで、 どれがパスワードかを指定すれば、それに合わせます。用意されたコレクションを自動で作る こともできます。パスワードは RegiBase 側で秘匿とされた項目にしか割り当てられないため、 平文で書かれることはありません。公開鍵は意図的に秘匿として扱いません。)
  • The master key is asked for once per browser session and is forgotten when that session ends. It is never written down on the server. (マスターキーはブラウザのセッションごとに一度だけ尋ね、セッションが切れると失われます。 サーバー側に書き残すことはありません。)

  • The old store for saved connections has been dropped. 0.6.0 moved connections into RegiBase and said that what was kept in NetBase itself would not come with them; the table is now gone, and so are the passwords it still held. That is the point of it: they were sealed with a secret kept on the same server as the data. (接続先の旧保存領域を削除しました。 0.6.0 で接続先は RegiBase へ移り、NetBase 側に 残っていたものは引き継がないとお伝えしていました。その表を削除し、そこに残っていた パスワードも消えました。これが目的です。旧方式はデータと同じサーバーにある鍵で 暗号化されており、守りとして弱いものでした。)

  • Errors now speak the language you read. Everything a tool refuses to do — a bad host, a file that is not there, a server that would send your password in the clear — was written in English wherever it was raised. It is now turned into your own language at the one place every error passes through, and the messages that carry a value (a path, a host, a byte count) were rewritten so the value has a place to go. All twenty languages. (エラーの文言を、お使いの言語で表示するようにしました。 不正なホスト名、存在しない ファイル、パスワードが平文で送られる状況など、これまで英語のまま出ていた文言を、 すべてのエラーが通る一箇所で翻訳するようにしました。パス・ホスト名・バイト数などの値を 含む文言は、値を差し込める形に書き直しています。20言語すべてに対応。)
  • The free-domain search now says what it found, not how it asked. Hovering a result used to show "HTTP 404", which is the registry's answer, not yours. It now says what that means — free, taken, or why it could not be decided — and which registry or name server answered, with the technical reason kept on a second line. (空きドメイン検索の説明を、意味のある文に変えました。 結果にカーソルを合わせると 「HTTP 404」と出ていましたが、これはレジストリ側の答えであって、お客様への答えでは ありません。空きか、登録済みか、なぜ判定できなかったかを述べ、どのレジストリ/ ネームサーバーが答えたかも示します。技術的な理由は2行目に残しています。)

  • The internet speed test now measures against M-Lab — the measurement behind Google's own speed test — instead of pulling from one fixed endpoint. It asks where the nearest measurement server is and uses that, which is the difference between measuring your line and measuring the distance to somebody else's CDN. Nothing has to be installed: the protocol is a WebSocket, and NetBase speaks it directly. Where M-Lab cannot be reached at all — an instance with no way out, or a blocked connection — the previous HTTP test still stands behind it, so the tool never simply stops working. (回線速度の測定を M-Lab に切り替えました。 Google 自身の速度テストの実体であり、 固定の配信元から引くのではなく、最寄りの測定サーバーを尋ねてそこで測ります。これは 「自分の回線を測る」ことと「他社CDNまでの距離を測る」ことの違いです。追加の導入物は 不要で、通信方式(WebSocket)を NetBase が自前で話します。M-Lab に到達できない環境 (外部へ出られない・接続が塞がれている)では、従来のHTTP測定に自動で切り替わるため、 機能が止まることはありません。)

  • The reading is presented as a guide, because that is what it is. The figure moves with the server that happened to be nearest and with the time of day, so the panel now names the server it measured against and says so plainly. (測定値は「目安」として示すようにしました。 そのときの最寄りサーバーや時間帯に よって値は動きます。どのサーバーで測ったかを画面に表示し、目安である旨も明記します。)
  • The size setting is now a ceiling on the traffic a run may use. A measurement that runs for ten seconds on a fast line moves a great deal of data; on a metered connection that matters, so the chosen size stops it early. (サイズ指定は「1回の測定で使う通信量の上限」になりました。 高速回線で10秒測ると 相応の通信量を使います。従量制の回線では無視できないため、指定したサイズで打ち切ります。)

  • The RegiBase master key is asked for when a connection is used, not in the settings. It never belonged on a settings screen: a settings screen is where things are kept, and this is the one thing that must not be. It is now asked for at the moment a saved connection is needed, held for that browser session alone, and forgotten when the session ends. It is written nowhere — not in the settings, not in the database, not on disk. (RegiBase のマスターキーは、設定画面ではなく接続を使う時点で尋ねるようにしました。 設定画面は「保存する場所」であり、マスターキーは保存してはならない唯一のものです。 保存済み接続先が必要になった時点で入力していただき、そのブラウザのセッションの間だけ 保持し、セッションが切れれば失われます。設定にもデータベースにもディスクにも書きません。)

  • The terminal log is a switch now, and it keeps 5,000 steps by default. It was a number that started at zero, which read like a setting somebody had forgotten to fill in. Recording is still off until it is switched on. (端末の記録はチェック式にし、既定で5,000行を保持するようにしました。 従来は0から 始まる数値欄で、設定し忘れのようにも見えました。記録が既定で無効である点は変わりません。)

Added

  • A terminal can now keep a record of what was done in it. A shell on this server and an SSH window are the two places in NetBase where something is done rather than merely looked at, and until now nothing was left afterwards to say what that was. One step is a line you typed together with the answer that came back — the answer arrives after the Return that asked for it, so the two are paired the way you would read them, not the way they arrive. The colours and cursor moves a terminal threads through its output are taken out, so what is kept reads as words. Two limits hold it down: a number of steps per window, oldest dropped first, and a number of days counted from a window's most recent step — so a window still in use is never cut short, and one finished with goes as a whole. What is kept belongs to the account that did the work: nobody else can read it, and it can be thrown away one session at a time or all at once. Nothing is recorded until you ask for it: the number of steps starts at zero, and zero means keep none. (【端末の記録】シェルとSSHの画面で行った操作を残せるようにしました。1ステップは、入力した 1行と、それに返ってきた答えです。答えはEnterの後に届くため、読むときの並びで対応付けます。 出力に混ざる色や画面制御の符号は取り除き、文字として読める形で保存します。上限は2つで、 画面ごとの「残すステップ数」(古いものから削除)と、「残す日数」(その画面の最後の記録から 数えます)。使用中の画面が途中で切られることはなく、日数を過ぎたものはセッションごと消えます。 記録はその操作を行ったアカウントだけのもので、他の方は読めません。セッション単位でも一括でも 削除できます。初期値は「保存しない」です(ステップ数0=何も記録しません)。)

Fixed

  • The "Run command" button beside a saved SSH connection did nothing. It was bound to a method that did not exist — and Vue does nothing at all for a click bound to a method it has not got, so the button looked dead while the console beside it worked perfectly. The same was true of the "Run" button for the ready-made questions. Both now run the line and show the output, the exit status and how long it took. (保存済み SSH 接続先の「コマンド実行」ボタンが無反応でした。 存在しない メソッドに結び付けられており、Vue は未定義のメソッドへの @click では何もしません。 そのため、隣の対話コンソールは正常に動くのにボタンだけが死んでいました。よくある質問を 選ぶ「実行」ボタンも同じ状態でした。どちらも実行し、出力・終了状態・所要時間を表示します。)

  • After an upload, the file list did not refresh. The file arrived — it was the listing that stayed behind. Upload read the folder back from the path box rather than from the listing itself, and the box is bound to whatever the reader may have typed into it, so it drifts from what is on screen. Every other action on that panel already read it back from the listing. (アップロードの後、ファイル一覧が更新されませんでした。 ファイル自体は届いており、 一覧だけが古いままでした。アップロード処理が、一覧そのものではなくパス入力欄を基準に 読み直していたためです。入力欄は利用者が打ち込んだ値と結ばれているため、表示中の位置から ずれます。同じ画面の他の操作は、いずれも一覧を基準に読み直していました。)

  • whois told you nothing about a .jp domain. Every .jp is answered by JPRS, which does not write Label: value the way most registries do. It writes [Label] and then spaces — no colon — and for an organisational domain it puts an index letter in front: a. [ドメイン名]. The Japanese labels had been in the patterns from the start, but every one of them demanded a colon that JPRS never sends, so they could not match: .com returned six or seven details and .jp returned none. Both of JPRS's shapes are now read, an organisational domain's expiry is taken from inside its status line (there is no separate one), and a label JPRS sends with nothing after it no longer becomes an empty field. The ordinary shape is untouched, and a test holds both to the registries' own wording.

One line of that fix was wrong in a way worth naming. A whois server answers over a socket and ends its lines with CRLF; the pattern for name servers was anchored as if they ended with LF, so it matched nothing and a .jp domain came back with its dates but no name servers. The test did not catch it because sample text typed into a test file ends with LF alone — it passed while the real thing failed. The samples are sent through the same line endings a socket would use now, and the test fails without the fix. (whois が .jp ドメインの情報を何も返していませんでした。 .jp はすべて JPRS が 応答しますが、JPRS は多くのレジストリのような ラベル: 値 ではなく、[ラベル] の 後にコロンを置かず空白だけで値を書きます。組織用ドメインでは a. [ドメイン名] の ように索引文字が前に付きます。日本語ラベルは当初から規則に書かれていたものの、 JPRS が送らないコロンを要求していたため一致しようがなく、.com では6〜7項目 取れるのに .jp では0項目でした。JPRS の2つの書式を読めるようにし、組織用ドメインに 固有の有効期限行が無い点は状態欄から取り、値の無いラベルを空項目にしないようにしました。 従来の書式には手を触れていません。レジストリの実際の応答を固定データとした検査を添えて います。

なお、その修正のうち1行が誤っており、書き残す価値があります。whois サーバーはソケットで 応答し、行末は CRLF です。ところがネームサーバの規則は行末を LF だけと見なしていたため、 実物では1件も一致しませんでした。日付は取れるのにネームサーバだけが空、という形です。 検査ファイルに書いた文字列の行末は LF のみなので、検査は合格したまま実物が失敗して いました。固定データをソケットと同じ行末に通すよう改め、修正前の規則では 0 件・修正後は 2 件になることを確かめたうえで残しています。)

  • Choosing Telnet left the port at 22. Two methods in the same object had the same name. That is not an error in JavaScript — the second simply replaces the first — so picking Telnet ran the file-transfer panel's version, which set a port on a different form, and the port beside the Telnet choice never moved off 22. (Telnet を選んでもポートが22のままでした。 同じオブジェクトの中に同名の メソッドが2つあり、JavaScript では後の定義が前を置き換えます。そのため Telnet を 選ぶとファイル転送側の処理が走り、別の入力欄のポートを書き換えていました。)

  • Entering the master key did nothing. Saving where connections are kept needs the key, so it was asked for — and then the save was never retried. The key was accepted, the dialog closed, and the setting was unchanged, which from the outside is indistinguishable from the key being refused. What was being attempted is now remembered and carried out once the key is given. The settings dialog also has a box to type the key into: it had the code for one but no field, so the only way to be asked was to press Save and fail. (マスターキーを入れても設定が保存されませんでした。 保存には鍵が必要なので 尋ねてはいたものの、解錠後に保存をやり直していませんでした。鍵は通り、画面は 閉じ、設定は変わらない——外から見れば鍵を拒否されたのと区別がつきません。何をしよう としていたかを覚えておき、鍵が入った時点で実行するようにしました。あわせて設定画面 に鍵の入力欄を置きました(処理は書かれていたのに入力欄が無く、保存して失敗する以外に 尋ねられる道がありませんでした)。)

  • The master key prompt appeared behind the dialog that asked for it. Both were on the same stacking layer, and where two things share a layer the one written later in the page wins. (マスターキーの入力画面が、それを求めた画面の後ろに隠れていました。 同じ 重なりの層に置かれており、層が同じときは後に書かれた方が上になるためです。)

  • Japanese: the settings dialog said something the English never did. Its subtitle had been translated as "switches NetBase's appearance only", but the dialog holds the shell log, the connection list, the SSH key folder and the tool order, and the English says nothing about appearance. Checked across all twenty languages; Japanese was the only one that had drifted. Also corrected in Japanese: "follow the server" read as an order rather than a choice, the tool list called the tools "features" in its body and "tools" in its heading, and folder, browser and sign-in were each spelled two ways. (日本語:設定画面に、英語原文にないことが書かれていました。 副題が「NetBase の見た目だけを切り替えます」と訳されていましたが、この画面にはシェルのログ記録・ 接続先リスト・SSH鍵の置き場所・ツールの並びまで含まれ、英語原文は見た目とは 言っていません。20言語すべてを確認し、ずれていたのは日本語だけでした。あわせて、 「サーバーに従う」という硬い言い回し、見出しは「ツール」なのに本文は「機能」と なっていた不統一、フォルダ/フォルダー・ブラウザ/ブラウザーなどの表記ゆれも 直しました。)

  • SCP: a file's permissions were read too small, and a name with a space in it lost its first word. SCP has no directory listing of its own, so one is read by running ls -la over the shell. Two mistakes were in taking that reply apart: the letters r, w and x already carry their own weight and were being shifted by their position as well, so 0640 came back as 0600; and the timestamp was matched by a greedy pattern that swallowed the beginning of a name like "report 2026.txt". Both are now covered by a test that needs no server. (SCP で、ファイルの権限が実際より小さく読まれ、空白を含む名前が先頭の語を 失っていました。 SCP には一覧の機能が無いため ls -la の出力を解いていますが、 その解き方に2つの誤りがありました。r・w・x は既に桁の重みを持っているのに位置で さらに桁をずらしていたため 0640 が 0600 になり、また時刻の照合が貪欲だったため 「report 2026.txt」のような名前の先頭が飲み込まれていました。どちらもサーバー 不要の検査で押さえました。)

  • Number boxes were as wide as the panel for a value of one to four digits, and the list that matches a collection's fields ran down the dialog one row at a time. Both are now the size of what goes in them. (数値の入力欄が、1〜4桁の値に対して画面幅いっぱいになっていた点と、コレクションの 項目の割り当てが1行ずつ縦に延びていた点を整えました。)

Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
Signatureu4YuDe0Ctfsa9IWS9vdkfHadhPKEjLMSP8qR9lKmCpVuFasm4a1RRfov3XKLVQVw4HhZd6N1PhBE7kZHCx4U8iNDdplTdgmLtggoeTDOlKXQ9KxcASYWOUO7AvH82+g+eQ88P0NqDzA4vQe2jshvIoh+rwHQgrwzWCCaw3uzcNJAXO9UyZ7AK5VS6MfIhugS/Ili2ceTbOs/VcdE2uKuvWLTiKm46qPdcHVK0CT5BuELmVnAmYTpXWO19MRvGm++/Dc8tsOyHEpJlOJJKz7P+friJBJ9bfZvq2rxSJ6K/nLmKJKQnWtrjcPSo/w3sgmb36CpjBLelv2xZEu5quhXs7lUGCd32nsiVOFy1Ppz7PtBeiqBZXQ2aS+JSwZYQ3R3iF84mvf6wLw1UOZxGZRR5I4kvAZZixkvFVAfnYSIIsEjHpnnMKNByNn9pZk+fwDjbaMFWiacoM0BFG1esfQS8U10jAy0xrM/jizBQrOMZunrJr/PugGw51eJ4vK5iVf4USd5YWniwxHnsgwfPKcuJhgtn2BokeC1iFC/gcXLjbSgQjCfJ0q5E3FCYOE/a/h1H3SJZZ50Grx3eybHus1IiC/21eQU6H8e2eAXupDwaVyCpyKxjNOX+y2nOyNSxIQUbDxRL5wzq0tX0B5d6N+O/hhh/FZqyqvvSjkGNUxkhWA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.5.0
Release Details
UpdatedSept. 10, 2026, 2:33 p.m.
Changelog

Added

  • Clear the ARP table (optional, opt-in). A "Clear the ARP table" button in the device list forgets every remembered address so a refresh shows only what answers now. NetBase runs unprivileged and cannot flush the kernel table itself, so the button stays off until an administrator installs a tiny root helper and a one-line sudoers rule — a "?" beside the button shows the exact script and steps (for bare metal/VM and for Docker/Podman with NET_ADMIN), and NetBase probes the helper with a harmless "--check" and switches the button on by itself once it works. It is clearly marked optional, with a note not to install it if the security trade-off (granting the web user one root command) is unwelcome. (【任意・オプトイン】ARPテーブルのクリア機能を追加。機器一覧の「ARPテーブルをクリア」で 記憶したアドレスを忘れ、更新時に今応答する機器だけを表示します。NetBaseは無権限のため自身では 消せず、管理者が小さなrootヘルパーとsudoers設定を入れるまでボタンは無効。横の「?」から スクリプトと手順(物理/仮想・Docker/Podman=NET_ADMIN)を表示し、NetBaseは無害な「--check」で 検出して自動的にボタンを有効化します。任意である旨と、セキュリティ上のトレードオフに納得 できない場合は設置しない注意も明記。)
  • Every tool now shows when it is working. A slim bar slides across the top of the panel while any request is in flight, and the button you pressed shows a spinner — so an operation with no progress count of its own (Whois, TLS, DNS, mail, SSH, NTP…) no longer looks like nothing is happening. (各機能の「実行中」表示を追加。リクエスト中はパネル上部に細いバーが流れ、押したボタンに スピナーが出ます。進捗の数値を持たない操作(Whois・TLS・DNS・メール・SSH・NTPなど)でも 実行中だと分かります。)

  • You can now give a device your own name. Type a name in a device's properties and it is shown everywhere in place of the discovered one; if a name was picked up from the network, that reported name stays visible in the properties as well. The name you give is kept against the device, so it holds even when the device offers no name of its own. (自分で機器名前をつけることが出来るようにしました。プロパティであなたが記入した名称を 優先的に表示し、もしアナウンス名が取得できている場合は、プロパティで確認できます。)

  • The properties now say how a name was obtained — NetBIOS, mDNS or reverse DNS — so a reported name is never mistaken for a NetBIOS name when it came from somewhere else. (プロパティに、その名前をどの方式で取得したか(NetBIOS/mDNS/逆引きDNS)を表示する ようにしました。取得元が分かるので、mDNSや逆引きの名前をNetBIOS名と取り違えません。)
  • In Docker or Nextcloud-AIO, the Requirements screen now shows a ready-to-use setup recipe. An app cannot bundle PHP extensions, but the official Nextcloud image runs any script placed in /docker-entrypoint-hooks.d/before-starting/ on every start. When NetBase detects it is in a container, it lists exactly what the base image is missing (verified on the official image: the sockets extension, and chromium/iperf3/iproute2) as a one-off script that survives image updates without a rebuild. (Docker・Nextcloud-AIO で動作している場合、「必要要件」画面にそのまま使える導入手順を 表示するようにしました。アプリはPHP拡張を同梱できませんが、公式Nextcloudイメージは /docker-entrypoint-hooks.d/before-starting/ に置いたスクリプトを起動のたびに実行します。 コンテナ内と判定すると、ベースイメージに不足している要素(公式イメージで確認:sockets拡張と chromium/iperf3/iproute2)を、再ビルド不要で更新後も維持される一度きりのスクリプトとして 提示します。)

  • A device that has been switched off is no longer shown as online. Its entry lingers in the kernel neighbour table as STALE, keeping its old MAC, and /proc/net/arp cannot tell that apart from a device that is here now — so a powered-off machine kept a green dot. NetBase now reads the neighbour state (via ip neigh) and, without walking the whole range, confirms the addresses on file with a quick TCP touch: a host that is here answers a connection (open or refused), one that is gone stays silent and is marked offline. On a re-scan the online/offline column is current. (Announce-only devices — an Amazon Echo, say — are still kept online by what they broadcast over mDNS/SSDP in a normal scan.) (電源を切った機器がオンライン表示のままになる不具合を修正。カーネルの近隣テーブルに STALE として古いMACのまま残り、/proc/net/arp では在席中の機器と区別できないため、緑点が 残っていた。近隣の状態を ip neigh で読み、全アドレス走査はせずに、記録済みアドレスを 短いTCP接触で確認するようにした(在席なら接続に応答=開放でも拒否でも、不在なら無応答で オフライン判定)。再スキャンでオンライン/オフラインが最新になる。※mDNS/SSDPで自ら告知する 機器(Amazon Echo等)は、通常スキャンでは告知により在席のまま維持される。)

Removed

  • Device tags have been removed. They could not be seen in the list and served little purpose; identify a device with the name you give it (above) instead. Notes are kept. (機器のタグを廃止しました。一覧に表示されず用途が薄かったためで、機器の識別は上記の 「自分でつけた名前」で行ってください。メモは残しています。)

Changed

  • The free-domain search can hide the taken and the could-not-check results. Two slide switches (the same control the device list uses) sit over the results: one for taken (×) names, one for the ones that could not be checked (?). Undetermined names are hidden by default, so the list leads with what is free or clearly taken. A taken name is shown greyed out; an unchecked one is greyed and struck through once, with the reason in its hover tooltip — no English text on the row. (空きドメイン検索で、使用済みと調査不能のドメインを隠せるようにしました。結果の上に スライドスイッチを2つ(接続機器調査と同じ部品)置き、使用済み(×)用と調査不能(?)用を 用意。調査不能は初期状態で非表示にし、空きと使用済みが先に見えるようにしています。使用済みは グレー表示、調査不能はグレー+一重打ち消し線で示し、理由はマウスオーバーで表示します(行に 英語は出しません)。)
  • The free-domain search shows its results in columns on a wide screen. The list flows into as many columns as the width allows (roughly one per 300px), so a wide window shows two or three side by side and a narrow one stays a single list. Each ending's name always shows in full; the diagnostic note beside it is what gives way when space is tight. (空きドメイン検索の結果を、画面幅に余裕があるとき複数列で表示するようにしました。幅に応じて 自動で2〜3列になり、狭いときは1列に戻ります。語尾(ドメイン名)は常に全部表示し、横の理由 表示のほうを省略します。)
  • Every column in a device's address lines is now aligned. A device with several addresses lays them out in fixed columns so the eye can read down them: the network badge leads in a fixed-width slot (sized for 副ネットワーク9 / another network), then the IP and MAC at their known maxima (18 and 17 characters), then the full vendor name in a column half the width of the OUI database's longest name (54 characters, wrapping if longer, never truncated), then the open ports — which, because everything before them is fixed-width, begin at the same column on every row. Several addresses on one device are separated by a thin dotted rule. (機器のアドレス行の各列を整列させました。複数アドレスを持つ機器では、ネットワークバッジ (副ネットワーク9/別ネットワークに合わせた固定幅)→IP・MAC(最大幅18・17文字)→ベンダー名 (OUI辞書の最長の約半分=54文字の固定幅・超過は折返し・省略なし)→開放ポート、の順に固定幅で 並べ、ポートの先頭が全行で同じ位置から始まるようにしました。複数アドレスは細い点線で区切ります。)
  • The device scan is now two buttons: "Refresh devices" and "Port scan". "Refresh devices" re-checks which devices are online without scanning ports, so it is fast; "Port scan" is the fuller sweep that also reads each device's open ports. The per-device "Scan every port" search stays in a device's own properties, now labelled as being for that one device. (機器スキャンを「機器一覧を更新」と「ポートスキャン」の2つのボタンに分けました。 「機器一覧を更新」はポートを調べずオンライン/オフラインを再判定する高速版、「ポートスキャン」は 各機器の開放ポートも調べる本格版です。機器ごとの全ポート調査はプロパティ内に残し、「この機器の」と 明示しました。)
  • "Online only" is now an on/off switch instead of a button that swapped its own label. (「オンラインのみ」を、ラベルが入れ替わるボタンから、オン/オフのスライドスイッチにしました。)
  • The scan progress is clearer. Each step is named as it runs (reading the ARP table, searching for devices, asking for names, multicast discovery, checking ports, reverse DNS), the multicast step shows a "listening" state while it waits instead of appearing frozen, and the bar no longer reads as going backwards between steps. (スキャンの進捗表示を分かりやすくしました。実行中の工程名(ARPテーブル読み込み/機器を探索/ 名前を問い合わせ/マルチキャスト探索/ポート確認/逆引きDNS)を表示し、マルチキャストの受信待ちを 「探索中」と示して固まって見えないようにし、工程が変わるたびにバーが戻って見えないようにしました。)
  • "What to scan" lists "The ARP table only" first, before "The whole network". (「スキャン対象」の並びを、「ARPテーブルのみ」を先頭にしました。)
  • A device's note is now shown in the list and is searchable. It used to be visible only in the properties; now it appears under the device (one line, full text on hover) and the filter box matches it too, so a note like "2F printer" is actually useful for finding and telling devices apart. (機器のメモを一覧にも表示し、検索対象にしました。これまではプロパティでしか見えません でしたが、機器の下に1行(全文はホバー)で表示し、絞り込み欄でも一致するようにしたので、 「2Fの複合機」のようなメモが機器の識別・検索に役立ちます。)

Fixed

  • Mail: STARTTLS mode never sends the password in the clear. If a server does not offer STARTTLS (or a network strips it), the sign-in, mailbox and send-test now stop with a clear message instead of falling through to plaintext AUTH. (メール:STARTTLSモードで平文送信しないよう修正。サーバーがSTARTTLSを提供しない(または 経路で除去された)場合、平文認証に進まず明確なメッセージで停止します。)
  • Mail: the SPF DNS-lookup count no longer double-counts includes. A top-level include: was counted twice, so a healthy record with a few includes could be reported as over the 10-lookup limit; it now counts each lookup once. (メール:SPFのDNSルックアップ数がincludeを二重計上する不具合を修正。正常な記録が上限超過と 誤表示されることがありました。)
  • HTTP check: an unreachable host is reported as unreachable. A host that refuses the connection or times out was shown as a reachable server missing every security header; it now says it could not connect. A redirect's target host is validated too, so a page cannot bounce the fetch onto an internal address. (HTTP確認:到達不能なホストを「稼働中でヘッダ欠落」と誤表示せず「接続できませんでした」と 表示。リダイレクト先ホストも検証し、内部アドレスへ飛ばされないようにしました。)
  • A registered .jp/.co.jp domain is no longer reported as free. JPRS answers with a "Domain Information" block whose fields are letter-prefixed ("a. [Domain Name]", "p. [Name Server]"), which the registered-check did not recognise, so a plainly taken name (google.co.jp) — and a suspended/pending- delete one (granz.co.jp) — came back undecided and was then labelled likely-free. A [Domain Name] / [State] block now means taken; a bare "No match!!" still means free. (登録済みの .jp/.co.jp が「空き」と表示される不具合を修正。JPRSは項目名が 「a. [Domain Name]」のように接頭辞付きで返るため登録判定に一致せず、明らかに使用中の名前 (google.co.jp)や停止中の名前(granz.co.jp)が「空きの可能性」になっていた。[Domain Name]/ [State] があれば使用中、「No match!!」なら空き、と正しく判定するようにした。)
  • A domain the registry throttled or refused is no longer shown as "likely free". In a gTLD sweep the shared RDAP servers — Identity Digital most of all, which serves 100+ endings from one host and rate-limits this server outright — answer HTTP 429/403; those were marked △ "likely free (registry unreachable)", which is misleadingly optimistic. They are now honestly "?" ("could not check"), and a group that answers 429/403 is dropped at once so the rest of its endings are marked quickly instead of each waiting out a doomed retry. (レジストリに制限・拒否された結果を「空きの可能性」と表示しない。gTLD一括照会では 共有RDAP(特に Identity Digital。1台で100以上の語尾を担当し当サーバーを丸ごと制限)が HTTP 429/403 を返すが、これを△「空きの可能性」と楽観的に表示していた。正直に「?(判定不能/ 確認できず)」とし、429/403 を返したグループは即座に打ち切って残りを素早く判定するようにした。)
  • Port scan no longer fails on a /16 (or larger) network. The host-count limit that guards the address-by-address sweep was also applied in ARP-table mode, where there is no sweep — only the neighbour table (at most ~1024 entries) is touched — so "Port scan" on a common /16 LAN (65 536 addresses) was rejected with "Scan target exceeds the configured limit". The limit is now enforced only when a sweep will actually run. (/16 以上のネットワークでポートスキャンが失敗する不具合を修正。総当たり探索を守る ホスト数上限を、探索を行わないARPテーブルのみモード(近傍テーブル≒最大1024件しか触らない) にも適用していたため、よくある /16 のLAN(65,536アドレス)で「上限超過」で弾かれていた。 実際に総当たりを行うときだけ上限を判定するようにした。)
  • A port-scan step no longer logs "Undefined variable $wait". In ScanService::stepPorts() the port budget was computed from $wait before the variable was assigned, which logged a PHP warning on every step and, reading null as 0.1, over-computed the budget nine-fold. $wait is now set before use. (ポートスキャンの各ステップで Undefined variable $wait を記録する不具合を修正。 stepPorts() で $wait を代入前に予算計算に使っていたため毎回PHP警告が出て、nullを0.1と 読み予算が9倍に膨らんでいた。使用前に定義するよう是正。)
  • A free domain in the availability search no longer shows a raw "HTTP 404". The diagnostic reason (e.g. RDAP's 404 that means "not registered") was printed next to the ○ mark; it is now kept only as the mark's tooltip, and the visible reason is shown only for the uncertain cases (△ / ?). (空きドメイン検索で、空き(○)の行に内部的な「HTTP 404」が出る不具合を修正。判定理由 (例:未登録を意味するRDAPの404)は○の吹き出しにのみ残し、本文の理由表示は不確定 (△/?)の場合だけに限定した。)
  • A slow or unreachable device no longer floods the admin log with errors. The device-view proxy logged every connection timeout, TLS failure or refused connection at error level; these are ordinary outcomes for a network tool and are now logged at info (the browser is still shown a problem page). (応答の遅い・届かない機器で管理ログがエラーで溢れる問題を解消。機器ビューのプロキシが 接続タイムアウト・TLS失敗・接続拒否をすべてエラー級で記録していたが、ネットワークツールに とっては通常の結果のため info 級に格下げした(ブラウザには従来どおり問題ページを表示)。)
  • The DNS tool no longer fails a whole lookup when CAA is included. CAA was passed to dns_get_record() as the wire type number 257, which PHP 8 rejects with a ValueError that the @ operator does not suppress, so a query with CAA ticked errored out entirely. CAA now uses the DNS_CAA constant. (DNS調査でCAAを含めると照会全体がエラーになる不具合を修正。CAAを dns_get_record() に 型番号257で渡していたため、PHP8が ValueError を投げ(@でも抑制されない)、CAA選択時に 照会全体が落ちていた。CAAを DNS_CAA 定数に修正した。)
  • A notice no longer lingers on another tab or over a new scan. The message bar was shared across the whole app and never cleared, so "scan finished" sat on the Whois and DNS tabs and over the next scan's progress, making a running scan look finished. A notice is now cleared when you switch tabs and when a new scan starts, and an informational notice fades on its own; the progress bar shows only while a scan is running. (通知が別タブや次のスキャンに残る不具合を修正。メッセージ帯が全画面共有で消えないため、 「調査完了」がWhoisやDNSタブ、次のスキャンの進捗の上に残り、実行中なのに完了に見えていた。 タブ切替時とスキャン開始時に通知を消し、情報通知は自動で消えるようにした。進捗バーはスキャン中のみ 表示する。)
  • The same address no longer appears on more than one row. A device whose MAC changes (a privacy address that rotates, or a lease handed to another machine) left a second row for the same IP. Duplicate rows are now folded into one, both as they are found and once at the start of every scan. (同じIPアドレスが一覧に複数行出る不具合を修正。MACが変わる機器(ランダム化MACの変更や、 リースが別機に渡った場合)で同一IPの行が二重にできていた。重複行は、検出時とスキャン開始時の 両方で1行に統合するようにした。)
  • A name no longer follows an address to a different device. When an address was handed to another machine (an old PC's lease going to an Alexa), the old device's name could show on the new one. A name, type and ports are now kept only for the same device, never carried to a different MAC that later holds the same address. (アドレスが別の機器に再割り当てされたとき、旧機器の名前が新機器に残る不具合を修正。 旧PCのリースがAlexaに渡った等の場合に旧名が表示されていた。名前・種別・ポートは同一機器に対して のみ保持し、同じアドレスを後から持つ別MACには引き継がないようにした。)
  • "This server" is shown on every one of the server's own addresses. When one network card holds several addresses (here 10.0.0.1 and 192.168.1.250 on the same card), keying them by the shared MAC let only the last one keep the badge. Each of the server's addresses is now its own row and each is marked. (サーバー自身の各アドレスすべてに「このサーバー」を表示するようにした。1枚のNICが複数の アドレスを持つ場合(同一NICの10.0.0.1と192.168.1.250)、共有MACをキーにしていたため最後の 1つしかバッジが付かなかった。各アドレスを独立した行にし、それぞれに印を付けるようにした。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturelPTEAnhj7+HoibIAnwDsMclSagD0MDrqgF9vdsmoXXV5e0aqJmUD5JigIZhWldG0XpWMehslTEs0X6fEecgZ8ZvMq8hDwPGqTzmYnrtSv0k8BjnsBFn6CMcIfFO53fnhMpLkMEmaDOpf34Z6iUONdxZQ2pMVlv95tXOPfB0utEMXS2VmKsk8w73JRgbtCc07L/QT+3b1xbZkr9p0mCo6nXjpONKOpF3GzbxHC5cxhnqRpZ7wprKgTSS1cZFJdSAWEM78LEhZT47gast39F28c1Er5DdHZrvfQjOlKTVqUTH93iUearoZDygnr+tBaN6UKjiSpWsXEVIU9VkuL6ndZG2FB9BBZshoEkFsBWAaVHF7GPxYkMNxGuH0CZ7C11ykpl4cAo3d2rwqyjEu7skeBeCwikHIJ1b7upC8QyBKmPPdwVViT1AJd0SO7FvxSH8dofcxEaT+qb9spOZU3cNwFxsABNpgiUthEVCk8jf7ddeQCPncRXZhaHdxEU+QnfdxOl+5Vbipb2p//1F0hHh+S3zDipWrfYDMvATLIgk85DMs2vg2nfZgH5fJGJX37O2hqop4yL6YTRP0nNvSXMh8Ewa12yv/acvRsHgsCe0doffORCUCZomIrJ2pEYbfJbWPRqHqoeiucg3am0yy0GThx/6QJAORtNUjIug4VIu7hUk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.3
Release Details
UpdatedSept. 9, 2026, 2:33 a.m.
Changelog

Fixed

  • A device page whose text is written by its own script no longer loses that text in a device window. Some router and printer pages (an ASUS router's WAN page among them) build their labels in JavaScript, from strings that contain a small piece of HTML with target="_top" inside. The rewrite that keeps such links inside the window was reaching into those strings and breaking the script, so the page came up with its text missing. That rewrite is now applied only to real HTML attributes and never inside a <script>, so the page's own script runs untouched and all of its text appears. (機器ページが自身のスクリプトで文言を書き込む場合に、機器ウィンドウで文言が消えていた不具合を 修正。ASUS ルーターの WAN ページ等は JavaScript の文字列内に target="_top" を含む HTML 断片を 持ち、フレーム内に留めるための書き換えがその文字列を壊してスクリプトが止まっていた。書き換えを 「本物の HTML 属性」だけに限定し <script> 内には一切触れないようにしたため、ページのスクリプトが そのまま動き、全ての文言が表示される。)
  • The device-window "Screenshot" now shows its result inside the window. A device window is drawn above the app's own message bar, so a "Saved as…" note — or the reason a picture could not be taken — was hidden behind the very window it was about, and looked like nothing had happened. The message now appears in the window itself. (機器ウィンドウの「Screenshot」の結果を、ウィンドウ内に表示するようにした。機器ウィンドウは アプリのメッセージ帯より前面に出るため、「保存しました」や失敗理由が対象ウィンドウの裏に隠れ、 何も起きていないように見えていた。メッセージをウィンドウ内に出すようにした。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureCGlNtuFVUIdzr/sX2lsWkCHmSdABdw3JCqtB7iYca1e/+lv8y5d5NaUI9WeKpS3L9eIJCcdt3cY23p7xp5cwhMPOapNu4+Qbvj5mWpf81mX3nrRPQstI4wH3HBU5b6J1ZeDaT/ZZaNTPNvIPv06ZwsDvNc0tI+UxZIcg/aAYkRBqcQMlAGp4TkfL0qbX9y3TQaXi9SccEpHa/JybfYAHf0ulBy2Yhwo/5HyX50yK+MyqHByC+5RJW17ozqZNH3/4zsYTZ0mZGF1Rd/gcloVMHlDA8hKD6LQ/fvkzftC12vbYy0CzDXI2+QwbU2kyEiVg5WH1hzUrL9KL/At2cpHZThNHQUHTOusfZgNpVw8+jq3Sr3sXr9qYZkTwjzuz8v5WEal6tEs0NrJF6OLviMflHuWCTf2qKd15AvAaugrl7PWWVoxwhMDfbQjICYEhrPpRUA+sMwVFrUvCSZre1Lx9Y3hlEbSNsy93urbKNhZjHrm6IWmIJALeegMK/cA/VN7XF8gXDgeWqlg0P64xRwnc4JqhFpMfyyrJi2xHvrXkZgCv2xAQoaH6lF9CrQH1hF9c6drQAMFJS/JXbcn1qWZqFi1Qh3zRfTYUc4Tfwf8MPGuFBg1hLykWnGFegEQu2x8XIdxtL3unPvBDaN6EzH0NjqhExcf1fIXrwzpe6j8km7A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.2
Release Details
UpdatedSept. 8, 2026, 1:35 p.m.
Changelog

Fixed

  • The internet speed test now works at the 100 MB setting. speed.cloudflare.com rejects a download request for 100,000,000 bytes or more with HTTP 403, so "100 MB" (100 × 1,000,000) fetched nothing and no number appeared. The download for that endpoint is now capped just below the limit (99,999,999 bytes), and a refused download is reported as an error instead of a silent zero. The 5/25/50 MB settings were unaffected. (インターネット速度テストの「100 MB」で数字が出なかった不具合を修正した。 speed.cloudflare.com は 100,000,000 バイト以上のダウンロード要求を HTTP 403 で拒否する ため、100 MB ちょうど(100×1,000,000)が失敗していた。当該エンドポイントのダウンロード量を 上限直下(99,999,999 バイト)に丸め、拒否された場合は 0 ではなくエラー表示にした。 5/25/50 MB は影響なし。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturekEXnJTS5yF9JFTbS5dkAR9aY74MLA244QyEN/MOVQm1phUJ66HKiFUErT8Nw8T/T78ILbJ9T7ZXjGZssJIl+Vp8SR6RimT2jwj6Hq3goj/kKeucT0I31CQB1Zwbp/esXp6FIMp5yNvremlHo5ro1IXV7+/HdJP4eBBhSSqUnp8UOwg+cjs7UHyQQxcLx1pFzyEAHhKgQ45qDxkt1UrctLI2AyY0rRcE+927Gvy5GphRat3RcDIxl6yKabk1wgDU3HM6T9IO5XSjJF2TlT0fihZokAfVosrRQT5JoeCDaqxT3+3kS3w14D+opKWlUdOY+ttGNSb4g5b/RMg4Leeb+Wtrln73bcMHVqN+6VWoY3iQr535E5ZYJEeIpjfsK6iiuRLpmJ+TPKBc99gOEF10HKJwr/j1KMqPoW0NpbgQ747lNedg1I24P8zvKs/DaUzy0pOMpwfGTpwomc2rkSCyGPP1Bnl1RrLkO47xRq8IV4//nFNSqe2gV3lY1UQskYx3qlzMvMEl0717wAoAW8ppYD/M0nLRa9zg9yW6E74WLwjp596pktS3Z/QoGOrkENqNpDNEbw/+cwrmM2OWCGqG6X3N/Z3eIqkIKc8Mv1vloZ+ZardB/WtqG5Mnzbh/0PP2Lx/jzWKzd6+nUDiz4Miw5YCfs6st8eWGIJF5rlI6I4Mo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.1
Release Details
UpdatedSept. 8, 2026, 12:49 p.m.
Changelog

Fixed

  • Fixed a bug where clicking outside a dialog while entering data made the dialog disappear and discarded what you had typed. It affected the data-entry dialogs — the SSH sign-in dialog, the connection editor (new/edit a saved SSH/SFTP/FTP/SMTP connection, including its password and private key), and the Settings dialog: clicking the surrounding area no longer closes them, so nothing you were entering is lost; close them with the ✕, Cancel or Save controls. View-only and picker dialogs (system information, the file picker, the page/text preview and the device panel) keep closing on an outside click, since they hold nothing you can lose. (データ入力中にダイアログの外側をクリックすると、ダイアログが消えて入力が失われてしまうバグを 修正した。対象=SSHサインイン・接続の新規/編集(SSH/SFTP/FTP/SMTP。パスワードや秘密鍵を含む)・ 設定の各ダイアログ。外側クリックでは閉じなくなり、✕・キャンセル・保存で閉じる。閲覧/選択系 (システム情報・ファイル選択・プレビュー・機器パネル)は失う入力がないため従来どおり。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureQ0qPD64JJXCwInnuCvlIN5GZbTdRW/s+Xntj90lJXH/gicwlTuYMeowlFBMvj2uVe7Fd8dErh2sGZJv/6ds7PPdzCFJY7GIeofIuHZHw0laPn26Yy/jgiCB+FPJYbyGNHsMdFyz5pbZ4JtxjMkiFPz7sGsOzbNZH28QnCjLaO7z7RFvU5L95YCREIMEQzhL4aVRgI5oBTWnSb7X5bVoXB0ky5/0YwFBxa4nY3JGy4cn86oTttRhBc/tCJ7mSsPDy1Peas5St7E0bpNiJa0iI/Fap6pgNgm3Gp7YibSyFviW5ygeLOIOqMZWoevakZC/UP+xDEF0sWubaGtz8kz4pATsflz0TfALApYEqvLVNG/cEyZHw3ZiOXwazXWBv1Y1Z21ZMl2pAE4t6LQs2zG6BYO/a465rI6wONcCRV2ODHyZdl3f+qBVdKbtCDZ+0Rzqyj6soDqjWxfMtQG4OYhhFtBrWAZ3GL50Jf6C9zPajzql2hf5SNbvYI93TL/QjLZrmrJFdky0a4EKqRnaL/PQ+DgKX/7ji6zrX3zHaWia/9YJc7tQI3/DEEYMr50YhGClzkBQVkgjtGisHMBYsWs0/SxO/RIHoUi0t7N4Tt3Woh4a9UKJSmm2wOj2pY/u8wyr/3OIr57ogYkYQNz5o+a7O7re7VQeAWt9yCqZgI2DiwwU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.0
Release Details
UpdatedSept. 6, 2026, 4:30 p.m.
Changelog

Everything since 0.3.11, which is what the customer sites have been running, gathered into one release.

Added

  • A terminal, not a line at a time. SSH had a box you typed one command into and a box the answer came back in, which is enough for uptime and no use for anything that draws a screen. There is now a real terminal: top, vi and less run in it, colours and cursor movement work, and it is resized by dragging the window. PHP cannot hold a connection open between requests, so the server keeps the session and streams it — what is typed goes up one batch at a time, and what comes back arrives as it is written.
  • A sign-in dialog for SSH. Host, port, account, and either a password or a private key chosen from your own Nextcloud files. A default folder for keys can be set in Settings, so the picker opens where the keys are kept instead of at the top of the file tree.
  • A device on another network, sharing the same wire, is found and stays found. A camera left on its factory 192.168.1.120, plugged into a 10.0.0.0/16 network, was invisible: it is off the server's subnet, so nothing routes to it, and it cannot answer a question either — its reply goes to a gateway it does not have. What it does do is announce itself to the multicast group, which is carried at the level of the wire and arrives whatever the addresses say. NetBase now listens to that group continuously, in the background, so such a device appears without a scan and is not marked offline for failing to answer something it was never able to answer. Its details carry the one command that would put this server on its network, ready to copy, and a button that opens a terminal on this server to run it.
  • A device can be asked about itself, from its details: every one of its 65,535 ports, and which of the open ones actually serve a web page. The port scan opens 64 connections at a time rather than the sweep's 512, because older hardware drops the flood and is missed at 512; the web search asks each port for its front page rather than guessing from the number, and a port that answers becomes a link in the list from then on.
  • A right-click on a device offers the ways into it — HTTP, HTTPS, FTP, SSH and Telnet — built from the ports it actually has open, with Properties at the bottom for the panel a left-click opens. Nothing speculative is listed: a port that is not open is not offered, and a web page only for a port NetBase knows serves one or has been shown to.
  • SSH and Telnet open in a window, the same movable, resizable frame a device's web page uses, so several can stand open beside the device list at once. Port 22 and port 23 in the device details open one instead of changing tab — which used to close the device and leave nowhere to go back to.
  • Telnet can now be used, not merely diagnosed. It had a probe that read the banner and warned about the plain text, and nothing that would let anyone type at a switch. The window signs in, sends a line, reads the answer and hangs up — a connection per line, because PHP cannot hold one open between requests, which is also why nothing is left open on the device in between. Option negotiation is refused throughout, so the device keeps talking without our pretending to be a terminal.
  • Zoom, fit and a screenshot in every device window, and a row of buttons where a sentence explaining the window used to be: the device's own address, the page's text, and the clipboard into whichever field the cursor is in.
  • Copy buttons throughout the device details — the whole record, or any one row of it.
  • Five depths for the port check (15, 106, 1,024, the high ports 1025 to 65535, and all 65,535) and five scan speeds, with the wait for a port to answer now a setting of its own, since that is the number which decides how long a scan takes. The high ports are where a maker hides an interface it would rather not advertise, such as the 22401 on a router here.

Changed

  • The device list is two lines to a column — name over address, MAC over vendor, type over open ports — so a row holds what used to need sideways scrolling. A device that has told nobody its name is written - no name - rather than left blank.
  • What to scan is chosen first and by name — the whole network, or the ARP table only — and the options beneath are arranged as the steps they are.
  • The SSH page says which boxes belong together. It does two jobs — looking at a server, which needs nothing, and working on one, which needs an account — and ran them together in five cards with three separate host fields. Each job now has a heading, Telnet sits with the work rather than the looking, and the host typed at the top can be carried down to the sign-in with a click, so the two are visibly the same machine.
  • The wait for a port to answer says what it buys. The seconds alone meant nothing without having thought about what a silent port costs, and the "up to N per device" beside them was arithmetic nobody asked for. Now: quick and misses slow devices, the usual, or finds the slowest and takes longest.
  • Plainer words throughout: the ARP table is called the ARP table, the scan speed is a rate rather than an adjective, and links are made only for ports NetBase can vouch for.

Fixed

Ten of these came out of two cameras — five from one at a customer site, five from one here — and every one of the ten was found the same way: by signing in and then actually using the pages behind the sign-in, rather than checking that the front page appeared and calling the window done. None of them is particular to a camera; they would meet any device whose own web interface is built the same way, and the second camera was still finding them after the first five were fixed.

  • Device pages that would not open. A device's redirect was arriving as a 200 with a Location nobody acted on, which left Brother, Canon, Kyocera and Buffalo hardware showing nothing; four ASUS routers stepped outside their window through history.pushState; and a Buffalo LinkStation reloaded itself once a second for ever. Found by opening every device with port 80 or 443 across the nine sites — 73 of them — of which 32 displayed at the start.
  • A relative address that climbs with .. no longer eats the ticket. On the device the climb stops at the root; under the proxy the root is several segments deeper, so ../script/inputrestriction.js from /login.html arrived with the ticket gone and came back 403. The camera's login page then ran without a file it needed and threw input_edit_restriction is not defined. Climbs are now resolved against the page and clamped where the device would clamp them — in the markup, in scripts, and in what document.write writes.
  • A POST with no content type is no longer thrown away. Device firmware routinely omits it, and PHP will not parse a body it has not been told the shape of; taking it as a form left the device receiving an empty request. The camera's sign-in went 403. If nothing was parsed and something was sent, what was sent is what goes on.
  • Nothing but a page gets the shim. A device also answers with things read by script rather than shown — the camera's sign-in returns an empty body with a 200 — and putting our script into that made the answer unrecognisable to the page that asked for it.
  • The cookies a device's own page sets now reach the device. They live on this server's name alongside Nextcloud's, so Nextcloud's are left out by name; the session above all never leaves this origin.
  • The request says which of the device's own pages it came from. Nextcloud sends no-referrer on everything, which is right for Nextcloud and wrong here: this camera turns away every page after the sign-in without it. The window now says same-origin — the referer never leaves this server — and the proxy rewrites it into the device's own address before sending it on.
  • A device window no longer sends its cookies twice. Two sets have to go to the device — the session it grants at the sign-in, which the server holds and the browser never sees, and whatever its own page set in the browser — and they were being sent as two separate Cookie: lines. A browser never does that, and a small device web server reads only one of the two. This camera read the second, which has no session in it, decided the sign-in it had granted a moment earlier belonged to nobody, and answered every page after it with a redirect back to the login screen. Both sets now go through the same cookie engine and leave as the one line HTTP asks for.
  • A request with an empty body no longer arrives with one. The parameters Nextcloud hands over are the query string and the body merged together, and taking that as the body meant the address's own question came back a second time as form data — POST /action/get?subject=datetime left here carrying subject=datetime in a body 25 bytes long. That is how this camera's pages ask it for their current settings, and it answered 400 to every one of them: the sign-in screen never offered the dialog it owes a device still on its factory password, and the pages behind it came up on their defaults. Only what was actually sent as a body is sent on as one.
  • A request with nothing to send now says how much that is. With no body, curl leaves out Content-Length altogether; a browser always writes Content-Length: 0. Given the first, this camera's web server waits for a body that is never coming and eventually closes the connection with nothing said. Every settings page asks for its current values with exactly that kind of empty POST, so every page came up with its fields blank or on the first option in each list — the time zone reading GMT-14 when the camera was set to GMT+08. Measured against the device directly: no Content-Length, no reply at all; Content-Length: 0, the settings come back. All 27 fields on the Date & Time page now match what the device itself shows.
  • A file whose name has a space in it is fetched. The browser escapes the space, the router unescapes it, and what reaches the proxy is a real space — which cannot go back into a request. Three of this camera's menu icons are kept under names like Video Analytics.png, and all three were broken pictures while the other eleven on the page were fine. What a path may not carry is escaped again on the way out, and what is already fit to send, the percent sign included, is left alone so that a path which was never unescaped is not escaped twice.
  • A port a device announced is added to what is known, not put in place of it. A port scan speaks for every port it tried and may rightly take one away; an announcement speaks for one port only — the one the device's own page is on. Written down as though it were the whole truth, it erased the rest. This camera announces port 49152 every forty-five seconds, so a scan that had just found eight open ports was down to that one inside a minute, and the web-page search that followed had nothing left to try: it never saw port 80, no matter how many times the scan was run.
  • A device that answers and then stops no longer holds the window empty for thirty seconds. An NTT phone system at one site sends its 403 in under a second and then keeps the connection open without ever finishing the body. A connection carrying nothing at all for ten seconds is now treated as finished, and the window says the device answered and then stopped rather than showing nothing. A stream that is genuinely working — a camera, a download — is carrying bytes and is never caught by this.
  • The server NetBase runs on now appears in its own device list. A machine never asks the network for its own MAC address, so it is never in its own ARP table — and NetBase, which discovers by reading that table, could see every device on the network except the one it was running on. Its own interfaces are now written down at the start of a scan, marked "this server" in the list.
  • A device out of reach is no longer marked offline for failing to answer. A scan marks everything offline and then marks back what replies, which is right for a device that could have replied and wrong for one that never could. A device that has only ever been heard announcing itself — never seen in the ARP table — keeps its state if it has been heard from recently.
  • A radio button is drawn as a radio button. It had no style of its own, so it fell through to the rule for a text box and was rendered as one: a rounded rectangle with twelve pixels of padding around the dot.
  • A multicast step no longer stops without a word. IP_ADD_MEMBERSHIP is not defined in every PHP build, and naming a constant that does not exist is a fatal error rather than a failed call, so the step ended silently and the devices that only announce themselves were never heard.
  • The standing listener actually runs. A background job registered as time-insensitive is held for the maintenance window, which on an instance with one configured means it runs between 01:00 and 05:00 and at no other time — so the listener that is supposed to be hearing announcements all day heard none. TIME_INSENSITIVE is 0 and TIME_SENSITIVE is 1, the reverse of what the names suggest at a glance, and the value is written once when the job is first registered and never revised, so the registration has to be removed and remade rather than merely corrected.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturelsvI6lQNV2r6VjQYc3jblzctyi3y4fyH3qh3ltaysElg7994DYPy+eCQLpeMECTNLgSNVFAlNSXD8I636ZM8AGBKMKokeywElPLtTytOW8IptKAOfErJtFXg2i8E0HRlIO6aNWAwcMlCBDwSACquiEs2j3ftsmY8D9abu/UrJPKYlLZ++iXRqbQ1adRd2klYsAHKES5fi85eujypN3yyQgYOy5J9+ib5alSGS3BFc4MXHDNI/yL0sKnV2XfRTY2oSgV5xSP7GPwDxviFe9ZH9jnzbS9DbUJaan9tuyJkhU68rzr4YVRCzT+UVKMUmXwWLYPPcTnqhVVaTBnRpOAWLqtat4F9tMTi8UEAKhCwqEe6qTELzFqdttuHgMAuRlwGMTHNksFJoyI5Tjq+uDHcpxlBkiL9G4hafAyVqbNmX3L7uW26vBZzW0OY7YqVtbzzNiahNq7dhBxr+tAO7NBJA3LA1sLMcHXU/vkAeesusacJUoJ9G/ZFUcLWCPh1U11tCk4E2Zp4W8T5qD1OdXUxmK9NJWgvyGYB4NQwa7RSGtS9kcwT19p/d+h+2WZAYtKn0drBbaf/yBLYNydu5iYBnoER9cGLzP8f0+CXZLiQrYv5PAdvkaXZr48L0SrIAa/bopO8R8PgUX0j+L06bS1teTspLOJvsighiPBbcEnHlzQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.3.3
Release Details
UpdatedSept. 5, 2026, 3:53 a.m.
Changelog

Removed

  • Ping, traceroute, the port check, TCP ping and path MTU discovery, and the nmap front end with them. The Nextcloud app store review takes the view that an app which sends probes of that kind should not be installable from the store, and NetBase follows it: the tools, their tabs, their routes and the code behind them are gone from this release.

Changed

  • Everything else works as before: device discovery and the device windows, the LAN sweep and inventory, DNS, whois, TLS and HTTP, subnet and MAC, mail, FTP and SFTP, SSH and Telnet, the clock check, the benchmarks and the server view.
  • The requirements page and the administration settings no longer mention ping, traceroute, mtr or nmap, and no longer ask for them to be installed.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureJ0kMXHFSMxxwbvTbXhBrHulZmHnQd+P84sVi4JS3RZSEwAauHtV+f2r1tlOrAyi9ZFq3cQJ2OlrVt84rnil/C8nCnJx7Aqw8vyTYVJ2+ToF8aj6PNl0wtNs4ocd4N9GjuktyQdsNaC0feBA3I/ZkCEZivbXZZ88XAhQ1WaLBROFbRoGmeD7Z+C/MsjZyhbRL41YfL3ADcfyUjkjTFU1O19ObgyfX5E76IFz7KtfZXtUfvIZatn8RR6rs9kX8ospThDOmABmuqsoaneAm9/LEnGbCHdnt9oJtYOvteVIpkCUuz9YwW8xne/ny5QgKn2rfS5BfKQRx0d6EpRG3Oro8+Ho5I48RIYva/32IRxNZSblICaZ7H+X0qL+Fs2zXhB/uYT6wq4HKdXYS0UmHZIlwpBB55s/S0Mcgutc1GpeLQKPLj7pdzDNNJLTxXLq4u2sExN/20G6oATgdbhXErr8U5f8pIw2VWrrl4o0C11zVGT+h5K/tOGSvKcYQxi6R+rnVpiCQLv3+izdbW1zc3RAUmCU4emLxVROuDT3Hh06ig+qV/hf7QLF97RfYfF06IZOAuxfpE8Zx9Ctvl8WYJ4obGBuhA6XwY2WTZxPvJIRIlQQxEe7rTM2VNCosOa8axM7resC5EAzTG/BYKVbyOLBNbwX1r992ATQ4MufWXNNYHzU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32

Nextcloud 33

NetBase 0.6.2
Release Details
UpdatedSept. 17, 2026, 10:45 a.m.
Changelog

Changed

  • Nextcloud 35 is now supported. There are no other changes. The supported range is widened from 30–34 to 30–35. The app itself is unchanged from 0.6.1: it was tested on Nextcloud 35 against the changes that release makes for apps, and ran without modification. (Nextcloud 35 に対応した。それ以外の変更はない。 対応範囲を 30〜34 から 30〜35 に 広げた。アプリ本体は 0.6.1 から変わっていない。Nextcloud 35 でアプリ向けに変わった点に 照らして試験し、修正なしで動くことを確かめた。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureovYzjgphrZG9qwzRnUkQE6ciV6DE9L0exbPrr2vAdkG4vEunPZAzj+jynTjvITfB0AEM1uHMkSvuVlPn8LXaqGp5tAhY7ZTFpf9FPRXx9zt+1sofQGRVIW5iDWAU+nsj2jr1HROnDVcb+q0Wb5Xm5nr3wL9zX5Cto9xPu1VjM5+KxVl0xbaUAnVWUj5nKZQN9yLHmpksAdt/VsAKO8BEclfnXI2z+4VV/EL7A3gaHW5SrOEm+0bqDj2nGPit2UfuXPcSYCnEtmwkSmwwCWzfKC3yVrZ3toqgwWQIJy1cYNh6H1BKvuZSzaec/ZkRFXdLHM7WiATnzBVvY57voAVNlkQ4TLbgw5AQDQgPPDnIK7TaeCUMrGfLQwSPmznfiD5Y51O5CeIR/chXKLOWJBHdDex4yLgm2H5pwl+0EAN7E9ct8qjPBdF+sTdiGcBf5p6QYTGJmVAku7ic3lql6DTDNsHRIo6+NP/aXXJ5BSbhim4mzrb7jTVMFmB8xlMkyI+dr4EiJnvkokNw9CciiU6ddXkQoNBjjPMsBmI1S4yplH0maYsMSc9wryjhOVePzgX2phIRbFFqVfe7Q+phJp0EtHjEqyULrmH3HRkNtoQIYoVmPmuls1hkt5F38ZMUzyU6vvqKIPc4ZGtDGLZYGzOBa+8SVI2WKOsZW4dJqvv/BHM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
NetBase 0.6.1
Release Details
UpdatedSept. 17, 2026, 10:44 a.m.
Changelog

Added

  • A device in the list can be pinged: right-click a row and ask it. The answer is the packet count, the loss and the round-trip times, kept on screen until it is closed rather than fading like a notice — the numbers and their caveat are worth reading twice. A result of "nothing came back" says so plainly and adds that plenty of devices and firewalls ignore ping while answering perfectly well on a port, because a bare 100% reads as "the device is off" and often it is not. It reaches the local network and nothing beyond it, in two ways at once: the request names a device by its row rather than by an address, so there is no field in which to aim it at the internet, and the server checks the address against its own subnets before a single packet leaves. An address on no subnet of this server is refused rather than tried. (一覧の機器に ping を送れるようにした。行を右クリックするだけ。 送信数・受信数・ 損失率・往復時間を、消えてしまう通知ではなく閉じるまで残る小窓に出す。数字とその 読み方は二度読む価値があるため。応答がない場合は「多くの機器やファイアウォールは ping を無視しつつポートには応答する」と添える。損失 100% だけを見せると「電源が 落ちている」と読めてしまうが、実際はそうでないことが多いからである。外部には届かない。 仕掛けは二重で、①要求はアドレスではなく機器の行を指定するため、外部を狙う入力欄が そもそも無い、②サーバー側が送信前にアドレスを自分の持つネットワークと照合する。 どこにも属さないアドレスは、試さずに拒否する。)

  • A machine with a foot in several networks is pinged at the address that means something. Such a machine is one row per address, shown as one device, and the row menu hands over whichever row carries the name — which is not chosen for being reachable. On the development server that picked the container bridge over the address anyone would mean, and it could as easily have picked a stale address on a network the machine no longer has, which the server then refuses. The address is now chosen on its own merits: the routed networks first, primary before secondary, then an address this server merely has an interface on, and never one it has no interface on at all. Ties fall to the lowest address, so the choice does not wander between scans. (複数のネットワークに足を持つ機器では、意味のあるアドレスに送るようにした。 この種の機器はアドレスごとに別の行になり、一覧では1台として表示される。右クリックが 渡すのは「名前を持っている行」で、届くかどうかで選ばれていない。開発機では、誰もが 思い浮かべるアドレスではなくコンテナ橋の側が選ばれていた。条件次第では、その機械が すでに持たないネットワークの古いアドレスが選ばれ、サーバーに拒否されて終わることも あり得た。アドレス自体の素性で選ぶようにした。経路のあるネットワークを優先し (主たるものを副次より先に)、次にこのサーバーが足だけ持つネットワーク、足を持たない ものは選ばない。同順位なら小さいアドレスを採り、探索のたびに揺れないようにした。)

Fixed

  • A device type you chose by hand no longer disappears when a container restarts. Reported from an all-container estate: a type changed to "Container" was back to "Unknown" after the container was restarted and the devices refreshed. The guard that stops a scan replacing a hand-picked type with a guess was working; something else was undoing it. NetBase identifies a device by its MAC address, and a container is handed a new one every time it starts — podman gives it a new address as well. The machine that came back was, as far as NetBase could tell, a different machine. Reproduced both ways it plays out: where the address changed too, the old row survives offline with its type and a new "Unknown" appears beside it; where the address stayed, the old row was deleted outright and the type went with it. That deletion is deliberate — when a DHCP lease passes from an old PC to a new device, the old machine's name and type must not follow the address to its new occupant — and a restarted container is indistinguishable from a reassigned lease from the outside. So the line is drawn differently: everything the machine reported about itself (its ports, its names, its vendor, its history) is still dropped with its row, and what a person typed is carried across — the name they gave it, their notes and tags, and a type they picked by hand. A guessed type is still left behind, because "Printer" was the scan's opinion of the machine that left and says nothing about whatever holds the address now. (手で決めた機器の種別が、コンテナの再起動で消えてしまう不具合を修正。 すべてを コンテナで運用されている方からの報告で、「コンテナ」に変えた種別が、再起動して機器を 更新すると「不明」に戻っていた。推測による上書きを防ぐ仕組みは正しく働いており、 別のものが打ち消していた。NetBase は機器を MAC アドレスで見分けるが、コンテナは 起動のたびに新しい MAC を受け取る。podman ではアドレスまで変わる。戻ってきた機械は、 NetBase から見れば別の機械だった。起こり方は2通りあり、両方を再現した。アドレスも 変わる場合は、古い行が種別を保ったままオフラインで残り、隣に新しい「不明」が現れる。 アドレスが同じ場合は、古い行が削除され、種別ごと消える。この削除は意図的なもので、 DHCP で古い PC からアドレスが別の機器へ渡ったとき、前の機器の名前や種別を新しい 持ち主に引き継いではならないためである。そして再起動したコンテナと、渡されたアドレスは 外から見分けがつかない。そこで線を引き直した。機械が自分について報告したもの (ポート、名前、製造元、履歴)は従来どおり古い行とともに捨て、人が入力したものだけを 引き継ぐ — 付けた名前、メモ、付箋、そして自分で選んだ種別。推測された種別は 引き継がない。「プリンター」は去った機械についての意見であって、いまそのアドレスを 持つものについては何も語らないからである。)

  • The settings screen no longer answers 500 on a confined install. Listing the fonts a terminal can borrow walks the font folders, and on a confined install — a snap, for one — /usr/share/fonts is refused outright. A folder that cannot be opened throws rather than warns, and the @ in front of it does nothing about a thrown error, so the exception travelled out of the font list, through the settings handler, and turned the whole screen into a 500. The walk is now guarded, and the same refusal arriving from a folder deeper in is caught too rather than only the opening of the top one. A font nobody can read is not worth a broken screen: the folder is skipped instead. (限定された環境で設定画面が 500 になる不具合を修正。 端末に貸せるフォントを 数えるためにフォント用のフォルダーを辿るが、限定された環境 — snap などがそうである — では /usr/share/fonts が丸ごと拒否される。開けないフォルダーは警告ではなく例外を 投げるため、前に付けた @ では抑えられない。例外はフォント一覧から設定の処理まで 抜けていき、画面全体が 500 になっていた。辿る処理そのものを保護し、先頭のフォルダーを 開くときだけでなく、途中のフォルダーから同じ拒否が来た場合も受け止めるようにした。 読めないフォント1つのために画面を壊す価値はない。そのフォルダーは飛ばす。)

Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureMWUIO4DhCXKnL5EV46opf++sOrtHiPQGJ+lzsEhFjx5QuFWz7OcXA3gA0lV43t5W2WOCdEuP+QKcuDbmCCmsJrGe0i0ekeNtlT8QPwm3qgMXeFHIcCOogH3Lkh4uawbBI9CRXjtqBRMjJAq59WaJ6fhp2ek9fRt/E3abwNrGgSccb5wmVI3mq52I7zaKYYpDUlzc8bme5nuRxjygb2N6bnaufCmHGMWLBglwnWbgTYHDnjiM9Dp0q7xdsA+tw1ICZWHvjeafYz8HuEkVOL0aGjoiX19mRMg8eBePlFWZfTkGHLdR0jLhuL7n669AxeiUKPCV7ZQBxRieu6oXKL3M2ifYO36tLjglkZ1kD6gUJVPqD+A9ANitG9OiP+tp9Vff0KoSBf+tODGvPjM0ZLyPbuxbS8SFxh4vhy+MPeu0kPqSeY0evnQz00YnV+FI+DoLwthbPtl+OsUzwJlnp1Y4JoBeEHsGgWcrEl26UYQA61AhtL5z6D//VfOQnkcZ5m+wJwzRIAz0I5nBX8W93wqqdUsIE/Nvscdb/g4j8pG47oXha8duf9aiphK3kGxYn3MHqGZDb91EVBas9SNH/TwBOzEhh+HOzVAXGyxhD+jNJ2AKcknSn7qhUnFKCEi7BW/DXl/vGgXmUKR6X9dQSVpc7QilFKz8Px5eYN+hzy9aYcc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.6.0
Release Details
UpdatedSept. 16, 2026, 6:03 a.m.
Changelog

A bigger step than 0.4.3 → 0.5.0 was. Please read the first entry before you update: saved connections move to RegiBase, and the ones stored before this release are gone. (0.4.3 から 0.5.0 のときよりも変更点が多い版です。更新前に最初の項目を必ずお読み ください。保存済みの接続先は RegiBase へ移り、これまでに保存したものは消えます。)

Changed

  • The settings dialog is wider, its tabs sit in one row, and the tabs are easier to tell apart. Four tabs in a 560-pixel dialog wrapped to two rows with room to spare on each; the dialog is the ordinary 660 now and they fit in one, sharing the width and wrapping only when the names cannot be read any narrower. The closed tabs were a muted grey on a near-white ground, which is hard to separate from the panel at a glance: the ground is darker and the text is the ordinary text colour. Measured rather than guessed — the text now sits at 12.1 against its own ground where it was 4.3, and the open and closed states differ by 1.21 where they differed by 1.11. Five mixes were compared before settling on one. (設定ダイアログを広げ、タブを1段にし、開いているタブと閉じているタブを見分けやすく しました。 560ピクセルの幅に4つのタブは収まらず2段に折り返していましたが、各段には 余白がありました。通常の660ピクセルに広げ、タブが幅を分け合って1段に収まり、名前が 読めなくなるときだけ折り返すようにしました。閉じているタブは白に近い地に薄い灰色の 文字で、ひと目では本文と区別がつきませんでした。地を濃くし、文字を通常の文字色に しています。当てずっぽうではなく実測しました。文字と地の比は 4.3 → 12.1、開と閉の 地色の差は 1.11 → 1.21。5通りの濃さを比べたうえで決めています。)

  • Acting as root now lapses on its own. The sudo password was never stored, but it stayed usable for as long as the page was open — and a page left open on an unlocked screen is somebody else's root. It is given up after a set time with nothing touched: ten minutes to start with, adjustable from one to thirty in the settings, or never for anyone who would rather decide for themselves. The remaining time is shown beside the notice, and "Give up root now" is a button rather than a line of small print. Working in NetBase resets the clock; merely having the tab in front of you does not, because a tab left on this screen while its owner is elsewhere is the case this is for. (root として操作している状態が、自動で切れるようになりました。 sudo のパスワードは もともとどこにも保存していませんが、画面を開いている限り使える状態が続いていました。 施錠されていない端末に開いたまま置かれた画面は、そこにいる誰にとっても root です。 何も操作しないまま一定時間が過ぎたら手放します。既定は10分、設定で1〜30分から選べ、 「自分からは手放さない」も選べます。残り時間は知らせの横に出し、「いま root を手放す」 は小さな文字の一行ではなくボタンにしました。NetBase で何か操作すれば数え直しますが、 画面が目の前にあるだけでは数え直しません。持ち主が席にいないままこの画面が開かれて いる、という場合のための仕組みだからです。)

  • A folder can be downloaded now, as one ZIP file. Only single files could be brought back; a folder had to be walked into and its files fetched one at a time. The archive is built on this server rather than on the far end, because that is the only way that works everywhere: a host reached over FTP has no commands at all, and even among Unix servers zip is often missing — the test server here has tar but no zip. Nothing has to be installed on the server being visited. Three limits keep one request from running away: how deep it walks, how many files it takes, and how many bytes in total; reaching one stops the walk and says so, rather than quietly handing over half a folder. (フォルダーを、1つの ZIP ファイルとしてダウンロードできるようにしました。 これまで 取り込めるのは単体のファイルだけで、フォルダーは中へ入って1つずつ取るしかありません でした。書庫は接続先ではなくこのサーバーで組み立てます。それが唯一どこでも同じに 動く方法だからです。FTP の相手にはそもそもコマンドがなく、Unix のサーバーでも zip は 入っていないことが多く(この検証機も tar はあるが zip は無し)、相手側に何も導入する 必要がありません。1回の要求が際限なく走らないよう、深さ・件数・総量の3つに上限を 設けています。上限に達したら walk を止めてその旨をお伝えします。黙って半分だけ渡す ことはしません。)

  • "Download to my files" in the right-click menu is just "Download" now. What it did was plain; the wording was not. (右クリックの「自分のファイルへ取り込む」を「ダウンロード」にしました。 している ことは単純なのに、言い方が回りくどいものでした。フォルダーでは「ZIPでダウンロード」と 出ます。)

  • The settings dialog is tabbed too, and the tabs take one row where they fit. Four groups stacked one under another made a dialog longer than the screen: appearance, terminal, connections and keys, and the tool order all had to be scrolled past to reach the last of them. They are four tabs now, the same ones the connection list uses. The tabs were fixed at two to a row, which forced a second row even where there was width to spare; they fill the row and wrap only when they must. (設定ダイアログもタブにし、タブは収まるなら1段にしました。 4つの群を縦に並べて いたためダイアログが画面より長くなり、外観・端末・接続先と鍵・ツールの並びのうち最後の ものへ行くには手前の3つを通り過ぎる必要がありました。接続先リストと同じ形の4つのタブに しました。タブは2つずつの2段に固定していましたが、幅に余裕があっても2段になって しまうため、収まるだけ横に並べ、入らないときだけ折り返すようにしました。)

  • The connection list settings are four tabs now, two to a row. The four kinds were stacked one under another, which ran the dialog well past the bottom of the screen: the one being worked on was never wholly in view, and finding the right one meant scrolling through the other three. Putting them behind a single selector had been worse — three of the four were invisible and there was no telling what was set up. The tabs say both at once: which one is open, and which of the others still have nowhere to keep their connections (a dot on the tab). (接続先リストの設定を、2段のタブにしました。 4つの種別を縦に並べていたため、 ダイアログが画面の下へ大きくはみ出し、作業中の種別が一度に収まらず、目的のものを 探すのに他の3つを通り過ぎる必要がありました。かといって1つの選択欄にまとめたときは もっと悪く、4つのうち3つが見えず、何が設定済みかも分かりませんでした。タブなら 両方が一目で分かります。いまどれを開いているかと、残りのどれがまだ未設定か(タブに 点が付きます)。)

  • Fixed: reordering the tool list stopped the whole sidebar from working. Dragging a tool into a new place left Settings, System information and Open a shell unresponsive. They were not covered by anything and had not been replaced — the screen had simply stopped redrawing. The list was built by a <template v-for> holding a button and a conditional rule, with the key on the template rather than on the elements: one turn of the loop produced two nodes or one, so once the order changed Vue could no longer match them up. It threw inside its own patch ("insertBefore: parameter 1 is not of type Node"), abandoned the update, and never drew anything again. The error did not reach window.onerror, which is why it survived my checks. The list is now one element per item, keyed on the element, and the rule between the two groups is drawn by the item it belongs to. (不具合修正:ツールの並び替えをすると、サイドバー全体が動かなくなっていました。 項目をドラッグして並び替えると、「設定」「システム情報」「シェルを開く」が押しても 反応しなくなります。何かに覆われていたのでも、ボタンが作り直されていたのでもなく、 画面の更新そのものが止まっていました。一覧は <template v-for> の中にボタンと 条件付きの区切り線を入れ、キーを template にだけ付けていました。繰り返し1回が 2要素になったり1要素になったりするため、順序が変わると Vue が要素を対応づけられず、 自身の更新処理の中で例外を投げて(insertBefore: parameter 1 is not of type Node) 更新を放棄していました。この例外は window.onerror に届かないため、私の検査を すり抜けていました。一覧を1項目1要素・要素にキーを付ける形に改め、区切り線は その上の項目が引くようにしました。)

  • Fixed: "act as root" did nothing for a saved SSH connection. SCP offers the SSH connections because it signs in the same way — but opening one still went through SFTP, which has no shell behind it and cannot put a command through sudo. So the tick was there, the password was taken, and /root came back unreadable anyway. Which protocol the screen is set to is now sent with every request, and SCP opens over SCP even when the connection was saved as SSH. (不具合修正:保存済みの SSH 接続先では「root として操作する」が効いていませんでした。 SCP はサインインの仕方が同じなので SSH の接続先を候補に出しますが、開くときは SFTP を 使っていました。SFTP の背後にはシェルが無く、sudo を通せません。そのため切り替えは あるのにパスワードも受け取られ、それでも /root は読めないままでした。画面がどの手順に 設定されているかを毎回の要求に添えるようにし、SSH として保存された接続先でも SCP は SCP で開きます。)

  • The file list works like a file manager now. It was a table with three buttons on every row, and a folder could only be entered by hitting its name exactly. Now: a row is selected by clicking it, a folder opens on double-click, and the right button offers what can be done with that row — open, download, copy the path, rename, change permissions, delete. The columns sort (folders stay above files whichever one is used), ".." walks up from inside the list, the owner is shown, and there is a refresh button. (ファイルの一覧を、ファイル管理ソフトらしい操作にしました。 これまでは各行に ボタンが3つ並ぶ表で、フォルダーは名前を正確に狙わないと開けませんでした。行は クリックで選択、フォルダーはダブルクリックで開き、右クリックでその行にできること (開く・自分のファイルへ取り込む・パスをコピー・改名・権限を変更・削除)が出ます。列は 並べ替えられ(どの列で並べてもフォルダーが上に残ります)、一覧の中から「..」で上の階層へ 戻れ、所有者の列と再読み込みのボタンを足しました。)

  • The master key prompt says how long the key lasts. Where the key is asked for, under the box: it is held until the browser is closed, for that session and nothing more. Somebody typing a master key deserves to know what they are agreeing to before they type it, not after. (マスターキーを尋ねる場所に、有効期間を明記しました。 入力欄の下に「このマスター キーはブラウザーを閉じるまで有効です(このセッションのみ有効)」と出します。マスター キーを打つ人は、打つ前に何に同意しているのかを知っているべきです。)

  • Fixed: the saved list could be chosen from without the master key, and then would not connect. A name and an address in RegiBase are not secret and read back without the key; the password and the private key are, and do not. So a locked list looked complete — every server there, selectable — and failed at the moment of use, with the key asked for only once the connection had already been attempted. Offering a choice that cannot be carried out is worse than offering none. Choosing the list now asks for the key in the place the list would have been — "Please enter the RegiBase master key." — on both the SSH screen and file transfer. (不具合修正:マスターキーが無くても保存済みの一覧から選べてしまい、選んでも接続でき ませんでした。 RegiBase では名前やアドレスは秘密の項目ではないため鍵が無くても読め、 パスワードや秘密鍵は読めません。そのため一覧は完全に見え、どれでも選べるのに、使う 段になって失敗し、鍵を尋ねられるのは接続を試みたあとでした。実行できない選択肢を 差し出すのは、何も出さないより悪いことです。リストを選んだ時点で、一覧があった場所に 「RegiBaseのマスターキーを入力して下さい」と出して先に尋ねるようにしました。SSH 画面と ファイル転送の両方です。)

  • SCP offers the SSH connections again. Splitting the lists by type was right for storage but wrong for SCP at the screen: SCP signs in over SSH with the same account and the same key, so every connection saved as SSH is one SCP can open. With the lists split, sixteen saved servers became an empty list on a screen that could have opened any of them. SCP's list now offers the SSH connections as well. Where they are stored has not widened — that is still one collection per type. (SCP のリストに SSH の接続先を再び出すようにしました。 種別でリストを分けたのは 保存先としては正しかったのですが、画面の SCP については誤りでした。SCP は SSH に 同じアカウント・同じ鍵でサインインするため、SSH として保存した接続先はすべて SCP で 開けます。リストを分けた結果、16件が保存されているのに一覧が空になり、開ける相手が 1件も出なくなっていました。SCP の一覧には SSH の接続先も出します。保存先が広がった わけではありません ― 保存先は従来どおり種別ごとに1つです。)

  • The settings name the groups the way they were asked to be named. They had been relabelled "SSH", "SCP", "FTP and SFTP" and "Mail (SMTP, IMAP, POP3)" — wording of my own, in which Telnet had quietly disappeared. They read "SSH / Telnet", "SCP", "FTP / SFTP" and "SMTP / IMAP / POP3" again. (設定の群の名前を、ご指示どおりの括り方に戻しました。 私が勝手に「SSH」「SCP」 「FTP and SFTP」「Mail (SMTP, IMAP, POP3)」と付け替えており、Telnet が消えて いました。「SSH/Telnet」「SCP」「FTP/SFTP」「SMTP/IMAP/POP3」に戻しました。)

  • The SSH screen no longer repeats its own name. It carried a heading reading "SSH and Telnet" directly under the menu entry that already says so — the only screen of the thirteen to do it, and the same words twice in the same glance. The heading is gone, and the styling that existed only for it went with it. (SSH の画面で、自分の名前を繰り返すのをやめました。 左のメニューに「SSH・Telnet」と 書いてあるすぐ下に、同じ「SSH・Telnet」という見出しを置いていました。13画面のうちこの 画面だけで、同じ言葉が一目の中に二度あることになります。見出しを外し、その見出しの ためだけにあった体裁指定も併せて削除しました。)

  • FTP and SCP no longer share one list. The storage was split by type, but the screen was not: one list offered every saved FTP, SFTP, SCP and SSH connection together, so a server saved for FTP was offered to SCP — a machine that cannot answer the protocol being asked for — and the fact that the two are kept in different collections was hidden. The type is chosen on the screen now, and it picks the list as well as the protocol: SCP shows the SCP list, FTP and SFTP share theirs, SSH keeps its own. (FTP と SCP でリストを分けました。 保存先は種別ごとに分けたのに、画面のリストを 分けていませんでした。1つのリストに FTP・SFTP・SCP・SSH の保存済み接続先がすべて並び、 FTP 用に保存した相手が SCP の候補として出ていました。その機器は求められた手順に 応えられません。別のコレクションに保存されているという事実も隠れていました。画面で種別を 選ぶようにし、種別が手順とリストの両方を決める形にしました。SCP は SCP の一覧、 FTP と SFTP は共通の一覧、SSH は SSH の一覧です。)

  • Picking from the list no longer connects on its own. On the file transfer screen, choosing a saved connection opened it there and then, while the SSH screen waited for the button that says so. Both wait now. (リストから選んだだけでは接続しないようにしました。 ファイル転送の画面では保存済みを 選んだ瞬間に接続していましたが、SSH 画面はボタンを押すまで待ちます。両方とも待つように 揃えました。)

  • The menu entry is "File transfer" again. It had been renamed to the list of protocols it speaks, which is not what it is for. (メニューの項目名を「ファイル転送」に戻しました。 扱える手順の名前を並べた表記に なっていましたが、それはこの画面が何をするためのものかを表していません。)

  • The file transfer screen now works the way the SSH screen does. The two do the same job — name a server, then use it — and asked for it differently: the SSH screen put the choice first and everything under it in one card, while file transfer had the typing in one card and the choice in another below it, with the two buttons in the opposite order and the opposite default. Nothing was wrong with either on its own; having both was. File transfer now follows the SSH screen exactly — the same choice, in the same order, in one card, with the chosen connection shown back the same way. (ファイル転送の画面を、SSH 画面と同じ操作に揃えました。 どちらも「相手を決めて 使う」という同じ仕事なのに、訊き方が違っていました。SSH 画面は選択を先頭に置いて その下にすべてを1枚で収めていたのに対し、ファイル転送は手入力が上のカード、選択が下の カードで、ボタンの並び順も既定も逆でした。片方だけを見れば問題はなく、両方ある ことが問題でした。ファイル転送を SSH 画面に合わせ、同じ選択・同じ順序・1枚のカードに し、選んだ接続先の表示の仕方も揃えました。)

  • Where connections are kept now shows every kind at once. Separating the storage by kind arrived with a selector in front of it: one kind was on screen and the other three were not, so there was no way to see at a glance what was set up and what was not — and only ever one list picker, whatever you were looking for. All four are listed together now, each with its own collection and its own field assignment, each saved on its own. (接続先の保存先設定で、4つの種別すべてを同時に表示するようにしました。 種別ごとに 保存先を分ける機能を入れた際、その前に種別を選ぶ欄を置いてしまいました。画面に出るのは 1種別だけで残り3つは見えず、何が設定済みで何が未設定かが一目で分からないうえ、 リスト選択も常に1つしかありませんでした。SSH・SCP・FTP/SFTP・メールを並べて表示し、 それぞれに保存先コレクションと項目の割り当てを持たせ、個別に保存できるようにしました。)

  • The same choice of "type it in" or "pick from the list" on both screens. The file transfer screen had a card for typing and a card for the saved list sitting one above the other, both asking for the same server with nothing to say which one was in use. It is one card with the same two buttons the SSH screen has. (ファイル転送の画面にも、SSH と同じ「手入力する/リストから選ぶ」の切り替えを付けました。 これまでは手入力のカードと保存済みのカードが上下に並び、どちらを使っているのかが 分からないまま、同じ相手を二重に尋ねていました。1枚にまとめ、SSH 画面と同じ2つのボタンで 切り替えます。)

  • Fixed: merging the SSH screen hid the fields you type into. Naming the server became one list, and "type an address below" was the first entry in it. Choosing a saved connection then made the typing fields disappear with nothing on screen to say they could come back — so they read as deleted. It was worst for Telnet, which is only ever typed in and never saved, and so looked unreachable. How the server is named is now a choice shown as one: Enter it by hand or Pick from the list, always visible, always switchable. The typed details are kept when you go to the list and back. (不具合修正:SSH 画面を1枚にまとめた際、手入力欄が隠れていました。 相手の指定を 1つの一覧にまとめ、「下に直接入力する」をその先頭の項目にしていました。保存済みを選ぶと 手入力欄が消え、戻れることが画面のどこにも書かれていないため、消したようにしか 見えませんでした。とくに Telnet は手入力しかなく保存もしないため、接続できないように 見えていました。相手の指定方法を選択として画面に出す形に改めます。「手入力する」と 「リストから選ぶ」を常に表示し、いつでも切り替えられます。リストへ行って戻っても、 入力済みの内容は保たれます。)

  • A folder only root can read can now be opened over SCP. There was no way to elevate at all: the listing, and every rename, delete and permission change with it, ran as the account that signed in, so a directory belonging to root came back empty — indistinguishable from an empty one. Ticking Act as root asks for the sudo password on the spot, uses it for that request, and keeps it nowhere: not in the settings, not in RegiBase, not on disk. It is held in the open page and nothing else, so reloading asks again. That is deliberate — a password that is never written down cannot be read out of a stolen database.

What it does not cover: downloading and uploading a file. SCP carries the file itself over the very input the password would have to be typed into, so the two cannot share a connection. Those two actions stay unelevated and the far end refuses them as it always did, rather than appearing to work and quietly returning nothing. (root しか読めないフォルダーを SCP で開けるようにしました。 これまでは昇格する 手段が一切なく、一覧も改名・削除・権限変更もサインインした利用者のまま実行されて いました。root 所有のディレクトリは空として返り、本当に空の場合と見分けがつきません でした。「root として操作する」を入れるとその場で sudo のパスワードを尋ね、その リクエストにだけ使い、どこにも保存しません。設定にも RegiBase にもディスクにも 残さず、開いている画面の中だけで保持するため、再読み込みすれば再び尋ねます。書き残さ ないものは、データベースを盗まれても読み出せないという考えによるものです。

対象外:ファイルのダウンロードとアップロード。 SCP はファイル本体を、パスワードを 打ち込むべき入力そのものに流すため、両立できません。この2つは昇格せず、これまでどおり 接続先に拒否されます。動いたように見せて黙って何も返さないことはしません。)

  • "Create one for me" now builds a collection shaped for the kind you asked for. It made one shape for everything, so a mailbox list arrived with a private key field and an SSH list with a sender address — fields nobody would ever fill in, on every record. There is a template per kind now: SSH and SCP carry the key fields, FTP and SFTP carry the password ones, and mail carries what a mailbox actually needs. The type field offers only the types that collection is for, rather than all seven. The templates belong to NetBase and are handed to RegiBase outright, so nothing had to be added to RegiBase to make them possible, and a collection built by hand still works exactly as well — which field means what is decided by the assignment, not by these names. (「作ってもらう」が、選んだ種別に合った形のコレクションを作るようになりました。 これまではどの種別でも同じ1つの形を作っていたため、メールの一覧に秘密鍵の欄が、 SSH の一覧に差出人アドレスの欄が付いてきました。誰も埋めない欄が全レコードに並ぶ 状態です。種別ごとのテンプレートを用意しました。SSH と SCP は鍵の欄を、FTP・SFTP は パスワードの欄を、メールはメールボックスに実際に要るものだけを持ちます。種別の欄も、 そのコレクションが対象とする種別だけを選択肢に出します。テンプレートは NetBase 側に あり、RegiBase へはそのまま渡すだけなので、RegiBase に何かを追加する必要はありません。 手作りのコレクションがこれまでどおり使えることも変わりません。どの項目が何にあたるかは、 これらの名前ではなく割り当てが決めるためです。)

  • Each kind of connection now has its own place in RegiBase. One collection held everything, which was wrong the moment the kinds diverged: SCP reuses the SSH credentials, but FTP is a different account on a different machine, and both were being read out of the same list. SSH, SCP, FTP-and-SFTP and mail each name their own collection and their own field assignment now. Naming the same collection for several kinds is expressly allowed — SSH and SCP usually are the same list — so separating them costs nothing to anyone who does not need it. Nothing moves on upgrade: a kind that has not been given a collection of its own still reads the single one chosen before, so the list is unchanged until you separate something deliberately. (接続先の種別ごとに、RegiBase の保存先を分けられるようにしました。 これまでは すべてを1つのコレクションに入れており、種別が食い違った時点で破綻していました。SCP は SSH の情報をそのまま使いますが、FTP は別の機器の別アカウントです。それを同じ一覧から 読んでいました。SSH・SCP・FTP/SFTP・メールが、それぞれ自分のコレクションと項目の割り当てを 持ちます。複数の種別に同じコレクションを指定して構いません ― SSH と SCP はたいてい同じ 一覧です。更新しただけでは何も動きません。自分のコレクションをまだ持たない種別は、 これまでの単一の設定をそのまま読むため、意図して分けるまで一覧は変わりません。)

  • A record that does not say what it is, is no longer assumed to be SSH. It is taken as whatever the collection it was read from is for. The old assumption put FTP servers in the SSH list. (種別が書かれていないレコードを、SSH と決めつけるのをやめました。 読み出した コレクションが何のためのものかで判断します。これまではFTPの機器がSSHの一覧に並んでいました。)

  • SFTP is no longer offered as a separate kind to create. It is not a kind of FTP but a subsystem of SSH, and since a saved SSH connection is opened for files over SFTP already, offering it separately only asked people to decide something that made no difference. FTP keeps its encryption choice, which is the question that was actually being asked. A connection saved as SFTP before this still works and still shows its own kind. (SFTP を、新規作成の種別としては出さないようにしました。 SFTP は FTP の一種では なく SSH の副系統です。保存済みの SSH 接続先はすでに SFTP でファイルを開くため、別々に 出しても違いの無い選択を迫るだけでした。FTP には暗号化の選択肢が残っており、実際に 訊きたかったのはそちらです。これまでに SFTP として保存した接続先はそのまま動き、 種別も SFTP のまま表示されます。)

  • The speed test now lets you choose what to measure against. It measured against M-Lab and used Cloudflare only when M-Lab could not be reached at all, and there was no way to ask for the other one. A network that reaches one may not reach the other — M-Lab needs an outbound WebSocket — and two independent readings of the same line are worth more than one, so both are now offered: Nearest (automatic), M-Lab or Cloudflare. Naming one means it, rather than quietly measuring against the other: asking for M-Lab where no M-Lab server answers now says so instead of handing back Cloudflare's figure under M-Lab's name. (速度テストで、どこと測るかを選べるようにしました。 これまでは M-Lab で測り、 M-Lab へまったく届かないときだけ Cloudflare に落ちる作りで、もう一方を指定する 手段がありませんでした。片方に届く回線がもう片方に届くとは限らず(M-Lab は外向きの WebSocket を必要とします)、同じ回線を独立した2つの物差しで測れるほうが確かなため、 「最も近いところ(自動)」「M-Lab」「Cloudflare」から選べるようにしました。名指しした 場合はその指定を守ります。M-Lab を指定して1台も応答しないときは、Cloudflare の数値を M-Lab の名前で返すことはせず、届かなかったとお伝えします。)

  • Fixed: the speed test reported someone else's latency. When measuring against M-Lab, the throughput came from the M-Lab server but the latency and jitter shown beside it were timed against speed.cloudflare.com — a different network, a different distance. The two numbers on screen described two different paths. Latency is now timed against the very machine the throughput came from. (不具合修正:速度テストの遅延が、別の相手のものになっていました。 M-Lab で測る とき、速度は M-Lab のサーバーから得ているのに、その横に並ぶ遅延とジッターは speed.cloudflare.com に対して計っていました。相手も距離も違うため、画面の数値が 別々の経路の話になっていました。遅延も、速度を測ったのと同じ機器に対して計るよう にしました。)

  • A saved SSH connection can now be browsed for files. Sixteen servers were saved here as SSH connections, and the file transfer panel offered none of them: it asked for a connection of type SFTP or SCP, and refused the rest with "this connection is not a file transfer connection". But it is the same machine, the same account and the same key — the only difference is which subsystem is asked for after the sign-in. An SSH connection now opens over SFTP, and over SCP for a server that offers a shell but no SFTP subsystem. (保存済みの SSH 接続先で、そのままファイルを開けるようにしました。 ここには SSH 接続先が16件保存されていましたが、ファイル転送の一覧には1件も出ませんでした。 種別が SFTP か SCP のものしか受け付けず、それ以外は「転送用の接続ではない」と撥ねて いたためです。しかし同じ機器・同じアカウント・同じ鍵で、違うのはサインイン後にどの 副系統を頼むかだけです。SSH の接続先は SFTP で開き、SFTP を持たない相手には SCP で 開くようにしました。)

  • The speed test now asks which server is nearest, instead of being told. M-Lab returns its candidates in an order worked out from the address the request came from — a guess about geography, and here it put Seoul ahead of Tokyo. A measurement to the wrong country reads as a slow line rather than a distant one. The nearest few are now asked directly, one timed connection each, and the quickest is used: it costs about half a second and replaces a guess with a measurement. On this server it moved the reading from 187 Mbps down to 427. (速度テストの計測先を、言われるままではなく実測で選ぶようにしました。 M-Lab は 接続元のアドレスから推定した順で候補を返しますが、ここではソウルが東京より前に 来ていました。国の違う相手を測ると、遠いのではなく回線が遅いように見えます。上位数件へ 実際に接続して所要時間を測り、最も速いものを使います。かかるのは約0.5秒で、推測を実測に 置き換えられます。当サーバーでは下りの読みが 187 Mbps から 427 Mbps になりました。)

  • SCP can now actually be used. The protocol was added, tested and reachable by the server — and by nothing else: the file transfer panel offered only SFTP and FTP, the list of saved connections filtered SCP out, and every label still read "FTP and SFTP". An SCP connection could be saved and never opened. It is now offered wherever SFTP is. (SCP が実際に使えるようになりました。 実装と試験は済み、サーバー側では動いて いましたが、画面のどこからも選べませんでした。転送画面の選択肢は SFTP と FTP だけ、保存済み接続先の絞り込みは SCP を落とし、名称もすべて「FTP・SFTP」のまま。 保存はできても開けない状態でした。SFTP が使えるところでは SCP も選べます。)

  • "Which field means what" is now "Field assignment", and the master key is named for what it belongs to. A heading that describes a question rather than naming a thing makes the reader do the work twice. "Master key" alone does not say whose. (「どの項目が何にあたるか」を「項目の割り当て」に、「マスターキー」を 「RegiBase参照のためのマスターキー」に改めました。 問いかけを見出しにすると、 読む側が二度手間になります。「マスターキー」だけでは何の鍵か分かりません。)

  • The administration settings read better in Japanese. "Devices — read the device list" had been translated as "device survey", which is not what it does; the two buttons that set every tool at once read as fragments; and the wording for scanning was inconsistent with the rest of the app. (管理設定の日本語を整えました。 Devices — read the device list が 「接続機器調査」と訳されていましたが、実際は一覧を見るだけです。全ツールを一括で 切り替える2つのボタンは「すべて全利用者」のように語として立っておらず、探索まわりの 用語も他の画面と揃っていませんでした。)

  • The settings dialog is four groups, not eleven headings. It had grown by addition until the terminal's font, the shell's language and the shell's log sat in three separate places with the connection list wedged between them, and the word "language" appeared twice at the same size meaning two different things — the app's language and the shell's. The subjects are now Appearance and language, Terminal (shell and SSH), Connections and keys and The list of tools, each with its own title and a rule between them, and the settings inside a group sit a level below it. A setting an administrator changes for the whole server now says so on its label, instead of looking like one of the reader's own. (設定画面を、見出し11個の一本道から4つの束に改めました。 追加を重ねた結果、 端末のフォント・シェルの言語・シェルのログ記録が3か所に分かれ、その間に接続先 リストが挟まる並びになっていました。「言語」という同じ語が同じ大きさで2か所に出て、 一方はアプリの言語、もう一方はシェルの言語を指していました。外観と言語/ 端末(シェルとSSH)/接続先と鍵/ツールの並びの4束にまとめ、束ごとに見出しと 区切りを置き、その中の項目は一段下げました。管理者がサーバー全体に対して変える 設定には、その旨をラベルに明示しました。)

  • NetBase now carries its own copy of phpseclib 3, under its own name. Nextcloud ships only phpseclib 2, which cannot read an Ed25519 or an ECDSA private key and has no SCP at all. Until now the newer library arrived by accident — another app happened to bundle it — so whether a modern key worked depended on whether an unrelated app was installed, and where it was not the failure was quiet.

Carrying a second copy under the same name would only have moved the problem: one library can answer to a name in a running PHP process, so whichever app loaded first would decide which copy both apps used, and NetBase would be running on a version it never shipped or tested. The copy therefore lives under OCA\NetBase\Vendor\phpseclib3, which collides with nothing. NetBase always uses the library it ships; every other app keeps using its own, untouched. Nothing needs registering — Nextcloud's own autoloader finds it. (phpseclib 3 を、NetBase 専用の名前で同梱するようにしました。 Nextcloud 本体は phpseclib 2 のみで、Ed25519 や ECDSA の秘密鍵を読めず、SCP も持って いません。これまで新しい版は「別のアプリがたまたま同梱していた」ために使えて いただけで、無関係なアプリの有無で鍵が使えるかどうかが決まっていました。

同じ名前のまま2つ目を積んでも問題は移るだけです。1つの PHP 処理の中で1つの 名前に応えられるライブラリは1つだけで、先に読み込まれたアプリの版が両方の アプリに使われます。つまり NetBase は、同梱も試験もしていない版で動くことに なります。そこで OCA\NetBase\Vendor\phpseclib3 という NetBase 専用の名前に 改めました。衝突が起きないため、NetBase は常に自分が同梱した版で動き、他の アプリは自分の版のまま一切影響を受けません。登録の仕組みも不要で、Nextcloud 本体の読み込み器がそのまま見つけます。)

  • SCP has been added to the saved connections. A server can offer SSH without the SFTP subsystem, and on that machine SCP is the only way to move a file. SCP itself copies a named file and nothing else — no listing, no rename, no mkdir — so those are supplied over the shell the SSH connection already provides, with every argument quoted. It is offered only where this server has a library that can speak it. (接続の種類に SCP を追加しました。 SFTP サブシステムを持たない SSH サーバーでは、 SCP だけがファイルを送る手段になります。SCP 自体は指定したファイルを複製するだけで、 一覧・改名・作成の機能を持たないため、それらは SSH のシェル越しに補っています(引数は すべて安全に括ります)。対応ライブラリがあるサーバーでのみ選択肢に現れます。)
  • Telnet is no longer a box of its own. It was a second card asking for the same host and port as the one above it. The connection form now carries a type beside the address — SSH or Telnet — and the fields only SSH needs appear only for SSH. (Telnet の専用枠をやめました。 すぐ上の欄と同じホストとポートを二度尋ねる作りに なっていました。接続フォームにアドレスと並べて種別(SSH/Telnet)を置き、SSH でしか 使わない欄は SSH のときだけ出します。)
  • Words that explained nothing have been replaced, and the settings screen reads as separate subjects again: a rule between the headings, and the long grey paragraphs cut to what is worth saying. (意味の伝わらない言葉を入れ替え、設定画面を読めるように整えました。「サーバーを 調べる」→「SSHサーバーを調べる」、「サーバーを操作する」→「サーバーに接続する」、 「接続先の保存先」→「SSH/Telnet/FTP/SFTP/SCPの接続先リスト」、「端末の記録」→ 「シェルのログ記録」。節の間に区切り線を入れ、説明文も刈り込みました。)
  • A measurement now runs for at least two seconds. A small size could end an upload while the first megabytes were still sitting in the socket buffer, which reported the speed of the buffer rather than of the line — an upload came out faster than the download. The size still caps the traffic, but only once the measurement has had long enough to mean anything. (測定は最低2秒は行うようにしました。 小さいサイズを選ぶと、最初の数MBが送信バッファに 入った時点で上りが終わってしまい、回線ではなくバッファの速さを報告していました(上りが 下りより速く出る原因です)。サイズによる通信量の上限は残しつつ、意味のある長さに達する までは打ち切らないようにしました。)

  • Saved connections have moved into RegiBase, and the ones stored before this release are gone. Please write down anything you need before updating: host, user name and settings can be typed again, but a password or a private key kept only in NetBase cannot be recovered afterwards. Nothing is migrated, deliberately — the old store could be read back by the server that held it, and carrying those secrets across would have carried that weakness with them. (保存済みの接続先は RegiBase へ移行し、これまでに保存した接続先は消えます。 更新前に必要な情報の控えをお取りください。ホスト・ユーザー名・設定は入力し直せますが、 NetBase にしか無いパスワードや秘密鍵は後から取り出せません。移行は意図的に行いません。 従来の保存方式はサーバー自身が読み戻せる形だったため、そのまま持ち越すと同じ弱さを 持ち込むことになるからです。)

  • Why the move. A password in RegiBase is sealed in the browser with a key derived from a master key that is stored nowhere — not in the database, not in the configuration, not on disk. NetBase could not offer that on its own: its own store was encrypted with the instance secret, which sits on the same server as the data it protects. A stolen database is now a database of ciphertext. (移行の理由。RegiBase のパスワードはブラウザ側で封印され、その鍵はどこにも保存され ないマスターキーから導かれます。データベースにも設定にもディスクにも残りません。NetBase 単独ではこれを提供できませんでした。従来はインスタンス秘密鍵で暗号化しており、それは 守るべきデータと同じサーバー上にあるからです。データベースを盗まれても、そこにあるのは 暗号文だけになります。)
  • RegiBase is now required in order to save a connection. Without it, a server can still be reached by typing its details each time; nothing is stored, and nothing needs to be. (接続先の保存には RegiBase が必要になりました。 無い場合でも、毎回入力すれば接続は できます。その場合は何も保存されません。)
  • The collection is yours, and so is its shape. NetBase does not demand a collection built to its own design: you say which field is the host, which is the password, and so on, and it adapts. A ready-made collection can be created for you if you would rather not build one. A password can only be matched to a field RegiBase itself treats as secret, so it can never be written in the clear. A public key is deliberately not treated as secret. (コレクションの構成は自由です。 NetBase 専用の形を強いません。どの項目がホストで、 どれがパスワードかを指定すれば、それに合わせます。用意されたコレクションを自動で作る こともできます。パスワードは RegiBase 側で秘匿とされた項目にしか割り当てられないため、 平文で書かれることはありません。公開鍵は意図的に秘匿として扱いません。)
  • The master key is asked for once per browser session and is forgotten when that session ends. It is never written down on the server. (マスターキーはブラウザのセッションごとに一度だけ尋ね、セッションが切れると失われます。 サーバー側に書き残すことはありません。)

  • The old store for saved connections has been dropped. 0.6.0 moved connections into RegiBase and said that what was kept in NetBase itself would not come with them; the table is now gone, and so are the passwords it still held. That is the point of it: they were sealed with a secret kept on the same server as the data. (接続先の旧保存領域を削除しました。 0.6.0 で接続先は RegiBase へ移り、NetBase 側に 残っていたものは引き継がないとお伝えしていました。その表を削除し、そこに残っていた パスワードも消えました。これが目的です。旧方式はデータと同じサーバーにある鍵で 暗号化されており、守りとして弱いものでした。)

  • Errors now speak the language you read. Everything a tool refuses to do — a bad host, a file that is not there, a server that would send your password in the clear — was written in English wherever it was raised. It is now turned into your own language at the one place every error passes through, and the messages that carry a value (a path, a host, a byte count) were rewritten so the value has a place to go. All twenty languages. (エラーの文言を、お使いの言語で表示するようにしました。 不正なホスト名、存在しない ファイル、パスワードが平文で送られる状況など、これまで英語のまま出ていた文言を、 すべてのエラーが通る一箇所で翻訳するようにしました。パス・ホスト名・バイト数などの値を 含む文言は、値を差し込める形に書き直しています。20言語すべてに対応。)
  • The free-domain search now says what it found, not how it asked. Hovering a result used to show "HTTP 404", which is the registry's answer, not yours. It now says what that means — free, taken, or why it could not be decided — and which registry or name server answered, with the technical reason kept on a second line. (空きドメイン検索の説明を、意味のある文に変えました。 結果にカーソルを合わせると 「HTTP 404」と出ていましたが、これはレジストリ側の答えであって、お客様への答えでは ありません。空きか、登録済みか、なぜ判定できなかったかを述べ、どのレジストリ/ ネームサーバーが答えたかも示します。技術的な理由は2行目に残しています。)

  • The internet speed test now measures against M-Lab — the measurement behind Google's own speed test — instead of pulling from one fixed endpoint. It asks where the nearest measurement server is and uses that, which is the difference between measuring your line and measuring the distance to somebody else's CDN. Nothing has to be installed: the protocol is a WebSocket, and NetBase speaks it directly. Where M-Lab cannot be reached at all — an instance with no way out, or a blocked connection — the previous HTTP test still stands behind it, so the tool never simply stops working. (回線速度の測定を M-Lab に切り替えました。 Google 自身の速度テストの実体であり、 固定の配信元から引くのではなく、最寄りの測定サーバーを尋ねてそこで測ります。これは 「自分の回線を測る」ことと「他社CDNまでの距離を測る」ことの違いです。追加の導入物は 不要で、通信方式(WebSocket)を NetBase が自前で話します。M-Lab に到達できない環境 (外部へ出られない・接続が塞がれている)では、従来のHTTP測定に自動で切り替わるため、 機能が止まることはありません。)

  • The reading is presented as a guide, because that is what it is. The figure moves with the server that happened to be nearest and with the time of day, so the panel now names the server it measured against and says so plainly. (測定値は「目安」として示すようにしました。 そのときの最寄りサーバーや時間帯に よって値は動きます。どのサーバーで測ったかを画面に表示し、目安である旨も明記します。)
  • The size setting is now a ceiling on the traffic a run may use. A measurement that runs for ten seconds on a fast line moves a great deal of data; on a metered connection that matters, so the chosen size stops it early. (サイズ指定は「1回の測定で使う通信量の上限」になりました。 高速回線で10秒測ると 相応の通信量を使います。従量制の回線では無視できないため、指定したサイズで打ち切ります。)

  • The RegiBase master key is asked for when a connection is used, not in the settings. It never belonged on a settings screen: a settings screen is where things are kept, and this is the one thing that must not be. It is now asked for at the moment a saved connection is needed, held for that browser session alone, and forgotten when the session ends. It is written nowhere — not in the settings, not in the database, not on disk. (RegiBase のマスターキーは、設定画面ではなく接続を使う時点で尋ねるようにしました。 設定画面は「保存する場所」であり、マスターキーは保存してはならない唯一のものです。 保存済み接続先が必要になった時点で入力していただき、そのブラウザのセッションの間だけ 保持し、セッションが切れれば失われます。設定にもデータベースにもディスクにも書きません。)

  • The terminal log is a switch now, and it keeps 5,000 steps by default. It was a number that started at zero, which read like a setting somebody had forgotten to fill in. Recording is still off until it is switched on. (端末の記録はチェック式にし、既定で5,000行を保持するようにしました。 従来は0から 始まる数値欄で、設定し忘れのようにも見えました。記録が既定で無効である点は変わりません。)

Added

  • A terminal can now keep a record of what was done in it. A shell on this server and an SSH window are the two places in NetBase where something is done rather than merely looked at, and until now nothing was left afterwards to say what that was. One step is a line you typed together with the answer that came back — the answer arrives after the Return that asked for it, so the two are paired the way you would read them, not the way they arrive. The colours and cursor moves a terminal threads through its output are taken out, so what is kept reads as words. Two limits hold it down: a number of steps per window, oldest dropped first, and a number of days counted from a window's most recent step — so a window still in use is never cut short, and one finished with goes as a whole. What is kept belongs to the account that did the work: nobody else can read it, and it can be thrown away one session at a time or all at once. Nothing is recorded until you ask for it: the number of steps starts at zero, and zero means keep none. (【端末の記録】シェルとSSHの画面で行った操作を残せるようにしました。1ステップは、入力した 1行と、それに返ってきた答えです。答えはEnterの後に届くため、読むときの並びで対応付けます。 出力に混ざる色や画面制御の符号は取り除き、文字として読める形で保存します。上限は2つで、 画面ごとの「残すステップ数」(古いものから削除)と、「残す日数」(その画面の最後の記録から 数えます)。使用中の画面が途中で切られることはなく、日数を過ぎたものはセッションごと消えます。 記録はその操作を行ったアカウントだけのもので、他の方は読めません。セッション単位でも一括でも 削除できます。初期値は「保存しない」です(ステップ数0=何も記録しません)。)

Fixed

  • The "Run command" button beside a saved SSH connection did nothing. It was bound to a method that did not exist — and Vue does nothing at all for a click bound to a method it has not got, so the button looked dead while the console beside it worked perfectly. The same was true of the "Run" button for the ready-made questions. Both now run the line and show the output, the exit status and how long it took. (保存済み SSH 接続先の「コマンド実行」ボタンが無反応でした。 存在しない メソッドに結び付けられており、Vue は未定義のメソッドへの @click では何もしません。 そのため、隣の対話コンソールは正常に動くのにボタンだけが死んでいました。よくある質問を 選ぶ「実行」ボタンも同じ状態でした。どちらも実行し、出力・終了状態・所要時間を表示します。)

  • After an upload, the file list did not refresh. The file arrived — it was the listing that stayed behind. Upload read the folder back from the path box rather than from the listing itself, and the box is bound to whatever the reader may have typed into it, so it drifts from what is on screen. Every other action on that panel already read it back from the listing. (アップロードの後、ファイル一覧が更新されませんでした。 ファイル自体は届いており、 一覧だけが古いままでした。アップロード処理が、一覧そのものではなくパス入力欄を基準に 読み直していたためです。入力欄は利用者が打ち込んだ値と結ばれているため、表示中の位置から ずれます。同じ画面の他の操作は、いずれも一覧を基準に読み直していました。)

  • whois told you nothing about a .jp domain. Every .jp is answered by JPRS, which does not write Label: value the way most registries do. It writes [Label] and then spaces — no colon — and for an organisational domain it puts an index letter in front: a. [ドメイン名]. The Japanese labels had been in the patterns from the start, but every one of them demanded a colon that JPRS never sends, so they could not match: .com returned six or seven details and .jp returned none. Both of JPRS's shapes are now read, an organisational domain's expiry is taken from inside its status line (there is no separate one), and a label JPRS sends with nothing after it no longer becomes an empty field. The ordinary shape is untouched, and a test holds both to the registries' own wording.

One line of that fix was wrong in a way worth naming. A whois server answers over a socket and ends its lines with CRLF; the pattern for name servers was anchored as if they ended with LF, so it matched nothing and a .jp domain came back with its dates but no name servers. The test did not catch it because sample text typed into a test file ends with LF alone — it passed while the real thing failed. The samples are sent through the same line endings a socket would use now, and the test fails without the fix. (whois が .jp ドメインの情報を何も返していませんでした。 .jp はすべて JPRS が 応答しますが、JPRS は多くのレジストリのような ラベル: 値 ではなく、[ラベル] の 後にコロンを置かず空白だけで値を書きます。組織用ドメインでは a. [ドメイン名] の ように索引文字が前に付きます。日本語ラベルは当初から規則に書かれていたものの、 JPRS が送らないコロンを要求していたため一致しようがなく、.com では6〜7項目 取れるのに .jp では0項目でした。JPRS の2つの書式を読めるようにし、組織用ドメインに 固有の有効期限行が無い点は状態欄から取り、値の無いラベルを空項目にしないようにしました。 従来の書式には手を触れていません。レジストリの実際の応答を固定データとした検査を添えて います。

なお、その修正のうち1行が誤っており、書き残す価値があります。whois サーバーはソケットで 応答し、行末は CRLF です。ところがネームサーバの規則は行末を LF だけと見なしていたため、 実物では1件も一致しませんでした。日付は取れるのにネームサーバだけが空、という形です。 検査ファイルに書いた文字列の行末は LF のみなので、検査は合格したまま実物が失敗して いました。固定データをソケットと同じ行末に通すよう改め、修正前の規則では 0 件・修正後は 2 件になることを確かめたうえで残しています。)

  • Choosing Telnet left the port at 22. Two methods in the same object had the same name. That is not an error in JavaScript — the second simply replaces the first — so picking Telnet ran the file-transfer panel's version, which set a port on a different form, and the port beside the Telnet choice never moved off 22. (Telnet を選んでもポートが22のままでした。 同じオブジェクトの中に同名の メソッドが2つあり、JavaScript では後の定義が前を置き換えます。そのため Telnet を 選ぶとファイル転送側の処理が走り、別の入力欄のポートを書き換えていました。)

  • Entering the master key did nothing. Saving where connections are kept needs the key, so it was asked for — and then the save was never retried. The key was accepted, the dialog closed, and the setting was unchanged, which from the outside is indistinguishable from the key being refused. What was being attempted is now remembered and carried out once the key is given. The settings dialog also has a box to type the key into: it had the code for one but no field, so the only way to be asked was to press Save and fail. (マスターキーを入れても設定が保存されませんでした。 保存には鍵が必要なので 尋ねてはいたものの、解錠後に保存をやり直していませんでした。鍵は通り、画面は 閉じ、設定は変わらない——外から見れば鍵を拒否されたのと区別がつきません。何をしよう としていたかを覚えておき、鍵が入った時点で実行するようにしました。あわせて設定画面 に鍵の入力欄を置きました(処理は書かれていたのに入力欄が無く、保存して失敗する以外に 尋ねられる道がありませんでした)。)

  • The master key prompt appeared behind the dialog that asked for it. Both were on the same stacking layer, and where two things share a layer the one written later in the page wins. (マスターキーの入力画面が、それを求めた画面の後ろに隠れていました。 同じ 重なりの層に置かれており、層が同じときは後に書かれた方が上になるためです。)

  • Japanese: the settings dialog said something the English never did. Its subtitle had been translated as "switches NetBase's appearance only", but the dialog holds the shell log, the connection list, the SSH key folder and the tool order, and the English says nothing about appearance. Checked across all twenty languages; Japanese was the only one that had drifted. Also corrected in Japanese: "follow the server" read as an order rather than a choice, the tool list called the tools "features" in its body and "tools" in its heading, and folder, browser and sign-in were each spelled two ways. (日本語:設定画面に、英語原文にないことが書かれていました。 副題が「NetBase の見た目だけを切り替えます」と訳されていましたが、この画面にはシェルのログ記録・ 接続先リスト・SSH鍵の置き場所・ツールの並びまで含まれ、英語原文は見た目とは 言っていません。20言語すべてを確認し、ずれていたのは日本語だけでした。あわせて、 「サーバーに従う」という硬い言い回し、見出しは「ツール」なのに本文は「機能」と なっていた不統一、フォルダ/フォルダー・ブラウザ/ブラウザーなどの表記ゆれも 直しました。)

  • SCP: a file's permissions were read too small, and a name with a space in it lost its first word. SCP has no directory listing of its own, so one is read by running ls -la over the shell. Two mistakes were in taking that reply apart: the letters r, w and x already carry their own weight and were being shifted by their position as well, so 0640 came back as 0600; and the timestamp was matched by a greedy pattern that swallowed the beginning of a name like "report 2026.txt". Both are now covered by a test that needs no server. (SCP で、ファイルの権限が実際より小さく読まれ、空白を含む名前が先頭の語を 失っていました。 SCP には一覧の機能が無いため ls -la の出力を解いていますが、 その解き方に2つの誤りがありました。r・w・x は既に桁の重みを持っているのに位置で さらに桁をずらしていたため 0640 が 0600 になり、また時刻の照合が貪欲だったため 「report 2026.txt」のような名前の先頭が飲み込まれていました。どちらもサーバー 不要の検査で押さえました。)

  • Number boxes were as wide as the panel for a value of one to four digits, and the list that matches a collection's fields ran down the dialog one row at a time. Both are now the size of what goes in them. (数値の入力欄が、1〜4桁の値に対して画面幅いっぱいになっていた点と、コレクションの 項目の割り当てが1行ずつ縦に延びていた点を整えました。)

Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
Signatureu4YuDe0Ctfsa9IWS9vdkfHadhPKEjLMSP8qR9lKmCpVuFasm4a1RRfov3XKLVQVw4HhZd6N1PhBE7kZHCx4U8iNDdplTdgmLtggoeTDOlKXQ9KxcASYWOUO7AvH82+g+eQ88P0NqDzA4vQe2jshvIoh+rwHQgrwzWCCaw3uzcNJAXO9UyZ7AK5VS6MfIhugS/Ili2ceTbOs/VcdE2uKuvWLTiKm46qPdcHVK0CT5BuELmVnAmYTpXWO19MRvGm++/Dc8tsOyHEpJlOJJKz7P+friJBJ9bfZvq2rxSJ6K/nLmKJKQnWtrjcPSo/w3sgmb36CpjBLelv2xZEu5quhXs7lUGCd32nsiVOFy1Ppz7PtBeiqBZXQ2aS+JSwZYQ3R3iF84mvf6wLw1UOZxGZRR5I4kvAZZixkvFVAfnYSIIsEjHpnnMKNByNn9pZk+fwDjbaMFWiacoM0BFG1esfQS8U10jAy0xrM/jizBQrOMZunrJr/PugGw51eJ4vK5iVf4USd5YWniwxHnsgwfPKcuJhgtn2BokeC1iFC/gcXLjbSgQjCfJ0q5E3FCYOE/a/h1H3SJZZ50Grx3eybHus1IiC/21eQU6H8e2eAXupDwaVyCpyKxjNOX+y2nOyNSxIQUbDxRL5wzq0tX0B5d6N+O/hhh/FZqyqvvSjkGNUxkhWA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.5.0
Release Details
UpdatedSept. 10, 2026, 2:33 p.m.
Changelog

Added

  • Clear the ARP table (optional, opt-in). A "Clear the ARP table" button in the device list forgets every remembered address so a refresh shows only what answers now. NetBase runs unprivileged and cannot flush the kernel table itself, so the button stays off until an administrator installs a tiny root helper and a one-line sudoers rule — a "?" beside the button shows the exact script and steps (for bare metal/VM and for Docker/Podman with NET_ADMIN), and NetBase probes the helper with a harmless "--check" and switches the button on by itself once it works. It is clearly marked optional, with a note not to install it if the security trade-off (granting the web user one root command) is unwelcome. (【任意・オプトイン】ARPテーブルのクリア機能を追加。機器一覧の「ARPテーブルをクリア」で 記憶したアドレスを忘れ、更新時に今応答する機器だけを表示します。NetBaseは無権限のため自身では 消せず、管理者が小さなrootヘルパーとsudoers設定を入れるまでボタンは無効。横の「?」から スクリプトと手順(物理/仮想・Docker/Podman=NET_ADMIN)を表示し、NetBaseは無害な「--check」で 検出して自動的にボタンを有効化します。任意である旨と、セキュリティ上のトレードオフに納得 できない場合は設置しない注意も明記。)
  • Every tool now shows when it is working. A slim bar slides across the top of the panel while any request is in flight, and the button you pressed shows a spinner — so an operation with no progress count of its own (Whois, TLS, DNS, mail, SSH, NTP…) no longer looks like nothing is happening. (各機能の「実行中」表示を追加。リクエスト中はパネル上部に細いバーが流れ、押したボタンに スピナーが出ます。進捗の数値を持たない操作(Whois・TLS・DNS・メール・SSH・NTPなど)でも 実行中だと分かります。)

  • You can now give a device your own name. Type a name in a device's properties and it is shown everywhere in place of the discovered one; if a name was picked up from the network, that reported name stays visible in the properties as well. The name you give is kept against the device, so it holds even when the device offers no name of its own. (自分で機器名前をつけることが出来るようにしました。プロパティであなたが記入した名称を 優先的に表示し、もしアナウンス名が取得できている場合は、プロパティで確認できます。)

  • The properties now say how a name was obtained — NetBIOS, mDNS or reverse DNS — so a reported name is never mistaken for a NetBIOS name when it came from somewhere else. (プロパティに、その名前をどの方式で取得したか(NetBIOS/mDNS/逆引きDNS)を表示する ようにしました。取得元が分かるので、mDNSや逆引きの名前をNetBIOS名と取り違えません。)
  • In Docker or Nextcloud-AIO, the Requirements screen now shows a ready-to-use setup recipe. An app cannot bundle PHP extensions, but the official Nextcloud image runs any script placed in /docker-entrypoint-hooks.d/before-starting/ on every start. When NetBase detects it is in a container, it lists exactly what the base image is missing (verified on the official image: the sockets extension, and chromium/iperf3/iproute2) as a one-off script that survives image updates without a rebuild. (Docker・Nextcloud-AIO で動作している場合、「必要要件」画面にそのまま使える導入手順を 表示するようにしました。アプリはPHP拡張を同梱できませんが、公式Nextcloudイメージは /docker-entrypoint-hooks.d/before-starting/ に置いたスクリプトを起動のたびに実行します。 コンテナ内と判定すると、ベースイメージに不足している要素(公式イメージで確認:sockets拡張と chromium/iperf3/iproute2)を、再ビルド不要で更新後も維持される一度きりのスクリプトとして 提示します。)

  • A device that has been switched off is no longer shown as online. Its entry lingers in the kernel neighbour table as STALE, keeping its old MAC, and /proc/net/arp cannot tell that apart from a device that is here now — so a powered-off machine kept a green dot. NetBase now reads the neighbour state (via ip neigh) and, without walking the whole range, confirms the addresses on file with a quick TCP touch: a host that is here answers a connection (open or refused), one that is gone stays silent and is marked offline. On a re-scan the online/offline column is current. (Announce-only devices — an Amazon Echo, say — are still kept online by what they broadcast over mDNS/SSDP in a normal scan.) (電源を切った機器がオンライン表示のままになる不具合を修正。カーネルの近隣テーブルに STALE として古いMACのまま残り、/proc/net/arp では在席中の機器と区別できないため、緑点が 残っていた。近隣の状態を ip neigh で読み、全アドレス走査はせずに、記録済みアドレスを 短いTCP接触で確認するようにした(在席なら接続に応答=開放でも拒否でも、不在なら無応答で オフライン判定)。再スキャンでオンライン/オフラインが最新になる。※mDNS/SSDPで自ら告知する 機器(Amazon Echo等)は、通常スキャンでは告知により在席のまま維持される。)

Removed

  • Device tags have been removed. They could not be seen in the list and served little purpose; identify a device with the name you give it (above) instead. Notes are kept. (機器のタグを廃止しました。一覧に表示されず用途が薄かったためで、機器の識別は上記の 「自分でつけた名前」で行ってください。メモは残しています。)

Changed

  • The free-domain search can hide the taken and the could-not-check results. Two slide switches (the same control the device list uses) sit over the results: one for taken (×) names, one for the ones that could not be checked (?). Undetermined names are hidden by default, so the list leads with what is free or clearly taken. A taken name is shown greyed out; an unchecked one is greyed and struck through once, with the reason in its hover tooltip — no English text on the row. (空きドメイン検索で、使用済みと調査不能のドメインを隠せるようにしました。結果の上に スライドスイッチを2つ(接続機器調査と同じ部品)置き、使用済み(×)用と調査不能(?)用を 用意。調査不能は初期状態で非表示にし、空きと使用済みが先に見えるようにしています。使用済みは グレー表示、調査不能はグレー+一重打ち消し線で示し、理由はマウスオーバーで表示します(行に 英語は出しません)。)
  • The free-domain search shows its results in columns on a wide screen. The list flows into as many columns as the width allows (roughly one per 300px), so a wide window shows two or three side by side and a narrow one stays a single list. Each ending's name always shows in full; the diagnostic note beside it is what gives way when space is tight. (空きドメイン検索の結果を、画面幅に余裕があるとき複数列で表示するようにしました。幅に応じて 自動で2〜3列になり、狭いときは1列に戻ります。語尾(ドメイン名)は常に全部表示し、横の理由 表示のほうを省略します。)
  • Every column in a device's address lines is now aligned. A device with several addresses lays them out in fixed columns so the eye can read down them: the network badge leads in a fixed-width slot (sized for 副ネットワーク9 / another network), then the IP and MAC at their known maxima (18 and 17 characters), then the full vendor name in a column half the width of the OUI database's longest name (54 characters, wrapping if longer, never truncated), then the open ports — which, because everything before them is fixed-width, begin at the same column on every row. Several addresses on one device are separated by a thin dotted rule. (機器のアドレス行の各列を整列させました。複数アドレスを持つ機器では、ネットワークバッジ (副ネットワーク9/別ネットワークに合わせた固定幅)→IP・MAC(最大幅18・17文字)→ベンダー名 (OUI辞書の最長の約半分=54文字の固定幅・超過は折返し・省略なし)→開放ポート、の順に固定幅で 並べ、ポートの先頭が全行で同じ位置から始まるようにしました。複数アドレスは細い点線で区切ります。)
  • The device scan is now two buttons: "Refresh devices" and "Port scan". "Refresh devices" re-checks which devices are online without scanning ports, so it is fast; "Port scan" is the fuller sweep that also reads each device's open ports. The per-device "Scan every port" search stays in a device's own properties, now labelled as being for that one device. (機器スキャンを「機器一覧を更新」と「ポートスキャン」の2つのボタンに分けました。 「機器一覧を更新」はポートを調べずオンライン/オフラインを再判定する高速版、「ポートスキャン」は 各機器の開放ポートも調べる本格版です。機器ごとの全ポート調査はプロパティ内に残し、「この機器の」と 明示しました。)
  • "Online only" is now an on/off switch instead of a button that swapped its own label. (「オンラインのみ」を、ラベルが入れ替わるボタンから、オン/オフのスライドスイッチにしました。)
  • The scan progress is clearer. Each step is named as it runs (reading the ARP table, searching for devices, asking for names, multicast discovery, checking ports, reverse DNS), the multicast step shows a "listening" state while it waits instead of appearing frozen, and the bar no longer reads as going backwards between steps. (スキャンの進捗表示を分かりやすくしました。実行中の工程名(ARPテーブル読み込み/機器を探索/ 名前を問い合わせ/マルチキャスト探索/ポート確認/逆引きDNS)を表示し、マルチキャストの受信待ちを 「探索中」と示して固まって見えないようにし、工程が変わるたびにバーが戻って見えないようにしました。)
  • "What to scan" lists "The ARP table only" first, before "The whole network". (「スキャン対象」の並びを、「ARPテーブルのみ」を先頭にしました。)
  • A device's note is now shown in the list and is searchable. It used to be visible only in the properties; now it appears under the device (one line, full text on hover) and the filter box matches it too, so a note like "2F printer" is actually useful for finding and telling devices apart. (機器のメモを一覧にも表示し、検索対象にしました。これまではプロパティでしか見えません でしたが、機器の下に1行(全文はホバー)で表示し、絞り込み欄でも一致するようにしたので、 「2Fの複合機」のようなメモが機器の識別・検索に役立ちます。)

Fixed

  • Mail: STARTTLS mode never sends the password in the clear. If a server does not offer STARTTLS (or a network strips it), the sign-in, mailbox and send-test now stop with a clear message instead of falling through to plaintext AUTH. (メール:STARTTLSモードで平文送信しないよう修正。サーバーがSTARTTLSを提供しない(または 経路で除去された)場合、平文認証に進まず明確なメッセージで停止します。)
  • Mail: the SPF DNS-lookup count no longer double-counts includes. A top-level include: was counted twice, so a healthy record with a few includes could be reported as over the 10-lookup limit; it now counts each lookup once. (メール:SPFのDNSルックアップ数がincludeを二重計上する不具合を修正。正常な記録が上限超過と 誤表示されることがありました。)
  • HTTP check: an unreachable host is reported as unreachable. A host that refuses the connection or times out was shown as a reachable server missing every security header; it now says it could not connect. A redirect's target host is validated too, so a page cannot bounce the fetch onto an internal address. (HTTP確認:到達不能なホストを「稼働中でヘッダ欠落」と誤表示せず「接続できませんでした」と 表示。リダイレクト先ホストも検証し、内部アドレスへ飛ばされないようにしました。)
  • A registered .jp/.co.jp domain is no longer reported as free. JPRS answers with a "Domain Information" block whose fields are letter-prefixed ("a. [Domain Name]", "p. [Name Server]"), which the registered-check did not recognise, so a plainly taken name (google.co.jp) — and a suspended/pending- delete one (granz.co.jp) — came back undecided and was then labelled likely-free. A [Domain Name] / [State] block now means taken; a bare "No match!!" still means free. (登録済みの .jp/.co.jp が「空き」と表示される不具合を修正。JPRSは項目名が 「a. [Domain Name]」のように接頭辞付きで返るため登録判定に一致せず、明らかに使用中の名前 (google.co.jp)や停止中の名前(granz.co.jp)が「空きの可能性」になっていた。[Domain Name]/ [State] があれば使用中、「No match!!」なら空き、と正しく判定するようにした。)
  • A domain the registry throttled or refused is no longer shown as "likely free". In a gTLD sweep the shared RDAP servers — Identity Digital most of all, which serves 100+ endings from one host and rate-limits this server outright — answer HTTP 429/403; those were marked △ "likely free (registry unreachable)", which is misleadingly optimistic. They are now honestly "?" ("could not check"), and a group that answers 429/403 is dropped at once so the rest of its endings are marked quickly instead of each waiting out a doomed retry. (レジストリに制限・拒否された結果を「空きの可能性」と表示しない。gTLD一括照会では 共有RDAP(特に Identity Digital。1台で100以上の語尾を担当し当サーバーを丸ごと制限)が HTTP 429/403 を返すが、これを△「空きの可能性」と楽観的に表示していた。正直に「?(判定不能/ 確認できず)」とし、429/403 を返したグループは即座に打ち切って残りを素早く判定するようにした。)
  • Port scan no longer fails on a /16 (or larger) network. The host-count limit that guards the address-by-address sweep was also applied in ARP-table mode, where there is no sweep — only the neighbour table (at most ~1024 entries) is touched — so "Port scan" on a common /16 LAN (65 536 addresses) was rejected with "Scan target exceeds the configured limit". The limit is now enforced only when a sweep will actually run. (/16 以上のネットワークでポートスキャンが失敗する不具合を修正。総当たり探索を守る ホスト数上限を、探索を行わないARPテーブルのみモード(近傍テーブル≒最大1024件しか触らない) にも適用していたため、よくある /16 のLAN(65,536アドレス)で「上限超過」で弾かれていた。 実際に総当たりを行うときだけ上限を判定するようにした。)
  • A port-scan step no longer logs "Undefined variable $wait". In ScanService::stepPorts() the port budget was computed from $wait before the variable was assigned, which logged a PHP warning on every step and, reading null as 0.1, over-computed the budget nine-fold. $wait is now set before use. (ポートスキャンの各ステップで Undefined variable $wait を記録する不具合を修正。 stepPorts() で $wait を代入前に予算計算に使っていたため毎回PHP警告が出て、nullを0.1と 読み予算が9倍に膨らんでいた。使用前に定義するよう是正。)
  • A free domain in the availability search no longer shows a raw "HTTP 404". The diagnostic reason (e.g. RDAP's 404 that means "not registered") was printed next to the ○ mark; it is now kept only as the mark's tooltip, and the visible reason is shown only for the uncertain cases (△ / ?). (空きドメイン検索で、空き(○)の行に内部的な「HTTP 404」が出る不具合を修正。判定理由 (例:未登録を意味するRDAPの404)は○の吹き出しにのみ残し、本文の理由表示は不確定 (△/?)の場合だけに限定した。)
  • A slow or unreachable device no longer floods the admin log with errors. The device-view proxy logged every connection timeout, TLS failure or refused connection at error level; these are ordinary outcomes for a network tool and are now logged at info (the browser is still shown a problem page). (応答の遅い・届かない機器で管理ログがエラーで溢れる問題を解消。機器ビューのプロキシが 接続タイムアウト・TLS失敗・接続拒否をすべてエラー級で記録していたが、ネットワークツールに とっては通常の結果のため info 級に格下げした(ブラウザには従来どおり問題ページを表示)。)
  • The DNS tool no longer fails a whole lookup when CAA is included. CAA was passed to dns_get_record() as the wire type number 257, which PHP 8 rejects with a ValueError that the @ operator does not suppress, so a query with CAA ticked errored out entirely. CAA now uses the DNS_CAA constant. (DNS調査でCAAを含めると照会全体がエラーになる不具合を修正。CAAを dns_get_record() に 型番号257で渡していたため、PHP8が ValueError を投げ(@でも抑制されない)、CAA選択時に 照会全体が落ちていた。CAAを DNS_CAA 定数に修正した。)
  • A notice no longer lingers on another tab or over a new scan. The message bar was shared across the whole app and never cleared, so "scan finished" sat on the Whois and DNS tabs and over the next scan's progress, making a running scan look finished. A notice is now cleared when you switch tabs and when a new scan starts, and an informational notice fades on its own; the progress bar shows only while a scan is running. (通知が別タブや次のスキャンに残る不具合を修正。メッセージ帯が全画面共有で消えないため、 「調査完了」がWhoisやDNSタブ、次のスキャンの進捗の上に残り、実行中なのに完了に見えていた。 タブ切替時とスキャン開始時に通知を消し、情報通知は自動で消えるようにした。進捗バーはスキャン中のみ 表示する。)
  • The same address no longer appears on more than one row. A device whose MAC changes (a privacy address that rotates, or a lease handed to another machine) left a second row for the same IP. Duplicate rows are now folded into one, both as they are found and once at the start of every scan. (同じIPアドレスが一覧に複数行出る不具合を修正。MACが変わる機器(ランダム化MACの変更や、 リースが別機に渡った場合)で同一IPの行が二重にできていた。重複行は、検出時とスキャン開始時の 両方で1行に統合するようにした。)
  • A name no longer follows an address to a different device. When an address was handed to another machine (an old PC's lease going to an Alexa), the old device's name could show on the new one. A name, type and ports are now kept only for the same device, never carried to a different MAC that later holds the same address. (アドレスが別の機器に再割り当てされたとき、旧機器の名前が新機器に残る不具合を修正。 旧PCのリースがAlexaに渡った等の場合に旧名が表示されていた。名前・種別・ポートは同一機器に対して のみ保持し、同じアドレスを後から持つ別MACには引き継がないようにした。)
  • "This server" is shown on every one of the server's own addresses. When one network card holds several addresses (here 10.0.0.1 and 192.168.1.250 on the same card), keying them by the shared MAC let only the last one keep the badge. Each of the server's addresses is now its own row and each is marked. (サーバー自身の各アドレスすべてに「このサーバー」を表示するようにした。1枚のNICが複数の アドレスを持つ場合(同一NICの10.0.0.1と192.168.1.250)、共有MACをキーにしていたため最後の 1つしかバッジが付かなかった。各アドレスを独立した行にし、それぞれに印を付けるようにした。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturelPTEAnhj7+HoibIAnwDsMclSagD0MDrqgF9vdsmoXXV5e0aqJmUD5JigIZhWldG0XpWMehslTEs0X6fEecgZ8ZvMq8hDwPGqTzmYnrtSv0k8BjnsBFn6CMcIfFO53fnhMpLkMEmaDOpf34Z6iUONdxZQ2pMVlv95tXOPfB0utEMXS2VmKsk8w73JRgbtCc07L/QT+3b1xbZkr9p0mCo6nXjpONKOpF3GzbxHC5cxhnqRpZ7wprKgTSS1cZFJdSAWEM78LEhZT47gast39F28c1Er5DdHZrvfQjOlKTVqUTH93iUearoZDygnr+tBaN6UKjiSpWsXEVIU9VkuL6ndZG2FB9BBZshoEkFsBWAaVHF7GPxYkMNxGuH0CZ7C11ykpl4cAo3d2rwqyjEu7skeBeCwikHIJ1b7upC8QyBKmPPdwVViT1AJd0SO7FvxSH8dofcxEaT+qb9spOZU3cNwFxsABNpgiUthEVCk8jf7ddeQCPncRXZhaHdxEU+QnfdxOl+5Vbipb2p//1F0hHh+S3zDipWrfYDMvATLIgk85DMs2vg2nfZgH5fJGJX37O2hqop4yL6YTRP0nNvSXMh8Ewa12yv/acvRsHgsCe0doffORCUCZomIrJ2pEYbfJbWPRqHqoeiucg3am0yy0GThx/6QJAORtNUjIug4VIu7hUk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.3
Release Details
UpdatedSept. 9, 2026, 2:33 a.m.
Changelog

Fixed

  • A device page whose text is written by its own script no longer loses that text in a device window. Some router and printer pages (an ASUS router's WAN page among them) build their labels in JavaScript, from strings that contain a small piece of HTML with target="_top" inside. The rewrite that keeps such links inside the window was reaching into those strings and breaking the script, so the page came up with its text missing. That rewrite is now applied only to real HTML attributes and never inside a <script>, so the page's own script runs untouched and all of its text appears. (機器ページが自身のスクリプトで文言を書き込む場合に、機器ウィンドウで文言が消えていた不具合を 修正。ASUS ルーターの WAN ページ等は JavaScript の文字列内に target="_top" を含む HTML 断片を 持ち、フレーム内に留めるための書き換えがその文字列を壊してスクリプトが止まっていた。書き換えを 「本物の HTML 属性」だけに限定し <script> 内には一切触れないようにしたため、ページのスクリプトが そのまま動き、全ての文言が表示される。)
  • The device-window "Screenshot" now shows its result inside the window. A device window is drawn above the app's own message bar, so a "Saved as…" note — or the reason a picture could not be taken — was hidden behind the very window it was about, and looked like nothing had happened. The message now appears in the window itself. (機器ウィンドウの「Screenshot」の結果を、ウィンドウ内に表示するようにした。機器ウィンドウは アプリのメッセージ帯より前面に出るため、「保存しました」や失敗理由が対象ウィンドウの裏に隠れ、 何も起きていないように見えていた。メッセージをウィンドウ内に出すようにした。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureCGlNtuFVUIdzr/sX2lsWkCHmSdABdw3JCqtB7iYca1e/+lv8y5d5NaUI9WeKpS3L9eIJCcdt3cY23p7xp5cwhMPOapNu4+Qbvj5mWpf81mX3nrRPQstI4wH3HBU5b6J1ZeDaT/ZZaNTPNvIPv06ZwsDvNc0tI+UxZIcg/aAYkRBqcQMlAGp4TkfL0qbX9y3TQaXi9SccEpHa/JybfYAHf0ulBy2Yhwo/5HyX50yK+MyqHByC+5RJW17ozqZNH3/4zsYTZ0mZGF1Rd/gcloVMHlDA8hKD6LQ/fvkzftC12vbYy0CzDXI2+QwbU2kyEiVg5WH1hzUrL9KL/At2cpHZThNHQUHTOusfZgNpVw8+jq3Sr3sXr9qYZkTwjzuz8v5WEal6tEs0NrJF6OLviMflHuWCTf2qKd15AvAaugrl7PWWVoxwhMDfbQjICYEhrPpRUA+sMwVFrUvCSZre1Lx9Y3hlEbSNsy93urbKNhZjHrm6IWmIJALeegMK/cA/VN7XF8gXDgeWqlg0P64xRwnc4JqhFpMfyyrJi2xHvrXkZgCv2xAQoaH6lF9CrQH1hF9c6drQAMFJS/JXbcn1qWZqFi1Qh3zRfTYUc4Tfwf8MPGuFBg1hLykWnGFegEQu2x8XIdxtL3unPvBDaN6EzH0NjqhExcf1fIXrwzpe6j8km7A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.2
Release Details
UpdatedSept. 8, 2026, 1:35 p.m.
Changelog

Fixed

  • The internet speed test now works at the 100 MB setting. speed.cloudflare.com rejects a download request for 100,000,000 bytes or more with HTTP 403, so "100 MB" (100 × 1,000,000) fetched nothing and no number appeared. The download for that endpoint is now capped just below the limit (99,999,999 bytes), and a refused download is reported as an error instead of a silent zero. The 5/25/50 MB settings were unaffected. (インターネット速度テストの「100 MB」で数字が出なかった不具合を修正した。 speed.cloudflare.com は 100,000,000 バイト以上のダウンロード要求を HTTP 403 で拒否する ため、100 MB ちょうど(100×1,000,000)が失敗していた。当該エンドポイントのダウンロード量を 上限直下(99,999,999 バイト)に丸め、拒否された場合は 0 ではなくエラー表示にした。 5/25/50 MB は影響なし。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturekEXnJTS5yF9JFTbS5dkAR9aY74MLA244QyEN/MOVQm1phUJ66HKiFUErT8Nw8T/T78ILbJ9T7ZXjGZssJIl+Vp8SR6RimT2jwj6Hq3goj/kKeucT0I31CQB1Zwbp/esXp6FIMp5yNvremlHo5ro1IXV7+/HdJP4eBBhSSqUnp8UOwg+cjs7UHyQQxcLx1pFzyEAHhKgQ45qDxkt1UrctLI2AyY0rRcE+927Gvy5GphRat3RcDIxl6yKabk1wgDU3HM6T9IO5XSjJF2TlT0fihZokAfVosrRQT5JoeCDaqxT3+3kS3w14D+opKWlUdOY+ttGNSb4g5b/RMg4Leeb+Wtrln73bcMHVqN+6VWoY3iQr535E5ZYJEeIpjfsK6iiuRLpmJ+TPKBc99gOEF10HKJwr/j1KMqPoW0NpbgQ747lNedg1I24P8zvKs/DaUzy0pOMpwfGTpwomc2rkSCyGPP1Bnl1RrLkO47xRq8IV4//nFNSqe2gV3lY1UQskYx3qlzMvMEl0717wAoAW8ppYD/M0nLRa9zg9yW6E74WLwjp596pktS3Z/QoGOrkENqNpDNEbw/+cwrmM2OWCGqG6X3N/Z3eIqkIKc8Mv1vloZ+ZardB/WtqG5Mnzbh/0PP2Lx/jzWKzd6+nUDiz4Miw5YCfs6st8eWGIJF5rlI6I4Mo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.1
Release Details
UpdatedSept. 8, 2026, 12:49 p.m.
Changelog

Fixed

  • Fixed a bug where clicking outside a dialog while entering data made the dialog disappear and discarded what you had typed. It affected the data-entry dialogs — the SSH sign-in dialog, the connection editor (new/edit a saved SSH/SFTP/FTP/SMTP connection, including its password and private key), and the Settings dialog: clicking the surrounding area no longer closes them, so nothing you were entering is lost; close them with the ✕, Cancel or Save controls. View-only and picker dialogs (system information, the file picker, the page/text preview and the device panel) keep closing on an outside click, since they hold nothing you can lose. (データ入力中にダイアログの外側をクリックすると、ダイアログが消えて入力が失われてしまうバグを 修正した。対象=SSHサインイン・接続の新規/編集(SSH/SFTP/FTP/SMTP。パスワードや秘密鍵を含む)・ 設定の各ダイアログ。外側クリックでは閉じなくなり、✕・キャンセル・保存で閉じる。閲覧/選択系 (システム情報・ファイル選択・プレビュー・機器パネル)は失う入力がないため従来どおり。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureQ0qPD64JJXCwInnuCvlIN5GZbTdRW/s+Xntj90lJXH/gicwlTuYMeowlFBMvj2uVe7Fd8dErh2sGZJv/6ds7PPdzCFJY7GIeofIuHZHw0laPn26Yy/jgiCB+FPJYbyGNHsMdFyz5pbZ4JtxjMkiFPz7sGsOzbNZH28QnCjLaO7z7RFvU5L95YCREIMEQzhL4aVRgI5oBTWnSb7X5bVoXB0ky5/0YwFBxa4nY3JGy4cn86oTttRhBc/tCJ7mSsPDy1Peas5St7E0bpNiJa0iI/Fap6pgNgm3Gp7YibSyFviW5ygeLOIOqMZWoevakZC/UP+xDEF0sWubaGtz8kz4pATsflz0TfALApYEqvLVNG/cEyZHw3ZiOXwazXWBv1Y1Z21ZMl2pAE4t6LQs2zG6BYO/a465rI6wONcCRV2ODHyZdl3f+qBVdKbtCDZ+0Rzqyj6soDqjWxfMtQG4OYhhFtBrWAZ3GL50Jf6C9zPajzql2hf5SNbvYI93TL/QjLZrmrJFdky0a4EKqRnaL/PQ+DgKX/7ji6zrX3zHaWia/9YJc7tQI3/DEEYMr50YhGClzkBQVkgjtGisHMBYsWs0/SxO/RIHoUi0t7N4Tt3Woh4a9UKJSmm2wOj2pY/u8wyr/3OIr57ogYkYQNz5o+a7O7re7VQeAWt9yCqZgI2DiwwU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.0
Release Details
UpdatedSept. 6, 2026, 4:30 p.m.
Changelog

Everything since 0.3.11, which is what the customer sites have been running, gathered into one release.

Added

  • A terminal, not a line at a time. SSH had a box you typed one command into and a box the answer came back in, which is enough for uptime and no use for anything that draws a screen. There is now a real terminal: top, vi and less run in it, colours and cursor movement work, and it is resized by dragging the window. PHP cannot hold a connection open between requests, so the server keeps the session and streams it — what is typed goes up one batch at a time, and what comes back arrives as it is written.
  • A sign-in dialog for SSH. Host, port, account, and either a password or a private key chosen from your own Nextcloud files. A default folder for keys can be set in Settings, so the picker opens where the keys are kept instead of at the top of the file tree.
  • A device on another network, sharing the same wire, is found and stays found. A camera left on its factory 192.168.1.120, plugged into a 10.0.0.0/16 network, was invisible: it is off the server's subnet, so nothing routes to it, and it cannot answer a question either — its reply goes to a gateway it does not have. What it does do is announce itself to the multicast group, which is carried at the level of the wire and arrives whatever the addresses say. NetBase now listens to that group continuously, in the background, so such a device appears without a scan and is not marked offline for failing to answer something it was never able to answer. Its details carry the one command that would put this server on its network, ready to copy, and a button that opens a terminal on this server to run it.
  • A device can be asked about itself, from its details: every one of its 65,535 ports, and which of the open ones actually serve a web page. The port scan opens 64 connections at a time rather than the sweep's 512, because older hardware drops the flood and is missed at 512; the web search asks each port for its front page rather than guessing from the number, and a port that answers becomes a link in the list from then on.
  • A right-click on a device offers the ways into it — HTTP, HTTPS, FTP, SSH and Telnet — built from the ports it actually has open, with Properties at the bottom for the panel a left-click opens. Nothing speculative is listed: a port that is not open is not offered, and a web page only for a port NetBase knows serves one or has been shown to.
  • SSH and Telnet open in a window, the same movable, resizable frame a device's web page uses, so several can stand open beside the device list at once. Port 22 and port 23 in the device details open one instead of changing tab — which used to close the device and leave nowhere to go back to.
  • Telnet can now be used, not merely diagnosed. It had a probe that read the banner and warned about the plain text, and nothing that would let anyone type at a switch. The window signs in, sends a line, reads the answer and hangs up — a connection per line, because PHP cannot hold one open between requests, which is also why nothing is left open on the device in between. Option negotiation is refused throughout, so the device keeps talking without our pretending to be a terminal.
  • Zoom, fit and a screenshot in every device window, and a row of buttons where a sentence explaining the window used to be: the device's own address, the page's text, and the clipboard into whichever field the cursor is in.
  • Copy buttons throughout the device details — the whole record, or any one row of it.
  • Five depths for the port check (15, 106, 1,024, the high ports 1025 to 65535, and all 65,535) and five scan speeds, with the wait for a port to answer now a setting of its own, since that is the number which decides how long a scan takes. The high ports are where a maker hides an interface it would rather not advertise, such as the 22401 on a router here.

Changed

  • The device list is two lines to a column — name over address, MAC over vendor, type over open ports — so a row holds what used to need sideways scrolling. A device that has told nobody its name is written - no name - rather than left blank.
  • What to scan is chosen first and by name — the whole network, or the ARP table only — and the options beneath are arranged as the steps they are.
  • The SSH page says which boxes belong together. It does two jobs — looking at a server, which needs nothing, and working on one, which needs an account — and ran them together in five cards with three separate host fields. Each job now has a heading, Telnet sits with the work rather than the looking, and the host typed at the top can be carried down to the sign-in with a click, so the two are visibly the same machine.
  • The wait for a port to answer says what it buys. The seconds alone meant nothing without having thought about what a silent port costs, and the "up to N per device" beside them was arithmetic nobody asked for. Now: quick and misses slow devices, the usual, or finds the slowest and takes longest.
  • Plainer words throughout: the ARP table is called the ARP table, the scan speed is a rate rather than an adjective, and links are made only for ports NetBase can vouch for.

Fixed

Ten of these came out of two cameras — five from one at a customer site, five from one here — and every one of the ten was found the same way: by signing in and then actually using the pages behind the sign-in, rather than checking that the front page appeared and calling the window done. None of them is particular to a camera; they would meet any device whose own web interface is built the same way, and the second camera was still finding them after the first five were fixed.

  • Device pages that would not open. A device's redirect was arriving as a 200 with a Location nobody acted on, which left Brother, Canon, Kyocera and Buffalo hardware showing nothing; four ASUS routers stepped outside their window through history.pushState; and a Buffalo LinkStation reloaded itself once a second for ever. Found by opening every device with port 80 or 443 across the nine sites — 73 of them — of which 32 displayed at the start.
  • A relative address that climbs with .. no longer eats the ticket. On the device the climb stops at the root; under the proxy the root is several segments deeper, so ../script/inputrestriction.js from /login.html arrived with the ticket gone and came back 403. The camera's login page then ran without a file it needed and threw input_edit_restriction is not defined. Climbs are now resolved against the page and clamped where the device would clamp them — in the markup, in scripts, and in what document.write writes.
  • A POST with no content type is no longer thrown away. Device firmware routinely omits it, and PHP will not parse a body it has not been told the shape of; taking it as a form left the device receiving an empty request. The camera's sign-in went 403. If nothing was parsed and something was sent, what was sent is what goes on.
  • Nothing but a page gets the shim. A device also answers with things read by script rather than shown — the camera's sign-in returns an empty body with a 200 — and putting our script into that made the answer unrecognisable to the page that asked for it.
  • The cookies a device's own page sets now reach the device. They live on this server's name alongside Nextcloud's, so Nextcloud's are left out by name; the session above all never leaves this origin.
  • The request says which of the device's own pages it came from. Nextcloud sends no-referrer on everything, which is right for Nextcloud and wrong here: this camera turns away every page after the sign-in without it. The window now says same-origin — the referer never leaves this server — and the proxy rewrites it into the device's own address before sending it on.
  • A device window no longer sends its cookies twice. Two sets have to go to the device — the session it grants at the sign-in, which the server holds and the browser never sees, and whatever its own page set in the browser — and they were being sent as two separate Cookie: lines. A browser never does that, and a small device web server reads only one of the two. This camera read the second, which has no session in it, decided the sign-in it had granted a moment earlier belonged to nobody, and answered every page after it with a redirect back to the login screen. Both sets now go through the same cookie engine and leave as the one line HTTP asks for.
  • A request with an empty body no longer arrives with one. The parameters Nextcloud hands over are the query string and the body merged together, and taking that as the body meant the address's own question came back a second time as form data — POST /action/get?subject=datetime left here carrying subject=datetime in a body 25 bytes long. That is how this camera's pages ask it for their current settings, and it answered 400 to every one of them: the sign-in screen never offered the dialog it owes a device still on its factory password, and the pages behind it came up on their defaults. Only what was actually sent as a body is sent on as one.
  • A request with nothing to send now says how much that is. With no body, curl leaves out Content-Length altogether; a browser always writes Content-Length: 0. Given the first, this camera's web server waits for a body that is never coming and eventually closes the connection with nothing said. Every settings page asks for its current values with exactly that kind of empty POST, so every page came up with its fields blank or on the first option in each list — the time zone reading GMT-14 when the camera was set to GMT+08. Measured against the device directly: no Content-Length, no reply at all; Content-Length: 0, the settings come back. All 27 fields on the Date & Time page now match what the device itself shows.
  • A file whose name has a space in it is fetched. The browser escapes the space, the router unescapes it, and what reaches the proxy is a real space — which cannot go back into a request. Three of this camera's menu icons are kept under names like Video Analytics.png, and all three were broken pictures while the other eleven on the page were fine. What a path may not carry is escaped again on the way out, and what is already fit to send, the percent sign included, is left alone so that a path which was never unescaped is not escaped twice.
  • A port a device announced is added to what is known, not put in place of it. A port scan speaks for every port it tried and may rightly take one away; an announcement speaks for one port only — the one the device's own page is on. Written down as though it were the whole truth, it erased the rest. This camera announces port 49152 every forty-five seconds, so a scan that had just found eight open ports was down to that one inside a minute, and the web-page search that followed had nothing left to try: it never saw port 80, no matter how many times the scan was run.
  • A device that answers and then stops no longer holds the window empty for thirty seconds. An NTT phone system at one site sends its 403 in under a second and then keeps the connection open without ever finishing the body. A connection carrying nothing at all for ten seconds is now treated as finished, and the window says the device answered and then stopped rather than showing nothing. A stream that is genuinely working — a camera, a download — is carrying bytes and is never caught by this.
  • The server NetBase runs on now appears in its own device list. A machine never asks the network for its own MAC address, so it is never in its own ARP table — and NetBase, which discovers by reading that table, could see every device on the network except the one it was running on. Its own interfaces are now written down at the start of a scan, marked "this server" in the list.
  • A device out of reach is no longer marked offline for failing to answer. A scan marks everything offline and then marks back what replies, which is right for a device that could have replied and wrong for one that never could. A device that has only ever been heard announcing itself — never seen in the ARP table — keeps its state if it has been heard from recently.
  • A radio button is drawn as a radio button. It had no style of its own, so it fell through to the rule for a text box and was rendered as one: a rounded rectangle with twelve pixels of padding around the dot.
  • A multicast step no longer stops without a word. IP_ADD_MEMBERSHIP is not defined in every PHP build, and naming a constant that does not exist is a fatal error rather than a failed call, so the step ended silently and the devices that only announce themselves were never heard.
  • The standing listener actually runs. A background job registered as time-insensitive is held for the maintenance window, which on an instance with one configured means it runs between 01:00 and 05:00 and at no other time — so the listener that is supposed to be hearing announcements all day heard none. TIME_INSENSITIVE is 0 and TIME_SENSITIVE is 1, the reverse of what the names suggest at a glance, and the value is written once when the job is first registered and never revised, so the registration has to be removed and remade rather than merely corrected.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturelsvI6lQNV2r6VjQYc3jblzctyi3y4fyH3qh3ltaysElg7994DYPy+eCQLpeMECTNLgSNVFAlNSXD8I636ZM8AGBKMKokeywElPLtTytOW8IptKAOfErJtFXg2i8E0HRlIO6aNWAwcMlCBDwSACquiEs2j3ftsmY8D9abu/UrJPKYlLZ++iXRqbQ1adRd2klYsAHKES5fi85eujypN3yyQgYOy5J9+ib5alSGS3BFc4MXHDNI/yL0sKnV2XfRTY2oSgV5xSP7GPwDxviFe9ZH9jnzbS9DbUJaan9tuyJkhU68rzr4YVRCzT+UVKMUmXwWLYPPcTnqhVVaTBnRpOAWLqtat4F9tMTi8UEAKhCwqEe6qTELzFqdttuHgMAuRlwGMTHNksFJoyI5Tjq+uDHcpxlBkiL9G4hafAyVqbNmX3L7uW26vBZzW0OY7YqVtbzzNiahNq7dhBxr+tAO7NBJA3LA1sLMcHXU/vkAeesusacJUoJ9G/ZFUcLWCPh1U11tCk4E2Zp4W8T5qD1OdXUxmK9NJWgvyGYB4NQwa7RSGtS9kcwT19p/d+h+2WZAYtKn0drBbaf/yBLYNydu5iYBnoER9cGLzP8f0+CXZLiQrYv5PAdvkaXZr48L0SrIAa/bopO8R8PgUX0j+L06bS1teTspLOJvsighiPBbcEnHlzQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.3.3
Release Details
UpdatedSept. 5, 2026, 3:53 a.m.
Changelog

Removed

  • Ping, traceroute, the port check, TCP ping and path MTU discovery, and the nmap front end with them. The Nextcloud app store review takes the view that an app which sends probes of that kind should not be installable from the store, and NetBase follows it: the tools, their tabs, their routes and the code behind them are gone from this release.

Changed

  • Everything else works as before: device discovery and the device windows, the LAN sweep and inventory, DNS, whois, TLS and HTTP, subnet and MAC, mail, FTP and SFTP, SSH and Telnet, the clock check, the benchmarks and the server view.
  • The requirements page and the administration settings no longer mention ping, traceroute, mtr or nmap, and no longer ask for them to be installed.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureJ0kMXHFSMxxwbvTbXhBrHulZmHnQd+P84sVi4JS3RZSEwAauHtV+f2r1tlOrAyi9ZFq3cQJ2OlrVt84rnil/C8nCnJx7Aqw8vyTYVJ2+ToF8aj6PNl0wtNs4ocd4N9GjuktyQdsNaC0feBA3I/ZkCEZivbXZZ88XAhQ1WaLBROFbRoGmeD7Z+C/MsjZyhbRL41YfL3ADcfyUjkjTFU1O19ObgyfX5E76IFz7KtfZXtUfvIZatn8RR6rs9kX8ospThDOmABmuqsoaneAm9/LEnGbCHdnt9oJtYOvteVIpkCUuz9YwW8xne/ny5QgKn2rfS5BfKQRx0d6EpRG3Oro8+Ho5I48RIYva/32IRxNZSblICaZ7H+X0qL+Fs2zXhB/uYT6wq4HKdXYS0UmHZIlwpBB55s/S0Mcgutc1GpeLQKPLj7pdzDNNJLTxXLq4u2sExN/20G6oATgdbhXErr8U5f8pIw2VWrrl4o0C11zVGT+h5K/tOGSvKcYQxi6R+rnVpiCQLv3+izdbW1zc3RAUmCU4emLxVROuDT3Hh06ig+qV/hf7QLF97RfYfF06IZOAuxfpE8Zx9Ctvl8WYJ4obGBuhA6XwY2WTZxPvJIRIlQQxEe7rTM2VNCosOa8axM7resC5EAzTG/BYKVbyOLBNbwX1r992ATQ4MufWXNNYHzU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32

Nextcloud 32

NetBase 0.6.2
Release Details
UpdatedSept. 17, 2026, 10:45 a.m.
Changelog

Changed

  • Nextcloud 35 is now supported. There are no other changes. The supported range is widened from 30–34 to 30–35. The app itself is unchanged from 0.6.1: it was tested on Nextcloud 35 against the changes that release makes for apps, and ran without modification. (Nextcloud 35 に対応した。それ以外の変更はない。 対応範囲を 30〜34 から 30〜35 に 広げた。アプリ本体は 0.6.1 から変わっていない。Nextcloud 35 でアプリ向けに変わった点に 照らして試験し、修正なしで動くことを確かめた。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureovYzjgphrZG9qwzRnUkQE6ciV6DE9L0exbPrr2vAdkG4vEunPZAzj+jynTjvITfB0AEM1uHMkSvuVlPn8LXaqGp5tAhY7ZTFpf9FPRXx9zt+1sofQGRVIW5iDWAU+nsj2jr1HROnDVcb+q0Wb5Xm5nr3wL9zX5Cto9xPu1VjM5+KxVl0xbaUAnVWUj5nKZQN9yLHmpksAdt/VsAKO8BEclfnXI2z+4VV/EL7A3gaHW5SrOEm+0bqDj2nGPit2UfuXPcSYCnEtmwkSmwwCWzfKC3yVrZ3toqgwWQIJy1cYNh6H1BKvuZSzaec/ZkRFXdLHM7WiATnzBVvY57voAVNlkQ4TLbgw5AQDQgPPDnIK7TaeCUMrGfLQwSPmznfiD5Y51O5CeIR/chXKLOWJBHdDex4yLgm2H5pwl+0EAN7E9ct8qjPBdF+sTdiGcBf5p6QYTGJmVAku7ic3lql6DTDNsHRIo6+NP/aXXJ5BSbhim4mzrb7jTVMFmB8xlMkyI+dr4EiJnvkokNw9CciiU6ddXkQoNBjjPMsBmI1S4yplH0maYsMSc9wryjhOVePzgX2phIRbFFqVfe7Q+phJp0EtHjEqyULrmH3HRkNtoQIYoVmPmuls1hkt5F38ZMUzyU6vvqKIPc4ZGtDGLZYGzOBa+8SVI2WKOsZW4dJqvv/BHM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
NetBase 0.6.1
Release Details
UpdatedSept. 17, 2026, 10:44 a.m.
Changelog

Added

  • A device in the list can be pinged: right-click a row and ask it. The answer is the packet count, the loss and the round-trip times, kept on screen until it is closed rather than fading like a notice — the numbers and their caveat are worth reading twice. A result of "nothing came back" says so plainly and adds that plenty of devices and firewalls ignore ping while answering perfectly well on a port, because a bare 100% reads as "the device is off" and often it is not. It reaches the local network and nothing beyond it, in two ways at once: the request names a device by its row rather than by an address, so there is no field in which to aim it at the internet, and the server checks the address against its own subnets before a single packet leaves. An address on no subnet of this server is refused rather than tried. (一覧の機器に ping を送れるようにした。行を右クリックするだけ。 送信数・受信数・ 損失率・往復時間を、消えてしまう通知ではなく閉じるまで残る小窓に出す。数字とその 読み方は二度読む価値があるため。応答がない場合は「多くの機器やファイアウォールは ping を無視しつつポートには応答する」と添える。損失 100% だけを見せると「電源が 落ちている」と読めてしまうが、実際はそうでないことが多いからである。外部には届かない。 仕掛けは二重で、①要求はアドレスではなく機器の行を指定するため、外部を狙う入力欄が そもそも無い、②サーバー側が送信前にアドレスを自分の持つネットワークと照合する。 どこにも属さないアドレスは、試さずに拒否する。)

  • A machine with a foot in several networks is pinged at the address that means something. Such a machine is one row per address, shown as one device, and the row menu hands over whichever row carries the name — which is not chosen for being reachable. On the development server that picked the container bridge over the address anyone would mean, and it could as easily have picked a stale address on a network the machine no longer has, which the server then refuses. The address is now chosen on its own merits: the routed networks first, primary before secondary, then an address this server merely has an interface on, and never one it has no interface on at all. Ties fall to the lowest address, so the choice does not wander between scans. (複数のネットワークに足を持つ機器では、意味のあるアドレスに送るようにした。 この種の機器はアドレスごとに別の行になり、一覧では1台として表示される。右クリックが 渡すのは「名前を持っている行」で、届くかどうかで選ばれていない。開発機では、誰もが 思い浮かべるアドレスではなくコンテナ橋の側が選ばれていた。条件次第では、その機械が すでに持たないネットワークの古いアドレスが選ばれ、サーバーに拒否されて終わることも あり得た。アドレス自体の素性で選ぶようにした。経路のあるネットワークを優先し (主たるものを副次より先に)、次にこのサーバーが足だけ持つネットワーク、足を持たない ものは選ばない。同順位なら小さいアドレスを採り、探索のたびに揺れないようにした。)

Fixed

  • A device type you chose by hand no longer disappears when a container restarts. Reported from an all-container estate: a type changed to "Container" was back to "Unknown" after the container was restarted and the devices refreshed. The guard that stops a scan replacing a hand-picked type with a guess was working; something else was undoing it. NetBase identifies a device by its MAC address, and a container is handed a new one every time it starts — podman gives it a new address as well. The machine that came back was, as far as NetBase could tell, a different machine. Reproduced both ways it plays out: where the address changed too, the old row survives offline with its type and a new "Unknown" appears beside it; where the address stayed, the old row was deleted outright and the type went with it. That deletion is deliberate — when a DHCP lease passes from an old PC to a new device, the old machine's name and type must not follow the address to its new occupant — and a restarted container is indistinguishable from a reassigned lease from the outside. So the line is drawn differently: everything the machine reported about itself (its ports, its names, its vendor, its history) is still dropped with its row, and what a person typed is carried across — the name they gave it, their notes and tags, and a type they picked by hand. A guessed type is still left behind, because "Printer" was the scan's opinion of the machine that left and says nothing about whatever holds the address now. (手で決めた機器の種別が、コンテナの再起動で消えてしまう不具合を修正。 すべてを コンテナで運用されている方からの報告で、「コンテナ」に変えた種別が、再起動して機器を 更新すると「不明」に戻っていた。推測による上書きを防ぐ仕組みは正しく働いており、 別のものが打ち消していた。NetBase は機器を MAC アドレスで見分けるが、コンテナは 起動のたびに新しい MAC を受け取る。podman ではアドレスまで変わる。戻ってきた機械は、 NetBase から見れば別の機械だった。起こり方は2通りあり、両方を再現した。アドレスも 変わる場合は、古い行が種別を保ったままオフラインで残り、隣に新しい「不明」が現れる。 アドレスが同じ場合は、古い行が削除され、種別ごと消える。この削除は意図的なもので、 DHCP で古い PC からアドレスが別の機器へ渡ったとき、前の機器の名前や種別を新しい 持ち主に引き継いではならないためである。そして再起動したコンテナと、渡されたアドレスは 外から見分けがつかない。そこで線を引き直した。機械が自分について報告したもの (ポート、名前、製造元、履歴)は従来どおり古い行とともに捨て、人が入力したものだけを 引き継ぐ — 付けた名前、メモ、付箋、そして自分で選んだ種別。推測された種別は 引き継がない。「プリンター」は去った機械についての意見であって、いまそのアドレスを 持つものについては何も語らないからである。)

  • The settings screen no longer answers 500 on a confined install. Listing the fonts a terminal can borrow walks the font folders, and on a confined install — a snap, for one — /usr/share/fonts is refused outright. A folder that cannot be opened throws rather than warns, and the @ in front of it does nothing about a thrown error, so the exception travelled out of the font list, through the settings handler, and turned the whole screen into a 500. The walk is now guarded, and the same refusal arriving from a folder deeper in is caught too rather than only the opening of the top one. A font nobody can read is not worth a broken screen: the folder is skipped instead. (限定された環境で設定画面が 500 になる不具合を修正。 端末に貸せるフォントを 数えるためにフォント用のフォルダーを辿るが、限定された環境 — snap などがそうである — では /usr/share/fonts が丸ごと拒否される。開けないフォルダーは警告ではなく例外を 投げるため、前に付けた @ では抑えられない。例外はフォント一覧から設定の処理まで 抜けていき、画面全体が 500 になっていた。辿る処理そのものを保護し、先頭のフォルダーを 開くときだけでなく、途中のフォルダーから同じ拒否が来た場合も受け止めるようにした。 読めないフォント1つのために画面を壊す価値はない。そのフォルダーは飛ばす。)

Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureMWUIO4DhCXKnL5EV46opf++sOrtHiPQGJ+lzsEhFjx5QuFWz7OcXA3gA0lV43t5W2WOCdEuP+QKcuDbmCCmsJrGe0i0ekeNtlT8QPwm3qgMXeFHIcCOogH3Lkh4uawbBI9CRXjtqBRMjJAq59WaJ6fhp2ek9fRt/E3abwNrGgSccb5wmVI3mq52I7zaKYYpDUlzc8bme5nuRxjygb2N6bnaufCmHGMWLBglwnWbgTYHDnjiM9Dp0q7xdsA+tw1ICZWHvjeafYz8HuEkVOL0aGjoiX19mRMg8eBePlFWZfTkGHLdR0jLhuL7n669AxeiUKPCV7ZQBxRieu6oXKL3M2ifYO36tLjglkZ1kD6gUJVPqD+A9ANitG9OiP+tp9Vff0KoSBf+tODGvPjM0ZLyPbuxbS8SFxh4vhy+MPeu0kPqSeY0evnQz00YnV+FI+DoLwthbPtl+OsUzwJlnp1Y4JoBeEHsGgWcrEl26UYQA61AhtL5z6D//VfOQnkcZ5m+wJwzRIAz0I5nBX8W93wqqdUsIE/Nvscdb/g4j8pG47oXha8duf9aiphK3kGxYn3MHqGZDb91EVBas9SNH/TwBOzEhh+HOzVAXGyxhD+jNJ2AKcknSn7qhUnFKCEi7BW/DXl/vGgXmUKR6X9dQSVpc7QilFKz8Px5eYN+hzy9aYcc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.6.0
Release Details
UpdatedSept. 16, 2026, 6:03 a.m.
Changelog

A bigger step than 0.4.3 → 0.5.0 was. Please read the first entry before you update: saved connections move to RegiBase, and the ones stored before this release are gone. (0.4.3 から 0.5.0 のときよりも変更点が多い版です。更新前に最初の項目を必ずお読み ください。保存済みの接続先は RegiBase へ移り、これまでに保存したものは消えます。)

Changed

  • The settings dialog is wider, its tabs sit in one row, and the tabs are easier to tell apart. Four tabs in a 560-pixel dialog wrapped to two rows with room to spare on each; the dialog is the ordinary 660 now and they fit in one, sharing the width and wrapping only when the names cannot be read any narrower. The closed tabs were a muted grey on a near-white ground, which is hard to separate from the panel at a glance: the ground is darker and the text is the ordinary text colour. Measured rather than guessed — the text now sits at 12.1 against its own ground where it was 4.3, and the open and closed states differ by 1.21 where they differed by 1.11. Five mixes were compared before settling on one. (設定ダイアログを広げ、タブを1段にし、開いているタブと閉じているタブを見分けやすく しました。 560ピクセルの幅に4つのタブは収まらず2段に折り返していましたが、各段には 余白がありました。通常の660ピクセルに広げ、タブが幅を分け合って1段に収まり、名前が 読めなくなるときだけ折り返すようにしました。閉じているタブは白に近い地に薄い灰色の 文字で、ひと目では本文と区別がつきませんでした。地を濃くし、文字を通常の文字色に しています。当てずっぽうではなく実測しました。文字と地の比は 4.3 → 12.1、開と閉の 地色の差は 1.11 → 1.21。5通りの濃さを比べたうえで決めています。)

  • Acting as root now lapses on its own. The sudo password was never stored, but it stayed usable for as long as the page was open — and a page left open on an unlocked screen is somebody else's root. It is given up after a set time with nothing touched: ten minutes to start with, adjustable from one to thirty in the settings, or never for anyone who would rather decide for themselves. The remaining time is shown beside the notice, and "Give up root now" is a button rather than a line of small print. Working in NetBase resets the clock; merely having the tab in front of you does not, because a tab left on this screen while its owner is elsewhere is the case this is for. (root として操作している状態が、自動で切れるようになりました。 sudo のパスワードは もともとどこにも保存していませんが、画面を開いている限り使える状態が続いていました。 施錠されていない端末に開いたまま置かれた画面は、そこにいる誰にとっても root です。 何も操作しないまま一定時間が過ぎたら手放します。既定は10分、設定で1〜30分から選べ、 「自分からは手放さない」も選べます。残り時間は知らせの横に出し、「いま root を手放す」 は小さな文字の一行ではなくボタンにしました。NetBase で何か操作すれば数え直しますが、 画面が目の前にあるだけでは数え直しません。持ち主が席にいないままこの画面が開かれて いる、という場合のための仕組みだからです。)

  • A folder can be downloaded now, as one ZIP file. Only single files could be brought back; a folder had to be walked into and its files fetched one at a time. The archive is built on this server rather than on the far end, because that is the only way that works everywhere: a host reached over FTP has no commands at all, and even among Unix servers zip is often missing — the test server here has tar but no zip. Nothing has to be installed on the server being visited. Three limits keep one request from running away: how deep it walks, how many files it takes, and how many bytes in total; reaching one stops the walk and says so, rather than quietly handing over half a folder. (フォルダーを、1つの ZIP ファイルとしてダウンロードできるようにしました。 これまで 取り込めるのは単体のファイルだけで、フォルダーは中へ入って1つずつ取るしかありません でした。書庫は接続先ではなくこのサーバーで組み立てます。それが唯一どこでも同じに 動く方法だからです。FTP の相手にはそもそもコマンドがなく、Unix のサーバーでも zip は 入っていないことが多く(この検証機も tar はあるが zip は無し)、相手側に何も導入する 必要がありません。1回の要求が際限なく走らないよう、深さ・件数・総量の3つに上限を 設けています。上限に達したら walk を止めてその旨をお伝えします。黙って半分だけ渡す ことはしません。)

  • "Download to my files" in the right-click menu is just "Download" now. What it did was plain; the wording was not. (右クリックの「自分のファイルへ取り込む」を「ダウンロード」にしました。 している ことは単純なのに、言い方が回りくどいものでした。フォルダーでは「ZIPでダウンロード」と 出ます。)

  • The settings dialog is tabbed too, and the tabs take one row where they fit. Four groups stacked one under another made a dialog longer than the screen: appearance, terminal, connections and keys, and the tool order all had to be scrolled past to reach the last of them. They are four tabs now, the same ones the connection list uses. The tabs were fixed at two to a row, which forced a second row even where there was width to spare; they fill the row and wrap only when they must. (設定ダイアログもタブにし、タブは収まるなら1段にしました。 4つの群を縦に並べて いたためダイアログが画面より長くなり、外観・端末・接続先と鍵・ツールの並びのうち最後の ものへ行くには手前の3つを通り過ぎる必要がありました。接続先リストと同じ形の4つのタブに しました。タブは2つずつの2段に固定していましたが、幅に余裕があっても2段になって しまうため、収まるだけ横に並べ、入らないときだけ折り返すようにしました。)

  • The connection list settings are four tabs now, two to a row. The four kinds were stacked one under another, which ran the dialog well past the bottom of the screen: the one being worked on was never wholly in view, and finding the right one meant scrolling through the other three. Putting them behind a single selector had been worse — three of the four were invisible and there was no telling what was set up. The tabs say both at once: which one is open, and which of the others still have nowhere to keep their connections (a dot on the tab). (接続先リストの設定を、2段のタブにしました。 4つの種別を縦に並べていたため、 ダイアログが画面の下へ大きくはみ出し、作業中の種別が一度に収まらず、目的のものを 探すのに他の3つを通り過ぎる必要がありました。かといって1つの選択欄にまとめたときは もっと悪く、4つのうち3つが見えず、何が設定済みかも分かりませんでした。タブなら 両方が一目で分かります。いまどれを開いているかと、残りのどれがまだ未設定か(タブに 点が付きます)。)

  • Fixed: reordering the tool list stopped the whole sidebar from working. Dragging a tool into a new place left Settings, System information and Open a shell unresponsive. They were not covered by anything and had not been replaced — the screen had simply stopped redrawing. The list was built by a <template v-for> holding a button and a conditional rule, with the key on the template rather than on the elements: one turn of the loop produced two nodes or one, so once the order changed Vue could no longer match them up. It threw inside its own patch ("insertBefore: parameter 1 is not of type Node"), abandoned the update, and never drew anything again. The error did not reach window.onerror, which is why it survived my checks. The list is now one element per item, keyed on the element, and the rule between the two groups is drawn by the item it belongs to. (不具合修正:ツールの並び替えをすると、サイドバー全体が動かなくなっていました。 項目をドラッグして並び替えると、「設定」「システム情報」「シェルを開く」が押しても 反応しなくなります。何かに覆われていたのでも、ボタンが作り直されていたのでもなく、 画面の更新そのものが止まっていました。一覧は <template v-for> の中にボタンと 条件付きの区切り線を入れ、キーを template にだけ付けていました。繰り返し1回が 2要素になったり1要素になったりするため、順序が変わると Vue が要素を対応づけられず、 自身の更新処理の中で例外を投げて(insertBefore: parameter 1 is not of type Node) 更新を放棄していました。この例外は window.onerror に届かないため、私の検査を すり抜けていました。一覧を1項目1要素・要素にキーを付ける形に改め、区切り線は その上の項目が引くようにしました。)

  • Fixed: "act as root" did nothing for a saved SSH connection. SCP offers the SSH connections because it signs in the same way — but opening one still went through SFTP, which has no shell behind it and cannot put a command through sudo. So the tick was there, the password was taken, and /root came back unreadable anyway. Which protocol the screen is set to is now sent with every request, and SCP opens over SCP even when the connection was saved as SSH. (不具合修正:保存済みの SSH 接続先では「root として操作する」が効いていませんでした。 SCP はサインインの仕方が同じなので SSH の接続先を候補に出しますが、開くときは SFTP を 使っていました。SFTP の背後にはシェルが無く、sudo を通せません。そのため切り替えは あるのにパスワードも受け取られ、それでも /root は読めないままでした。画面がどの手順に 設定されているかを毎回の要求に添えるようにし、SSH として保存された接続先でも SCP は SCP で開きます。)

  • The file list works like a file manager now. It was a table with three buttons on every row, and a folder could only be entered by hitting its name exactly. Now: a row is selected by clicking it, a folder opens on double-click, and the right button offers what can be done with that row — open, download, copy the path, rename, change permissions, delete. The columns sort (folders stay above files whichever one is used), ".." walks up from inside the list, the owner is shown, and there is a refresh button. (ファイルの一覧を、ファイル管理ソフトらしい操作にしました。 これまでは各行に ボタンが3つ並ぶ表で、フォルダーは名前を正確に狙わないと開けませんでした。行は クリックで選択、フォルダーはダブルクリックで開き、右クリックでその行にできること (開く・自分のファイルへ取り込む・パスをコピー・改名・権限を変更・削除)が出ます。列は 並べ替えられ(どの列で並べてもフォルダーが上に残ります)、一覧の中から「..」で上の階層へ 戻れ、所有者の列と再読み込みのボタンを足しました。)

  • The master key prompt says how long the key lasts. Where the key is asked for, under the box: it is held until the browser is closed, for that session and nothing more. Somebody typing a master key deserves to know what they are agreeing to before they type it, not after. (マスターキーを尋ねる場所に、有効期間を明記しました。 入力欄の下に「このマスター キーはブラウザーを閉じるまで有効です(このセッションのみ有効)」と出します。マスター キーを打つ人は、打つ前に何に同意しているのかを知っているべきです。)

  • Fixed: the saved list could be chosen from without the master key, and then would not connect. A name and an address in RegiBase are not secret and read back without the key; the password and the private key are, and do not. So a locked list looked complete — every server there, selectable — and failed at the moment of use, with the key asked for only once the connection had already been attempted. Offering a choice that cannot be carried out is worse than offering none. Choosing the list now asks for the key in the place the list would have been — "Please enter the RegiBase master key." — on both the SSH screen and file transfer. (不具合修正:マスターキーが無くても保存済みの一覧から選べてしまい、選んでも接続でき ませんでした。 RegiBase では名前やアドレスは秘密の項目ではないため鍵が無くても読め、 パスワードや秘密鍵は読めません。そのため一覧は完全に見え、どれでも選べるのに、使う 段になって失敗し、鍵を尋ねられるのは接続を試みたあとでした。実行できない選択肢を 差し出すのは、何も出さないより悪いことです。リストを選んだ時点で、一覧があった場所に 「RegiBaseのマスターキーを入力して下さい」と出して先に尋ねるようにしました。SSH 画面と ファイル転送の両方です。)

  • SCP offers the SSH connections again. Splitting the lists by type was right for storage but wrong for SCP at the screen: SCP signs in over SSH with the same account and the same key, so every connection saved as SSH is one SCP can open. With the lists split, sixteen saved servers became an empty list on a screen that could have opened any of them. SCP's list now offers the SSH connections as well. Where they are stored has not widened — that is still one collection per type. (SCP のリストに SSH の接続先を再び出すようにしました。 種別でリストを分けたのは 保存先としては正しかったのですが、画面の SCP については誤りでした。SCP は SSH に 同じアカウント・同じ鍵でサインインするため、SSH として保存した接続先はすべて SCP で 開けます。リストを分けた結果、16件が保存されているのに一覧が空になり、開ける相手が 1件も出なくなっていました。SCP の一覧には SSH の接続先も出します。保存先が広がった わけではありません ― 保存先は従来どおり種別ごとに1つです。)

  • The settings name the groups the way they were asked to be named. They had been relabelled "SSH", "SCP", "FTP and SFTP" and "Mail (SMTP, IMAP, POP3)" — wording of my own, in which Telnet had quietly disappeared. They read "SSH / Telnet", "SCP", "FTP / SFTP" and "SMTP / IMAP / POP3" again. (設定の群の名前を、ご指示どおりの括り方に戻しました。 私が勝手に「SSH」「SCP」 「FTP and SFTP」「Mail (SMTP, IMAP, POP3)」と付け替えており、Telnet が消えて いました。「SSH/Telnet」「SCP」「FTP/SFTP」「SMTP/IMAP/POP3」に戻しました。)

  • The SSH screen no longer repeats its own name. It carried a heading reading "SSH and Telnet" directly under the menu entry that already says so — the only screen of the thirteen to do it, and the same words twice in the same glance. The heading is gone, and the styling that existed only for it went with it. (SSH の画面で、自分の名前を繰り返すのをやめました。 左のメニューに「SSH・Telnet」と 書いてあるすぐ下に、同じ「SSH・Telnet」という見出しを置いていました。13画面のうちこの 画面だけで、同じ言葉が一目の中に二度あることになります。見出しを外し、その見出しの ためだけにあった体裁指定も併せて削除しました。)

  • FTP and SCP no longer share one list. The storage was split by type, but the screen was not: one list offered every saved FTP, SFTP, SCP and SSH connection together, so a server saved for FTP was offered to SCP — a machine that cannot answer the protocol being asked for — and the fact that the two are kept in different collections was hidden. The type is chosen on the screen now, and it picks the list as well as the protocol: SCP shows the SCP list, FTP and SFTP share theirs, SSH keeps its own. (FTP と SCP でリストを分けました。 保存先は種別ごとに分けたのに、画面のリストを 分けていませんでした。1つのリストに FTP・SFTP・SCP・SSH の保存済み接続先がすべて並び、 FTP 用に保存した相手が SCP の候補として出ていました。その機器は求められた手順に 応えられません。別のコレクションに保存されているという事実も隠れていました。画面で種別を 選ぶようにし、種別が手順とリストの両方を決める形にしました。SCP は SCP の一覧、 FTP と SFTP は共通の一覧、SSH は SSH の一覧です。)

  • Picking from the list no longer connects on its own. On the file transfer screen, choosing a saved connection opened it there and then, while the SSH screen waited for the button that says so. Both wait now. (リストから選んだだけでは接続しないようにしました。 ファイル転送の画面では保存済みを 選んだ瞬間に接続していましたが、SSH 画面はボタンを押すまで待ちます。両方とも待つように 揃えました。)

  • The menu entry is "File transfer" again. It had been renamed to the list of protocols it speaks, which is not what it is for. (メニューの項目名を「ファイル転送」に戻しました。 扱える手順の名前を並べた表記に なっていましたが、それはこの画面が何をするためのものかを表していません。)

  • The file transfer screen now works the way the SSH screen does. The two do the same job — name a server, then use it — and asked for it differently: the SSH screen put the choice first and everything under it in one card, while file transfer had the typing in one card and the choice in another below it, with the two buttons in the opposite order and the opposite default. Nothing was wrong with either on its own; having both was. File transfer now follows the SSH screen exactly — the same choice, in the same order, in one card, with the chosen connection shown back the same way. (ファイル転送の画面を、SSH 画面と同じ操作に揃えました。 どちらも「相手を決めて 使う」という同じ仕事なのに、訊き方が違っていました。SSH 画面は選択を先頭に置いて その下にすべてを1枚で収めていたのに対し、ファイル転送は手入力が上のカード、選択が下の カードで、ボタンの並び順も既定も逆でした。片方だけを見れば問題はなく、両方ある ことが問題でした。ファイル転送を SSH 画面に合わせ、同じ選択・同じ順序・1枚のカードに し、選んだ接続先の表示の仕方も揃えました。)

  • Where connections are kept now shows every kind at once. Separating the storage by kind arrived with a selector in front of it: one kind was on screen and the other three were not, so there was no way to see at a glance what was set up and what was not — and only ever one list picker, whatever you were looking for. All four are listed together now, each with its own collection and its own field assignment, each saved on its own. (接続先の保存先設定で、4つの種別すべてを同時に表示するようにしました。 種別ごとに 保存先を分ける機能を入れた際、その前に種別を選ぶ欄を置いてしまいました。画面に出るのは 1種別だけで残り3つは見えず、何が設定済みで何が未設定かが一目で分からないうえ、 リスト選択も常に1つしかありませんでした。SSH・SCP・FTP/SFTP・メールを並べて表示し、 それぞれに保存先コレクションと項目の割り当てを持たせ、個別に保存できるようにしました。)

  • The same choice of "type it in" or "pick from the list" on both screens. The file transfer screen had a card for typing and a card for the saved list sitting one above the other, both asking for the same server with nothing to say which one was in use. It is one card with the same two buttons the SSH screen has. (ファイル転送の画面にも、SSH と同じ「手入力する/リストから選ぶ」の切り替えを付けました。 これまでは手入力のカードと保存済みのカードが上下に並び、どちらを使っているのかが 分からないまま、同じ相手を二重に尋ねていました。1枚にまとめ、SSH 画面と同じ2つのボタンで 切り替えます。)

  • Fixed: merging the SSH screen hid the fields you type into. Naming the server became one list, and "type an address below" was the first entry in it. Choosing a saved connection then made the typing fields disappear with nothing on screen to say they could come back — so they read as deleted. It was worst for Telnet, which is only ever typed in and never saved, and so looked unreachable. How the server is named is now a choice shown as one: Enter it by hand or Pick from the list, always visible, always switchable. The typed details are kept when you go to the list and back. (不具合修正:SSH 画面を1枚にまとめた際、手入力欄が隠れていました。 相手の指定を 1つの一覧にまとめ、「下に直接入力する」をその先頭の項目にしていました。保存済みを選ぶと 手入力欄が消え、戻れることが画面のどこにも書かれていないため、消したようにしか 見えませんでした。とくに Telnet は手入力しかなく保存もしないため、接続できないように 見えていました。相手の指定方法を選択として画面に出す形に改めます。「手入力する」と 「リストから選ぶ」を常に表示し、いつでも切り替えられます。リストへ行って戻っても、 入力済みの内容は保たれます。)

  • A folder only root can read can now be opened over SCP. There was no way to elevate at all: the listing, and every rename, delete and permission change with it, ran as the account that signed in, so a directory belonging to root came back empty — indistinguishable from an empty one. Ticking Act as root asks for the sudo password on the spot, uses it for that request, and keeps it nowhere: not in the settings, not in RegiBase, not on disk. It is held in the open page and nothing else, so reloading asks again. That is deliberate — a password that is never written down cannot be read out of a stolen database.

What it does not cover: downloading and uploading a file. SCP carries the file itself over the very input the password would have to be typed into, so the two cannot share a connection. Those two actions stay unelevated and the far end refuses them as it always did, rather than appearing to work and quietly returning nothing. (root しか読めないフォルダーを SCP で開けるようにしました。 これまでは昇格する 手段が一切なく、一覧も改名・削除・権限変更もサインインした利用者のまま実行されて いました。root 所有のディレクトリは空として返り、本当に空の場合と見分けがつきません でした。「root として操作する」を入れるとその場で sudo のパスワードを尋ね、その リクエストにだけ使い、どこにも保存しません。設定にも RegiBase にもディスクにも 残さず、開いている画面の中だけで保持するため、再読み込みすれば再び尋ねます。書き残さ ないものは、データベースを盗まれても読み出せないという考えによるものです。

対象外:ファイルのダウンロードとアップロード。 SCP はファイル本体を、パスワードを 打ち込むべき入力そのものに流すため、両立できません。この2つは昇格せず、これまでどおり 接続先に拒否されます。動いたように見せて黙って何も返さないことはしません。)

  • "Create one for me" now builds a collection shaped for the kind you asked for. It made one shape for everything, so a mailbox list arrived with a private key field and an SSH list with a sender address — fields nobody would ever fill in, on every record. There is a template per kind now: SSH and SCP carry the key fields, FTP and SFTP carry the password ones, and mail carries what a mailbox actually needs. The type field offers only the types that collection is for, rather than all seven. The templates belong to NetBase and are handed to RegiBase outright, so nothing had to be added to RegiBase to make them possible, and a collection built by hand still works exactly as well — which field means what is decided by the assignment, not by these names. (「作ってもらう」が、選んだ種別に合った形のコレクションを作るようになりました。 これまではどの種別でも同じ1つの形を作っていたため、メールの一覧に秘密鍵の欄が、 SSH の一覧に差出人アドレスの欄が付いてきました。誰も埋めない欄が全レコードに並ぶ 状態です。種別ごとのテンプレートを用意しました。SSH と SCP は鍵の欄を、FTP・SFTP は パスワードの欄を、メールはメールボックスに実際に要るものだけを持ちます。種別の欄も、 そのコレクションが対象とする種別だけを選択肢に出します。テンプレートは NetBase 側に あり、RegiBase へはそのまま渡すだけなので、RegiBase に何かを追加する必要はありません。 手作りのコレクションがこれまでどおり使えることも変わりません。どの項目が何にあたるかは、 これらの名前ではなく割り当てが決めるためです。)

  • Each kind of connection now has its own place in RegiBase. One collection held everything, which was wrong the moment the kinds diverged: SCP reuses the SSH credentials, but FTP is a different account on a different machine, and both were being read out of the same list. SSH, SCP, FTP-and-SFTP and mail each name their own collection and their own field assignment now. Naming the same collection for several kinds is expressly allowed — SSH and SCP usually are the same list — so separating them costs nothing to anyone who does not need it. Nothing moves on upgrade: a kind that has not been given a collection of its own still reads the single one chosen before, so the list is unchanged until you separate something deliberately. (接続先の種別ごとに、RegiBase の保存先を分けられるようにしました。 これまでは すべてを1つのコレクションに入れており、種別が食い違った時点で破綻していました。SCP は SSH の情報をそのまま使いますが、FTP は別の機器の別アカウントです。それを同じ一覧から 読んでいました。SSH・SCP・FTP/SFTP・メールが、それぞれ自分のコレクションと項目の割り当てを 持ちます。複数の種別に同じコレクションを指定して構いません ― SSH と SCP はたいてい同じ 一覧です。更新しただけでは何も動きません。自分のコレクションをまだ持たない種別は、 これまでの単一の設定をそのまま読むため、意図して分けるまで一覧は変わりません。)

  • A record that does not say what it is, is no longer assumed to be SSH. It is taken as whatever the collection it was read from is for. The old assumption put FTP servers in the SSH list. (種別が書かれていないレコードを、SSH と決めつけるのをやめました。 読み出した コレクションが何のためのものかで判断します。これまではFTPの機器がSSHの一覧に並んでいました。)

  • SFTP is no longer offered as a separate kind to create. It is not a kind of FTP but a subsystem of SSH, and since a saved SSH connection is opened for files over SFTP already, offering it separately only asked people to decide something that made no difference. FTP keeps its encryption choice, which is the question that was actually being asked. A connection saved as SFTP before this still works and still shows its own kind. (SFTP を、新規作成の種別としては出さないようにしました。 SFTP は FTP の一種では なく SSH の副系統です。保存済みの SSH 接続先はすでに SFTP でファイルを開くため、別々に 出しても違いの無い選択を迫るだけでした。FTP には暗号化の選択肢が残っており、実際に 訊きたかったのはそちらです。これまでに SFTP として保存した接続先はそのまま動き、 種別も SFTP のまま表示されます。)

  • The speed test now lets you choose what to measure against. It measured against M-Lab and used Cloudflare only when M-Lab could not be reached at all, and there was no way to ask for the other one. A network that reaches one may not reach the other — M-Lab needs an outbound WebSocket — and two independent readings of the same line are worth more than one, so both are now offered: Nearest (automatic), M-Lab or Cloudflare. Naming one means it, rather than quietly measuring against the other: asking for M-Lab where no M-Lab server answers now says so instead of handing back Cloudflare's figure under M-Lab's name. (速度テストで、どこと測るかを選べるようにしました。 これまでは M-Lab で測り、 M-Lab へまったく届かないときだけ Cloudflare に落ちる作りで、もう一方を指定する 手段がありませんでした。片方に届く回線がもう片方に届くとは限らず(M-Lab は外向きの WebSocket を必要とします)、同じ回線を独立した2つの物差しで測れるほうが確かなため、 「最も近いところ(自動)」「M-Lab」「Cloudflare」から選べるようにしました。名指しした 場合はその指定を守ります。M-Lab を指定して1台も応答しないときは、Cloudflare の数値を M-Lab の名前で返すことはせず、届かなかったとお伝えします。)

  • Fixed: the speed test reported someone else's latency. When measuring against M-Lab, the throughput came from the M-Lab server but the latency and jitter shown beside it were timed against speed.cloudflare.com — a different network, a different distance. The two numbers on screen described two different paths. Latency is now timed against the very machine the throughput came from. (不具合修正:速度テストの遅延が、別の相手のものになっていました。 M-Lab で測る とき、速度は M-Lab のサーバーから得ているのに、その横に並ぶ遅延とジッターは speed.cloudflare.com に対して計っていました。相手も距離も違うため、画面の数値が 別々の経路の話になっていました。遅延も、速度を測ったのと同じ機器に対して計るよう にしました。)

  • A saved SSH connection can now be browsed for files. Sixteen servers were saved here as SSH connections, and the file transfer panel offered none of them: it asked for a connection of type SFTP or SCP, and refused the rest with "this connection is not a file transfer connection". But it is the same machine, the same account and the same key — the only difference is which subsystem is asked for after the sign-in. An SSH connection now opens over SFTP, and over SCP for a server that offers a shell but no SFTP subsystem. (保存済みの SSH 接続先で、そのままファイルを開けるようにしました。 ここには SSH 接続先が16件保存されていましたが、ファイル転送の一覧には1件も出ませんでした。 種別が SFTP か SCP のものしか受け付けず、それ以外は「転送用の接続ではない」と撥ねて いたためです。しかし同じ機器・同じアカウント・同じ鍵で、違うのはサインイン後にどの 副系統を頼むかだけです。SSH の接続先は SFTP で開き、SFTP を持たない相手には SCP で 開くようにしました。)

  • The speed test now asks which server is nearest, instead of being told. M-Lab returns its candidates in an order worked out from the address the request came from — a guess about geography, and here it put Seoul ahead of Tokyo. A measurement to the wrong country reads as a slow line rather than a distant one. The nearest few are now asked directly, one timed connection each, and the quickest is used: it costs about half a second and replaces a guess with a measurement. On this server it moved the reading from 187 Mbps down to 427. (速度テストの計測先を、言われるままではなく実測で選ぶようにしました。 M-Lab は 接続元のアドレスから推定した順で候補を返しますが、ここではソウルが東京より前に 来ていました。国の違う相手を測ると、遠いのではなく回線が遅いように見えます。上位数件へ 実際に接続して所要時間を測り、最も速いものを使います。かかるのは約0.5秒で、推測を実測に 置き換えられます。当サーバーでは下りの読みが 187 Mbps から 427 Mbps になりました。)

  • SCP can now actually be used. The protocol was added, tested and reachable by the server — and by nothing else: the file transfer panel offered only SFTP and FTP, the list of saved connections filtered SCP out, and every label still read "FTP and SFTP". An SCP connection could be saved and never opened. It is now offered wherever SFTP is. (SCP が実際に使えるようになりました。 実装と試験は済み、サーバー側では動いて いましたが、画面のどこからも選べませんでした。転送画面の選択肢は SFTP と FTP だけ、保存済み接続先の絞り込みは SCP を落とし、名称もすべて「FTP・SFTP」のまま。 保存はできても開けない状態でした。SFTP が使えるところでは SCP も選べます。)

  • "Which field means what" is now "Field assignment", and the master key is named for what it belongs to. A heading that describes a question rather than naming a thing makes the reader do the work twice. "Master key" alone does not say whose. (「どの項目が何にあたるか」を「項目の割り当て」に、「マスターキー」を 「RegiBase参照のためのマスターキー」に改めました。 問いかけを見出しにすると、 読む側が二度手間になります。「マスターキー」だけでは何の鍵か分かりません。)

  • The administration settings read better in Japanese. "Devices — read the device list" had been translated as "device survey", which is not what it does; the two buttons that set every tool at once read as fragments; and the wording for scanning was inconsistent with the rest of the app. (管理設定の日本語を整えました。 Devices — read the device list が 「接続機器調査」と訳されていましたが、実際は一覧を見るだけです。全ツールを一括で 切り替える2つのボタンは「すべて全利用者」のように語として立っておらず、探索まわりの 用語も他の画面と揃っていませんでした。)

  • The settings dialog is four groups, not eleven headings. It had grown by addition until the terminal's font, the shell's language and the shell's log sat in three separate places with the connection list wedged between them, and the word "language" appeared twice at the same size meaning two different things — the app's language and the shell's. The subjects are now Appearance and language, Terminal (shell and SSH), Connections and keys and The list of tools, each with its own title and a rule between them, and the settings inside a group sit a level below it. A setting an administrator changes for the whole server now says so on its label, instead of looking like one of the reader's own. (設定画面を、見出し11個の一本道から4つの束に改めました。 追加を重ねた結果、 端末のフォント・シェルの言語・シェルのログ記録が3か所に分かれ、その間に接続先 リストが挟まる並びになっていました。「言語」という同じ語が同じ大きさで2か所に出て、 一方はアプリの言語、もう一方はシェルの言語を指していました。外観と言語/ 端末(シェルとSSH)/接続先と鍵/ツールの並びの4束にまとめ、束ごとに見出しと 区切りを置き、その中の項目は一段下げました。管理者がサーバー全体に対して変える 設定には、その旨をラベルに明示しました。)

  • NetBase now carries its own copy of phpseclib 3, under its own name. Nextcloud ships only phpseclib 2, which cannot read an Ed25519 or an ECDSA private key and has no SCP at all. Until now the newer library arrived by accident — another app happened to bundle it — so whether a modern key worked depended on whether an unrelated app was installed, and where it was not the failure was quiet.

Carrying a second copy under the same name would only have moved the problem: one library can answer to a name in a running PHP process, so whichever app loaded first would decide which copy both apps used, and NetBase would be running on a version it never shipped or tested. The copy therefore lives under OCA\NetBase\Vendor\phpseclib3, which collides with nothing. NetBase always uses the library it ships; every other app keeps using its own, untouched. Nothing needs registering — Nextcloud's own autoloader finds it. (phpseclib 3 を、NetBase 専用の名前で同梱するようにしました。 Nextcloud 本体は phpseclib 2 のみで、Ed25519 や ECDSA の秘密鍵を読めず、SCP も持って いません。これまで新しい版は「別のアプリがたまたま同梱していた」ために使えて いただけで、無関係なアプリの有無で鍵が使えるかどうかが決まっていました。

同じ名前のまま2つ目を積んでも問題は移るだけです。1つの PHP 処理の中で1つの 名前に応えられるライブラリは1つだけで、先に読み込まれたアプリの版が両方の アプリに使われます。つまり NetBase は、同梱も試験もしていない版で動くことに なります。そこで OCA\NetBase\Vendor\phpseclib3 という NetBase 専用の名前に 改めました。衝突が起きないため、NetBase は常に自分が同梱した版で動き、他の アプリは自分の版のまま一切影響を受けません。登録の仕組みも不要で、Nextcloud 本体の読み込み器がそのまま見つけます。)

  • SCP has been added to the saved connections. A server can offer SSH without the SFTP subsystem, and on that machine SCP is the only way to move a file. SCP itself copies a named file and nothing else — no listing, no rename, no mkdir — so those are supplied over the shell the SSH connection already provides, with every argument quoted. It is offered only where this server has a library that can speak it. (接続の種類に SCP を追加しました。 SFTP サブシステムを持たない SSH サーバーでは、 SCP だけがファイルを送る手段になります。SCP 自体は指定したファイルを複製するだけで、 一覧・改名・作成の機能を持たないため、それらは SSH のシェル越しに補っています(引数は すべて安全に括ります)。対応ライブラリがあるサーバーでのみ選択肢に現れます。)
  • Telnet is no longer a box of its own. It was a second card asking for the same host and port as the one above it. The connection form now carries a type beside the address — SSH or Telnet — and the fields only SSH needs appear only for SSH. (Telnet の専用枠をやめました。 すぐ上の欄と同じホストとポートを二度尋ねる作りに なっていました。接続フォームにアドレスと並べて種別(SSH/Telnet)を置き、SSH でしか 使わない欄は SSH のときだけ出します。)
  • Words that explained nothing have been replaced, and the settings screen reads as separate subjects again: a rule between the headings, and the long grey paragraphs cut to what is worth saying. (意味の伝わらない言葉を入れ替え、設定画面を読めるように整えました。「サーバーを 調べる」→「SSHサーバーを調べる」、「サーバーを操作する」→「サーバーに接続する」、 「接続先の保存先」→「SSH/Telnet/FTP/SFTP/SCPの接続先リスト」、「端末の記録」→ 「シェルのログ記録」。節の間に区切り線を入れ、説明文も刈り込みました。)
  • A measurement now runs for at least two seconds. A small size could end an upload while the first megabytes were still sitting in the socket buffer, which reported the speed of the buffer rather than of the line — an upload came out faster than the download. The size still caps the traffic, but only once the measurement has had long enough to mean anything. (測定は最低2秒は行うようにしました。 小さいサイズを選ぶと、最初の数MBが送信バッファに 入った時点で上りが終わってしまい、回線ではなくバッファの速さを報告していました(上りが 下りより速く出る原因です)。サイズによる通信量の上限は残しつつ、意味のある長さに達する までは打ち切らないようにしました。)

  • Saved connections have moved into RegiBase, and the ones stored before this release are gone. Please write down anything you need before updating: host, user name and settings can be typed again, but a password or a private key kept only in NetBase cannot be recovered afterwards. Nothing is migrated, deliberately — the old store could be read back by the server that held it, and carrying those secrets across would have carried that weakness with them. (保存済みの接続先は RegiBase へ移行し、これまでに保存した接続先は消えます。 更新前に必要な情報の控えをお取りください。ホスト・ユーザー名・設定は入力し直せますが、 NetBase にしか無いパスワードや秘密鍵は後から取り出せません。移行は意図的に行いません。 従来の保存方式はサーバー自身が読み戻せる形だったため、そのまま持ち越すと同じ弱さを 持ち込むことになるからです。)

  • Why the move. A password in RegiBase is sealed in the browser with a key derived from a master key that is stored nowhere — not in the database, not in the configuration, not on disk. NetBase could not offer that on its own: its own store was encrypted with the instance secret, which sits on the same server as the data it protects. A stolen database is now a database of ciphertext. (移行の理由。RegiBase のパスワードはブラウザ側で封印され、その鍵はどこにも保存され ないマスターキーから導かれます。データベースにも設定にもディスクにも残りません。NetBase 単独ではこれを提供できませんでした。従来はインスタンス秘密鍵で暗号化しており、それは 守るべきデータと同じサーバー上にあるからです。データベースを盗まれても、そこにあるのは 暗号文だけになります。)
  • RegiBase is now required in order to save a connection. Without it, a server can still be reached by typing its details each time; nothing is stored, and nothing needs to be. (接続先の保存には RegiBase が必要になりました。 無い場合でも、毎回入力すれば接続は できます。その場合は何も保存されません。)
  • The collection is yours, and so is its shape. NetBase does not demand a collection built to its own design: you say which field is the host, which is the password, and so on, and it adapts. A ready-made collection can be created for you if you would rather not build one. A password can only be matched to a field RegiBase itself treats as secret, so it can never be written in the clear. A public key is deliberately not treated as secret. (コレクションの構成は自由です。 NetBase 専用の形を強いません。どの項目がホストで、 どれがパスワードかを指定すれば、それに合わせます。用意されたコレクションを自動で作る こともできます。パスワードは RegiBase 側で秘匿とされた項目にしか割り当てられないため、 平文で書かれることはありません。公開鍵は意図的に秘匿として扱いません。)
  • The master key is asked for once per browser session and is forgotten when that session ends. It is never written down on the server. (マスターキーはブラウザのセッションごとに一度だけ尋ね、セッションが切れると失われます。 サーバー側に書き残すことはありません。)

  • The old store for saved connections has been dropped. 0.6.0 moved connections into RegiBase and said that what was kept in NetBase itself would not come with them; the table is now gone, and so are the passwords it still held. That is the point of it: they were sealed with a secret kept on the same server as the data. (接続先の旧保存領域を削除しました。 0.6.0 で接続先は RegiBase へ移り、NetBase 側に 残っていたものは引き継がないとお伝えしていました。その表を削除し、そこに残っていた パスワードも消えました。これが目的です。旧方式はデータと同じサーバーにある鍵で 暗号化されており、守りとして弱いものでした。)

  • Errors now speak the language you read. Everything a tool refuses to do — a bad host, a file that is not there, a server that would send your password in the clear — was written in English wherever it was raised. It is now turned into your own language at the one place every error passes through, and the messages that carry a value (a path, a host, a byte count) were rewritten so the value has a place to go. All twenty languages. (エラーの文言を、お使いの言語で表示するようにしました。 不正なホスト名、存在しない ファイル、パスワードが平文で送られる状況など、これまで英語のまま出ていた文言を、 すべてのエラーが通る一箇所で翻訳するようにしました。パス・ホスト名・バイト数などの値を 含む文言は、値を差し込める形に書き直しています。20言語すべてに対応。)
  • The free-domain search now says what it found, not how it asked. Hovering a result used to show "HTTP 404", which is the registry's answer, not yours. It now says what that means — free, taken, or why it could not be decided — and which registry or name server answered, with the technical reason kept on a second line. (空きドメイン検索の説明を、意味のある文に変えました。 結果にカーソルを合わせると 「HTTP 404」と出ていましたが、これはレジストリ側の答えであって、お客様への答えでは ありません。空きか、登録済みか、なぜ判定できなかったかを述べ、どのレジストリ/ ネームサーバーが答えたかも示します。技術的な理由は2行目に残しています。)

  • The internet speed test now measures against M-Lab — the measurement behind Google's own speed test — instead of pulling from one fixed endpoint. It asks where the nearest measurement server is and uses that, which is the difference between measuring your line and measuring the distance to somebody else's CDN. Nothing has to be installed: the protocol is a WebSocket, and NetBase speaks it directly. Where M-Lab cannot be reached at all — an instance with no way out, or a blocked connection — the previous HTTP test still stands behind it, so the tool never simply stops working. (回線速度の測定を M-Lab に切り替えました。 Google 自身の速度テストの実体であり、 固定の配信元から引くのではなく、最寄りの測定サーバーを尋ねてそこで測ります。これは 「自分の回線を測る」ことと「他社CDNまでの距離を測る」ことの違いです。追加の導入物は 不要で、通信方式(WebSocket)を NetBase が自前で話します。M-Lab に到達できない環境 (外部へ出られない・接続が塞がれている)では、従来のHTTP測定に自動で切り替わるため、 機能が止まることはありません。)

  • The reading is presented as a guide, because that is what it is. The figure moves with the server that happened to be nearest and with the time of day, so the panel now names the server it measured against and says so plainly. (測定値は「目安」として示すようにしました。 そのときの最寄りサーバーや時間帯に よって値は動きます。どのサーバーで測ったかを画面に表示し、目安である旨も明記します。)
  • The size setting is now a ceiling on the traffic a run may use. A measurement that runs for ten seconds on a fast line moves a great deal of data; on a metered connection that matters, so the chosen size stops it early. (サイズ指定は「1回の測定で使う通信量の上限」になりました。 高速回線で10秒測ると 相応の通信量を使います。従量制の回線では無視できないため、指定したサイズで打ち切ります。)

  • The RegiBase master key is asked for when a connection is used, not in the settings. It never belonged on a settings screen: a settings screen is where things are kept, and this is the one thing that must not be. It is now asked for at the moment a saved connection is needed, held for that browser session alone, and forgotten when the session ends. It is written nowhere — not in the settings, not in the database, not on disk. (RegiBase のマスターキーは、設定画面ではなく接続を使う時点で尋ねるようにしました。 設定画面は「保存する場所」であり、マスターキーは保存してはならない唯一のものです。 保存済み接続先が必要になった時点で入力していただき、そのブラウザのセッションの間だけ 保持し、セッションが切れれば失われます。設定にもデータベースにもディスクにも書きません。)

  • The terminal log is a switch now, and it keeps 5,000 steps by default. It was a number that started at zero, which read like a setting somebody had forgotten to fill in. Recording is still off until it is switched on. (端末の記録はチェック式にし、既定で5,000行を保持するようにしました。 従来は0から 始まる数値欄で、設定し忘れのようにも見えました。記録が既定で無効である点は変わりません。)

Added

  • A terminal can now keep a record of what was done in it. A shell on this server and an SSH window are the two places in NetBase where something is done rather than merely looked at, and until now nothing was left afterwards to say what that was. One step is a line you typed together with the answer that came back — the answer arrives after the Return that asked for it, so the two are paired the way you would read them, not the way they arrive. The colours and cursor moves a terminal threads through its output are taken out, so what is kept reads as words. Two limits hold it down: a number of steps per window, oldest dropped first, and a number of days counted from a window's most recent step — so a window still in use is never cut short, and one finished with goes as a whole. What is kept belongs to the account that did the work: nobody else can read it, and it can be thrown away one session at a time or all at once. Nothing is recorded until you ask for it: the number of steps starts at zero, and zero means keep none. (【端末の記録】シェルとSSHの画面で行った操作を残せるようにしました。1ステップは、入力した 1行と、それに返ってきた答えです。答えはEnterの後に届くため、読むときの並びで対応付けます。 出力に混ざる色や画面制御の符号は取り除き、文字として読める形で保存します。上限は2つで、 画面ごとの「残すステップ数」(古いものから削除)と、「残す日数」(その画面の最後の記録から 数えます)。使用中の画面が途中で切られることはなく、日数を過ぎたものはセッションごと消えます。 記録はその操作を行ったアカウントだけのもので、他の方は読めません。セッション単位でも一括でも 削除できます。初期値は「保存しない」です(ステップ数0=何も記録しません)。)

Fixed

  • The "Run command" button beside a saved SSH connection did nothing. It was bound to a method that did not exist — and Vue does nothing at all for a click bound to a method it has not got, so the button looked dead while the console beside it worked perfectly. The same was true of the "Run" button for the ready-made questions. Both now run the line and show the output, the exit status and how long it took. (保存済み SSH 接続先の「コマンド実行」ボタンが無反応でした。 存在しない メソッドに結び付けられており、Vue は未定義のメソッドへの @click では何もしません。 そのため、隣の対話コンソールは正常に動くのにボタンだけが死んでいました。よくある質問を 選ぶ「実行」ボタンも同じ状態でした。どちらも実行し、出力・終了状態・所要時間を表示します。)

  • After an upload, the file list did not refresh. The file arrived — it was the listing that stayed behind. Upload read the folder back from the path box rather than from the listing itself, and the box is bound to whatever the reader may have typed into it, so it drifts from what is on screen. Every other action on that panel already read it back from the listing. (アップロードの後、ファイル一覧が更新されませんでした。 ファイル自体は届いており、 一覧だけが古いままでした。アップロード処理が、一覧そのものではなくパス入力欄を基準に 読み直していたためです。入力欄は利用者が打ち込んだ値と結ばれているため、表示中の位置から ずれます。同じ画面の他の操作は、いずれも一覧を基準に読み直していました。)

  • whois told you nothing about a .jp domain. Every .jp is answered by JPRS, which does not write Label: value the way most registries do. It writes [Label] and then spaces — no colon — and for an organisational domain it puts an index letter in front: a. [ドメイン名]. The Japanese labels had been in the patterns from the start, but every one of them demanded a colon that JPRS never sends, so they could not match: .com returned six or seven details and .jp returned none. Both of JPRS's shapes are now read, an organisational domain's expiry is taken from inside its status line (there is no separate one), and a label JPRS sends with nothing after it no longer becomes an empty field. The ordinary shape is untouched, and a test holds both to the registries' own wording.

One line of that fix was wrong in a way worth naming. A whois server answers over a socket and ends its lines with CRLF; the pattern for name servers was anchored as if they ended with LF, so it matched nothing and a .jp domain came back with its dates but no name servers. The test did not catch it because sample text typed into a test file ends with LF alone — it passed while the real thing failed. The samples are sent through the same line endings a socket would use now, and the test fails without the fix. (whois が .jp ドメインの情報を何も返していませんでした。 .jp はすべて JPRS が 応答しますが、JPRS は多くのレジストリのような ラベル: 値 ではなく、[ラベル] の 後にコロンを置かず空白だけで値を書きます。組織用ドメインでは a. [ドメイン名] の ように索引文字が前に付きます。日本語ラベルは当初から規則に書かれていたものの、 JPRS が送らないコロンを要求していたため一致しようがなく、.com では6〜7項目 取れるのに .jp では0項目でした。JPRS の2つの書式を読めるようにし、組織用ドメインに 固有の有効期限行が無い点は状態欄から取り、値の無いラベルを空項目にしないようにしました。 従来の書式には手を触れていません。レジストリの実際の応答を固定データとした検査を添えて います。

なお、その修正のうち1行が誤っており、書き残す価値があります。whois サーバーはソケットで 応答し、行末は CRLF です。ところがネームサーバの規則は行末を LF だけと見なしていたため、 実物では1件も一致しませんでした。日付は取れるのにネームサーバだけが空、という形です。 検査ファイルに書いた文字列の行末は LF のみなので、検査は合格したまま実物が失敗して いました。固定データをソケットと同じ行末に通すよう改め、修正前の規則では 0 件・修正後は 2 件になることを確かめたうえで残しています。)

  • Choosing Telnet left the port at 22. Two methods in the same object had the same name. That is not an error in JavaScript — the second simply replaces the first — so picking Telnet ran the file-transfer panel's version, which set a port on a different form, and the port beside the Telnet choice never moved off 22. (Telnet を選んでもポートが22のままでした。 同じオブジェクトの中に同名の メソッドが2つあり、JavaScript では後の定義が前を置き換えます。そのため Telnet を 選ぶとファイル転送側の処理が走り、別の入力欄のポートを書き換えていました。)

  • Entering the master key did nothing. Saving where connections are kept needs the key, so it was asked for — and then the save was never retried. The key was accepted, the dialog closed, and the setting was unchanged, which from the outside is indistinguishable from the key being refused. What was being attempted is now remembered and carried out once the key is given. The settings dialog also has a box to type the key into: it had the code for one but no field, so the only way to be asked was to press Save and fail. (マスターキーを入れても設定が保存されませんでした。 保存には鍵が必要なので 尋ねてはいたものの、解錠後に保存をやり直していませんでした。鍵は通り、画面は 閉じ、設定は変わらない——外から見れば鍵を拒否されたのと区別がつきません。何をしよう としていたかを覚えておき、鍵が入った時点で実行するようにしました。あわせて設定画面 に鍵の入力欄を置きました(処理は書かれていたのに入力欄が無く、保存して失敗する以外に 尋ねられる道がありませんでした)。)

  • The master key prompt appeared behind the dialog that asked for it. Both were on the same stacking layer, and where two things share a layer the one written later in the page wins. (マスターキーの入力画面が、それを求めた画面の後ろに隠れていました。 同じ 重なりの層に置かれており、層が同じときは後に書かれた方が上になるためです。)

  • Japanese: the settings dialog said something the English never did. Its subtitle had been translated as "switches NetBase's appearance only", but the dialog holds the shell log, the connection list, the SSH key folder and the tool order, and the English says nothing about appearance. Checked across all twenty languages; Japanese was the only one that had drifted. Also corrected in Japanese: "follow the server" read as an order rather than a choice, the tool list called the tools "features" in its body and "tools" in its heading, and folder, browser and sign-in were each spelled two ways. (日本語:設定画面に、英語原文にないことが書かれていました。 副題が「NetBase の見た目だけを切り替えます」と訳されていましたが、この画面にはシェルのログ記録・ 接続先リスト・SSH鍵の置き場所・ツールの並びまで含まれ、英語原文は見た目とは 言っていません。20言語すべてを確認し、ずれていたのは日本語だけでした。あわせて、 「サーバーに従う」という硬い言い回し、見出しは「ツール」なのに本文は「機能」と なっていた不統一、フォルダ/フォルダー・ブラウザ/ブラウザーなどの表記ゆれも 直しました。)

  • SCP: a file's permissions were read too small, and a name with a space in it lost its first word. SCP has no directory listing of its own, so one is read by running ls -la over the shell. Two mistakes were in taking that reply apart: the letters r, w and x already carry their own weight and were being shifted by their position as well, so 0640 came back as 0600; and the timestamp was matched by a greedy pattern that swallowed the beginning of a name like "report 2026.txt". Both are now covered by a test that needs no server. (SCP で、ファイルの権限が実際より小さく読まれ、空白を含む名前が先頭の語を 失っていました。 SCP には一覧の機能が無いため ls -la の出力を解いていますが、 その解き方に2つの誤りがありました。r・w・x は既に桁の重みを持っているのに位置で さらに桁をずらしていたため 0640 が 0600 になり、また時刻の照合が貪欲だったため 「report 2026.txt」のような名前の先頭が飲み込まれていました。どちらもサーバー 不要の検査で押さえました。)

  • Number boxes were as wide as the panel for a value of one to four digits, and the list that matches a collection's fields ran down the dialog one row at a time. Both are now the size of what goes in them. (数値の入力欄が、1〜4桁の値に対して画面幅いっぱいになっていた点と、コレクションの 項目の割り当てが1行ずつ縦に延びていた点を整えました。)

Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
Signatureu4YuDe0Ctfsa9IWS9vdkfHadhPKEjLMSP8qR9lKmCpVuFasm4a1RRfov3XKLVQVw4HhZd6N1PhBE7kZHCx4U8iNDdplTdgmLtggoeTDOlKXQ9KxcASYWOUO7AvH82+g+eQ88P0NqDzA4vQe2jshvIoh+rwHQgrwzWCCaw3uzcNJAXO9UyZ7AK5VS6MfIhugS/Ili2ceTbOs/VcdE2uKuvWLTiKm46qPdcHVK0CT5BuELmVnAmYTpXWO19MRvGm++/Dc8tsOyHEpJlOJJKz7P+friJBJ9bfZvq2rxSJ6K/nLmKJKQnWtrjcPSo/w3sgmb36CpjBLelv2xZEu5quhXs7lUGCd32nsiVOFy1Ppz7PtBeiqBZXQ2aS+JSwZYQ3R3iF84mvf6wLw1UOZxGZRR5I4kvAZZixkvFVAfnYSIIsEjHpnnMKNByNn9pZk+fwDjbaMFWiacoM0BFG1esfQS8U10jAy0xrM/jizBQrOMZunrJr/PugGw51eJ4vK5iVf4USd5YWniwxHnsgwfPKcuJhgtn2BokeC1iFC/gcXLjbSgQjCfJ0q5E3FCYOE/a/h1H3SJZZ50Grx3eybHus1IiC/21eQU6H8e2eAXupDwaVyCpyKxjNOX+y2nOyNSxIQUbDxRL5wzq0tX0B5d6N+O/hhh/FZqyqvvSjkGNUxkhWA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.5.0
Release Details
UpdatedSept. 10, 2026, 2:33 p.m.
Changelog

Added

  • Clear the ARP table (optional, opt-in). A "Clear the ARP table" button in the device list forgets every remembered address so a refresh shows only what answers now. NetBase runs unprivileged and cannot flush the kernel table itself, so the button stays off until an administrator installs a tiny root helper and a one-line sudoers rule — a "?" beside the button shows the exact script and steps (for bare metal/VM and for Docker/Podman with NET_ADMIN), and NetBase probes the helper with a harmless "--check" and switches the button on by itself once it works. It is clearly marked optional, with a note not to install it if the security trade-off (granting the web user one root command) is unwelcome. (【任意・オプトイン】ARPテーブルのクリア機能を追加。機器一覧の「ARPテーブルをクリア」で 記憶したアドレスを忘れ、更新時に今応答する機器だけを表示します。NetBaseは無権限のため自身では 消せず、管理者が小さなrootヘルパーとsudoers設定を入れるまでボタンは無効。横の「?」から スクリプトと手順(物理/仮想・Docker/Podman=NET_ADMIN)を表示し、NetBaseは無害な「--check」で 検出して自動的にボタンを有効化します。任意である旨と、セキュリティ上のトレードオフに納得 できない場合は設置しない注意も明記。)
  • Every tool now shows when it is working. A slim bar slides across the top of the panel while any request is in flight, and the button you pressed shows a spinner — so an operation with no progress count of its own (Whois, TLS, DNS, mail, SSH, NTP…) no longer looks like nothing is happening. (各機能の「実行中」表示を追加。リクエスト中はパネル上部に細いバーが流れ、押したボタンに スピナーが出ます。進捗の数値を持たない操作(Whois・TLS・DNS・メール・SSH・NTPなど)でも 実行中だと分かります。)

  • You can now give a device your own name. Type a name in a device's properties and it is shown everywhere in place of the discovered one; if a name was picked up from the network, that reported name stays visible in the properties as well. The name you give is kept against the device, so it holds even when the device offers no name of its own. (自分で機器名前をつけることが出来るようにしました。プロパティであなたが記入した名称を 優先的に表示し、もしアナウンス名が取得できている場合は、プロパティで確認できます。)

  • The properties now say how a name was obtained — NetBIOS, mDNS or reverse DNS — so a reported name is never mistaken for a NetBIOS name when it came from somewhere else. (プロパティに、その名前をどの方式で取得したか(NetBIOS/mDNS/逆引きDNS)を表示する ようにしました。取得元が分かるので、mDNSや逆引きの名前をNetBIOS名と取り違えません。)
  • In Docker or Nextcloud-AIO, the Requirements screen now shows a ready-to-use setup recipe. An app cannot bundle PHP extensions, but the official Nextcloud image runs any script placed in /docker-entrypoint-hooks.d/before-starting/ on every start. When NetBase detects it is in a container, it lists exactly what the base image is missing (verified on the official image: the sockets extension, and chromium/iperf3/iproute2) as a one-off script that survives image updates without a rebuild. (Docker・Nextcloud-AIO で動作している場合、「必要要件」画面にそのまま使える導入手順を 表示するようにしました。アプリはPHP拡張を同梱できませんが、公式Nextcloudイメージは /docker-entrypoint-hooks.d/before-starting/ に置いたスクリプトを起動のたびに実行します。 コンテナ内と判定すると、ベースイメージに不足している要素(公式イメージで確認:sockets拡張と chromium/iperf3/iproute2)を、再ビルド不要で更新後も維持される一度きりのスクリプトとして 提示します。)

  • A device that has been switched off is no longer shown as online. Its entry lingers in the kernel neighbour table as STALE, keeping its old MAC, and /proc/net/arp cannot tell that apart from a device that is here now — so a powered-off machine kept a green dot. NetBase now reads the neighbour state (via ip neigh) and, without walking the whole range, confirms the addresses on file with a quick TCP touch: a host that is here answers a connection (open or refused), one that is gone stays silent and is marked offline. On a re-scan the online/offline column is current. (Announce-only devices — an Amazon Echo, say — are still kept online by what they broadcast over mDNS/SSDP in a normal scan.) (電源を切った機器がオンライン表示のままになる不具合を修正。カーネルの近隣テーブルに STALE として古いMACのまま残り、/proc/net/arp では在席中の機器と区別できないため、緑点が 残っていた。近隣の状態を ip neigh で読み、全アドレス走査はせずに、記録済みアドレスを 短いTCP接触で確認するようにした(在席なら接続に応答=開放でも拒否でも、不在なら無応答で オフライン判定)。再スキャンでオンライン/オフラインが最新になる。※mDNS/SSDPで自ら告知する 機器(Amazon Echo等)は、通常スキャンでは告知により在席のまま維持される。)

Removed

  • Device tags have been removed. They could not be seen in the list and served little purpose; identify a device with the name you give it (above) instead. Notes are kept. (機器のタグを廃止しました。一覧に表示されず用途が薄かったためで、機器の識別は上記の 「自分でつけた名前」で行ってください。メモは残しています。)

Changed

  • The free-domain search can hide the taken and the could-not-check results. Two slide switches (the same control the device list uses) sit over the results: one for taken (×) names, one for the ones that could not be checked (?). Undetermined names are hidden by default, so the list leads with what is free or clearly taken. A taken name is shown greyed out; an unchecked one is greyed and struck through once, with the reason in its hover tooltip — no English text on the row. (空きドメイン検索で、使用済みと調査不能のドメインを隠せるようにしました。結果の上に スライドスイッチを2つ(接続機器調査と同じ部品)置き、使用済み(×)用と調査不能(?)用を 用意。調査不能は初期状態で非表示にし、空きと使用済みが先に見えるようにしています。使用済みは グレー表示、調査不能はグレー+一重打ち消し線で示し、理由はマウスオーバーで表示します(行に 英語は出しません)。)
  • The free-domain search shows its results in columns on a wide screen. The list flows into as many columns as the width allows (roughly one per 300px), so a wide window shows two or three side by side and a narrow one stays a single list. Each ending's name always shows in full; the diagnostic note beside it is what gives way when space is tight. (空きドメイン検索の結果を、画面幅に余裕があるとき複数列で表示するようにしました。幅に応じて 自動で2〜3列になり、狭いときは1列に戻ります。語尾(ドメイン名)は常に全部表示し、横の理由 表示のほうを省略します。)
  • Every column in a device's address lines is now aligned. A device with several addresses lays them out in fixed columns so the eye can read down them: the network badge leads in a fixed-width slot (sized for 副ネットワーク9 / another network), then the IP and MAC at their known maxima (18 and 17 characters), then the full vendor name in a column half the width of the OUI database's longest name (54 characters, wrapping if longer, never truncated), then the open ports — which, because everything before them is fixed-width, begin at the same column on every row. Several addresses on one device are separated by a thin dotted rule. (機器のアドレス行の各列を整列させました。複数アドレスを持つ機器では、ネットワークバッジ (副ネットワーク9/別ネットワークに合わせた固定幅)→IP・MAC(最大幅18・17文字)→ベンダー名 (OUI辞書の最長の約半分=54文字の固定幅・超過は折返し・省略なし)→開放ポート、の順に固定幅で 並べ、ポートの先頭が全行で同じ位置から始まるようにしました。複数アドレスは細い点線で区切ります。)
  • The device scan is now two buttons: "Refresh devices" and "Port scan". "Refresh devices" re-checks which devices are online without scanning ports, so it is fast; "Port scan" is the fuller sweep that also reads each device's open ports. The per-device "Scan every port" search stays in a device's own properties, now labelled as being for that one device. (機器スキャンを「機器一覧を更新」と「ポートスキャン」の2つのボタンに分けました。 「機器一覧を更新」はポートを調べずオンライン/オフラインを再判定する高速版、「ポートスキャン」は 各機器の開放ポートも調べる本格版です。機器ごとの全ポート調査はプロパティ内に残し、「この機器の」と 明示しました。)
  • "Online only" is now an on/off switch instead of a button that swapped its own label. (「オンラインのみ」を、ラベルが入れ替わるボタンから、オン/オフのスライドスイッチにしました。)
  • The scan progress is clearer. Each step is named as it runs (reading the ARP table, searching for devices, asking for names, multicast discovery, checking ports, reverse DNS), the multicast step shows a "listening" state while it waits instead of appearing frozen, and the bar no longer reads as going backwards between steps. (スキャンの進捗表示を分かりやすくしました。実行中の工程名(ARPテーブル読み込み/機器を探索/ 名前を問い合わせ/マルチキャスト探索/ポート確認/逆引きDNS)を表示し、マルチキャストの受信待ちを 「探索中」と示して固まって見えないようにし、工程が変わるたびにバーが戻って見えないようにしました。)
  • "What to scan" lists "The ARP table only" first, before "The whole network". (「スキャン対象」の並びを、「ARPテーブルのみ」を先頭にしました。)
  • A device's note is now shown in the list and is searchable. It used to be visible only in the properties; now it appears under the device (one line, full text on hover) and the filter box matches it too, so a note like "2F printer" is actually useful for finding and telling devices apart. (機器のメモを一覧にも表示し、検索対象にしました。これまではプロパティでしか見えません でしたが、機器の下に1行(全文はホバー)で表示し、絞り込み欄でも一致するようにしたので、 「2Fの複合機」のようなメモが機器の識別・検索に役立ちます。)

Fixed

  • Mail: STARTTLS mode never sends the password in the clear. If a server does not offer STARTTLS (or a network strips it), the sign-in, mailbox and send-test now stop with a clear message instead of falling through to plaintext AUTH. (メール:STARTTLSモードで平文送信しないよう修正。サーバーがSTARTTLSを提供しない(または 経路で除去された)場合、平文認証に進まず明確なメッセージで停止します。)
  • Mail: the SPF DNS-lookup count no longer double-counts includes. A top-level include: was counted twice, so a healthy record with a few includes could be reported as over the 10-lookup limit; it now counts each lookup once. (メール:SPFのDNSルックアップ数がincludeを二重計上する不具合を修正。正常な記録が上限超過と 誤表示されることがありました。)
  • HTTP check: an unreachable host is reported as unreachable. A host that refuses the connection or times out was shown as a reachable server missing every security header; it now says it could not connect. A redirect's target host is validated too, so a page cannot bounce the fetch onto an internal address. (HTTP確認:到達不能なホストを「稼働中でヘッダ欠落」と誤表示せず「接続できませんでした」と 表示。リダイレクト先ホストも検証し、内部アドレスへ飛ばされないようにしました。)
  • A registered .jp/.co.jp domain is no longer reported as free. JPRS answers with a "Domain Information" block whose fields are letter-prefixed ("a. [Domain Name]", "p. [Name Server]"), which the registered-check did not recognise, so a plainly taken name (google.co.jp) — and a suspended/pending- delete one (granz.co.jp) — came back undecided and was then labelled likely-free. A [Domain Name] / [State] block now means taken; a bare "No match!!" still means free. (登録済みの .jp/.co.jp が「空き」と表示される不具合を修正。JPRSは項目名が 「a. [Domain Name]」のように接頭辞付きで返るため登録判定に一致せず、明らかに使用中の名前 (google.co.jp)や停止中の名前(granz.co.jp)が「空きの可能性」になっていた。[Domain Name]/ [State] があれば使用中、「No match!!」なら空き、と正しく判定するようにした。)
  • A domain the registry throttled or refused is no longer shown as "likely free". In a gTLD sweep the shared RDAP servers — Identity Digital most of all, which serves 100+ endings from one host and rate-limits this server outright — answer HTTP 429/403; those were marked △ "likely free (registry unreachable)", which is misleadingly optimistic. They are now honestly "?" ("could not check"), and a group that answers 429/403 is dropped at once so the rest of its endings are marked quickly instead of each waiting out a doomed retry. (レジストリに制限・拒否された結果を「空きの可能性」と表示しない。gTLD一括照会では 共有RDAP(特に Identity Digital。1台で100以上の語尾を担当し当サーバーを丸ごと制限)が HTTP 429/403 を返すが、これを△「空きの可能性」と楽観的に表示していた。正直に「?(判定不能/ 確認できず)」とし、429/403 を返したグループは即座に打ち切って残りを素早く判定するようにした。)
  • Port scan no longer fails on a /16 (or larger) network. The host-count limit that guards the address-by-address sweep was also applied in ARP-table mode, where there is no sweep — only the neighbour table (at most ~1024 entries) is touched — so "Port scan" on a common /16 LAN (65 536 addresses) was rejected with "Scan target exceeds the configured limit". The limit is now enforced only when a sweep will actually run. (/16 以上のネットワークでポートスキャンが失敗する不具合を修正。総当たり探索を守る ホスト数上限を、探索を行わないARPテーブルのみモード(近傍テーブル≒最大1024件しか触らない) にも適用していたため、よくある /16 のLAN(65,536アドレス)で「上限超過」で弾かれていた。 実際に総当たりを行うときだけ上限を判定するようにした。)
  • A port-scan step no longer logs "Undefined variable $wait". In ScanService::stepPorts() the port budget was computed from $wait before the variable was assigned, which logged a PHP warning on every step and, reading null as 0.1, over-computed the budget nine-fold. $wait is now set before use. (ポートスキャンの各ステップで Undefined variable $wait を記録する不具合を修正。 stepPorts() で $wait を代入前に予算計算に使っていたため毎回PHP警告が出て、nullを0.1と 読み予算が9倍に膨らんでいた。使用前に定義するよう是正。)
  • A free domain in the availability search no longer shows a raw "HTTP 404". The diagnostic reason (e.g. RDAP's 404 that means "not registered") was printed next to the ○ mark; it is now kept only as the mark's tooltip, and the visible reason is shown only for the uncertain cases (△ / ?). (空きドメイン検索で、空き(○)の行に内部的な「HTTP 404」が出る不具合を修正。判定理由 (例:未登録を意味するRDAPの404)は○の吹き出しにのみ残し、本文の理由表示は不確定 (△/?)の場合だけに限定した。)
  • A slow or unreachable device no longer floods the admin log with errors. The device-view proxy logged every connection timeout, TLS failure or refused connection at error level; these are ordinary outcomes for a network tool and are now logged at info (the browser is still shown a problem page). (応答の遅い・届かない機器で管理ログがエラーで溢れる問題を解消。機器ビューのプロキシが 接続タイムアウト・TLS失敗・接続拒否をすべてエラー級で記録していたが、ネットワークツールに とっては通常の結果のため info 級に格下げした(ブラウザには従来どおり問題ページを表示)。)
  • The DNS tool no longer fails a whole lookup when CAA is included. CAA was passed to dns_get_record() as the wire type number 257, which PHP 8 rejects with a ValueError that the @ operator does not suppress, so a query with CAA ticked errored out entirely. CAA now uses the DNS_CAA constant. (DNS調査でCAAを含めると照会全体がエラーになる不具合を修正。CAAを dns_get_record() に 型番号257で渡していたため、PHP8が ValueError を投げ(@でも抑制されない)、CAA選択時に 照会全体が落ちていた。CAAを DNS_CAA 定数に修正した。)
  • A notice no longer lingers on another tab or over a new scan. The message bar was shared across the whole app and never cleared, so "scan finished" sat on the Whois and DNS tabs and over the next scan's progress, making a running scan look finished. A notice is now cleared when you switch tabs and when a new scan starts, and an informational notice fades on its own; the progress bar shows only while a scan is running. (通知が別タブや次のスキャンに残る不具合を修正。メッセージ帯が全画面共有で消えないため、 「調査完了」がWhoisやDNSタブ、次のスキャンの進捗の上に残り、実行中なのに完了に見えていた。 タブ切替時とスキャン開始時に通知を消し、情報通知は自動で消えるようにした。進捗バーはスキャン中のみ 表示する。)
  • The same address no longer appears on more than one row. A device whose MAC changes (a privacy address that rotates, or a lease handed to another machine) left a second row for the same IP. Duplicate rows are now folded into one, both as they are found and once at the start of every scan. (同じIPアドレスが一覧に複数行出る不具合を修正。MACが変わる機器(ランダム化MACの変更や、 リースが別機に渡った場合)で同一IPの行が二重にできていた。重複行は、検出時とスキャン開始時の 両方で1行に統合するようにした。)
  • A name no longer follows an address to a different device. When an address was handed to another machine (an old PC's lease going to an Alexa), the old device's name could show on the new one. A name, type and ports are now kept only for the same device, never carried to a different MAC that later holds the same address. (アドレスが別の機器に再割り当てされたとき、旧機器の名前が新機器に残る不具合を修正。 旧PCのリースがAlexaに渡った等の場合に旧名が表示されていた。名前・種別・ポートは同一機器に対して のみ保持し、同じアドレスを後から持つ別MACには引き継がないようにした。)
  • "This server" is shown on every one of the server's own addresses. When one network card holds several addresses (here 10.0.0.1 and 192.168.1.250 on the same card), keying them by the shared MAC let only the last one keep the badge. Each of the server's addresses is now its own row and each is marked. (サーバー自身の各アドレスすべてに「このサーバー」を表示するようにした。1枚のNICが複数の アドレスを持つ場合(同一NICの10.0.0.1と192.168.1.250)、共有MACをキーにしていたため最後の 1つしかバッジが付かなかった。各アドレスを独立した行にし、それぞれに印を付けるようにした。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturelPTEAnhj7+HoibIAnwDsMclSagD0MDrqgF9vdsmoXXV5e0aqJmUD5JigIZhWldG0XpWMehslTEs0X6fEecgZ8ZvMq8hDwPGqTzmYnrtSv0k8BjnsBFn6CMcIfFO53fnhMpLkMEmaDOpf34Z6iUONdxZQ2pMVlv95tXOPfB0utEMXS2VmKsk8w73JRgbtCc07L/QT+3b1xbZkr9p0mCo6nXjpONKOpF3GzbxHC5cxhnqRpZ7wprKgTSS1cZFJdSAWEM78LEhZT47gast39F28c1Er5DdHZrvfQjOlKTVqUTH93iUearoZDygnr+tBaN6UKjiSpWsXEVIU9VkuL6ndZG2FB9BBZshoEkFsBWAaVHF7GPxYkMNxGuH0CZ7C11ykpl4cAo3d2rwqyjEu7skeBeCwikHIJ1b7upC8QyBKmPPdwVViT1AJd0SO7FvxSH8dofcxEaT+qb9spOZU3cNwFxsABNpgiUthEVCk8jf7ddeQCPncRXZhaHdxEU+QnfdxOl+5Vbipb2p//1F0hHh+S3zDipWrfYDMvATLIgk85DMs2vg2nfZgH5fJGJX37O2hqop4yL6YTRP0nNvSXMh8Ewa12yv/acvRsHgsCe0doffORCUCZomIrJ2pEYbfJbWPRqHqoeiucg3am0yy0GThx/6QJAORtNUjIug4VIu7hUk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.3
Release Details
UpdatedSept. 9, 2026, 2:33 a.m.
Changelog

Fixed

  • A device page whose text is written by its own script no longer loses that text in a device window. Some router and printer pages (an ASUS router's WAN page among them) build their labels in JavaScript, from strings that contain a small piece of HTML with target="_top" inside. The rewrite that keeps such links inside the window was reaching into those strings and breaking the script, so the page came up with its text missing. That rewrite is now applied only to real HTML attributes and never inside a <script>, so the page's own script runs untouched and all of its text appears. (機器ページが自身のスクリプトで文言を書き込む場合に、機器ウィンドウで文言が消えていた不具合を 修正。ASUS ルーターの WAN ページ等は JavaScript の文字列内に target="_top" を含む HTML 断片を 持ち、フレーム内に留めるための書き換えがその文字列を壊してスクリプトが止まっていた。書き換えを 「本物の HTML 属性」だけに限定し <script> 内には一切触れないようにしたため、ページのスクリプトが そのまま動き、全ての文言が表示される。)
  • The device-window "Screenshot" now shows its result inside the window. A device window is drawn above the app's own message bar, so a "Saved as…" note — or the reason a picture could not be taken — was hidden behind the very window it was about, and looked like nothing had happened. The message now appears in the window itself. (機器ウィンドウの「Screenshot」の結果を、ウィンドウ内に表示するようにした。機器ウィンドウは アプリのメッセージ帯より前面に出るため、「保存しました」や失敗理由が対象ウィンドウの裏に隠れ、 何も起きていないように見えていた。メッセージをウィンドウ内に出すようにした。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureCGlNtuFVUIdzr/sX2lsWkCHmSdABdw3JCqtB7iYca1e/+lv8y5d5NaUI9WeKpS3L9eIJCcdt3cY23p7xp5cwhMPOapNu4+Qbvj5mWpf81mX3nrRPQstI4wH3HBU5b6J1ZeDaT/ZZaNTPNvIPv06ZwsDvNc0tI+UxZIcg/aAYkRBqcQMlAGp4TkfL0qbX9y3TQaXi9SccEpHa/JybfYAHf0ulBy2Yhwo/5HyX50yK+MyqHByC+5RJW17ozqZNH3/4zsYTZ0mZGF1Rd/gcloVMHlDA8hKD6LQ/fvkzftC12vbYy0CzDXI2+QwbU2kyEiVg5WH1hzUrL9KL/At2cpHZThNHQUHTOusfZgNpVw8+jq3Sr3sXr9qYZkTwjzuz8v5WEal6tEs0NrJF6OLviMflHuWCTf2qKd15AvAaugrl7PWWVoxwhMDfbQjICYEhrPpRUA+sMwVFrUvCSZre1Lx9Y3hlEbSNsy93urbKNhZjHrm6IWmIJALeegMK/cA/VN7XF8gXDgeWqlg0P64xRwnc4JqhFpMfyyrJi2xHvrXkZgCv2xAQoaH6lF9CrQH1hF9c6drQAMFJS/JXbcn1qWZqFi1Qh3zRfTYUc4Tfwf8MPGuFBg1hLykWnGFegEQu2x8XIdxtL3unPvBDaN6EzH0NjqhExcf1fIXrwzpe6j8km7A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.2
Release Details
UpdatedSept. 8, 2026, 1:35 p.m.
Changelog

Fixed

  • The internet speed test now works at the 100 MB setting. speed.cloudflare.com rejects a download request for 100,000,000 bytes or more with HTTP 403, so "100 MB" (100 × 1,000,000) fetched nothing and no number appeared. The download for that endpoint is now capped just below the limit (99,999,999 bytes), and a refused download is reported as an error instead of a silent zero. The 5/25/50 MB settings were unaffected. (インターネット速度テストの「100 MB」で数字が出なかった不具合を修正した。 speed.cloudflare.com は 100,000,000 バイト以上のダウンロード要求を HTTP 403 で拒否する ため、100 MB ちょうど(100×1,000,000)が失敗していた。当該エンドポイントのダウンロード量を 上限直下(99,999,999 バイト)に丸め、拒否された場合は 0 ではなくエラー表示にした。 5/25/50 MB は影響なし。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturekEXnJTS5yF9JFTbS5dkAR9aY74MLA244QyEN/MOVQm1phUJ66HKiFUErT8Nw8T/T78ILbJ9T7ZXjGZssJIl+Vp8SR6RimT2jwj6Hq3goj/kKeucT0I31CQB1Zwbp/esXp6FIMp5yNvremlHo5ro1IXV7+/HdJP4eBBhSSqUnp8UOwg+cjs7UHyQQxcLx1pFzyEAHhKgQ45qDxkt1UrctLI2AyY0rRcE+927Gvy5GphRat3RcDIxl6yKabk1wgDU3HM6T9IO5XSjJF2TlT0fihZokAfVosrRQT5JoeCDaqxT3+3kS3w14D+opKWlUdOY+ttGNSb4g5b/RMg4Leeb+Wtrln73bcMHVqN+6VWoY3iQr535E5ZYJEeIpjfsK6iiuRLpmJ+TPKBc99gOEF10HKJwr/j1KMqPoW0NpbgQ747lNedg1I24P8zvKs/DaUzy0pOMpwfGTpwomc2rkSCyGPP1Bnl1RrLkO47xRq8IV4//nFNSqe2gV3lY1UQskYx3qlzMvMEl0717wAoAW8ppYD/M0nLRa9zg9yW6E74WLwjp596pktS3Z/QoGOrkENqNpDNEbw/+cwrmM2OWCGqG6X3N/Z3eIqkIKc8Mv1vloZ+ZardB/WtqG5Mnzbh/0PP2Lx/jzWKzd6+nUDiz4Miw5YCfs6st8eWGIJF5rlI6I4Mo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.1
Release Details
UpdatedSept. 8, 2026, 12:49 p.m.
Changelog

Fixed

  • Fixed a bug where clicking outside a dialog while entering data made the dialog disappear and discarded what you had typed. It affected the data-entry dialogs — the SSH sign-in dialog, the connection editor (new/edit a saved SSH/SFTP/FTP/SMTP connection, including its password and private key), and the Settings dialog: clicking the surrounding area no longer closes them, so nothing you were entering is lost; close them with the ✕, Cancel or Save controls. View-only and picker dialogs (system information, the file picker, the page/text preview and the device panel) keep closing on an outside click, since they hold nothing you can lose. (データ入力中にダイアログの外側をクリックすると、ダイアログが消えて入力が失われてしまうバグを 修正した。対象=SSHサインイン・接続の新規/編集(SSH/SFTP/FTP/SMTP。パスワードや秘密鍵を含む)・ 設定の各ダイアログ。外側クリックでは閉じなくなり、✕・キャンセル・保存で閉じる。閲覧/選択系 (システム情報・ファイル選択・プレビュー・機器パネル)は失う入力がないため従来どおり。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureQ0qPD64JJXCwInnuCvlIN5GZbTdRW/s+Xntj90lJXH/gicwlTuYMeowlFBMvj2uVe7Fd8dErh2sGZJv/6ds7PPdzCFJY7GIeofIuHZHw0laPn26Yy/jgiCB+FPJYbyGNHsMdFyz5pbZ4JtxjMkiFPz7sGsOzbNZH28QnCjLaO7z7RFvU5L95YCREIMEQzhL4aVRgI5oBTWnSb7X5bVoXB0ky5/0YwFBxa4nY3JGy4cn86oTttRhBc/tCJ7mSsPDy1Peas5St7E0bpNiJa0iI/Fap6pgNgm3Gp7YibSyFviW5ygeLOIOqMZWoevakZC/UP+xDEF0sWubaGtz8kz4pATsflz0TfALApYEqvLVNG/cEyZHw3ZiOXwazXWBv1Y1Z21ZMl2pAE4t6LQs2zG6BYO/a465rI6wONcCRV2ODHyZdl3f+qBVdKbtCDZ+0Rzqyj6soDqjWxfMtQG4OYhhFtBrWAZ3GL50Jf6C9zPajzql2hf5SNbvYI93TL/QjLZrmrJFdky0a4EKqRnaL/PQ+DgKX/7ji6zrX3zHaWia/9YJc7tQI3/DEEYMr50YhGClzkBQVkgjtGisHMBYsWs0/SxO/RIHoUi0t7N4Tt3Woh4a9UKJSmm2wOj2pY/u8wyr/3OIr57ogYkYQNz5o+a7O7re7VQeAWt9yCqZgI2DiwwU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.0
Release Details
UpdatedSept. 6, 2026, 4:30 p.m.
Changelog

Everything since 0.3.11, which is what the customer sites have been running, gathered into one release.

Added

  • A terminal, not a line at a time. SSH had a box you typed one command into and a box the answer came back in, which is enough for uptime and no use for anything that draws a screen. There is now a real terminal: top, vi and less run in it, colours and cursor movement work, and it is resized by dragging the window. PHP cannot hold a connection open between requests, so the server keeps the session and streams it — what is typed goes up one batch at a time, and what comes back arrives as it is written.
  • A sign-in dialog for SSH. Host, port, account, and either a password or a private key chosen from your own Nextcloud files. A default folder for keys can be set in Settings, so the picker opens where the keys are kept instead of at the top of the file tree.
  • A device on another network, sharing the same wire, is found and stays found. A camera left on its factory 192.168.1.120, plugged into a 10.0.0.0/16 network, was invisible: it is off the server's subnet, so nothing routes to it, and it cannot answer a question either — its reply goes to a gateway it does not have. What it does do is announce itself to the multicast group, which is carried at the level of the wire and arrives whatever the addresses say. NetBase now listens to that group continuously, in the background, so such a device appears without a scan and is not marked offline for failing to answer something it was never able to answer. Its details carry the one command that would put this server on its network, ready to copy, and a button that opens a terminal on this server to run it.
  • A device can be asked about itself, from its details: every one of its 65,535 ports, and which of the open ones actually serve a web page. The port scan opens 64 connections at a time rather than the sweep's 512, because older hardware drops the flood and is missed at 512; the web search asks each port for its front page rather than guessing from the number, and a port that answers becomes a link in the list from then on.
  • A right-click on a device offers the ways into it — HTTP, HTTPS, FTP, SSH and Telnet — built from the ports it actually has open, with Properties at the bottom for the panel a left-click opens. Nothing speculative is listed: a port that is not open is not offered, and a web page only for a port NetBase knows serves one or has been shown to.
  • SSH and Telnet open in a window, the same movable, resizable frame a device's web page uses, so several can stand open beside the device list at once. Port 22 and port 23 in the device details open one instead of changing tab — which used to close the device and leave nowhere to go back to.
  • Telnet can now be used, not merely diagnosed. It had a probe that read the banner and warned about the plain text, and nothing that would let anyone type at a switch. The window signs in, sends a line, reads the answer and hangs up — a connection per line, because PHP cannot hold one open between requests, which is also why nothing is left open on the device in between. Option negotiation is refused throughout, so the device keeps talking without our pretending to be a terminal.
  • Zoom, fit and a screenshot in every device window, and a row of buttons where a sentence explaining the window used to be: the device's own address, the page's text, and the clipboard into whichever field the cursor is in.
  • Copy buttons throughout the device details — the whole record, or any one row of it.
  • Five depths for the port check (15, 106, 1,024, the high ports 1025 to 65535, and all 65,535) and five scan speeds, with the wait for a port to answer now a setting of its own, since that is the number which decides how long a scan takes. The high ports are where a maker hides an interface it would rather not advertise, such as the 22401 on a router here.

Changed

  • The device list is two lines to a column — name over address, MAC over vendor, type over open ports — so a row holds what used to need sideways scrolling. A device that has told nobody its name is written - no name - rather than left blank.
  • What to scan is chosen first and by name — the whole network, or the ARP table only — and the options beneath are arranged as the steps they are.
  • The SSH page says which boxes belong together. It does two jobs — looking at a server, which needs nothing, and working on one, which needs an account — and ran them together in five cards with three separate host fields. Each job now has a heading, Telnet sits with the work rather than the looking, and the host typed at the top can be carried down to the sign-in with a click, so the two are visibly the same machine.
  • The wait for a port to answer says what it buys. The seconds alone meant nothing without having thought about what a silent port costs, and the "up to N per device" beside them was arithmetic nobody asked for. Now: quick and misses slow devices, the usual, or finds the slowest and takes longest.
  • Plainer words throughout: the ARP table is called the ARP table, the scan speed is a rate rather than an adjective, and links are made only for ports NetBase can vouch for.

Fixed

Ten of these came out of two cameras — five from one at a customer site, five from one here — and every one of the ten was found the same way: by signing in and then actually using the pages behind the sign-in, rather than checking that the front page appeared and calling the window done. None of them is particular to a camera; they would meet any device whose own web interface is built the same way, and the second camera was still finding them after the first five were fixed.

  • Device pages that would not open. A device's redirect was arriving as a 200 with a Location nobody acted on, which left Brother, Canon, Kyocera and Buffalo hardware showing nothing; four ASUS routers stepped outside their window through history.pushState; and a Buffalo LinkStation reloaded itself once a second for ever. Found by opening every device with port 80 or 443 across the nine sites — 73 of them — of which 32 displayed at the start.
  • A relative address that climbs with .. no longer eats the ticket. On the device the climb stops at the root; under the proxy the root is several segments deeper, so ../script/inputrestriction.js from /login.html arrived with the ticket gone and came back 403. The camera's login page then ran without a file it needed and threw input_edit_restriction is not defined. Climbs are now resolved against the page and clamped where the device would clamp them — in the markup, in scripts, and in what document.write writes.
  • A POST with no content type is no longer thrown away. Device firmware routinely omits it, and PHP will not parse a body it has not been told the shape of; taking it as a form left the device receiving an empty request. The camera's sign-in went 403. If nothing was parsed and something was sent, what was sent is what goes on.
  • Nothing but a page gets the shim. A device also answers with things read by script rather than shown — the camera's sign-in returns an empty body with a 200 — and putting our script into that made the answer unrecognisable to the page that asked for it.
  • The cookies a device's own page sets now reach the device. They live on this server's name alongside Nextcloud's, so Nextcloud's are left out by name; the session above all never leaves this origin.
  • The request says which of the device's own pages it came from. Nextcloud sends no-referrer on everything, which is right for Nextcloud and wrong here: this camera turns away every page after the sign-in without it. The window now says same-origin — the referer never leaves this server — and the proxy rewrites it into the device's own address before sending it on.
  • A device window no longer sends its cookies twice. Two sets have to go to the device — the session it grants at the sign-in, which the server holds and the browser never sees, and whatever its own page set in the browser — and they were being sent as two separate Cookie: lines. A browser never does that, and a small device web server reads only one of the two. This camera read the second, which has no session in it, decided the sign-in it had granted a moment earlier belonged to nobody, and answered every page after it with a redirect back to the login screen. Both sets now go through the same cookie engine and leave as the one line HTTP asks for.
  • A request with an empty body no longer arrives with one. The parameters Nextcloud hands over are the query string and the body merged together, and taking that as the body meant the address's own question came back a second time as form data — POST /action/get?subject=datetime left here carrying subject=datetime in a body 25 bytes long. That is how this camera's pages ask it for their current settings, and it answered 400 to every one of them: the sign-in screen never offered the dialog it owes a device still on its factory password, and the pages behind it came up on their defaults. Only what was actually sent as a body is sent on as one.
  • A request with nothing to send now says how much that is. With no body, curl leaves out Content-Length altogether; a browser always writes Content-Length: 0. Given the first, this camera's web server waits for a body that is never coming and eventually closes the connection with nothing said. Every settings page asks for its current values with exactly that kind of empty POST, so every page came up with its fields blank or on the first option in each list — the time zone reading GMT-14 when the camera was set to GMT+08. Measured against the device directly: no Content-Length, no reply at all; Content-Length: 0, the settings come back. All 27 fields on the Date & Time page now match what the device itself shows.
  • A file whose name has a space in it is fetched. The browser escapes the space, the router unescapes it, and what reaches the proxy is a real space — which cannot go back into a request. Three of this camera's menu icons are kept under names like Video Analytics.png, and all three were broken pictures while the other eleven on the page were fine. What a path may not carry is escaped again on the way out, and what is already fit to send, the percent sign included, is left alone so that a path which was never unescaped is not escaped twice.
  • A port a device announced is added to what is known, not put in place of it. A port scan speaks for every port it tried and may rightly take one away; an announcement speaks for one port only — the one the device's own page is on. Written down as though it were the whole truth, it erased the rest. This camera announces port 49152 every forty-five seconds, so a scan that had just found eight open ports was down to that one inside a minute, and the web-page search that followed had nothing left to try: it never saw port 80, no matter how many times the scan was run.
  • A device that answers and then stops no longer holds the window empty for thirty seconds. An NTT phone system at one site sends its 403 in under a second and then keeps the connection open without ever finishing the body. A connection carrying nothing at all for ten seconds is now treated as finished, and the window says the device answered and then stopped rather than showing nothing. A stream that is genuinely working — a camera, a download — is carrying bytes and is never caught by this.
  • The server NetBase runs on now appears in its own device list. A machine never asks the network for its own MAC address, so it is never in its own ARP table — and NetBase, which discovers by reading that table, could see every device on the network except the one it was running on. Its own interfaces are now written down at the start of a scan, marked "this server" in the list.
  • A device out of reach is no longer marked offline for failing to answer. A scan marks everything offline and then marks back what replies, which is right for a device that could have replied and wrong for one that never could. A device that has only ever been heard announcing itself — never seen in the ARP table — keeps its state if it has been heard from recently.
  • A radio button is drawn as a radio button. It had no style of its own, so it fell through to the rule for a text box and was rendered as one: a rounded rectangle with twelve pixels of padding around the dot.
  • A multicast step no longer stops without a word. IP_ADD_MEMBERSHIP is not defined in every PHP build, and naming a constant that does not exist is a fatal error rather than a failed call, so the step ended silently and the devices that only announce themselves were never heard.
  • The standing listener actually runs. A background job registered as time-insensitive is held for the maintenance window, which on an instance with one configured means it runs between 01:00 and 05:00 and at no other time — so the listener that is supposed to be hearing announcements all day heard none. TIME_INSENSITIVE is 0 and TIME_SENSITIVE is 1, the reverse of what the names suggest at a glance, and the value is written once when the job is first registered and never revised, so the registration has to be removed and remade rather than merely corrected.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturelsvI6lQNV2r6VjQYc3jblzctyi3y4fyH3qh3ltaysElg7994DYPy+eCQLpeMECTNLgSNVFAlNSXD8I636ZM8AGBKMKokeywElPLtTytOW8IptKAOfErJtFXg2i8E0HRlIO6aNWAwcMlCBDwSACquiEs2j3ftsmY8D9abu/UrJPKYlLZ++iXRqbQ1adRd2klYsAHKES5fi85eujypN3yyQgYOy5J9+ib5alSGS3BFc4MXHDNI/yL0sKnV2XfRTY2oSgV5xSP7GPwDxviFe9ZH9jnzbS9DbUJaan9tuyJkhU68rzr4YVRCzT+UVKMUmXwWLYPPcTnqhVVaTBnRpOAWLqtat4F9tMTi8UEAKhCwqEe6qTELzFqdttuHgMAuRlwGMTHNksFJoyI5Tjq+uDHcpxlBkiL9G4hafAyVqbNmX3L7uW26vBZzW0OY7YqVtbzzNiahNq7dhBxr+tAO7NBJA3LA1sLMcHXU/vkAeesusacJUoJ9G/ZFUcLWCPh1U11tCk4E2Zp4W8T5qD1OdXUxmK9NJWgvyGYB4NQwa7RSGtS9kcwT19p/d+h+2WZAYtKn0drBbaf/yBLYNydu5iYBnoER9cGLzP8f0+CXZLiQrYv5PAdvkaXZr48L0SrIAa/bopO8R8PgUX0j+L06bS1teTspLOJvsighiPBbcEnHlzQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.3.3
Release Details
UpdatedSept. 5, 2026, 3:53 a.m.
Changelog

Removed

  • Ping, traceroute, the port check, TCP ping and path MTU discovery, and the nmap front end with them. The Nextcloud app store review takes the view that an app which sends probes of that kind should not be installable from the store, and NetBase follows it: the tools, their tabs, their routes and the code behind them are gone from this release.

Changed

  • Everything else works as before: device discovery and the device windows, the LAN sweep and inventory, DNS, whois, TLS and HTTP, subnet and MAC, mail, FTP and SFTP, SSH and Telnet, the clock check, the benchmarks and the server view.
  • The requirements page and the administration settings no longer mention ping, traceroute, mtr or nmap, and no longer ask for them to be installed.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureJ0kMXHFSMxxwbvTbXhBrHulZmHnQd+P84sVi4JS3RZSEwAauHtV+f2r1tlOrAyi9ZFq3cQJ2OlrVt84rnil/C8nCnJx7Aqw8vyTYVJ2+ToF8aj6PNl0wtNs4ocd4N9GjuktyQdsNaC0feBA3I/ZkCEZivbXZZ88XAhQ1WaLBROFbRoGmeD7Z+C/MsjZyhbRL41YfL3ADcfyUjkjTFU1O19ObgyfX5E76IFz7KtfZXtUfvIZatn8RR6rs9kX8ospThDOmABmuqsoaneAm9/LEnGbCHdnt9oJtYOvteVIpkCUuz9YwW8xne/ny5QgKn2rfS5BfKQRx0d6EpRG3Oro8+Ho5I48RIYva/32IRxNZSblICaZ7H+X0qL+Fs2zXhB/uYT6wq4HKdXYS0UmHZIlwpBB55s/S0Mcgutc1GpeLQKPLj7pdzDNNJLTxXLq4u2sExN/20G6oATgdbhXErr8U5f8pIw2VWrrl4o0C11zVGT+h5K/tOGSvKcYQxi6R+rnVpiCQLv3+izdbW1zc3RAUmCU4emLxVROuDT3Hh06ig+qV/hf7QLF97RfYfF06IZOAuxfpE8Zx9Ctvl8WYJ4obGBuhA6XwY2WTZxPvJIRIlQQxEe7rTM2VNCosOa8axM7resC5EAzTG/BYKVbyOLBNbwX1r992ATQ4MufWXNNYHzU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32

Nextcloud 31

NetBase 0.6.2
Release Details
UpdatedSept. 17, 2026, 10:45 a.m.
Changelog

Changed

  • Nextcloud 35 is now supported. There are no other changes. The supported range is widened from 30–34 to 30–35. The app itself is unchanged from 0.6.1: it was tested on Nextcloud 35 against the changes that release makes for apps, and ran without modification. (Nextcloud 35 に対応した。それ以外の変更はない。 対応範囲を 30〜34 から 30〜35 に 広げた。アプリ本体は 0.6.1 から変わっていない。Nextcloud 35 でアプリ向けに変わった点に 照らして試験し、修正なしで動くことを確かめた。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureovYzjgphrZG9qwzRnUkQE6ciV6DE9L0exbPrr2vAdkG4vEunPZAzj+jynTjvITfB0AEM1uHMkSvuVlPn8LXaqGp5tAhY7ZTFpf9FPRXx9zt+1sofQGRVIW5iDWAU+nsj2jr1HROnDVcb+q0Wb5Xm5nr3wL9zX5Cto9xPu1VjM5+KxVl0xbaUAnVWUj5nKZQN9yLHmpksAdt/VsAKO8BEclfnXI2z+4VV/EL7A3gaHW5SrOEm+0bqDj2nGPit2UfuXPcSYCnEtmwkSmwwCWzfKC3yVrZ3toqgwWQIJy1cYNh6H1BKvuZSzaec/ZkRFXdLHM7WiATnzBVvY57voAVNlkQ4TLbgw5AQDQgPPDnIK7TaeCUMrGfLQwSPmznfiD5Y51O5CeIR/chXKLOWJBHdDex4yLgm2H5pwl+0EAN7E9ct8qjPBdF+sTdiGcBf5p6QYTGJmVAku7ic3lql6DTDNsHRIo6+NP/aXXJ5BSbhim4mzrb7jTVMFmB8xlMkyI+dr4EiJnvkokNw9CciiU6ddXkQoNBjjPMsBmI1S4yplH0maYsMSc9wryjhOVePzgX2phIRbFFqVfe7Q+phJp0EtHjEqyULrmH3HRkNtoQIYoVmPmuls1hkt5F38ZMUzyU6vvqKIPc4ZGtDGLZYGzOBa+8SVI2WKOsZW4dJqvv/BHM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
NetBase 0.6.1
Release Details
UpdatedSept. 17, 2026, 10:44 a.m.
Changelog

Added

  • A device in the list can be pinged: right-click a row and ask it. The answer is the packet count, the loss and the round-trip times, kept on screen until it is closed rather than fading like a notice — the numbers and their caveat are worth reading twice. A result of "nothing came back" says so plainly and adds that plenty of devices and firewalls ignore ping while answering perfectly well on a port, because a bare 100% reads as "the device is off" and often it is not. It reaches the local network and nothing beyond it, in two ways at once: the request names a device by its row rather than by an address, so there is no field in which to aim it at the internet, and the server checks the address against its own subnets before a single packet leaves. An address on no subnet of this server is refused rather than tried. (一覧の機器に ping を送れるようにした。行を右クリックするだけ。 送信数・受信数・ 損失率・往復時間を、消えてしまう通知ではなく閉じるまで残る小窓に出す。数字とその 読み方は二度読む価値があるため。応答がない場合は「多くの機器やファイアウォールは ping を無視しつつポートには応答する」と添える。損失 100% だけを見せると「電源が 落ちている」と読めてしまうが、実際はそうでないことが多いからである。外部には届かない。 仕掛けは二重で、①要求はアドレスではなく機器の行を指定するため、外部を狙う入力欄が そもそも無い、②サーバー側が送信前にアドレスを自分の持つネットワークと照合する。 どこにも属さないアドレスは、試さずに拒否する。)

  • A machine with a foot in several networks is pinged at the address that means something. Such a machine is one row per address, shown as one device, and the row menu hands over whichever row carries the name — which is not chosen for being reachable. On the development server that picked the container bridge over the address anyone would mean, and it could as easily have picked a stale address on a network the machine no longer has, which the server then refuses. The address is now chosen on its own merits: the routed networks first, primary before secondary, then an address this server merely has an interface on, and never one it has no interface on at all. Ties fall to the lowest address, so the choice does not wander between scans. (複数のネットワークに足を持つ機器では、意味のあるアドレスに送るようにした。 この種の機器はアドレスごとに別の行になり、一覧では1台として表示される。右クリックが 渡すのは「名前を持っている行」で、届くかどうかで選ばれていない。開発機では、誰もが 思い浮かべるアドレスではなくコンテナ橋の側が選ばれていた。条件次第では、その機械が すでに持たないネットワークの古いアドレスが選ばれ、サーバーに拒否されて終わることも あり得た。アドレス自体の素性で選ぶようにした。経路のあるネットワークを優先し (主たるものを副次より先に)、次にこのサーバーが足だけ持つネットワーク、足を持たない ものは選ばない。同順位なら小さいアドレスを採り、探索のたびに揺れないようにした。)

Fixed

  • A device type you chose by hand no longer disappears when a container restarts. Reported from an all-container estate: a type changed to "Container" was back to "Unknown" after the container was restarted and the devices refreshed. The guard that stops a scan replacing a hand-picked type with a guess was working; something else was undoing it. NetBase identifies a device by its MAC address, and a container is handed a new one every time it starts — podman gives it a new address as well. The machine that came back was, as far as NetBase could tell, a different machine. Reproduced both ways it plays out: where the address changed too, the old row survives offline with its type and a new "Unknown" appears beside it; where the address stayed, the old row was deleted outright and the type went with it. That deletion is deliberate — when a DHCP lease passes from an old PC to a new device, the old machine's name and type must not follow the address to its new occupant — and a restarted container is indistinguishable from a reassigned lease from the outside. So the line is drawn differently: everything the machine reported about itself (its ports, its names, its vendor, its history) is still dropped with its row, and what a person typed is carried across — the name they gave it, their notes and tags, and a type they picked by hand. A guessed type is still left behind, because "Printer" was the scan's opinion of the machine that left and says nothing about whatever holds the address now. (手で決めた機器の種別が、コンテナの再起動で消えてしまう不具合を修正。 すべてを コンテナで運用されている方からの報告で、「コンテナ」に変えた種別が、再起動して機器を 更新すると「不明」に戻っていた。推測による上書きを防ぐ仕組みは正しく働いており、 別のものが打ち消していた。NetBase は機器を MAC アドレスで見分けるが、コンテナは 起動のたびに新しい MAC を受け取る。podman ではアドレスまで変わる。戻ってきた機械は、 NetBase から見れば別の機械だった。起こり方は2通りあり、両方を再現した。アドレスも 変わる場合は、古い行が種別を保ったままオフラインで残り、隣に新しい「不明」が現れる。 アドレスが同じ場合は、古い行が削除され、種別ごと消える。この削除は意図的なもので、 DHCP で古い PC からアドレスが別の機器へ渡ったとき、前の機器の名前や種別を新しい 持ち主に引き継いではならないためである。そして再起動したコンテナと、渡されたアドレスは 外から見分けがつかない。そこで線を引き直した。機械が自分について報告したもの (ポート、名前、製造元、履歴)は従来どおり古い行とともに捨て、人が入力したものだけを 引き継ぐ — 付けた名前、メモ、付箋、そして自分で選んだ種別。推測された種別は 引き継がない。「プリンター」は去った機械についての意見であって、いまそのアドレスを 持つものについては何も語らないからである。)

  • The settings screen no longer answers 500 on a confined install. Listing the fonts a terminal can borrow walks the font folders, and on a confined install — a snap, for one — /usr/share/fonts is refused outright. A folder that cannot be opened throws rather than warns, and the @ in front of it does nothing about a thrown error, so the exception travelled out of the font list, through the settings handler, and turned the whole screen into a 500. The walk is now guarded, and the same refusal arriving from a folder deeper in is caught too rather than only the opening of the top one. A font nobody can read is not worth a broken screen: the folder is skipped instead. (限定された環境で設定画面が 500 になる不具合を修正。 端末に貸せるフォントを 数えるためにフォント用のフォルダーを辿るが、限定された環境 — snap などがそうである — では /usr/share/fonts が丸ごと拒否される。開けないフォルダーは警告ではなく例外を 投げるため、前に付けた @ では抑えられない。例外はフォント一覧から設定の処理まで 抜けていき、画面全体が 500 になっていた。辿る処理そのものを保護し、先頭のフォルダーを 開くときだけでなく、途中のフォルダーから同じ拒否が来た場合も受け止めるようにした。 読めないフォント1つのために画面を壊す価値はない。そのフォルダーは飛ばす。)

Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureMWUIO4DhCXKnL5EV46opf++sOrtHiPQGJ+lzsEhFjx5QuFWz7OcXA3gA0lV43t5W2WOCdEuP+QKcuDbmCCmsJrGe0i0ekeNtlT8QPwm3qgMXeFHIcCOogH3Lkh4uawbBI9CRXjtqBRMjJAq59WaJ6fhp2ek9fRt/E3abwNrGgSccb5wmVI3mq52I7zaKYYpDUlzc8bme5nuRxjygb2N6bnaufCmHGMWLBglwnWbgTYHDnjiM9Dp0q7xdsA+tw1ICZWHvjeafYz8HuEkVOL0aGjoiX19mRMg8eBePlFWZfTkGHLdR0jLhuL7n669AxeiUKPCV7ZQBxRieu6oXKL3M2ifYO36tLjglkZ1kD6gUJVPqD+A9ANitG9OiP+tp9Vff0KoSBf+tODGvPjM0ZLyPbuxbS8SFxh4vhy+MPeu0kPqSeY0evnQz00YnV+FI+DoLwthbPtl+OsUzwJlnp1Y4JoBeEHsGgWcrEl26UYQA61AhtL5z6D//VfOQnkcZ5m+wJwzRIAz0I5nBX8W93wqqdUsIE/Nvscdb/g4j8pG47oXha8duf9aiphK3kGxYn3MHqGZDb91EVBas9SNH/TwBOzEhh+HOzVAXGyxhD+jNJ2AKcknSn7qhUnFKCEi7BW/DXl/vGgXmUKR6X9dQSVpc7QilFKz8Px5eYN+hzy9aYcc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.6.0
Release Details
UpdatedSept. 16, 2026, 6:03 a.m.
Changelog

A bigger step than 0.4.3 → 0.5.0 was. Please read the first entry before you update: saved connections move to RegiBase, and the ones stored before this release are gone. (0.4.3 から 0.5.0 のときよりも変更点が多い版です。更新前に最初の項目を必ずお読み ください。保存済みの接続先は RegiBase へ移り、これまでに保存したものは消えます。)

Changed

  • The settings dialog is wider, its tabs sit in one row, and the tabs are easier to tell apart. Four tabs in a 560-pixel dialog wrapped to two rows with room to spare on each; the dialog is the ordinary 660 now and they fit in one, sharing the width and wrapping only when the names cannot be read any narrower. The closed tabs were a muted grey on a near-white ground, which is hard to separate from the panel at a glance: the ground is darker and the text is the ordinary text colour. Measured rather than guessed — the text now sits at 12.1 against its own ground where it was 4.3, and the open and closed states differ by 1.21 where they differed by 1.11. Five mixes were compared before settling on one. (設定ダイアログを広げ、タブを1段にし、開いているタブと閉じているタブを見分けやすく しました。 560ピクセルの幅に4つのタブは収まらず2段に折り返していましたが、各段には 余白がありました。通常の660ピクセルに広げ、タブが幅を分け合って1段に収まり、名前が 読めなくなるときだけ折り返すようにしました。閉じているタブは白に近い地に薄い灰色の 文字で、ひと目では本文と区別がつきませんでした。地を濃くし、文字を通常の文字色に しています。当てずっぽうではなく実測しました。文字と地の比は 4.3 → 12.1、開と閉の 地色の差は 1.11 → 1.21。5通りの濃さを比べたうえで決めています。)

  • Acting as root now lapses on its own. The sudo password was never stored, but it stayed usable for as long as the page was open — and a page left open on an unlocked screen is somebody else's root. It is given up after a set time with nothing touched: ten minutes to start with, adjustable from one to thirty in the settings, or never for anyone who would rather decide for themselves. The remaining time is shown beside the notice, and "Give up root now" is a button rather than a line of small print. Working in NetBase resets the clock; merely having the tab in front of you does not, because a tab left on this screen while its owner is elsewhere is the case this is for. (root として操作している状態が、自動で切れるようになりました。 sudo のパスワードは もともとどこにも保存していませんが、画面を開いている限り使える状態が続いていました。 施錠されていない端末に開いたまま置かれた画面は、そこにいる誰にとっても root です。 何も操作しないまま一定時間が過ぎたら手放します。既定は10分、設定で1〜30分から選べ、 「自分からは手放さない」も選べます。残り時間は知らせの横に出し、「いま root を手放す」 は小さな文字の一行ではなくボタンにしました。NetBase で何か操作すれば数え直しますが、 画面が目の前にあるだけでは数え直しません。持ち主が席にいないままこの画面が開かれて いる、という場合のための仕組みだからです。)

  • A folder can be downloaded now, as one ZIP file. Only single files could be brought back; a folder had to be walked into and its files fetched one at a time. The archive is built on this server rather than on the far end, because that is the only way that works everywhere: a host reached over FTP has no commands at all, and even among Unix servers zip is often missing — the test server here has tar but no zip. Nothing has to be installed on the server being visited. Three limits keep one request from running away: how deep it walks, how many files it takes, and how many bytes in total; reaching one stops the walk and says so, rather than quietly handing over half a folder. (フォルダーを、1つの ZIP ファイルとしてダウンロードできるようにしました。 これまで 取り込めるのは単体のファイルだけで、フォルダーは中へ入って1つずつ取るしかありません でした。書庫は接続先ではなくこのサーバーで組み立てます。それが唯一どこでも同じに 動く方法だからです。FTP の相手にはそもそもコマンドがなく、Unix のサーバーでも zip は 入っていないことが多く(この検証機も tar はあるが zip は無し)、相手側に何も導入する 必要がありません。1回の要求が際限なく走らないよう、深さ・件数・総量の3つに上限を 設けています。上限に達したら walk を止めてその旨をお伝えします。黙って半分だけ渡す ことはしません。)

  • "Download to my files" in the right-click menu is just "Download" now. What it did was plain; the wording was not. (右クリックの「自分のファイルへ取り込む」を「ダウンロード」にしました。 している ことは単純なのに、言い方が回りくどいものでした。フォルダーでは「ZIPでダウンロード」と 出ます。)

  • The settings dialog is tabbed too, and the tabs take one row where they fit. Four groups stacked one under another made a dialog longer than the screen: appearance, terminal, connections and keys, and the tool order all had to be scrolled past to reach the last of them. They are four tabs now, the same ones the connection list uses. The tabs were fixed at two to a row, which forced a second row even where there was width to spare; they fill the row and wrap only when they must. (設定ダイアログもタブにし、タブは収まるなら1段にしました。 4つの群を縦に並べて いたためダイアログが画面より長くなり、外観・端末・接続先と鍵・ツールの並びのうち最後の ものへ行くには手前の3つを通り過ぎる必要がありました。接続先リストと同じ形の4つのタブに しました。タブは2つずつの2段に固定していましたが、幅に余裕があっても2段になって しまうため、収まるだけ横に並べ、入らないときだけ折り返すようにしました。)

  • The connection list settings are four tabs now, two to a row. The four kinds were stacked one under another, which ran the dialog well past the bottom of the screen: the one being worked on was never wholly in view, and finding the right one meant scrolling through the other three. Putting them behind a single selector had been worse — three of the four were invisible and there was no telling what was set up. The tabs say both at once: which one is open, and which of the others still have nowhere to keep their connections (a dot on the tab). (接続先リストの設定を、2段のタブにしました。 4つの種別を縦に並べていたため、 ダイアログが画面の下へ大きくはみ出し、作業中の種別が一度に収まらず、目的のものを 探すのに他の3つを通り過ぎる必要がありました。かといって1つの選択欄にまとめたときは もっと悪く、4つのうち3つが見えず、何が設定済みかも分かりませんでした。タブなら 両方が一目で分かります。いまどれを開いているかと、残りのどれがまだ未設定か(タブに 点が付きます)。)

  • Fixed: reordering the tool list stopped the whole sidebar from working. Dragging a tool into a new place left Settings, System information and Open a shell unresponsive. They were not covered by anything and had not been replaced — the screen had simply stopped redrawing. The list was built by a <template v-for> holding a button and a conditional rule, with the key on the template rather than on the elements: one turn of the loop produced two nodes or one, so once the order changed Vue could no longer match them up. It threw inside its own patch ("insertBefore: parameter 1 is not of type Node"), abandoned the update, and never drew anything again. The error did not reach window.onerror, which is why it survived my checks. The list is now one element per item, keyed on the element, and the rule between the two groups is drawn by the item it belongs to. (不具合修正:ツールの並び替えをすると、サイドバー全体が動かなくなっていました。 項目をドラッグして並び替えると、「設定」「システム情報」「シェルを開く」が押しても 反応しなくなります。何かに覆われていたのでも、ボタンが作り直されていたのでもなく、 画面の更新そのものが止まっていました。一覧は <template v-for> の中にボタンと 条件付きの区切り線を入れ、キーを template にだけ付けていました。繰り返し1回が 2要素になったり1要素になったりするため、順序が変わると Vue が要素を対応づけられず、 自身の更新処理の中で例外を投げて(insertBefore: parameter 1 is not of type Node) 更新を放棄していました。この例外は window.onerror に届かないため、私の検査を すり抜けていました。一覧を1項目1要素・要素にキーを付ける形に改め、区切り線は その上の項目が引くようにしました。)

  • Fixed: "act as root" did nothing for a saved SSH connection. SCP offers the SSH connections because it signs in the same way — but opening one still went through SFTP, which has no shell behind it and cannot put a command through sudo. So the tick was there, the password was taken, and /root came back unreadable anyway. Which protocol the screen is set to is now sent with every request, and SCP opens over SCP even when the connection was saved as SSH. (不具合修正:保存済みの SSH 接続先では「root として操作する」が効いていませんでした。 SCP はサインインの仕方が同じなので SSH の接続先を候補に出しますが、開くときは SFTP を 使っていました。SFTP の背後にはシェルが無く、sudo を通せません。そのため切り替えは あるのにパスワードも受け取られ、それでも /root は読めないままでした。画面がどの手順に 設定されているかを毎回の要求に添えるようにし、SSH として保存された接続先でも SCP は SCP で開きます。)

  • The file list works like a file manager now. It was a table with three buttons on every row, and a folder could only be entered by hitting its name exactly. Now: a row is selected by clicking it, a folder opens on double-click, and the right button offers what can be done with that row — open, download, copy the path, rename, change permissions, delete. The columns sort (folders stay above files whichever one is used), ".." walks up from inside the list, the owner is shown, and there is a refresh button. (ファイルの一覧を、ファイル管理ソフトらしい操作にしました。 これまでは各行に ボタンが3つ並ぶ表で、フォルダーは名前を正確に狙わないと開けませんでした。行は クリックで選択、フォルダーはダブルクリックで開き、右クリックでその行にできること (開く・自分のファイルへ取り込む・パスをコピー・改名・権限を変更・削除)が出ます。列は 並べ替えられ(どの列で並べてもフォルダーが上に残ります)、一覧の中から「..」で上の階層へ 戻れ、所有者の列と再読み込みのボタンを足しました。)

  • The master key prompt says how long the key lasts. Where the key is asked for, under the box: it is held until the browser is closed, for that session and nothing more. Somebody typing a master key deserves to know what they are agreeing to before they type it, not after. (マスターキーを尋ねる場所に、有効期間を明記しました。 入力欄の下に「このマスター キーはブラウザーを閉じるまで有効です(このセッションのみ有効)」と出します。マスター キーを打つ人は、打つ前に何に同意しているのかを知っているべきです。)

  • Fixed: the saved list could be chosen from without the master key, and then would not connect. A name and an address in RegiBase are not secret and read back without the key; the password and the private key are, and do not. So a locked list looked complete — every server there, selectable — and failed at the moment of use, with the key asked for only once the connection had already been attempted. Offering a choice that cannot be carried out is worse than offering none. Choosing the list now asks for the key in the place the list would have been — "Please enter the RegiBase master key." — on both the SSH screen and file transfer. (不具合修正:マスターキーが無くても保存済みの一覧から選べてしまい、選んでも接続でき ませんでした。 RegiBase では名前やアドレスは秘密の項目ではないため鍵が無くても読め、 パスワードや秘密鍵は読めません。そのため一覧は完全に見え、どれでも選べるのに、使う 段になって失敗し、鍵を尋ねられるのは接続を試みたあとでした。実行できない選択肢を 差し出すのは、何も出さないより悪いことです。リストを選んだ時点で、一覧があった場所に 「RegiBaseのマスターキーを入力して下さい」と出して先に尋ねるようにしました。SSH 画面と ファイル転送の両方です。)

  • SCP offers the SSH connections again. Splitting the lists by type was right for storage but wrong for SCP at the screen: SCP signs in over SSH with the same account and the same key, so every connection saved as SSH is one SCP can open. With the lists split, sixteen saved servers became an empty list on a screen that could have opened any of them. SCP's list now offers the SSH connections as well. Where they are stored has not widened — that is still one collection per type. (SCP のリストに SSH の接続先を再び出すようにしました。 種別でリストを分けたのは 保存先としては正しかったのですが、画面の SCP については誤りでした。SCP は SSH に 同じアカウント・同じ鍵でサインインするため、SSH として保存した接続先はすべて SCP で 開けます。リストを分けた結果、16件が保存されているのに一覧が空になり、開ける相手が 1件も出なくなっていました。SCP の一覧には SSH の接続先も出します。保存先が広がった わけではありません ― 保存先は従来どおり種別ごとに1つです。)

  • The settings name the groups the way they were asked to be named. They had been relabelled "SSH", "SCP", "FTP and SFTP" and "Mail (SMTP, IMAP, POP3)" — wording of my own, in which Telnet had quietly disappeared. They read "SSH / Telnet", "SCP", "FTP / SFTP" and "SMTP / IMAP / POP3" again. (設定の群の名前を、ご指示どおりの括り方に戻しました。 私が勝手に「SSH」「SCP」 「FTP and SFTP」「Mail (SMTP, IMAP, POP3)」と付け替えており、Telnet が消えて いました。「SSH/Telnet」「SCP」「FTP/SFTP」「SMTP/IMAP/POP3」に戻しました。)

  • The SSH screen no longer repeats its own name. It carried a heading reading "SSH and Telnet" directly under the menu entry that already says so — the only screen of the thirteen to do it, and the same words twice in the same glance. The heading is gone, and the styling that existed only for it went with it. (SSH の画面で、自分の名前を繰り返すのをやめました。 左のメニューに「SSH・Telnet」と 書いてあるすぐ下に、同じ「SSH・Telnet」という見出しを置いていました。13画面のうちこの 画面だけで、同じ言葉が一目の中に二度あることになります。見出しを外し、その見出しの ためだけにあった体裁指定も併せて削除しました。)

  • FTP and SCP no longer share one list. The storage was split by type, but the screen was not: one list offered every saved FTP, SFTP, SCP and SSH connection together, so a server saved for FTP was offered to SCP — a machine that cannot answer the protocol being asked for — and the fact that the two are kept in different collections was hidden. The type is chosen on the screen now, and it picks the list as well as the protocol: SCP shows the SCP list, FTP and SFTP share theirs, SSH keeps its own. (FTP と SCP でリストを分けました。 保存先は種別ごとに分けたのに、画面のリストを 分けていませんでした。1つのリストに FTP・SFTP・SCP・SSH の保存済み接続先がすべて並び、 FTP 用に保存した相手が SCP の候補として出ていました。その機器は求められた手順に 応えられません。別のコレクションに保存されているという事実も隠れていました。画面で種別を 選ぶようにし、種別が手順とリストの両方を決める形にしました。SCP は SCP の一覧、 FTP と SFTP は共通の一覧、SSH は SSH の一覧です。)

  • Picking from the list no longer connects on its own. On the file transfer screen, choosing a saved connection opened it there and then, while the SSH screen waited for the button that says so. Both wait now. (リストから選んだだけでは接続しないようにしました。 ファイル転送の画面では保存済みを 選んだ瞬間に接続していましたが、SSH 画面はボタンを押すまで待ちます。両方とも待つように 揃えました。)

  • The menu entry is "File transfer" again. It had been renamed to the list of protocols it speaks, which is not what it is for. (メニューの項目名を「ファイル転送」に戻しました。 扱える手順の名前を並べた表記に なっていましたが、それはこの画面が何をするためのものかを表していません。)

  • The file transfer screen now works the way the SSH screen does. The two do the same job — name a server, then use it — and asked for it differently: the SSH screen put the choice first and everything under it in one card, while file transfer had the typing in one card and the choice in another below it, with the two buttons in the opposite order and the opposite default. Nothing was wrong with either on its own; having both was. File transfer now follows the SSH screen exactly — the same choice, in the same order, in one card, with the chosen connection shown back the same way. (ファイル転送の画面を、SSH 画面と同じ操作に揃えました。 どちらも「相手を決めて 使う」という同じ仕事なのに、訊き方が違っていました。SSH 画面は選択を先頭に置いて その下にすべてを1枚で収めていたのに対し、ファイル転送は手入力が上のカード、選択が下の カードで、ボタンの並び順も既定も逆でした。片方だけを見れば問題はなく、両方ある ことが問題でした。ファイル転送を SSH 画面に合わせ、同じ選択・同じ順序・1枚のカードに し、選んだ接続先の表示の仕方も揃えました。)

  • Where connections are kept now shows every kind at once. Separating the storage by kind arrived with a selector in front of it: one kind was on screen and the other three were not, so there was no way to see at a glance what was set up and what was not — and only ever one list picker, whatever you were looking for. All four are listed together now, each with its own collection and its own field assignment, each saved on its own. (接続先の保存先設定で、4つの種別すべてを同時に表示するようにしました。 種別ごとに 保存先を分ける機能を入れた際、その前に種別を選ぶ欄を置いてしまいました。画面に出るのは 1種別だけで残り3つは見えず、何が設定済みで何が未設定かが一目で分からないうえ、 リスト選択も常に1つしかありませんでした。SSH・SCP・FTP/SFTP・メールを並べて表示し、 それぞれに保存先コレクションと項目の割り当てを持たせ、個別に保存できるようにしました。)

  • The same choice of "type it in" or "pick from the list" on both screens. The file transfer screen had a card for typing and a card for the saved list sitting one above the other, both asking for the same server with nothing to say which one was in use. It is one card with the same two buttons the SSH screen has. (ファイル転送の画面にも、SSH と同じ「手入力する/リストから選ぶ」の切り替えを付けました。 これまでは手入力のカードと保存済みのカードが上下に並び、どちらを使っているのかが 分からないまま、同じ相手を二重に尋ねていました。1枚にまとめ、SSH 画面と同じ2つのボタンで 切り替えます。)

  • Fixed: merging the SSH screen hid the fields you type into. Naming the server became one list, and "type an address below" was the first entry in it. Choosing a saved connection then made the typing fields disappear with nothing on screen to say they could come back — so they read as deleted. It was worst for Telnet, which is only ever typed in and never saved, and so looked unreachable. How the server is named is now a choice shown as one: Enter it by hand or Pick from the list, always visible, always switchable. The typed details are kept when you go to the list and back. (不具合修正:SSH 画面を1枚にまとめた際、手入力欄が隠れていました。 相手の指定を 1つの一覧にまとめ、「下に直接入力する」をその先頭の項目にしていました。保存済みを選ぶと 手入力欄が消え、戻れることが画面のどこにも書かれていないため、消したようにしか 見えませんでした。とくに Telnet は手入力しかなく保存もしないため、接続できないように 見えていました。相手の指定方法を選択として画面に出す形に改めます。「手入力する」と 「リストから選ぶ」を常に表示し、いつでも切り替えられます。リストへ行って戻っても、 入力済みの内容は保たれます。)

  • A folder only root can read can now be opened over SCP. There was no way to elevate at all: the listing, and every rename, delete and permission change with it, ran as the account that signed in, so a directory belonging to root came back empty — indistinguishable from an empty one. Ticking Act as root asks for the sudo password on the spot, uses it for that request, and keeps it nowhere: not in the settings, not in RegiBase, not on disk. It is held in the open page and nothing else, so reloading asks again. That is deliberate — a password that is never written down cannot be read out of a stolen database.

What it does not cover: downloading and uploading a file. SCP carries the file itself over the very input the password would have to be typed into, so the two cannot share a connection. Those two actions stay unelevated and the far end refuses them as it always did, rather than appearing to work and quietly returning nothing. (root しか読めないフォルダーを SCP で開けるようにしました。 これまでは昇格する 手段が一切なく、一覧も改名・削除・権限変更もサインインした利用者のまま実行されて いました。root 所有のディレクトリは空として返り、本当に空の場合と見分けがつきません でした。「root として操作する」を入れるとその場で sudo のパスワードを尋ね、その リクエストにだけ使い、どこにも保存しません。設定にも RegiBase にもディスクにも 残さず、開いている画面の中だけで保持するため、再読み込みすれば再び尋ねます。書き残さ ないものは、データベースを盗まれても読み出せないという考えによるものです。

対象外:ファイルのダウンロードとアップロード。 SCP はファイル本体を、パスワードを 打ち込むべき入力そのものに流すため、両立できません。この2つは昇格せず、これまでどおり 接続先に拒否されます。動いたように見せて黙って何も返さないことはしません。)

  • "Create one for me" now builds a collection shaped for the kind you asked for. It made one shape for everything, so a mailbox list arrived with a private key field and an SSH list with a sender address — fields nobody would ever fill in, on every record. There is a template per kind now: SSH and SCP carry the key fields, FTP and SFTP carry the password ones, and mail carries what a mailbox actually needs. The type field offers only the types that collection is for, rather than all seven. The templates belong to NetBase and are handed to RegiBase outright, so nothing had to be added to RegiBase to make them possible, and a collection built by hand still works exactly as well — which field means what is decided by the assignment, not by these names. (「作ってもらう」が、選んだ種別に合った形のコレクションを作るようになりました。 これまではどの種別でも同じ1つの形を作っていたため、メールの一覧に秘密鍵の欄が、 SSH の一覧に差出人アドレスの欄が付いてきました。誰も埋めない欄が全レコードに並ぶ 状態です。種別ごとのテンプレートを用意しました。SSH と SCP は鍵の欄を、FTP・SFTP は パスワードの欄を、メールはメールボックスに実際に要るものだけを持ちます。種別の欄も、 そのコレクションが対象とする種別だけを選択肢に出します。テンプレートは NetBase 側に あり、RegiBase へはそのまま渡すだけなので、RegiBase に何かを追加する必要はありません。 手作りのコレクションがこれまでどおり使えることも変わりません。どの項目が何にあたるかは、 これらの名前ではなく割り当てが決めるためです。)

  • Each kind of connection now has its own place in RegiBase. One collection held everything, which was wrong the moment the kinds diverged: SCP reuses the SSH credentials, but FTP is a different account on a different machine, and both were being read out of the same list. SSH, SCP, FTP-and-SFTP and mail each name their own collection and their own field assignment now. Naming the same collection for several kinds is expressly allowed — SSH and SCP usually are the same list — so separating them costs nothing to anyone who does not need it. Nothing moves on upgrade: a kind that has not been given a collection of its own still reads the single one chosen before, so the list is unchanged until you separate something deliberately. (接続先の種別ごとに、RegiBase の保存先を分けられるようにしました。 これまでは すべてを1つのコレクションに入れており、種別が食い違った時点で破綻していました。SCP は SSH の情報をそのまま使いますが、FTP は別の機器の別アカウントです。それを同じ一覧から 読んでいました。SSH・SCP・FTP/SFTP・メールが、それぞれ自分のコレクションと項目の割り当てを 持ちます。複数の種別に同じコレクションを指定して構いません ― SSH と SCP はたいてい同じ 一覧です。更新しただけでは何も動きません。自分のコレクションをまだ持たない種別は、 これまでの単一の設定をそのまま読むため、意図して分けるまで一覧は変わりません。)

  • A record that does not say what it is, is no longer assumed to be SSH. It is taken as whatever the collection it was read from is for. The old assumption put FTP servers in the SSH list. (種別が書かれていないレコードを、SSH と決めつけるのをやめました。 読み出した コレクションが何のためのものかで判断します。これまではFTPの機器がSSHの一覧に並んでいました。)

  • SFTP is no longer offered as a separate kind to create. It is not a kind of FTP but a subsystem of SSH, and since a saved SSH connection is opened for files over SFTP already, offering it separately only asked people to decide something that made no difference. FTP keeps its encryption choice, which is the question that was actually being asked. A connection saved as SFTP before this still works and still shows its own kind. (SFTP を、新規作成の種別としては出さないようにしました。 SFTP は FTP の一種では なく SSH の副系統です。保存済みの SSH 接続先はすでに SFTP でファイルを開くため、別々に 出しても違いの無い選択を迫るだけでした。FTP には暗号化の選択肢が残っており、実際に 訊きたかったのはそちらです。これまでに SFTP として保存した接続先はそのまま動き、 種別も SFTP のまま表示されます。)

  • The speed test now lets you choose what to measure against. It measured against M-Lab and used Cloudflare only when M-Lab could not be reached at all, and there was no way to ask for the other one. A network that reaches one may not reach the other — M-Lab needs an outbound WebSocket — and two independent readings of the same line are worth more than one, so both are now offered: Nearest (automatic), M-Lab or Cloudflare. Naming one means it, rather than quietly measuring against the other: asking for M-Lab where no M-Lab server answers now says so instead of handing back Cloudflare's figure under M-Lab's name. (速度テストで、どこと測るかを選べるようにしました。 これまでは M-Lab で測り、 M-Lab へまったく届かないときだけ Cloudflare に落ちる作りで、もう一方を指定する 手段がありませんでした。片方に届く回線がもう片方に届くとは限らず(M-Lab は外向きの WebSocket を必要とします)、同じ回線を独立した2つの物差しで測れるほうが確かなため、 「最も近いところ(自動)」「M-Lab」「Cloudflare」から選べるようにしました。名指しした 場合はその指定を守ります。M-Lab を指定して1台も応答しないときは、Cloudflare の数値を M-Lab の名前で返すことはせず、届かなかったとお伝えします。)

  • Fixed: the speed test reported someone else's latency. When measuring against M-Lab, the throughput came from the M-Lab server but the latency and jitter shown beside it were timed against speed.cloudflare.com — a different network, a different distance. The two numbers on screen described two different paths. Latency is now timed against the very machine the throughput came from. (不具合修正:速度テストの遅延が、別の相手のものになっていました。 M-Lab で測る とき、速度は M-Lab のサーバーから得ているのに、その横に並ぶ遅延とジッターは speed.cloudflare.com に対して計っていました。相手も距離も違うため、画面の数値が 別々の経路の話になっていました。遅延も、速度を測ったのと同じ機器に対して計るよう にしました。)

  • A saved SSH connection can now be browsed for files. Sixteen servers were saved here as SSH connections, and the file transfer panel offered none of them: it asked for a connection of type SFTP or SCP, and refused the rest with "this connection is not a file transfer connection". But it is the same machine, the same account and the same key — the only difference is which subsystem is asked for after the sign-in. An SSH connection now opens over SFTP, and over SCP for a server that offers a shell but no SFTP subsystem. (保存済みの SSH 接続先で、そのままファイルを開けるようにしました。 ここには SSH 接続先が16件保存されていましたが、ファイル転送の一覧には1件も出ませんでした。 種別が SFTP か SCP のものしか受け付けず、それ以外は「転送用の接続ではない」と撥ねて いたためです。しかし同じ機器・同じアカウント・同じ鍵で、違うのはサインイン後にどの 副系統を頼むかだけです。SSH の接続先は SFTP で開き、SFTP を持たない相手には SCP で 開くようにしました。)

  • The speed test now asks which server is nearest, instead of being told. M-Lab returns its candidates in an order worked out from the address the request came from — a guess about geography, and here it put Seoul ahead of Tokyo. A measurement to the wrong country reads as a slow line rather than a distant one. The nearest few are now asked directly, one timed connection each, and the quickest is used: it costs about half a second and replaces a guess with a measurement. On this server it moved the reading from 187 Mbps down to 427. (速度テストの計測先を、言われるままではなく実測で選ぶようにしました。 M-Lab は 接続元のアドレスから推定した順で候補を返しますが、ここではソウルが東京より前に 来ていました。国の違う相手を測ると、遠いのではなく回線が遅いように見えます。上位数件へ 実際に接続して所要時間を測り、最も速いものを使います。かかるのは約0.5秒で、推測を実測に 置き換えられます。当サーバーでは下りの読みが 187 Mbps から 427 Mbps になりました。)

  • SCP can now actually be used. The protocol was added, tested and reachable by the server — and by nothing else: the file transfer panel offered only SFTP and FTP, the list of saved connections filtered SCP out, and every label still read "FTP and SFTP". An SCP connection could be saved and never opened. It is now offered wherever SFTP is. (SCP が実際に使えるようになりました。 実装と試験は済み、サーバー側では動いて いましたが、画面のどこからも選べませんでした。転送画面の選択肢は SFTP と FTP だけ、保存済み接続先の絞り込みは SCP を落とし、名称もすべて「FTP・SFTP」のまま。 保存はできても開けない状態でした。SFTP が使えるところでは SCP も選べます。)

  • "Which field means what" is now "Field assignment", and the master key is named for what it belongs to. A heading that describes a question rather than naming a thing makes the reader do the work twice. "Master key" alone does not say whose. (「どの項目が何にあたるか」を「項目の割り当て」に、「マスターキー」を 「RegiBase参照のためのマスターキー」に改めました。 問いかけを見出しにすると、 読む側が二度手間になります。「マスターキー」だけでは何の鍵か分かりません。)

  • The administration settings read better in Japanese. "Devices — read the device list" had been translated as "device survey", which is not what it does; the two buttons that set every tool at once read as fragments; and the wording for scanning was inconsistent with the rest of the app. (管理設定の日本語を整えました。 Devices — read the device list が 「接続機器調査」と訳されていましたが、実際は一覧を見るだけです。全ツールを一括で 切り替える2つのボタンは「すべて全利用者」のように語として立っておらず、探索まわりの 用語も他の画面と揃っていませんでした。)

  • The settings dialog is four groups, not eleven headings. It had grown by addition until the terminal's font, the shell's language and the shell's log sat in three separate places with the connection list wedged between them, and the word "language" appeared twice at the same size meaning two different things — the app's language and the shell's. The subjects are now Appearance and language, Terminal (shell and SSH), Connections and keys and The list of tools, each with its own title and a rule between them, and the settings inside a group sit a level below it. A setting an administrator changes for the whole server now says so on its label, instead of looking like one of the reader's own. (設定画面を、見出し11個の一本道から4つの束に改めました。 追加を重ねた結果、 端末のフォント・シェルの言語・シェルのログ記録が3か所に分かれ、その間に接続先 リストが挟まる並びになっていました。「言語」という同じ語が同じ大きさで2か所に出て、 一方はアプリの言語、もう一方はシェルの言語を指していました。外観と言語/ 端末(シェルとSSH)/接続先と鍵/ツールの並びの4束にまとめ、束ごとに見出しと 区切りを置き、その中の項目は一段下げました。管理者がサーバー全体に対して変える 設定には、その旨をラベルに明示しました。)

  • NetBase now carries its own copy of phpseclib 3, under its own name. Nextcloud ships only phpseclib 2, which cannot read an Ed25519 or an ECDSA private key and has no SCP at all. Until now the newer library arrived by accident — another app happened to bundle it — so whether a modern key worked depended on whether an unrelated app was installed, and where it was not the failure was quiet.

Carrying a second copy under the same name would only have moved the problem: one library can answer to a name in a running PHP process, so whichever app loaded first would decide which copy both apps used, and NetBase would be running on a version it never shipped or tested. The copy therefore lives under OCA\NetBase\Vendor\phpseclib3, which collides with nothing. NetBase always uses the library it ships; every other app keeps using its own, untouched. Nothing needs registering — Nextcloud's own autoloader finds it. (phpseclib 3 を、NetBase 専用の名前で同梱するようにしました。 Nextcloud 本体は phpseclib 2 のみで、Ed25519 や ECDSA の秘密鍵を読めず、SCP も持って いません。これまで新しい版は「別のアプリがたまたま同梱していた」ために使えて いただけで、無関係なアプリの有無で鍵が使えるかどうかが決まっていました。

同じ名前のまま2つ目を積んでも問題は移るだけです。1つの PHP 処理の中で1つの 名前に応えられるライブラリは1つだけで、先に読み込まれたアプリの版が両方の アプリに使われます。つまり NetBase は、同梱も試験もしていない版で動くことに なります。そこで OCA\NetBase\Vendor\phpseclib3 という NetBase 専用の名前に 改めました。衝突が起きないため、NetBase は常に自分が同梱した版で動き、他の アプリは自分の版のまま一切影響を受けません。登録の仕組みも不要で、Nextcloud 本体の読み込み器がそのまま見つけます。)

  • SCP has been added to the saved connections. A server can offer SSH without the SFTP subsystem, and on that machine SCP is the only way to move a file. SCP itself copies a named file and nothing else — no listing, no rename, no mkdir — so those are supplied over the shell the SSH connection already provides, with every argument quoted. It is offered only where this server has a library that can speak it. (接続の種類に SCP を追加しました。 SFTP サブシステムを持たない SSH サーバーでは、 SCP だけがファイルを送る手段になります。SCP 自体は指定したファイルを複製するだけで、 一覧・改名・作成の機能を持たないため、それらは SSH のシェル越しに補っています(引数は すべて安全に括ります)。対応ライブラリがあるサーバーでのみ選択肢に現れます。)
  • Telnet is no longer a box of its own. It was a second card asking for the same host and port as the one above it. The connection form now carries a type beside the address — SSH or Telnet — and the fields only SSH needs appear only for SSH. (Telnet の専用枠をやめました。 すぐ上の欄と同じホストとポートを二度尋ねる作りに なっていました。接続フォームにアドレスと並べて種別(SSH/Telnet)を置き、SSH でしか 使わない欄は SSH のときだけ出します。)
  • Words that explained nothing have been replaced, and the settings screen reads as separate subjects again: a rule between the headings, and the long grey paragraphs cut to what is worth saying. (意味の伝わらない言葉を入れ替え、設定画面を読めるように整えました。「サーバーを 調べる」→「SSHサーバーを調べる」、「サーバーを操作する」→「サーバーに接続する」、 「接続先の保存先」→「SSH/Telnet/FTP/SFTP/SCPの接続先リスト」、「端末の記録」→ 「シェルのログ記録」。節の間に区切り線を入れ、説明文も刈り込みました。)
  • A measurement now runs for at least two seconds. A small size could end an upload while the first megabytes were still sitting in the socket buffer, which reported the speed of the buffer rather than of the line — an upload came out faster than the download. The size still caps the traffic, but only once the measurement has had long enough to mean anything. (測定は最低2秒は行うようにしました。 小さいサイズを選ぶと、最初の数MBが送信バッファに 入った時点で上りが終わってしまい、回線ではなくバッファの速さを報告していました(上りが 下りより速く出る原因です)。サイズによる通信量の上限は残しつつ、意味のある長さに達する までは打ち切らないようにしました。)

  • Saved connections have moved into RegiBase, and the ones stored before this release are gone. Please write down anything you need before updating: host, user name and settings can be typed again, but a password or a private key kept only in NetBase cannot be recovered afterwards. Nothing is migrated, deliberately — the old store could be read back by the server that held it, and carrying those secrets across would have carried that weakness with them. (保存済みの接続先は RegiBase へ移行し、これまでに保存した接続先は消えます。 更新前に必要な情報の控えをお取りください。ホスト・ユーザー名・設定は入力し直せますが、 NetBase にしか無いパスワードや秘密鍵は後から取り出せません。移行は意図的に行いません。 従来の保存方式はサーバー自身が読み戻せる形だったため、そのまま持ち越すと同じ弱さを 持ち込むことになるからです。)

  • Why the move. A password in RegiBase is sealed in the browser with a key derived from a master key that is stored nowhere — not in the database, not in the configuration, not on disk. NetBase could not offer that on its own: its own store was encrypted with the instance secret, which sits on the same server as the data it protects. A stolen database is now a database of ciphertext. (移行の理由。RegiBase のパスワードはブラウザ側で封印され、その鍵はどこにも保存され ないマスターキーから導かれます。データベースにも設定にもディスクにも残りません。NetBase 単独ではこれを提供できませんでした。従来はインスタンス秘密鍵で暗号化しており、それは 守るべきデータと同じサーバー上にあるからです。データベースを盗まれても、そこにあるのは 暗号文だけになります。)
  • RegiBase is now required in order to save a connection. Without it, a server can still be reached by typing its details each time; nothing is stored, and nothing needs to be. (接続先の保存には RegiBase が必要になりました。 無い場合でも、毎回入力すれば接続は できます。その場合は何も保存されません。)
  • The collection is yours, and so is its shape. NetBase does not demand a collection built to its own design: you say which field is the host, which is the password, and so on, and it adapts. A ready-made collection can be created for you if you would rather not build one. A password can only be matched to a field RegiBase itself treats as secret, so it can never be written in the clear. A public key is deliberately not treated as secret. (コレクションの構成は自由です。 NetBase 専用の形を強いません。どの項目がホストで、 どれがパスワードかを指定すれば、それに合わせます。用意されたコレクションを自動で作る こともできます。パスワードは RegiBase 側で秘匿とされた項目にしか割り当てられないため、 平文で書かれることはありません。公開鍵は意図的に秘匿として扱いません。)
  • The master key is asked for once per browser session and is forgotten when that session ends. It is never written down on the server. (マスターキーはブラウザのセッションごとに一度だけ尋ね、セッションが切れると失われます。 サーバー側に書き残すことはありません。)

  • The old store for saved connections has been dropped. 0.6.0 moved connections into RegiBase and said that what was kept in NetBase itself would not come with them; the table is now gone, and so are the passwords it still held. That is the point of it: they were sealed with a secret kept on the same server as the data. (接続先の旧保存領域を削除しました。 0.6.0 で接続先は RegiBase へ移り、NetBase 側に 残っていたものは引き継がないとお伝えしていました。その表を削除し、そこに残っていた パスワードも消えました。これが目的です。旧方式はデータと同じサーバーにある鍵で 暗号化されており、守りとして弱いものでした。)

  • Errors now speak the language you read. Everything a tool refuses to do — a bad host, a file that is not there, a server that would send your password in the clear — was written in English wherever it was raised. It is now turned into your own language at the one place every error passes through, and the messages that carry a value (a path, a host, a byte count) were rewritten so the value has a place to go. All twenty languages. (エラーの文言を、お使いの言語で表示するようにしました。 不正なホスト名、存在しない ファイル、パスワードが平文で送られる状況など、これまで英語のまま出ていた文言を、 すべてのエラーが通る一箇所で翻訳するようにしました。パス・ホスト名・バイト数などの値を 含む文言は、値を差し込める形に書き直しています。20言語すべてに対応。)
  • The free-domain search now says what it found, not how it asked. Hovering a result used to show "HTTP 404", which is the registry's answer, not yours. It now says what that means — free, taken, or why it could not be decided — and which registry or name server answered, with the technical reason kept on a second line. (空きドメイン検索の説明を、意味のある文に変えました。 結果にカーソルを合わせると 「HTTP 404」と出ていましたが、これはレジストリ側の答えであって、お客様への答えでは ありません。空きか、登録済みか、なぜ判定できなかったかを述べ、どのレジストリ/ ネームサーバーが答えたかも示します。技術的な理由は2行目に残しています。)

  • The internet speed test now measures against M-Lab — the measurement behind Google's own speed test — instead of pulling from one fixed endpoint. It asks where the nearest measurement server is and uses that, which is the difference between measuring your line and measuring the distance to somebody else's CDN. Nothing has to be installed: the protocol is a WebSocket, and NetBase speaks it directly. Where M-Lab cannot be reached at all — an instance with no way out, or a blocked connection — the previous HTTP test still stands behind it, so the tool never simply stops working. (回線速度の測定を M-Lab に切り替えました。 Google 自身の速度テストの実体であり、 固定の配信元から引くのではなく、最寄りの測定サーバーを尋ねてそこで測ります。これは 「自分の回線を測る」ことと「他社CDNまでの距離を測る」ことの違いです。追加の導入物は 不要で、通信方式(WebSocket)を NetBase が自前で話します。M-Lab に到達できない環境 (外部へ出られない・接続が塞がれている)では、従来のHTTP測定に自動で切り替わるため、 機能が止まることはありません。)

  • The reading is presented as a guide, because that is what it is. The figure moves with the server that happened to be nearest and with the time of day, so the panel now names the server it measured against and says so plainly. (測定値は「目安」として示すようにしました。 そのときの最寄りサーバーや時間帯に よって値は動きます。どのサーバーで測ったかを画面に表示し、目安である旨も明記します。)
  • The size setting is now a ceiling on the traffic a run may use. A measurement that runs for ten seconds on a fast line moves a great deal of data; on a metered connection that matters, so the chosen size stops it early. (サイズ指定は「1回の測定で使う通信量の上限」になりました。 高速回線で10秒測ると 相応の通信量を使います。従量制の回線では無視できないため、指定したサイズで打ち切ります。)

  • The RegiBase master key is asked for when a connection is used, not in the settings. It never belonged on a settings screen: a settings screen is where things are kept, and this is the one thing that must not be. It is now asked for at the moment a saved connection is needed, held for that browser session alone, and forgotten when the session ends. It is written nowhere — not in the settings, not in the database, not on disk. (RegiBase のマスターキーは、設定画面ではなく接続を使う時点で尋ねるようにしました。 設定画面は「保存する場所」であり、マスターキーは保存してはならない唯一のものです。 保存済み接続先が必要になった時点で入力していただき、そのブラウザのセッションの間だけ 保持し、セッションが切れれば失われます。設定にもデータベースにもディスクにも書きません。)

  • The terminal log is a switch now, and it keeps 5,000 steps by default. It was a number that started at zero, which read like a setting somebody had forgotten to fill in. Recording is still off until it is switched on. (端末の記録はチェック式にし、既定で5,000行を保持するようにしました。 従来は0から 始まる数値欄で、設定し忘れのようにも見えました。記録が既定で無効である点は変わりません。)

Added

  • A terminal can now keep a record of what was done in it. A shell on this server and an SSH window are the two places in NetBase where something is done rather than merely looked at, and until now nothing was left afterwards to say what that was. One step is a line you typed together with the answer that came back — the answer arrives after the Return that asked for it, so the two are paired the way you would read them, not the way they arrive. The colours and cursor moves a terminal threads through its output are taken out, so what is kept reads as words. Two limits hold it down: a number of steps per window, oldest dropped first, and a number of days counted from a window's most recent step — so a window still in use is never cut short, and one finished with goes as a whole. What is kept belongs to the account that did the work: nobody else can read it, and it can be thrown away one session at a time or all at once. Nothing is recorded until you ask for it: the number of steps starts at zero, and zero means keep none. (【端末の記録】シェルとSSHの画面で行った操作を残せるようにしました。1ステップは、入力した 1行と、それに返ってきた答えです。答えはEnterの後に届くため、読むときの並びで対応付けます。 出力に混ざる色や画面制御の符号は取り除き、文字として読める形で保存します。上限は2つで、 画面ごとの「残すステップ数」(古いものから削除)と、「残す日数」(その画面の最後の記録から 数えます)。使用中の画面が途中で切られることはなく、日数を過ぎたものはセッションごと消えます。 記録はその操作を行ったアカウントだけのもので、他の方は読めません。セッション単位でも一括でも 削除できます。初期値は「保存しない」です(ステップ数0=何も記録しません)。)

Fixed

  • The "Run command" button beside a saved SSH connection did nothing. It was bound to a method that did not exist — and Vue does nothing at all for a click bound to a method it has not got, so the button looked dead while the console beside it worked perfectly. The same was true of the "Run" button for the ready-made questions. Both now run the line and show the output, the exit status and how long it took. (保存済み SSH 接続先の「コマンド実行」ボタンが無反応でした。 存在しない メソッドに結び付けられており、Vue は未定義のメソッドへの @click では何もしません。 そのため、隣の対話コンソールは正常に動くのにボタンだけが死んでいました。よくある質問を 選ぶ「実行」ボタンも同じ状態でした。どちらも実行し、出力・終了状態・所要時間を表示します。)

  • After an upload, the file list did not refresh. The file arrived — it was the listing that stayed behind. Upload read the folder back from the path box rather than from the listing itself, and the box is bound to whatever the reader may have typed into it, so it drifts from what is on screen. Every other action on that panel already read it back from the listing. (アップロードの後、ファイル一覧が更新されませんでした。 ファイル自体は届いており、 一覧だけが古いままでした。アップロード処理が、一覧そのものではなくパス入力欄を基準に 読み直していたためです。入力欄は利用者が打ち込んだ値と結ばれているため、表示中の位置から ずれます。同じ画面の他の操作は、いずれも一覧を基準に読み直していました。)

  • whois told you nothing about a .jp domain. Every .jp is answered by JPRS, which does not write Label: value the way most registries do. It writes [Label] and then spaces — no colon — and for an organisational domain it puts an index letter in front: a. [ドメイン名]. The Japanese labels had been in the patterns from the start, but every one of them demanded a colon that JPRS never sends, so they could not match: .com returned six or seven details and .jp returned none. Both of JPRS's shapes are now read, an organisational domain's expiry is taken from inside its status line (there is no separate one), and a label JPRS sends with nothing after it no longer becomes an empty field. The ordinary shape is untouched, and a test holds both to the registries' own wording.

One line of that fix was wrong in a way worth naming. A whois server answers over a socket and ends its lines with CRLF; the pattern for name servers was anchored as if they ended with LF, so it matched nothing and a .jp domain came back with its dates but no name servers. The test did not catch it because sample text typed into a test file ends with LF alone — it passed while the real thing failed. The samples are sent through the same line endings a socket would use now, and the test fails without the fix. (whois が .jp ドメインの情報を何も返していませんでした。 .jp はすべて JPRS が 応答しますが、JPRS は多くのレジストリのような ラベル: 値 ではなく、[ラベル] の 後にコロンを置かず空白だけで値を書きます。組織用ドメインでは a. [ドメイン名] の ように索引文字が前に付きます。日本語ラベルは当初から規則に書かれていたものの、 JPRS が送らないコロンを要求していたため一致しようがなく、.com では6〜7項目 取れるのに .jp では0項目でした。JPRS の2つの書式を読めるようにし、組織用ドメインに 固有の有効期限行が無い点は状態欄から取り、値の無いラベルを空項目にしないようにしました。 従来の書式には手を触れていません。レジストリの実際の応答を固定データとした検査を添えて います。

なお、その修正のうち1行が誤っており、書き残す価値があります。whois サーバーはソケットで 応答し、行末は CRLF です。ところがネームサーバの規則は行末を LF だけと見なしていたため、 実物では1件も一致しませんでした。日付は取れるのにネームサーバだけが空、という形です。 検査ファイルに書いた文字列の行末は LF のみなので、検査は合格したまま実物が失敗して いました。固定データをソケットと同じ行末に通すよう改め、修正前の規則では 0 件・修正後は 2 件になることを確かめたうえで残しています。)

  • Choosing Telnet left the port at 22. Two methods in the same object had the same name. That is not an error in JavaScript — the second simply replaces the first — so picking Telnet ran the file-transfer panel's version, which set a port on a different form, and the port beside the Telnet choice never moved off 22. (Telnet を選んでもポートが22のままでした。 同じオブジェクトの中に同名の メソッドが2つあり、JavaScript では後の定義が前を置き換えます。そのため Telnet を 選ぶとファイル転送側の処理が走り、別の入力欄のポートを書き換えていました。)

  • Entering the master key did nothing. Saving where connections are kept needs the key, so it was asked for — and then the save was never retried. The key was accepted, the dialog closed, and the setting was unchanged, which from the outside is indistinguishable from the key being refused. What was being attempted is now remembered and carried out once the key is given. The settings dialog also has a box to type the key into: it had the code for one but no field, so the only way to be asked was to press Save and fail. (マスターキーを入れても設定が保存されませんでした。 保存には鍵が必要なので 尋ねてはいたものの、解錠後に保存をやり直していませんでした。鍵は通り、画面は 閉じ、設定は変わらない——外から見れば鍵を拒否されたのと区別がつきません。何をしよう としていたかを覚えておき、鍵が入った時点で実行するようにしました。あわせて設定画面 に鍵の入力欄を置きました(処理は書かれていたのに入力欄が無く、保存して失敗する以外に 尋ねられる道がありませんでした)。)

  • The master key prompt appeared behind the dialog that asked for it. Both were on the same stacking layer, and where two things share a layer the one written later in the page wins. (マスターキーの入力画面が、それを求めた画面の後ろに隠れていました。 同じ 重なりの層に置かれており、層が同じときは後に書かれた方が上になるためです。)

  • Japanese: the settings dialog said something the English never did. Its subtitle had been translated as "switches NetBase's appearance only", but the dialog holds the shell log, the connection list, the SSH key folder and the tool order, and the English says nothing about appearance. Checked across all twenty languages; Japanese was the only one that had drifted. Also corrected in Japanese: "follow the server" read as an order rather than a choice, the tool list called the tools "features" in its body and "tools" in its heading, and folder, browser and sign-in were each spelled two ways. (日本語:設定画面に、英語原文にないことが書かれていました。 副題が「NetBase の見た目だけを切り替えます」と訳されていましたが、この画面にはシェルのログ記録・ 接続先リスト・SSH鍵の置き場所・ツールの並びまで含まれ、英語原文は見た目とは 言っていません。20言語すべてを確認し、ずれていたのは日本語だけでした。あわせて、 「サーバーに従う」という硬い言い回し、見出しは「ツール」なのに本文は「機能」と なっていた不統一、フォルダ/フォルダー・ブラウザ/ブラウザーなどの表記ゆれも 直しました。)

  • SCP: a file's permissions were read too small, and a name with a space in it lost its first word. SCP has no directory listing of its own, so one is read by running ls -la over the shell. Two mistakes were in taking that reply apart: the letters r, w and x already carry their own weight and were being shifted by their position as well, so 0640 came back as 0600; and the timestamp was matched by a greedy pattern that swallowed the beginning of a name like "report 2026.txt". Both are now covered by a test that needs no server. (SCP で、ファイルの権限が実際より小さく読まれ、空白を含む名前が先頭の語を 失っていました。 SCP には一覧の機能が無いため ls -la の出力を解いていますが、 その解き方に2つの誤りがありました。r・w・x は既に桁の重みを持っているのに位置で さらに桁をずらしていたため 0640 が 0600 になり、また時刻の照合が貪欲だったため 「report 2026.txt」のような名前の先頭が飲み込まれていました。どちらもサーバー 不要の検査で押さえました。)

  • Number boxes were as wide as the panel for a value of one to four digits, and the list that matches a collection's fields ran down the dialog one row at a time. Both are now the size of what goes in them. (数値の入力欄が、1〜4桁の値に対して画面幅いっぱいになっていた点と、コレクションの 項目の割り当てが1行ずつ縦に延びていた点を整えました。)

Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
Signatureu4YuDe0Ctfsa9IWS9vdkfHadhPKEjLMSP8qR9lKmCpVuFasm4a1RRfov3XKLVQVw4HhZd6N1PhBE7kZHCx4U8iNDdplTdgmLtggoeTDOlKXQ9KxcASYWOUO7AvH82+g+eQ88P0NqDzA4vQe2jshvIoh+rwHQgrwzWCCaw3uzcNJAXO9UyZ7AK5VS6MfIhugS/Ili2ceTbOs/VcdE2uKuvWLTiKm46qPdcHVK0CT5BuELmVnAmYTpXWO19MRvGm++/Dc8tsOyHEpJlOJJKz7P+friJBJ9bfZvq2rxSJ6K/nLmKJKQnWtrjcPSo/w3sgmb36CpjBLelv2xZEu5quhXs7lUGCd32nsiVOFy1Ppz7PtBeiqBZXQ2aS+JSwZYQ3R3iF84mvf6wLw1UOZxGZRR5I4kvAZZixkvFVAfnYSIIsEjHpnnMKNByNn9pZk+fwDjbaMFWiacoM0BFG1esfQS8U10jAy0xrM/jizBQrOMZunrJr/PugGw51eJ4vK5iVf4USd5YWniwxHnsgwfPKcuJhgtn2BokeC1iFC/gcXLjbSgQjCfJ0q5E3FCYOE/a/h1H3SJZZ50Grx3eybHus1IiC/21eQU6H8e2eAXupDwaVyCpyKxjNOX+y2nOyNSxIQUbDxRL5wzq0tX0B5d6N+O/hhh/FZqyqvvSjkGNUxkhWA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.5.0
Release Details
UpdatedSept. 10, 2026, 2:33 p.m.
Changelog

Added

  • Clear the ARP table (optional, opt-in). A "Clear the ARP table" button in the device list forgets every remembered address so a refresh shows only what answers now. NetBase runs unprivileged and cannot flush the kernel table itself, so the button stays off until an administrator installs a tiny root helper and a one-line sudoers rule — a "?" beside the button shows the exact script and steps (for bare metal/VM and for Docker/Podman with NET_ADMIN), and NetBase probes the helper with a harmless "--check" and switches the button on by itself once it works. It is clearly marked optional, with a note not to install it if the security trade-off (granting the web user one root command) is unwelcome. (【任意・オプトイン】ARPテーブルのクリア機能を追加。機器一覧の「ARPテーブルをクリア」で 記憶したアドレスを忘れ、更新時に今応答する機器だけを表示します。NetBaseは無権限のため自身では 消せず、管理者が小さなrootヘルパーとsudoers設定を入れるまでボタンは無効。横の「?」から スクリプトと手順(物理/仮想・Docker/Podman=NET_ADMIN)を表示し、NetBaseは無害な「--check」で 検出して自動的にボタンを有効化します。任意である旨と、セキュリティ上のトレードオフに納得 できない場合は設置しない注意も明記。)
  • Every tool now shows when it is working. A slim bar slides across the top of the panel while any request is in flight, and the button you pressed shows a spinner — so an operation with no progress count of its own (Whois, TLS, DNS, mail, SSH, NTP…) no longer looks like nothing is happening. (各機能の「実行中」表示を追加。リクエスト中はパネル上部に細いバーが流れ、押したボタンに スピナーが出ます。進捗の数値を持たない操作(Whois・TLS・DNS・メール・SSH・NTPなど)でも 実行中だと分かります。)

  • You can now give a device your own name. Type a name in a device's properties and it is shown everywhere in place of the discovered one; if a name was picked up from the network, that reported name stays visible in the properties as well. The name you give is kept against the device, so it holds even when the device offers no name of its own. (自分で機器名前をつけることが出来るようにしました。プロパティであなたが記入した名称を 優先的に表示し、もしアナウンス名が取得できている場合は、プロパティで確認できます。)

  • The properties now say how a name was obtained — NetBIOS, mDNS or reverse DNS — so a reported name is never mistaken for a NetBIOS name when it came from somewhere else. (プロパティに、その名前をどの方式で取得したか(NetBIOS/mDNS/逆引きDNS)を表示する ようにしました。取得元が分かるので、mDNSや逆引きの名前をNetBIOS名と取り違えません。)
  • In Docker or Nextcloud-AIO, the Requirements screen now shows a ready-to-use setup recipe. An app cannot bundle PHP extensions, but the official Nextcloud image runs any script placed in /docker-entrypoint-hooks.d/before-starting/ on every start. When NetBase detects it is in a container, it lists exactly what the base image is missing (verified on the official image: the sockets extension, and chromium/iperf3/iproute2) as a one-off script that survives image updates without a rebuild. (Docker・Nextcloud-AIO で動作している場合、「必要要件」画面にそのまま使える導入手順を 表示するようにしました。アプリはPHP拡張を同梱できませんが、公式Nextcloudイメージは /docker-entrypoint-hooks.d/before-starting/ に置いたスクリプトを起動のたびに実行します。 コンテナ内と判定すると、ベースイメージに不足している要素(公式イメージで確認:sockets拡張と chromium/iperf3/iproute2)を、再ビルド不要で更新後も維持される一度きりのスクリプトとして 提示します。)

  • A device that has been switched off is no longer shown as online. Its entry lingers in the kernel neighbour table as STALE, keeping its old MAC, and /proc/net/arp cannot tell that apart from a device that is here now — so a powered-off machine kept a green dot. NetBase now reads the neighbour state (via ip neigh) and, without walking the whole range, confirms the addresses on file with a quick TCP touch: a host that is here answers a connection (open or refused), one that is gone stays silent and is marked offline. On a re-scan the online/offline column is current. (Announce-only devices — an Amazon Echo, say — are still kept online by what they broadcast over mDNS/SSDP in a normal scan.) (電源を切った機器がオンライン表示のままになる不具合を修正。カーネルの近隣テーブルに STALE として古いMACのまま残り、/proc/net/arp では在席中の機器と区別できないため、緑点が 残っていた。近隣の状態を ip neigh で読み、全アドレス走査はせずに、記録済みアドレスを 短いTCP接触で確認するようにした(在席なら接続に応答=開放でも拒否でも、不在なら無応答で オフライン判定)。再スキャンでオンライン/オフラインが最新になる。※mDNS/SSDPで自ら告知する 機器(Amazon Echo等)は、通常スキャンでは告知により在席のまま維持される。)

Removed

  • Device tags have been removed. They could not be seen in the list and served little purpose; identify a device with the name you give it (above) instead. Notes are kept. (機器のタグを廃止しました。一覧に表示されず用途が薄かったためで、機器の識別は上記の 「自分でつけた名前」で行ってください。メモは残しています。)

Changed

  • The free-domain search can hide the taken and the could-not-check results. Two slide switches (the same control the device list uses) sit over the results: one for taken (×) names, one for the ones that could not be checked (?). Undetermined names are hidden by default, so the list leads with what is free or clearly taken. A taken name is shown greyed out; an unchecked one is greyed and struck through once, with the reason in its hover tooltip — no English text on the row. (空きドメイン検索で、使用済みと調査不能のドメインを隠せるようにしました。結果の上に スライドスイッチを2つ(接続機器調査と同じ部品)置き、使用済み(×)用と調査不能(?)用を 用意。調査不能は初期状態で非表示にし、空きと使用済みが先に見えるようにしています。使用済みは グレー表示、調査不能はグレー+一重打ち消し線で示し、理由はマウスオーバーで表示します(行に 英語は出しません)。)
  • The free-domain search shows its results in columns on a wide screen. The list flows into as many columns as the width allows (roughly one per 300px), so a wide window shows two or three side by side and a narrow one stays a single list. Each ending's name always shows in full; the diagnostic note beside it is what gives way when space is tight. (空きドメイン検索の結果を、画面幅に余裕があるとき複数列で表示するようにしました。幅に応じて 自動で2〜3列になり、狭いときは1列に戻ります。語尾(ドメイン名)は常に全部表示し、横の理由 表示のほうを省略します。)
  • Every column in a device's address lines is now aligned. A device with several addresses lays them out in fixed columns so the eye can read down them: the network badge leads in a fixed-width slot (sized for 副ネットワーク9 / another network), then the IP and MAC at their known maxima (18 and 17 characters), then the full vendor name in a column half the width of the OUI database's longest name (54 characters, wrapping if longer, never truncated), then the open ports — which, because everything before them is fixed-width, begin at the same column on every row. Several addresses on one device are separated by a thin dotted rule. (機器のアドレス行の各列を整列させました。複数アドレスを持つ機器では、ネットワークバッジ (副ネットワーク9/別ネットワークに合わせた固定幅)→IP・MAC(最大幅18・17文字)→ベンダー名 (OUI辞書の最長の約半分=54文字の固定幅・超過は折返し・省略なし)→開放ポート、の順に固定幅で 並べ、ポートの先頭が全行で同じ位置から始まるようにしました。複数アドレスは細い点線で区切ります。)
  • The device scan is now two buttons: "Refresh devices" and "Port scan". "Refresh devices" re-checks which devices are online without scanning ports, so it is fast; "Port scan" is the fuller sweep that also reads each device's open ports. The per-device "Scan every port" search stays in a device's own properties, now labelled as being for that one device. (機器スキャンを「機器一覧を更新」と「ポートスキャン」の2つのボタンに分けました。 「機器一覧を更新」はポートを調べずオンライン/オフラインを再判定する高速版、「ポートスキャン」は 各機器の開放ポートも調べる本格版です。機器ごとの全ポート調査はプロパティ内に残し、「この機器の」と 明示しました。)
  • "Online only" is now an on/off switch instead of a button that swapped its own label. (「オンラインのみ」を、ラベルが入れ替わるボタンから、オン/オフのスライドスイッチにしました。)
  • The scan progress is clearer. Each step is named as it runs (reading the ARP table, searching for devices, asking for names, multicast discovery, checking ports, reverse DNS), the multicast step shows a "listening" state while it waits instead of appearing frozen, and the bar no longer reads as going backwards between steps. (スキャンの進捗表示を分かりやすくしました。実行中の工程名(ARPテーブル読み込み/機器を探索/ 名前を問い合わせ/マルチキャスト探索/ポート確認/逆引きDNS)を表示し、マルチキャストの受信待ちを 「探索中」と示して固まって見えないようにし、工程が変わるたびにバーが戻って見えないようにしました。)
  • "What to scan" lists "The ARP table only" first, before "The whole network". (「スキャン対象」の並びを、「ARPテーブルのみ」を先頭にしました。)
  • A device's note is now shown in the list and is searchable. It used to be visible only in the properties; now it appears under the device (one line, full text on hover) and the filter box matches it too, so a note like "2F printer" is actually useful for finding and telling devices apart. (機器のメモを一覧にも表示し、検索対象にしました。これまではプロパティでしか見えません でしたが、機器の下に1行(全文はホバー)で表示し、絞り込み欄でも一致するようにしたので、 「2Fの複合機」のようなメモが機器の識別・検索に役立ちます。)

Fixed

  • Mail: STARTTLS mode never sends the password in the clear. If a server does not offer STARTTLS (or a network strips it), the sign-in, mailbox and send-test now stop with a clear message instead of falling through to plaintext AUTH. (メール:STARTTLSモードで平文送信しないよう修正。サーバーがSTARTTLSを提供しない(または 経路で除去された)場合、平文認証に進まず明確なメッセージで停止します。)
  • Mail: the SPF DNS-lookup count no longer double-counts includes. A top-level include: was counted twice, so a healthy record with a few includes could be reported as over the 10-lookup limit; it now counts each lookup once. (メール:SPFのDNSルックアップ数がincludeを二重計上する不具合を修正。正常な記録が上限超過と 誤表示されることがありました。)
  • HTTP check: an unreachable host is reported as unreachable. A host that refuses the connection or times out was shown as a reachable server missing every security header; it now says it could not connect. A redirect's target host is validated too, so a page cannot bounce the fetch onto an internal address. (HTTP確認:到達不能なホストを「稼働中でヘッダ欠落」と誤表示せず「接続できませんでした」と 表示。リダイレクト先ホストも検証し、内部アドレスへ飛ばされないようにしました。)
  • A registered .jp/.co.jp domain is no longer reported as free. JPRS answers with a "Domain Information" block whose fields are letter-prefixed ("a. [Domain Name]", "p. [Name Server]"), which the registered-check did not recognise, so a plainly taken name (google.co.jp) — and a suspended/pending- delete one (granz.co.jp) — came back undecided and was then labelled likely-free. A [Domain Name] / [State] block now means taken; a bare "No match!!" still means free. (登録済みの .jp/.co.jp が「空き」と表示される不具合を修正。JPRSは項目名が 「a. [Domain Name]」のように接頭辞付きで返るため登録判定に一致せず、明らかに使用中の名前 (google.co.jp)や停止中の名前(granz.co.jp)が「空きの可能性」になっていた。[Domain Name]/ [State] があれば使用中、「No match!!」なら空き、と正しく判定するようにした。)
  • A domain the registry throttled or refused is no longer shown as "likely free". In a gTLD sweep the shared RDAP servers — Identity Digital most of all, which serves 100+ endings from one host and rate-limits this server outright — answer HTTP 429/403; those were marked △ "likely free (registry unreachable)", which is misleadingly optimistic. They are now honestly "?" ("could not check"), and a group that answers 429/403 is dropped at once so the rest of its endings are marked quickly instead of each waiting out a doomed retry. (レジストリに制限・拒否された結果を「空きの可能性」と表示しない。gTLD一括照会では 共有RDAP(特に Identity Digital。1台で100以上の語尾を担当し当サーバーを丸ごと制限)が HTTP 429/403 を返すが、これを△「空きの可能性」と楽観的に表示していた。正直に「?(判定不能/ 確認できず)」とし、429/403 を返したグループは即座に打ち切って残りを素早く判定するようにした。)
  • Port scan no longer fails on a /16 (or larger) network. The host-count limit that guards the address-by-address sweep was also applied in ARP-table mode, where there is no sweep — only the neighbour table (at most ~1024 entries) is touched — so "Port scan" on a common /16 LAN (65 536 addresses) was rejected with "Scan target exceeds the configured limit". The limit is now enforced only when a sweep will actually run. (/16 以上のネットワークでポートスキャンが失敗する不具合を修正。総当たり探索を守る ホスト数上限を、探索を行わないARPテーブルのみモード(近傍テーブル≒最大1024件しか触らない) にも適用していたため、よくある /16 のLAN(65,536アドレス)で「上限超過」で弾かれていた。 実際に総当たりを行うときだけ上限を判定するようにした。)
  • A port-scan step no longer logs "Undefined variable $wait". In ScanService::stepPorts() the port budget was computed from $wait before the variable was assigned, which logged a PHP warning on every step and, reading null as 0.1, over-computed the budget nine-fold. $wait is now set before use. (ポートスキャンの各ステップで Undefined variable $wait を記録する不具合を修正。 stepPorts() で $wait を代入前に予算計算に使っていたため毎回PHP警告が出て、nullを0.1と 読み予算が9倍に膨らんでいた。使用前に定義するよう是正。)
  • A free domain in the availability search no longer shows a raw "HTTP 404". The diagnostic reason (e.g. RDAP's 404 that means "not registered") was printed next to the ○ mark; it is now kept only as the mark's tooltip, and the visible reason is shown only for the uncertain cases (△ / ?). (空きドメイン検索で、空き(○)の行に内部的な「HTTP 404」が出る不具合を修正。判定理由 (例:未登録を意味するRDAPの404)は○の吹き出しにのみ残し、本文の理由表示は不確定 (△/?)の場合だけに限定した。)
  • A slow or unreachable device no longer floods the admin log with errors. The device-view proxy logged every connection timeout, TLS failure or refused connection at error level; these are ordinary outcomes for a network tool and are now logged at info (the browser is still shown a problem page). (応答の遅い・届かない機器で管理ログがエラーで溢れる問題を解消。機器ビューのプロキシが 接続タイムアウト・TLS失敗・接続拒否をすべてエラー級で記録していたが、ネットワークツールに とっては通常の結果のため info 級に格下げした(ブラウザには従来どおり問題ページを表示)。)
  • The DNS tool no longer fails a whole lookup when CAA is included. CAA was passed to dns_get_record() as the wire type number 257, which PHP 8 rejects with a ValueError that the @ operator does not suppress, so a query with CAA ticked errored out entirely. CAA now uses the DNS_CAA constant. (DNS調査でCAAを含めると照会全体がエラーになる不具合を修正。CAAを dns_get_record() に 型番号257で渡していたため、PHP8が ValueError を投げ(@でも抑制されない)、CAA選択時に 照会全体が落ちていた。CAAを DNS_CAA 定数に修正した。)
  • A notice no longer lingers on another tab or over a new scan. The message bar was shared across the whole app and never cleared, so "scan finished" sat on the Whois and DNS tabs and over the next scan's progress, making a running scan look finished. A notice is now cleared when you switch tabs and when a new scan starts, and an informational notice fades on its own; the progress bar shows only while a scan is running. (通知が別タブや次のスキャンに残る不具合を修正。メッセージ帯が全画面共有で消えないため、 「調査完了」がWhoisやDNSタブ、次のスキャンの進捗の上に残り、実行中なのに完了に見えていた。 タブ切替時とスキャン開始時に通知を消し、情報通知は自動で消えるようにした。進捗バーはスキャン中のみ 表示する。)
  • The same address no longer appears on more than one row. A device whose MAC changes (a privacy address that rotates, or a lease handed to another machine) left a second row for the same IP. Duplicate rows are now folded into one, both as they are found and once at the start of every scan. (同じIPアドレスが一覧に複数行出る不具合を修正。MACが変わる機器(ランダム化MACの変更や、 リースが別機に渡った場合)で同一IPの行が二重にできていた。重複行は、検出時とスキャン開始時の 両方で1行に統合するようにした。)
  • A name no longer follows an address to a different device. When an address was handed to another machine (an old PC's lease going to an Alexa), the old device's name could show on the new one. A name, type and ports are now kept only for the same device, never carried to a different MAC that later holds the same address. (アドレスが別の機器に再割り当てされたとき、旧機器の名前が新機器に残る不具合を修正。 旧PCのリースがAlexaに渡った等の場合に旧名が表示されていた。名前・種別・ポートは同一機器に対して のみ保持し、同じアドレスを後から持つ別MACには引き継がないようにした。)
  • "This server" is shown on every one of the server's own addresses. When one network card holds several addresses (here 10.0.0.1 and 192.168.1.250 on the same card), keying them by the shared MAC let only the last one keep the badge. Each of the server's addresses is now its own row and each is marked. (サーバー自身の各アドレスすべてに「このサーバー」を表示するようにした。1枚のNICが複数の アドレスを持つ場合(同一NICの10.0.0.1と192.168.1.250)、共有MACをキーにしていたため最後の 1つしかバッジが付かなかった。各アドレスを独立した行にし、それぞれに印を付けるようにした。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturelPTEAnhj7+HoibIAnwDsMclSagD0MDrqgF9vdsmoXXV5e0aqJmUD5JigIZhWldG0XpWMehslTEs0X6fEecgZ8ZvMq8hDwPGqTzmYnrtSv0k8BjnsBFn6CMcIfFO53fnhMpLkMEmaDOpf34Z6iUONdxZQ2pMVlv95tXOPfB0utEMXS2VmKsk8w73JRgbtCc07L/QT+3b1xbZkr9p0mCo6nXjpONKOpF3GzbxHC5cxhnqRpZ7wprKgTSS1cZFJdSAWEM78LEhZT47gast39F28c1Er5DdHZrvfQjOlKTVqUTH93iUearoZDygnr+tBaN6UKjiSpWsXEVIU9VkuL6ndZG2FB9BBZshoEkFsBWAaVHF7GPxYkMNxGuH0CZ7C11ykpl4cAo3d2rwqyjEu7skeBeCwikHIJ1b7upC8QyBKmPPdwVViT1AJd0SO7FvxSH8dofcxEaT+qb9spOZU3cNwFxsABNpgiUthEVCk8jf7ddeQCPncRXZhaHdxEU+QnfdxOl+5Vbipb2p//1F0hHh+S3zDipWrfYDMvATLIgk85DMs2vg2nfZgH5fJGJX37O2hqop4yL6YTRP0nNvSXMh8Ewa12yv/acvRsHgsCe0doffORCUCZomIrJ2pEYbfJbWPRqHqoeiucg3am0yy0GThx/6QJAORtNUjIug4VIu7hUk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.3
Release Details
UpdatedSept. 9, 2026, 2:33 a.m.
Changelog

Fixed

  • A device page whose text is written by its own script no longer loses that text in a device window. Some router and printer pages (an ASUS router's WAN page among them) build their labels in JavaScript, from strings that contain a small piece of HTML with target="_top" inside. The rewrite that keeps such links inside the window was reaching into those strings and breaking the script, so the page came up with its text missing. That rewrite is now applied only to real HTML attributes and never inside a <script>, so the page's own script runs untouched and all of its text appears. (機器ページが自身のスクリプトで文言を書き込む場合に、機器ウィンドウで文言が消えていた不具合を 修正。ASUS ルーターの WAN ページ等は JavaScript の文字列内に target="_top" を含む HTML 断片を 持ち、フレーム内に留めるための書き換えがその文字列を壊してスクリプトが止まっていた。書き換えを 「本物の HTML 属性」だけに限定し <script> 内には一切触れないようにしたため、ページのスクリプトが そのまま動き、全ての文言が表示される。)
  • The device-window "Screenshot" now shows its result inside the window. A device window is drawn above the app's own message bar, so a "Saved as…" note — or the reason a picture could not be taken — was hidden behind the very window it was about, and looked like nothing had happened. The message now appears in the window itself. (機器ウィンドウの「Screenshot」の結果を、ウィンドウ内に表示するようにした。機器ウィンドウは アプリのメッセージ帯より前面に出るため、「保存しました」や失敗理由が対象ウィンドウの裏に隠れ、 何も起きていないように見えていた。メッセージをウィンドウ内に出すようにした。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureCGlNtuFVUIdzr/sX2lsWkCHmSdABdw3JCqtB7iYca1e/+lv8y5d5NaUI9WeKpS3L9eIJCcdt3cY23p7xp5cwhMPOapNu4+Qbvj5mWpf81mX3nrRPQstI4wH3HBU5b6J1ZeDaT/ZZaNTPNvIPv06ZwsDvNc0tI+UxZIcg/aAYkRBqcQMlAGp4TkfL0qbX9y3TQaXi9SccEpHa/JybfYAHf0ulBy2Yhwo/5HyX50yK+MyqHByC+5RJW17ozqZNH3/4zsYTZ0mZGF1Rd/gcloVMHlDA8hKD6LQ/fvkzftC12vbYy0CzDXI2+QwbU2kyEiVg5WH1hzUrL9KL/At2cpHZThNHQUHTOusfZgNpVw8+jq3Sr3sXr9qYZkTwjzuz8v5WEal6tEs0NrJF6OLviMflHuWCTf2qKd15AvAaugrl7PWWVoxwhMDfbQjICYEhrPpRUA+sMwVFrUvCSZre1Lx9Y3hlEbSNsy93urbKNhZjHrm6IWmIJALeegMK/cA/VN7XF8gXDgeWqlg0P64xRwnc4JqhFpMfyyrJi2xHvrXkZgCv2xAQoaH6lF9CrQH1hF9c6drQAMFJS/JXbcn1qWZqFi1Qh3zRfTYUc4Tfwf8MPGuFBg1hLykWnGFegEQu2x8XIdxtL3unPvBDaN6EzH0NjqhExcf1fIXrwzpe6j8km7A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.2
Release Details
UpdatedSept. 8, 2026, 1:35 p.m.
Changelog

Fixed

  • The internet speed test now works at the 100 MB setting. speed.cloudflare.com rejects a download request for 100,000,000 bytes or more with HTTP 403, so "100 MB" (100 × 1,000,000) fetched nothing and no number appeared. The download for that endpoint is now capped just below the limit (99,999,999 bytes), and a refused download is reported as an error instead of a silent zero. The 5/25/50 MB settings were unaffected. (インターネット速度テストの「100 MB」で数字が出なかった不具合を修正した。 speed.cloudflare.com は 100,000,000 バイト以上のダウンロード要求を HTTP 403 で拒否する ため、100 MB ちょうど(100×1,000,000)が失敗していた。当該エンドポイントのダウンロード量を 上限直下(99,999,999 バイト)に丸め、拒否された場合は 0 ではなくエラー表示にした。 5/25/50 MB は影響なし。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturekEXnJTS5yF9JFTbS5dkAR9aY74MLA244QyEN/MOVQm1phUJ66HKiFUErT8Nw8T/T78ILbJ9T7ZXjGZssJIl+Vp8SR6RimT2jwj6Hq3goj/kKeucT0I31CQB1Zwbp/esXp6FIMp5yNvremlHo5ro1IXV7+/HdJP4eBBhSSqUnp8UOwg+cjs7UHyQQxcLx1pFzyEAHhKgQ45qDxkt1UrctLI2AyY0rRcE+927Gvy5GphRat3RcDIxl6yKabk1wgDU3HM6T9IO5XSjJF2TlT0fihZokAfVosrRQT5JoeCDaqxT3+3kS3w14D+opKWlUdOY+ttGNSb4g5b/RMg4Leeb+Wtrln73bcMHVqN+6VWoY3iQr535E5ZYJEeIpjfsK6iiuRLpmJ+TPKBc99gOEF10HKJwr/j1KMqPoW0NpbgQ747lNedg1I24P8zvKs/DaUzy0pOMpwfGTpwomc2rkSCyGPP1Bnl1RrLkO47xRq8IV4//nFNSqe2gV3lY1UQskYx3qlzMvMEl0717wAoAW8ppYD/M0nLRa9zg9yW6E74WLwjp596pktS3Z/QoGOrkENqNpDNEbw/+cwrmM2OWCGqG6X3N/Z3eIqkIKc8Mv1vloZ+ZardB/WtqG5Mnzbh/0PP2Lx/jzWKzd6+nUDiz4Miw5YCfs6st8eWGIJF5rlI6I4Mo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.1
Release Details
UpdatedSept. 8, 2026, 12:49 p.m.
Changelog

Fixed

  • Fixed a bug where clicking outside a dialog while entering data made the dialog disappear and discarded what you had typed. It affected the data-entry dialogs — the SSH sign-in dialog, the connection editor (new/edit a saved SSH/SFTP/FTP/SMTP connection, including its password and private key), and the Settings dialog: clicking the surrounding area no longer closes them, so nothing you were entering is lost; close them with the ✕, Cancel or Save controls. View-only and picker dialogs (system information, the file picker, the page/text preview and the device panel) keep closing on an outside click, since they hold nothing you can lose. (データ入力中にダイアログの外側をクリックすると、ダイアログが消えて入力が失われてしまうバグを 修正した。対象=SSHサインイン・接続の新規/編集(SSH/SFTP/FTP/SMTP。パスワードや秘密鍵を含む)・ 設定の各ダイアログ。外側クリックでは閉じなくなり、✕・キャンセル・保存で閉じる。閲覧/選択系 (システム情報・ファイル選択・プレビュー・機器パネル)は失う入力がないため従来どおり。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureQ0qPD64JJXCwInnuCvlIN5GZbTdRW/s+Xntj90lJXH/gicwlTuYMeowlFBMvj2uVe7Fd8dErh2sGZJv/6ds7PPdzCFJY7GIeofIuHZHw0laPn26Yy/jgiCB+FPJYbyGNHsMdFyz5pbZ4JtxjMkiFPz7sGsOzbNZH28QnCjLaO7z7RFvU5L95YCREIMEQzhL4aVRgI5oBTWnSb7X5bVoXB0ky5/0YwFBxa4nY3JGy4cn86oTttRhBc/tCJ7mSsPDy1Peas5St7E0bpNiJa0iI/Fap6pgNgm3Gp7YibSyFviW5ygeLOIOqMZWoevakZC/UP+xDEF0sWubaGtz8kz4pATsflz0TfALApYEqvLVNG/cEyZHw3ZiOXwazXWBv1Y1Z21ZMl2pAE4t6LQs2zG6BYO/a465rI6wONcCRV2ODHyZdl3f+qBVdKbtCDZ+0Rzqyj6soDqjWxfMtQG4OYhhFtBrWAZ3GL50Jf6C9zPajzql2hf5SNbvYI93TL/QjLZrmrJFdky0a4EKqRnaL/PQ+DgKX/7ji6zrX3zHaWia/9YJc7tQI3/DEEYMr50YhGClzkBQVkgjtGisHMBYsWs0/SxO/RIHoUi0t7N4Tt3Woh4a9UKJSmm2wOj2pY/u8wyr/3OIr57ogYkYQNz5o+a7O7re7VQeAWt9yCqZgI2DiwwU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.0
Release Details
UpdatedSept. 6, 2026, 4:30 p.m.
Changelog

Everything since 0.3.11, which is what the customer sites have been running, gathered into one release.

Added

  • A terminal, not a line at a time. SSH had a box you typed one command into and a box the answer came back in, which is enough for uptime and no use for anything that draws a screen. There is now a real terminal: top, vi and less run in it, colours and cursor movement work, and it is resized by dragging the window. PHP cannot hold a connection open between requests, so the server keeps the session and streams it — what is typed goes up one batch at a time, and what comes back arrives as it is written.
  • A sign-in dialog for SSH. Host, port, account, and either a password or a private key chosen from your own Nextcloud files. A default folder for keys can be set in Settings, so the picker opens where the keys are kept instead of at the top of the file tree.
  • A device on another network, sharing the same wire, is found and stays found. A camera left on its factory 192.168.1.120, plugged into a 10.0.0.0/16 network, was invisible: it is off the server's subnet, so nothing routes to it, and it cannot answer a question either — its reply goes to a gateway it does not have. What it does do is announce itself to the multicast group, which is carried at the level of the wire and arrives whatever the addresses say. NetBase now listens to that group continuously, in the background, so such a device appears without a scan and is not marked offline for failing to answer something it was never able to answer. Its details carry the one command that would put this server on its network, ready to copy, and a button that opens a terminal on this server to run it.
  • A device can be asked about itself, from its details: every one of its 65,535 ports, and which of the open ones actually serve a web page. The port scan opens 64 connections at a time rather than the sweep's 512, because older hardware drops the flood and is missed at 512; the web search asks each port for its front page rather than guessing from the number, and a port that answers becomes a link in the list from then on.
  • A right-click on a device offers the ways into it — HTTP, HTTPS, FTP, SSH and Telnet — built from the ports it actually has open, with Properties at the bottom for the panel a left-click opens. Nothing speculative is listed: a port that is not open is not offered, and a web page only for a port NetBase knows serves one or has been shown to.
  • SSH and Telnet open in a window, the same movable, resizable frame a device's web page uses, so several can stand open beside the device list at once. Port 22 and port 23 in the device details open one instead of changing tab — which used to close the device and leave nowhere to go back to.
  • Telnet can now be used, not merely diagnosed. It had a probe that read the banner and warned about the plain text, and nothing that would let anyone type at a switch. The window signs in, sends a line, reads the answer and hangs up — a connection per line, because PHP cannot hold one open between requests, which is also why nothing is left open on the device in between. Option negotiation is refused throughout, so the device keeps talking without our pretending to be a terminal.
  • Zoom, fit and a screenshot in every device window, and a row of buttons where a sentence explaining the window used to be: the device's own address, the page's text, and the clipboard into whichever field the cursor is in.
  • Copy buttons throughout the device details — the whole record, or any one row of it.
  • Five depths for the port check (15, 106, 1,024, the high ports 1025 to 65535, and all 65,535) and five scan speeds, with the wait for a port to answer now a setting of its own, since that is the number which decides how long a scan takes. The high ports are where a maker hides an interface it would rather not advertise, such as the 22401 on a router here.

Changed

  • The device list is two lines to a column — name over address, MAC over vendor, type over open ports — so a row holds what used to need sideways scrolling. A device that has told nobody its name is written - no name - rather than left blank.
  • What to scan is chosen first and by name — the whole network, or the ARP table only — and the options beneath are arranged as the steps they are.
  • The SSH page says which boxes belong together. It does two jobs — looking at a server, which needs nothing, and working on one, which needs an account — and ran them together in five cards with three separate host fields. Each job now has a heading, Telnet sits with the work rather than the looking, and the host typed at the top can be carried down to the sign-in with a click, so the two are visibly the same machine.
  • The wait for a port to answer says what it buys. The seconds alone meant nothing without having thought about what a silent port costs, and the "up to N per device" beside them was arithmetic nobody asked for. Now: quick and misses slow devices, the usual, or finds the slowest and takes longest.
  • Plainer words throughout: the ARP table is called the ARP table, the scan speed is a rate rather than an adjective, and links are made only for ports NetBase can vouch for.

Fixed

Ten of these came out of two cameras — five from one at a customer site, five from one here — and every one of the ten was found the same way: by signing in and then actually using the pages behind the sign-in, rather than checking that the front page appeared and calling the window done. None of them is particular to a camera; they would meet any device whose own web interface is built the same way, and the second camera was still finding them after the first five were fixed.

  • Device pages that would not open. A device's redirect was arriving as a 200 with a Location nobody acted on, which left Brother, Canon, Kyocera and Buffalo hardware showing nothing; four ASUS routers stepped outside their window through history.pushState; and a Buffalo LinkStation reloaded itself once a second for ever. Found by opening every device with port 80 or 443 across the nine sites — 73 of them — of which 32 displayed at the start.
  • A relative address that climbs with .. no longer eats the ticket. On the device the climb stops at the root; under the proxy the root is several segments deeper, so ../script/inputrestriction.js from /login.html arrived with the ticket gone and came back 403. The camera's login page then ran without a file it needed and threw input_edit_restriction is not defined. Climbs are now resolved against the page and clamped where the device would clamp them — in the markup, in scripts, and in what document.write writes.
  • A POST with no content type is no longer thrown away. Device firmware routinely omits it, and PHP will not parse a body it has not been told the shape of; taking it as a form left the device receiving an empty request. The camera's sign-in went 403. If nothing was parsed and something was sent, what was sent is what goes on.
  • Nothing but a page gets the shim. A device also answers with things read by script rather than shown — the camera's sign-in returns an empty body with a 200 — and putting our script into that made the answer unrecognisable to the page that asked for it.
  • The cookies a device's own page sets now reach the device. They live on this server's name alongside Nextcloud's, so Nextcloud's are left out by name; the session above all never leaves this origin.
  • The request says which of the device's own pages it came from. Nextcloud sends no-referrer on everything, which is right for Nextcloud and wrong here: this camera turns away every page after the sign-in without it. The window now says same-origin — the referer never leaves this server — and the proxy rewrites it into the device's own address before sending it on.
  • A device window no longer sends its cookies twice. Two sets have to go to the device — the session it grants at the sign-in, which the server holds and the browser never sees, and whatever its own page set in the browser — and they were being sent as two separate Cookie: lines. A browser never does that, and a small device web server reads only one of the two. This camera read the second, which has no session in it, decided the sign-in it had granted a moment earlier belonged to nobody, and answered every page after it with a redirect back to the login screen. Both sets now go through the same cookie engine and leave as the one line HTTP asks for.
  • A request with an empty body no longer arrives with one. The parameters Nextcloud hands over are the query string and the body merged together, and taking that as the body meant the address's own question came back a second time as form data — POST /action/get?subject=datetime left here carrying subject=datetime in a body 25 bytes long. That is how this camera's pages ask it for their current settings, and it answered 400 to every one of them: the sign-in screen never offered the dialog it owes a device still on its factory password, and the pages behind it came up on their defaults. Only what was actually sent as a body is sent on as one.
  • A request with nothing to send now says how much that is. With no body, curl leaves out Content-Length altogether; a browser always writes Content-Length: 0. Given the first, this camera's web server waits for a body that is never coming and eventually closes the connection with nothing said. Every settings page asks for its current values with exactly that kind of empty POST, so every page came up with its fields blank or on the first option in each list — the time zone reading GMT-14 when the camera was set to GMT+08. Measured against the device directly: no Content-Length, no reply at all; Content-Length: 0, the settings come back. All 27 fields on the Date & Time page now match what the device itself shows.
  • A file whose name has a space in it is fetched. The browser escapes the space, the router unescapes it, and what reaches the proxy is a real space — which cannot go back into a request. Three of this camera's menu icons are kept under names like Video Analytics.png, and all three were broken pictures while the other eleven on the page were fine. What a path may not carry is escaped again on the way out, and what is already fit to send, the percent sign included, is left alone so that a path which was never unescaped is not escaped twice.
  • A port a device announced is added to what is known, not put in place of it. A port scan speaks for every port it tried and may rightly take one away; an announcement speaks for one port only — the one the device's own page is on. Written down as though it were the whole truth, it erased the rest. This camera announces port 49152 every forty-five seconds, so a scan that had just found eight open ports was down to that one inside a minute, and the web-page search that followed had nothing left to try: it never saw port 80, no matter how many times the scan was run.
  • A device that answers and then stops no longer holds the window empty for thirty seconds. An NTT phone system at one site sends its 403 in under a second and then keeps the connection open without ever finishing the body. A connection carrying nothing at all for ten seconds is now treated as finished, and the window says the device answered and then stopped rather than showing nothing. A stream that is genuinely working — a camera, a download — is carrying bytes and is never caught by this.
  • The server NetBase runs on now appears in its own device list. A machine never asks the network for its own MAC address, so it is never in its own ARP table — and NetBase, which discovers by reading that table, could see every device on the network except the one it was running on. Its own interfaces are now written down at the start of a scan, marked "this server" in the list.
  • A device out of reach is no longer marked offline for failing to answer. A scan marks everything offline and then marks back what replies, which is right for a device that could have replied and wrong for one that never could. A device that has only ever been heard announcing itself — never seen in the ARP table — keeps its state if it has been heard from recently.
  • A radio button is drawn as a radio button. It had no style of its own, so it fell through to the rule for a text box and was rendered as one: a rounded rectangle with twelve pixels of padding around the dot.
  • A multicast step no longer stops without a word. IP_ADD_MEMBERSHIP is not defined in every PHP build, and naming a constant that does not exist is a fatal error rather than a failed call, so the step ended silently and the devices that only announce themselves were never heard.
  • The standing listener actually runs. A background job registered as time-insensitive is held for the maintenance window, which on an instance with one configured means it runs between 01:00 and 05:00 and at no other time — so the listener that is supposed to be hearing announcements all day heard none. TIME_INSENSITIVE is 0 and TIME_SENSITIVE is 1, the reverse of what the names suggest at a glance, and the value is written once when the job is first registered and never revised, so the registration has to be removed and remade rather than merely corrected.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturelsvI6lQNV2r6VjQYc3jblzctyi3y4fyH3qh3ltaysElg7994DYPy+eCQLpeMECTNLgSNVFAlNSXD8I636ZM8AGBKMKokeywElPLtTytOW8IptKAOfErJtFXg2i8E0HRlIO6aNWAwcMlCBDwSACquiEs2j3ftsmY8D9abu/UrJPKYlLZ++iXRqbQ1adRd2klYsAHKES5fi85eujypN3yyQgYOy5J9+ib5alSGS3BFc4MXHDNI/yL0sKnV2XfRTY2oSgV5xSP7GPwDxviFe9ZH9jnzbS9DbUJaan9tuyJkhU68rzr4YVRCzT+UVKMUmXwWLYPPcTnqhVVaTBnRpOAWLqtat4F9tMTi8UEAKhCwqEe6qTELzFqdttuHgMAuRlwGMTHNksFJoyI5Tjq+uDHcpxlBkiL9G4hafAyVqbNmX3L7uW26vBZzW0OY7YqVtbzzNiahNq7dhBxr+tAO7NBJA3LA1sLMcHXU/vkAeesusacJUoJ9G/ZFUcLWCPh1U11tCk4E2Zp4W8T5qD1OdXUxmK9NJWgvyGYB4NQwa7RSGtS9kcwT19p/d+h+2WZAYtKn0drBbaf/yBLYNydu5iYBnoER9cGLzP8f0+CXZLiQrYv5PAdvkaXZr48L0SrIAa/bopO8R8PgUX0j+L06bS1teTspLOJvsighiPBbcEnHlzQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.3.3
Release Details
UpdatedSept. 5, 2026, 3:53 a.m.
Changelog

Removed

  • Ping, traceroute, the port check, TCP ping and path MTU discovery, and the nmap front end with them. The Nextcloud app store review takes the view that an app which sends probes of that kind should not be installable from the store, and NetBase follows it: the tools, their tabs, their routes and the code behind them are gone from this release.

Changed

  • Everything else works as before: device discovery and the device windows, the LAN sweep and inventory, DNS, whois, TLS and HTTP, subnet and MAC, mail, FTP and SFTP, SSH and Telnet, the clock check, the benchmarks and the server view.
  • The requirements page and the administration settings no longer mention ping, traceroute, mtr or nmap, and no longer ask for them to be installed.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureJ0kMXHFSMxxwbvTbXhBrHulZmHnQd+P84sVi4JS3RZSEwAauHtV+f2r1tlOrAyi9ZFq3cQJ2OlrVt84rnil/C8nCnJx7Aqw8vyTYVJ2+ToF8aj6PNl0wtNs4ocd4N9GjuktyQdsNaC0feBA3I/ZkCEZivbXZZ88XAhQ1WaLBROFbRoGmeD7Z+C/MsjZyhbRL41YfL3ADcfyUjkjTFU1O19ObgyfX5E76IFz7KtfZXtUfvIZatn8RR6rs9kX8ospThDOmABmuqsoaneAm9/LEnGbCHdnt9oJtYOvteVIpkCUuz9YwW8xne/ny5QgKn2rfS5BfKQRx0d6EpRG3Oro8+Ho5I48RIYva/32IRxNZSblICaZ7H+X0qL+Fs2zXhB/uYT6wq4HKdXYS0UmHZIlwpBB55s/S0Mcgutc1GpeLQKPLj7pdzDNNJLTxXLq4u2sExN/20G6oATgdbhXErr8U5f8pIw2VWrrl4o0C11zVGT+h5K/tOGSvKcYQxi6R+rnVpiCQLv3+izdbW1zc3RAUmCU4emLxVROuDT3Hh06ig+qV/hf7QLF97RfYfF06IZOAuxfpE8Zx9Ctvl8WYJ4obGBuhA6XwY2WTZxPvJIRIlQQxEe7rTM2VNCosOa8axM7resC5EAzTG/BYKVbyOLBNbwX1r992ATQ4MufWXNNYHzU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32

Nextcloud 30

NetBase 0.6.2
Release Details
UpdatedSept. 17, 2026, 10:45 a.m.
Changelog

Changed

  • Nextcloud 35 is now supported. There are no other changes. The supported range is widened from 30–34 to 30–35. The app itself is unchanged from 0.6.1: it was tested on Nextcloud 35 against the changes that release makes for apps, and ran without modification. (Nextcloud 35 に対応した。それ以外の変更はない。 対応範囲を 30〜34 から 30〜35 に 広げた。アプリ本体は 0.6.1 から変わっていない。Nextcloud 35 でアプリ向けに変わった点に 照らして試験し、修正なしで動くことを確かめた。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureovYzjgphrZG9qwzRnUkQE6ciV6DE9L0exbPrr2vAdkG4vEunPZAzj+jynTjvITfB0AEM1uHMkSvuVlPn8LXaqGp5tAhY7ZTFpf9FPRXx9zt+1sofQGRVIW5iDWAU+nsj2jr1HROnDVcb+q0Wb5Xm5nr3wL9zX5Cto9xPu1VjM5+KxVl0xbaUAnVWUj5nKZQN9yLHmpksAdt/VsAKO8BEclfnXI2z+4VV/EL7A3gaHW5SrOEm+0bqDj2nGPit2UfuXPcSYCnEtmwkSmwwCWzfKC3yVrZ3toqgwWQIJy1cYNh6H1BKvuZSzaec/ZkRFXdLHM7WiATnzBVvY57voAVNlkQ4TLbgw5AQDQgPPDnIK7TaeCUMrGfLQwSPmznfiD5Y51O5CeIR/chXKLOWJBHdDex4yLgm2H5pwl+0EAN7E9ct8qjPBdF+sTdiGcBf5p6QYTGJmVAku7ic3lql6DTDNsHRIo6+NP/aXXJ5BSbhim4mzrb7jTVMFmB8xlMkyI+dr4EiJnvkokNw9CciiU6ddXkQoNBjjPMsBmI1S4yplH0maYsMSc9wryjhOVePzgX2phIRbFFqVfe7Q+phJp0EtHjEqyULrmH3HRkNtoQIYoVmPmuls1hkt5F38ZMUzyU6vvqKIPc4ZGtDGLZYGzOBa+8SVI2WKOsZW4dJqvv/BHM=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<36.0.0
Minimum Integer bits32
NetBase 0.6.1
Release Details
UpdatedSept. 17, 2026, 10:44 a.m.
Changelog

Added

  • A device in the list can be pinged: right-click a row and ask it. The answer is the packet count, the loss and the round-trip times, kept on screen until it is closed rather than fading like a notice — the numbers and their caveat are worth reading twice. A result of "nothing came back" says so plainly and adds that plenty of devices and firewalls ignore ping while answering perfectly well on a port, because a bare 100% reads as "the device is off" and often it is not. It reaches the local network and nothing beyond it, in two ways at once: the request names a device by its row rather than by an address, so there is no field in which to aim it at the internet, and the server checks the address against its own subnets before a single packet leaves. An address on no subnet of this server is refused rather than tried. (一覧の機器に ping を送れるようにした。行を右クリックするだけ。 送信数・受信数・ 損失率・往復時間を、消えてしまう通知ではなく閉じるまで残る小窓に出す。数字とその 読み方は二度読む価値があるため。応答がない場合は「多くの機器やファイアウォールは ping を無視しつつポートには応答する」と添える。損失 100% だけを見せると「電源が 落ちている」と読めてしまうが、実際はそうでないことが多いからである。外部には届かない。 仕掛けは二重で、①要求はアドレスではなく機器の行を指定するため、外部を狙う入力欄が そもそも無い、②サーバー側が送信前にアドレスを自分の持つネットワークと照合する。 どこにも属さないアドレスは、試さずに拒否する。)

  • A machine with a foot in several networks is pinged at the address that means something. Such a machine is one row per address, shown as one device, and the row menu hands over whichever row carries the name — which is not chosen for being reachable. On the development server that picked the container bridge over the address anyone would mean, and it could as easily have picked a stale address on a network the machine no longer has, which the server then refuses. The address is now chosen on its own merits: the routed networks first, primary before secondary, then an address this server merely has an interface on, and never one it has no interface on at all. Ties fall to the lowest address, so the choice does not wander between scans. (複数のネットワークに足を持つ機器では、意味のあるアドレスに送るようにした。 この種の機器はアドレスごとに別の行になり、一覧では1台として表示される。右クリックが 渡すのは「名前を持っている行」で、届くかどうかで選ばれていない。開発機では、誰もが 思い浮かべるアドレスではなくコンテナ橋の側が選ばれていた。条件次第では、その機械が すでに持たないネットワークの古いアドレスが選ばれ、サーバーに拒否されて終わることも あり得た。アドレス自体の素性で選ぶようにした。経路のあるネットワークを優先し (主たるものを副次より先に)、次にこのサーバーが足だけ持つネットワーク、足を持たない ものは選ばない。同順位なら小さいアドレスを採り、探索のたびに揺れないようにした。)

Fixed

  • A device type you chose by hand no longer disappears when a container restarts. Reported from an all-container estate: a type changed to "Container" was back to "Unknown" after the container was restarted and the devices refreshed. The guard that stops a scan replacing a hand-picked type with a guess was working; something else was undoing it. NetBase identifies a device by its MAC address, and a container is handed a new one every time it starts — podman gives it a new address as well. The machine that came back was, as far as NetBase could tell, a different machine. Reproduced both ways it plays out: where the address changed too, the old row survives offline with its type and a new "Unknown" appears beside it; where the address stayed, the old row was deleted outright and the type went with it. That deletion is deliberate — when a DHCP lease passes from an old PC to a new device, the old machine's name and type must not follow the address to its new occupant — and a restarted container is indistinguishable from a reassigned lease from the outside. So the line is drawn differently: everything the machine reported about itself (its ports, its names, its vendor, its history) is still dropped with its row, and what a person typed is carried across — the name they gave it, their notes and tags, and a type they picked by hand. A guessed type is still left behind, because "Printer" was the scan's opinion of the machine that left and says nothing about whatever holds the address now. (手で決めた機器の種別が、コンテナの再起動で消えてしまう不具合を修正。 すべてを コンテナで運用されている方からの報告で、「コンテナ」に変えた種別が、再起動して機器を 更新すると「不明」に戻っていた。推測による上書きを防ぐ仕組みは正しく働いており、 別のものが打ち消していた。NetBase は機器を MAC アドレスで見分けるが、コンテナは 起動のたびに新しい MAC を受け取る。podman ではアドレスまで変わる。戻ってきた機械は、 NetBase から見れば別の機械だった。起こり方は2通りあり、両方を再現した。アドレスも 変わる場合は、古い行が種別を保ったままオフラインで残り、隣に新しい「不明」が現れる。 アドレスが同じ場合は、古い行が削除され、種別ごと消える。この削除は意図的なもので、 DHCP で古い PC からアドレスが別の機器へ渡ったとき、前の機器の名前や種別を新しい 持ち主に引き継いではならないためである。そして再起動したコンテナと、渡されたアドレスは 外から見分けがつかない。そこで線を引き直した。機械が自分について報告したもの (ポート、名前、製造元、履歴)は従来どおり古い行とともに捨て、人が入力したものだけを 引き継ぐ — 付けた名前、メモ、付箋、そして自分で選んだ種別。推測された種別は 引き継がない。「プリンター」は去った機械についての意見であって、いまそのアドレスを 持つものについては何も語らないからである。)

  • The settings screen no longer answers 500 on a confined install. Listing the fonts a terminal can borrow walks the font folders, and on a confined install — a snap, for one — /usr/share/fonts is refused outright. A folder that cannot be opened throws rather than warns, and the @ in front of it does nothing about a thrown error, so the exception travelled out of the font list, through the settings handler, and turned the whole screen into a 500. The walk is now guarded, and the same refusal arriving from a folder deeper in is caught too rather than only the opening of the top one. A font nobody can read is not worth a broken screen: the folder is skipped instead. (限定された環境で設定画面が 500 になる不具合を修正。 端末に貸せるフォントを 数えるためにフォント用のフォルダーを辿るが、限定された環境 — snap などがそうである — では /usr/share/fonts が丸ごと拒否される。開けないフォルダーは警告ではなく例外を 投げるため、前に付けた @ では抑えられない。例外はフォント一覧から設定の処理まで 抜けていき、画面全体が 500 になっていた。辿る処理そのものを保護し、先頭のフォルダーを 開くときだけでなく、途中のフォルダーから同じ拒否が来た場合も受け止めるようにした。 読めないフォント1つのために画面を壊す価値はない。そのフォルダーは飛ばす。)

Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureMWUIO4DhCXKnL5EV46opf++sOrtHiPQGJ+lzsEhFjx5QuFWz7OcXA3gA0lV43t5W2WOCdEuP+QKcuDbmCCmsJrGe0i0ekeNtlT8QPwm3qgMXeFHIcCOogH3Lkh4uawbBI9CRXjtqBRMjJAq59WaJ6fhp2ek9fRt/E3abwNrGgSccb5wmVI3mq52I7zaKYYpDUlzc8bme5nuRxjygb2N6bnaufCmHGMWLBglwnWbgTYHDnjiM9Dp0q7xdsA+tw1ICZWHvjeafYz8HuEkVOL0aGjoiX19mRMg8eBePlFWZfTkGHLdR0jLhuL7n669AxeiUKPCV7ZQBxRieu6oXKL3M2ifYO36tLjglkZ1kD6gUJVPqD+A9ANitG9OiP+tp9Vff0KoSBf+tODGvPjM0ZLyPbuxbS8SFxh4vhy+MPeu0kPqSeY0evnQz00YnV+FI+DoLwthbPtl+OsUzwJlnp1Y4JoBeEHsGgWcrEl26UYQA61AhtL5z6D//VfOQnkcZ5m+wJwzRIAz0I5nBX8W93wqqdUsIE/Nvscdb/g4j8pG47oXha8duf9aiphK3kGxYn3MHqGZDb91EVBas9SNH/TwBOzEhh+HOzVAXGyxhD+jNJ2AKcknSn7qhUnFKCEi7BW/DXl/vGgXmUKR6X9dQSVpc7QilFKz8Px5eYN+hzy9aYcc=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.6.0
Release Details
UpdatedSept. 16, 2026, 6:03 a.m.
Changelog

A bigger step than 0.4.3 → 0.5.0 was. Please read the first entry before you update: saved connections move to RegiBase, and the ones stored before this release are gone. (0.4.3 から 0.5.0 のときよりも変更点が多い版です。更新前に最初の項目を必ずお読み ください。保存済みの接続先は RegiBase へ移り、これまでに保存したものは消えます。)

Changed

  • The settings dialog is wider, its tabs sit in one row, and the tabs are easier to tell apart. Four tabs in a 560-pixel dialog wrapped to two rows with room to spare on each; the dialog is the ordinary 660 now and they fit in one, sharing the width and wrapping only when the names cannot be read any narrower. The closed tabs were a muted grey on a near-white ground, which is hard to separate from the panel at a glance: the ground is darker and the text is the ordinary text colour. Measured rather than guessed — the text now sits at 12.1 against its own ground where it was 4.3, and the open and closed states differ by 1.21 where they differed by 1.11. Five mixes were compared before settling on one. (設定ダイアログを広げ、タブを1段にし、開いているタブと閉じているタブを見分けやすく しました。 560ピクセルの幅に4つのタブは収まらず2段に折り返していましたが、各段には 余白がありました。通常の660ピクセルに広げ、タブが幅を分け合って1段に収まり、名前が 読めなくなるときだけ折り返すようにしました。閉じているタブは白に近い地に薄い灰色の 文字で、ひと目では本文と区別がつきませんでした。地を濃くし、文字を通常の文字色に しています。当てずっぽうではなく実測しました。文字と地の比は 4.3 → 12.1、開と閉の 地色の差は 1.11 → 1.21。5通りの濃さを比べたうえで決めています。)

  • Acting as root now lapses on its own. The sudo password was never stored, but it stayed usable for as long as the page was open — and a page left open on an unlocked screen is somebody else's root. It is given up after a set time with nothing touched: ten minutes to start with, adjustable from one to thirty in the settings, or never for anyone who would rather decide for themselves. The remaining time is shown beside the notice, and "Give up root now" is a button rather than a line of small print. Working in NetBase resets the clock; merely having the tab in front of you does not, because a tab left on this screen while its owner is elsewhere is the case this is for. (root として操作している状態が、自動で切れるようになりました。 sudo のパスワードは もともとどこにも保存していませんが、画面を開いている限り使える状態が続いていました。 施錠されていない端末に開いたまま置かれた画面は、そこにいる誰にとっても root です。 何も操作しないまま一定時間が過ぎたら手放します。既定は10分、設定で1〜30分から選べ、 「自分からは手放さない」も選べます。残り時間は知らせの横に出し、「いま root を手放す」 は小さな文字の一行ではなくボタンにしました。NetBase で何か操作すれば数え直しますが、 画面が目の前にあるだけでは数え直しません。持ち主が席にいないままこの画面が開かれて いる、という場合のための仕組みだからです。)

  • A folder can be downloaded now, as one ZIP file. Only single files could be brought back; a folder had to be walked into and its files fetched one at a time. The archive is built on this server rather than on the far end, because that is the only way that works everywhere: a host reached over FTP has no commands at all, and even among Unix servers zip is often missing — the test server here has tar but no zip. Nothing has to be installed on the server being visited. Three limits keep one request from running away: how deep it walks, how many files it takes, and how many bytes in total; reaching one stops the walk and says so, rather than quietly handing over half a folder. (フォルダーを、1つの ZIP ファイルとしてダウンロードできるようにしました。 これまで 取り込めるのは単体のファイルだけで、フォルダーは中へ入って1つずつ取るしかありません でした。書庫は接続先ではなくこのサーバーで組み立てます。それが唯一どこでも同じに 動く方法だからです。FTP の相手にはそもそもコマンドがなく、Unix のサーバーでも zip は 入っていないことが多く(この検証機も tar はあるが zip は無し)、相手側に何も導入する 必要がありません。1回の要求が際限なく走らないよう、深さ・件数・総量の3つに上限を 設けています。上限に達したら walk を止めてその旨をお伝えします。黙って半分だけ渡す ことはしません。)

  • "Download to my files" in the right-click menu is just "Download" now. What it did was plain; the wording was not. (右クリックの「自分のファイルへ取り込む」を「ダウンロード」にしました。 している ことは単純なのに、言い方が回りくどいものでした。フォルダーでは「ZIPでダウンロード」と 出ます。)

  • The settings dialog is tabbed too, and the tabs take one row where they fit. Four groups stacked one under another made a dialog longer than the screen: appearance, terminal, connections and keys, and the tool order all had to be scrolled past to reach the last of them. They are four tabs now, the same ones the connection list uses. The tabs were fixed at two to a row, which forced a second row even where there was width to spare; they fill the row and wrap only when they must. (設定ダイアログもタブにし、タブは収まるなら1段にしました。 4つの群を縦に並べて いたためダイアログが画面より長くなり、外観・端末・接続先と鍵・ツールの並びのうち最後の ものへ行くには手前の3つを通り過ぎる必要がありました。接続先リストと同じ形の4つのタブに しました。タブは2つずつの2段に固定していましたが、幅に余裕があっても2段になって しまうため、収まるだけ横に並べ、入らないときだけ折り返すようにしました。)

  • The connection list settings are four tabs now, two to a row. The four kinds were stacked one under another, which ran the dialog well past the bottom of the screen: the one being worked on was never wholly in view, and finding the right one meant scrolling through the other three. Putting them behind a single selector had been worse — three of the four were invisible and there was no telling what was set up. The tabs say both at once: which one is open, and which of the others still have nowhere to keep their connections (a dot on the tab). (接続先リストの設定を、2段のタブにしました。 4つの種別を縦に並べていたため、 ダイアログが画面の下へ大きくはみ出し、作業中の種別が一度に収まらず、目的のものを 探すのに他の3つを通り過ぎる必要がありました。かといって1つの選択欄にまとめたときは もっと悪く、4つのうち3つが見えず、何が設定済みかも分かりませんでした。タブなら 両方が一目で分かります。いまどれを開いているかと、残りのどれがまだ未設定か(タブに 点が付きます)。)

  • Fixed: reordering the tool list stopped the whole sidebar from working. Dragging a tool into a new place left Settings, System information and Open a shell unresponsive. They were not covered by anything and had not been replaced — the screen had simply stopped redrawing. The list was built by a <template v-for> holding a button and a conditional rule, with the key on the template rather than on the elements: one turn of the loop produced two nodes or one, so once the order changed Vue could no longer match them up. It threw inside its own patch ("insertBefore: parameter 1 is not of type Node"), abandoned the update, and never drew anything again. The error did not reach window.onerror, which is why it survived my checks. The list is now one element per item, keyed on the element, and the rule between the two groups is drawn by the item it belongs to. (不具合修正:ツールの並び替えをすると、サイドバー全体が動かなくなっていました。 項目をドラッグして並び替えると、「設定」「システム情報」「シェルを開く」が押しても 反応しなくなります。何かに覆われていたのでも、ボタンが作り直されていたのでもなく、 画面の更新そのものが止まっていました。一覧は <template v-for> の中にボタンと 条件付きの区切り線を入れ、キーを template にだけ付けていました。繰り返し1回が 2要素になったり1要素になったりするため、順序が変わると Vue が要素を対応づけられず、 自身の更新処理の中で例外を投げて(insertBefore: parameter 1 is not of type Node) 更新を放棄していました。この例外は window.onerror に届かないため、私の検査を すり抜けていました。一覧を1項目1要素・要素にキーを付ける形に改め、区切り線は その上の項目が引くようにしました。)

  • Fixed: "act as root" did nothing for a saved SSH connection. SCP offers the SSH connections because it signs in the same way — but opening one still went through SFTP, which has no shell behind it and cannot put a command through sudo. So the tick was there, the password was taken, and /root came back unreadable anyway. Which protocol the screen is set to is now sent with every request, and SCP opens over SCP even when the connection was saved as SSH. (不具合修正:保存済みの SSH 接続先では「root として操作する」が効いていませんでした。 SCP はサインインの仕方が同じなので SSH の接続先を候補に出しますが、開くときは SFTP を 使っていました。SFTP の背後にはシェルが無く、sudo を通せません。そのため切り替えは あるのにパスワードも受け取られ、それでも /root は読めないままでした。画面がどの手順に 設定されているかを毎回の要求に添えるようにし、SSH として保存された接続先でも SCP は SCP で開きます。)

  • The file list works like a file manager now. It was a table with three buttons on every row, and a folder could only be entered by hitting its name exactly. Now: a row is selected by clicking it, a folder opens on double-click, and the right button offers what can be done with that row — open, download, copy the path, rename, change permissions, delete. The columns sort (folders stay above files whichever one is used), ".." walks up from inside the list, the owner is shown, and there is a refresh button. (ファイルの一覧を、ファイル管理ソフトらしい操作にしました。 これまでは各行に ボタンが3つ並ぶ表で、フォルダーは名前を正確に狙わないと開けませんでした。行は クリックで選択、フォルダーはダブルクリックで開き、右クリックでその行にできること (開く・自分のファイルへ取り込む・パスをコピー・改名・権限を変更・削除)が出ます。列は 並べ替えられ(どの列で並べてもフォルダーが上に残ります)、一覧の中から「..」で上の階層へ 戻れ、所有者の列と再読み込みのボタンを足しました。)

  • The master key prompt says how long the key lasts. Where the key is asked for, under the box: it is held until the browser is closed, for that session and nothing more. Somebody typing a master key deserves to know what they are agreeing to before they type it, not after. (マスターキーを尋ねる場所に、有効期間を明記しました。 入力欄の下に「このマスター キーはブラウザーを閉じるまで有効です(このセッションのみ有効)」と出します。マスター キーを打つ人は、打つ前に何に同意しているのかを知っているべきです。)

  • Fixed: the saved list could be chosen from without the master key, and then would not connect. A name and an address in RegiBase are not secret and read back without the key; the password and the private key are, and do not. So a locked list looked complete — every server there, selectable — and failed at the moment of use, with the key asked for only once the connection had already been attempted. Offering a choice that cannot be carried out is worse than offering none. Choosing the list now asks for the key in the place the list would have been — "Please enter the RegiBase master key." — on both the SSH screen and file transfer. (不具合修正:マスターキーが無くても保存済みの一覧から選べてしまい、選んでも接続でき ませんでした。 RegiBase では名前やアドレスは秘密の項目ではないため鍵が無くても読め、 パスワードや秘密鍵は読めません。そのため一覧は完全に見え、どれでも選べるのに、使う 段になって失敗し、鍵を尋ねられるのは接続を試みたあとでした。実行できない選択肢を 差し出すのは、何も出さないより悪いことです。リストを選んだ時点で、一覧があった場所に 「RegiBaseのマスターキーを入力して下さい」と出して先に尋ねるようにしました。SSH 画面と ファイル転送の両方です。)

  • SCP offers the SSH connections again. Splitting the lists by type was right for storage but wrong for SCP at the screen: SCP signs in over SSH with the same account and the same key, so every connection saved as SSH is one SCP can open. With the lists split, sixteen saved servers became an empty list on a screen that could have opened any of them. SCP's list now offers the SSH connections as well. Where they are stored has not widened — that is still one collection per type. (SCP のリストに SSH の接続先を再び出すようにしました。 種別でリストを分けたのは 保存先としては正しかったのですが、画面の SCP については誤りでした。SCP は SSH に 同じアカウント・同じ鍵でサインインするため、SSH として保存した接続先はすべて SCP で 開けます。リストを分けた結果、16件が保存されているのに一覧が空になり、開ける相手が 1件も出なくなっていました。SCP の一覧には SSH の接続先も出します。保存先が広がった わけではありません ― 保存先は従来どおり種別ごとに1つです。)

  • The settings name the groups the way they were asked to be named. They had been relabelled "SSH", "SCP", "FTP and SFTP" and "Mail (SMTP, IMAP, POP3)" — wording of my own, in which Telnet had quietly disappeared. They read "SSH / Telnet", "SCP", "FTP / SFTP" and "SMTP / IMAP / POP3" again. (設定の群の名前を、ご指示どおりの括り方に戻しました。 私が勝手に「SSH」「SCP」 「FTP and SFTP」「Mail (SMTP, IMAP, POP3)」と付け替えており、Telnet が消えて いました。「SSH/Telnet」「SCP」「FTP/SFTP」「SMTP/IMAP/POP3」に戻しました。)

  • The SSH screen no longer repeats its own name. It carried a heading reading "SSH and Telnet" directly under the menu entry that already says so — the only screen of the thirteen to do it, and the same words twice in the same glance. The heading is gone, and the styling that existed only for it went with it. (SSH の画面で、自分の名前を繰り返すのをやめました。 左のメニューに「SSH・Telnet」と 書いてあるすぐ下に、同じ「SSH・Telnet」という見出しを置いていました。13画面のうちこの 画面だけで、同じ言葉が一目の中に二度あることになります。見出しを外し、その見出しの ためだけにあった体裁指定も併せて削除しました。)

  • FTP and SCP no longer share one list. The storage was split by type, but the screen was not: one list offered every saved FTP, SFTP, SCP and SSH connection together, so a server saved for FTP was offered to SCP — a machine that cannot answer the protocol being asked for — and the fact that the two are kept in different collections was hidden. The type is chosen on the screen now, and it picks the list as well as the protocol: SCP shows the SCP list, FTP and SFTP share theirs, SSH keeps its own. (FTP と SCP でリストを分けました。 保存先は種別ごとに分けたのに、画面のリストを 分けていませんでした。1つのリストに FTP・SFTP・SCP・SSH の保存済み接続先がすべて並び、 FTP 用に保存した相手が SCP の候補として出ていました。その機器は求められた手順に 応えられません。別のコレクションに保存されているという事実も隠れていました。画面で種別を 選ぶようにし、種別が手順とリストの両方を決める形にしました。SCP は SCP の一覧、 FTP と SFTP は共通の一覧、SSH は SSH の一覧です。)

  • Picking from the list no longer connects on its own. On the file transfer screen, choosing a saved connection opened it there and then, while the SSH screen waited for the button that says so. Both wait now. (リストから選んだだけでは接続しないようにしました。 ファイル転送の画面では保存済みを 選んだ瞬間に接続していましたが、SSH 画面はボタンを押すまで待ちます。両方とも待つように 揃えました。)

  • The menu entry is "File transfer" again. It had been renamed to the list of protocols it speaks, which is not what it is for. (メニューの項目名を「ファイル転送」に戻しました。 扱える手順の名前を並べた表記に なっていましたが、それはこの画面が何をするためのものかを表していません。)

  • The file transfer screen now works the way the SSH screen does. The two do the same job — name a server, then use it — and asked for it differently: the SSH screen put the choice first and everything under it in one card, while file transfer had the typing in one card and the choice in another below it, with the two buttons in the opposite order and the opposite default. Nothing was wrong with either on its own; having both was. File transfer now follows the SSH screen exactly — the same choice, in the same order, in one card, with the chosen connection shown back the same way. (ファイル転送の画面を、SSH 画面と同じ操作に揃えました。 どちらも「相手を決めて 使う」という同じ仕事なのに、訊き方が違っていました。SSH 画面は選択を先頭に置いて その下にすべてを1枚で収めていたのに対し、ファイル転送は手入力が上のカード、選択が下の カードで、ボタンの並び順も既定も逆でした。片方だけを見れば問題はなく、両方ある ことが問題でした。ファイル転送を SSH 画面に合わせ、同じ選択・同じ順序・1枚のカードに し、選んだ接続先の表示の仕方も揃えました。)

  • Where connections are kept now shows every kind at once. Separating the storage by kind arrived with a selector in front of it: one kind was on screen and the other three were not, so there was no way to see at a glance what was set up and what was not — and only ever one list picker, whatever you were looking for. All four are listed together now, each with its own collection and its own field assignment, each saved on its own. (接続先の保存先設定で、4つの種別すべてを同時に表示するようにしました。 種別ごとに 保存先を分ける機能を入れた際、その前に種別を選ぶ欄を置いてしまいました。画面に出るのは 1種別だけで残り3つは見えず、何が設定済みで何が未設定かが一目で分からないうえ、 リスト選択も常に1つしかありませんでした。SSH・SCP・FTP/SFTP・メールを並べて表示し、 それぞれに保存先コレクションと項目の割り当てを持たせ、個別に保存できるようにしました。)

  • The same choice of "type it in" or "pick from the list" on both screens. The file transfer screen had a card for typing and a card for the saved list sitting one above the other, both asking for the same server with nothing to say which one was in use. It is one card with the same two buttons the SSH screen has. (ファイル転送の画面にも、SSH と同じ「手入力する/リストから選ぶ」の切り替えを付けました。 これまでは手入力のカードと保存済みのカードが上下に並び、どちらを使っているのかが 分からないまま、同じ相手を二重に尋ねていました。1枚にまとめ、SSH 画面と同じ2つのボタンで 切り替えます。)

  • Fixed: merging the SSH screen hid the fields you type into. Naming the server became one list, and "type an address below" was the first entry in it. Choosing a saved connection then made the typing fields disappear with nothing on screen to say they could come back — so they read as deleted. It was worst for Telnet, which is only ever typed in and never saved, and so looked unreachable. How the server is named is now a choice shown as one: Enter it by hand or Pick from the list, always visible, always switchable. The typed details are kept when you go to the list and back. (不具合修正:SSH 画面を1枚にまとめた際、手入力欄が隠れていました。 相手の指定を 1つの一覧にまとめ、「下に直接入力する」をその先頭の項目にしていました。保存済みを選ぶと 手入力欄が消え、戻れることが画面のどこにも書かれていないため、消したようにしか 見えませんでした。とくに Telnet は手入力しかなく保存もしないため、接続できないように 見えていました。相手の指定方法を選択として画面に出す形に改めます。「手入力する」と 「リストから選ぶ」を常に表示し、いつでも切り替えられます。リストへ行って戻っても、 入力済みの内容は保たれます。)

  • A folder only root can read can now be opened over SCP. There was no way to elevate at all: the listing, and every rename, delete and permission change with it, ran as the account that signed in, so a directory belonging to root came back empty — indistinguishable from an empty one. Ticking Act as root asks for the sudo password on the spot, uses it for that request, and keeps it nowhere: not in the settings, not in RegiBase, not on disk. It is held in the open page and nothing else, so reloading asks again. That is deliberate — a password that is never written down cannot be read out of a stolen database.

What it does not cover: downloading and uploading a file. SCP carries the file itself over the very input the password would have to be typed into, so the two cannot share a connection. Those two actions stay unelevated and the far end refuses them as it always did, rather than appearing to work and quietly returning nothing. (root しか読めないフォルダーを SCP で開けるようにしました。 これまでは昇格する 手段が一切なく、一覧も改名・削除・権限変更もサインインした利用者のまま実行されて いました。root 所有のディレクトリは空として返り、本当に空の場合と見分けがつきません でした。「root として操作する」を入れるとその場で sudo のパスワードを尋ね、その リクエストにだけ使い、どこにも保存しません。設定にも RegiBase にもディスクにも 残さず、開いている画面の中だけで保持するため、再読み込みすれば再び尋ねます。書き残さ ないものは、データベースを盗まれても読み出せないという考えによるものです。

対象外:ファイルのダウンロードとアップロード。 SCP はファイル本体を、パスワードを 打ち込むべき入力そのものに流すため、両立できません。この2つは昇格せず、これまでどおり 接続先に拒否されます。動いたように見せて黙って何も返さないことはしません。)

  • "Create one for me" now builds a collection shaped for the kind you asked for. It made one shape for everything, so a mailbox list arrived with a private key field and an SSH list with a sender address — fields nobody would ever fill in, on every record. There is a template per kind now: SSH and SCP carry the key fields, FTP and SFTP carry the password ones, and mail carries what a mailbox actually needs. The type field offers only the types that collection is for, rather than all seven. The templates belong to NetBase and are handed to RegiBase outright, so nothing had to be added to RegiBase to make them possible, and a collection built by hand still works exactly as well — which field means what is decided by the assignment, not by these names. (「作ってもらう」が、選んだ種別に合った形のコレクションを作るようになりました。 これまではどの種別でも同じ1つの形を作っていたため、メールの一覧に秘密鍵の欄が、 SSH の一覧に差出人アドレスの欄が付いてきました。誰も埋めない欄が全レコードに並ぶ 状態です。種別ごとのテンプレートを用意しました。SSH と SCP は鍵の欄を、FTP・SFTP は パスワードの欄を、メールはメールボックスに実際に要るものだけを持ちます。種別の欄も、 そのコレクションが対象とする種別だけを選択肢に出します。テンプレートは NetBase 側に あり、RegiBase へはそのまま渡すだけなので、RegiBase に何かを追加する必要はありません。 手作りのコレクションがこれまでどおり使えることも変わりません。どの項目が何にあたるかは、 これらの名前ではなく割り当てが決めるためです。)

  • Each kind of connection now has its own place in RegiBase. One collection held everything, which was wrong the moment the kinds diverged: SCP reuses the SSH credentials, but FTP is a different account on a different machine, and both were being read out of the same list. SSH, SCP, FTP-and-SFTP and mail each name their own collection and their own field assignment now. Naming the same collection for several kinds is expressly allowed — SSH and SCP usually are the same list — so separating them costs nothing to anyone who does not need it. Nothing moves on upgrade: a kind that has not been given a collection of its own still reads the single one chosen before, so the list is unchanged until you separate something deliberately. (接続先の種別ごとに、RegiBase の保存先を分けられるようにしました。 これまでは すべてを1つのコレクションに入れており、種別が食い違った時点で破綻していました。SCP は SSH の情報をそのまま使いますが、FTP は別の機器の別アカウントです。それを同じ一覧から 読んでいました。SSH・SCP・FTP/SFTP・メールが、それぞれ自分のコレクションと項目の割り当てを 持ちます。複数の種別に同じコレクションを指定して構いません ― SSH と SCP はたいてい同じ 一覧です。更新しただけでは何も動きません。自分のコレクションをまだ持たない種別は、 これまでの単一の設定をそのまま読むため、意図して分けるまで一覧は変わりません。)

  • A record that does not say what it is, is no longer assumed to be SSH. It is taken as whatever the collection it was read from is for. The old assumption put FTP servers in the SSH list. (種別が書かれていないレコードを、SSH と決めつけるのをやめました。 読み出した コレクションが何のためのものかで判断します。これまではFTPの機器がSSHの一覧に並んでいました。)

  • SFTP is no longer offered as a separate kind to create. It is not a kind of FTP but a subsystem of SSH, and since a saved SSH connection is opened for files over SFTP already, offering it separately only asked people to decide something that made no difference. FTP keeps its encryption choice, which is the question that was actually being asked. A connection saved as SFTP before this still works and still shows its own kind. (SFTP を、新規作成の種別としては出さないようにしました。 SFTP は FTP の一種では なく SSH の副系統です。保存済みの SSH 接続先はすでに SFTP でファイルを開くため、別々に 出しても違いの無い選択を迫るだけでした。FTP には暗号化の選択肢が残っており、実際に 訊きたかったのはそちらです。これまでに SFTP として保存した接続先はそのまま動き、 種別も SFTP のまま表示されます。)

  • The speed test now lets you choose what to measure against. It measured against M-Lab and used Cloudflare only when M-Lab could not be reached at all, and there was no way to ask for the other one. A network that reaches one may not reach the other — M-Lab needs an outbound WebSocket — and two independent readings of the same line are worth more than one, so both are now offered: Nearest (automatic), M-Lab or Cloudflare. Naming one means it, rather than quietly measuring against the other: asking for M-Lab where no M-Lab server answers now says so instead of handing back Cloudflare's figure under M-Lab's name. (速度テストで、どこと測るかを選べるようにしました。 これまでは M-Lab で測り、 M-Lab へまったく届かないときだけ Cloudflare に落ちる作りで、もう一方を指定する 手段がありませんでした。片方に届く回線がもう片方に届くとは限らず(M-Lab は外向きの WebSocket を必要とします)、同じ回線を独立した2つの物差しで測れるほうが確かなため、 「最も近いところ(自動)」「M-Lab」「Cloudflare」から選べるようにしました。名指しした 場合はその指定を守ります。M-Lab を指定して1台も応答しないときは、Cloudflare の数値を M-Lab の名前で返すことはせず、届かなかったとお伝えします。)

  • Fixed: the speed test reported someone else's latency. When measuring against M-Lab, the throughput came from the M-Lab server but the latency and jitter shown beside it were timed against speed.cloudflare.com — a different network, a different distance. The two numbers on screen described two different paths. Latency is now timed against the very machine the throughput came from. (不具合修正:速度テストの遅延が、別の相手のものになっていました。 M-Lab で測る とき、速度は M-Lab のサーバーから得ているのに、その横に並ぶ遅延とジッターは speed.cloudflare.com に対して計っていました。相手も距離も違うため、画面の数値が 別々の経路の話になっていました。遅延も、速度を測ったのと同じ機器に対して計るよう にしました。)

  • A saved SSH connection can now be browsed for files. Sixteen servers were saved here as SSH connections, and the file transfer panel offered none of them: it asked for a connection of type SFTP or SCP, and refused the rest with "this connection is not a file transfer connection". But it is the same machine, the same account and the same key — the only difference is which subsystem is asked for after the sign-in. An SSH connection now opens over SFTP, and over SCP for a server that offers a shell but no SFTP subsystem. (保存済みの SSH 接続先で、そのままファイルを開けるようにしました。 ここには SSH 接続先が16件保存されていましたが、ファイル転送の一覧には1件も出ませんでした。 種別が SFTP か SCP のものしか受け付けず、それ以外は「転送用の接続ではない」と撥ねて いたためです。しかし同じ機器・同じアカウント・同じ鍵で、違うのはサインイン後にどの 副系統を頼むかだけです。SSH の接続先は SFTP で開き、SFTP を持たない相手には SCP で 開くようにしました。)

  • The speed test now asks which server is nearest, instead of being told. M-Lab returns its candidates in an order worked out from the address the request came from — a guess about geography, and here it put Seoul ahead of Tokyo. A measurement to the wrong country reads as a slow line rather than a distant one. The nearest few are now asked directly, one timed connection each, and the quickest is used: it costs about half a second and replaces a guess with a measurement. On this server it moved the reading from 187 Mbps down to 427. (速度テストの計測先を、言われるままではなく実測で選ぶようにしました。 M-Lab は 接続元のアドレスから推定した順で候補を返しますが、ここではソウルが東京より前に 来ていました。国の違う相手を測ると、遠いのではなく回線が遅いように見えます。上位数件へ 実際に接続して所要時間を測り、最も速いものを使います。かかるのは約0.5秒で、推測を実測に 置き換えられます。当サーバーでは下りの読みが 187 Mbps から 427 Mbps になりました。)

  • SCP can now actually be used. The protocol was added, tested and reachable by the server — and by nothing else: the file transfer panel offered only SFTP and FTP, the list of saved connections filtered SCP out, and every label still read "FTP and SFTP". An SCP connection could be saved and never opened. It is now offered wherever SFTP is. (SCP が実際に使えるようになりました。 実装と試験は済み、サーバー側では動いて いましたが、画面のどこからも選べませんでした。転送画面の選択肢は SFTP と FTP だけ、保存済み接続先の絞り込みは SCP を落とし、名称もすべて「FTP・SFTP」のまま。 保存はできても開けない状態でした。SFTP が使えるところでは SCP も選べます。)

  • "Which field means what" is now "Field assignment", and the master key is named for what it belongs to. A heading that describes a question rather than naming a thing makes the reader do the work twice. "Master key" alone does not say whose. (「どの項目が何にあたるか」を「項目の割り当て」に、「マスターキー」を 「RegiBase参照のためのマスターキー」に改めました。 問いかけを見出しにすると、 読む側が二度手間になります。「マスターキー」だけでは何の鍵か分かりません。)

  • The administration settings read better in Japanese. "Devices — read the device list" had been translated as "device survey", which is not what it does; the two buttons that set every tool at once read as fragments; and the wording for scanning was inconsistent with the rest of the app. (管理設定の日本語を整えました。 Devices — read the device list が 「接続機器調査」と訳されていましたが、実際は一覧を見るだけです。全ツールを一括で 切り替える2つのボタンは「すべて全利用者」のように語として立っておらず、探索まわりの 用語も他の画面と揃っていませんでした。)

  • The settings dialog is four groups, not eleven headings. It had grown by addition until the terminal's font, the shell's language and the shell's log sat in three separate places with the connection list wedged between them, and the word "language" appeared twice at the same size meaning two different things — the app's language and the shell's. The subjects are now Appearance and language, Terminal (shell and SSH), Connections and keys and The list of tools, each with its own title and a rule between them, and the settings inside a group sit a level below it. A setting an administrator changes for the whole server now says so on its label, instead of looking like one of the reader's own. (設定画面を、見出し11個の一本道から4つの束に改めました。 追加を重ねた結果、 端末のフォント・シェルの言語・シェルのログ記録が3か所に分かれ、その間に接続先 リストが挟まる並びになっていました。「言語」という同じ語が同じ大きさで2か所に出て、 一方はアプリの言語、もう一方はシェルの言語を指していました。外観と言語/ 端末(シェルとSSH)/接続先と鍵/ツールの並びの4束にまとめ、束ごとに見出しと 区切りを置き、その中の項目は一段下げました。管理者がサーバー全体に対して変える 設定には、その旨をラベルに明示しました。)

  • NetBase now carries its own copy of phpseclib 3, under its own name. Nextcloud ships only phpseclib 2, which cannot read an Ed25519 or an ECDSA private key and has no SCP at all. Until now the newer library arrived by accident — another app happened to bundle it — so whether a modern key worked depended on whether an unrelated app was installed, and where it was not the failure was quiet.

Carrying a second copy under the same name would only have moved the problem: one library can answer to a name in a running PHP process, so whichever app loaded first would decide which copy both apps used, and NetBase would be running on a version it never shipped or tested. The copy therefore lives under OCA\NetBase\Vendor\phpseclib3, which collides with nothing. NetBase always uses the library it ships; every other app keeps using its own, untouched. Nothing needs registering — Nextcloud's own autoloader finds it. (phpseclib 3 を、NetBase 専用の名前で同梱するようにしました。 Nextcloud 本体は phpseclib 2 のみで、Ed25519 や ECDSA の秘密鍵を読めず、SCP も持って いません。これまで新しい版は「別のアプリがたまたま同梱していた」ために使えて いただけで、無関係なアプリの有無で鍵が使えるかどうかが決まっていました。

同じ名前のまま2つ目を積んでも問題は移るだけです。1つの PHP 処理の中で1つの 名前に応えられるライブラリは1つだけで、先に読み込まれたアプリの版が両方の アプリに使われます。つまり NetBase は、同梱も試験もしていない版で動くことに なります。そこで OCA\NetBase\Vendor\phpseclib3 という NetBase 専用の名前に 改めました。衝突が起きないため、NetBase は常に自分が同梱した版で動き、他の アプリは自分の版のまま一切影響を受けません。登録の仕組みも不要で、Nextcloud 本体の読み込み器がそのまま見つけます。)

  • SCP has been added to the saved connections. A server can offer SSH without the SFTP subsystem, and on that machine SCP is the only way to move a file. SCP itself copies a named file and nothing else — no listing, no rename, no mkdir — so those are supplied over the shell the SSH connection already provides, with every argument quoted. It is offered only where this server has a library that can speak it. (接続の種類に SCP を追加しました。 SFTP サブシステムを持たない SSH サーバーでは、 SCP だけがファイルを送る手段になります。SCP 自体は指定したファイルを複製するだけで、 一覧・改名・作成の機能を持たないため、それらは SSH のシェル越しに補っています(引数は すべて安全に括ります)。対応ライブラリがあるサーバーでのみ選択肢に現れます。)
  • Telnet is no longer a box of its own. It was a second card asking for the same host and port as the one above it. The connection form now carries a type beside the address — SSH or Telnet — and the fields only SSH needs appear only for SSH. (Telnet の専用枠をやめました。 すぐ上の欄と同じホストとポートを二度尋ねる作りに なっていました。接続フォームにアドレスと並べて種別(SSH/Telnet)を置き、SSH でしか 使わない欄は SSH のときだけ出します。)
  • Words that explained nothing have been replaced, and the settings screen reads as separate subjects again: a rule between the headings, and the long grey paragraphs cut to what is worth saying. (意味の伝わらない言葉を入れ替え、設定画面を読めるように整えました。「サーバーを 調べる」→「SSHサーバーを調べる」、「サーバーを操作する」→「サーバーに接続する」、 「接続先の保存先」→「SSH/Telnet/FTP/SFTP/SCPの接続先リスト」、「端末の記録」→ 「シェルのログ記録」。節の間に区切り線を入れ、説明文も刈り込みました。)
  • A measurement now runs for at least two seconds. A small size could end an upload while the first megabytes were still sitting in the socket buffer, which reported the speed of the buffer rather than of the line — an upload came out faster than the download. The size still caps the traffic, but only once the measurement has had long enough to mean anything. (測定は最低2秒は行うようにしました。 小さいサイズを選ぶと、最初の数MBが送信バッファに 入った時点で上りが終わってしまい、回線ではなくバッファの速さを報告していました(上りが 下りより速く出る原因です)。サイズによる通信量の上限は残しつつ、意味のある長さに達する までは打ち切らないようにしました。)

  • Saved connections have moved into RegiBase, and the ones stored before this release are gone. Please write down anything you need before updating: host, user name and settings can be typed again, but a password or a private key kept only in NetBase cannot be recovered afterwards. Nothing is migrated, deliberately — the old store could be read back by the server that held it, and carrying those secrets across would have carried that weakness with them. (保存済みの接続先は RegiBase へ移行し、これまでに保存した接続先は消えます。 更新前に必要な情報の控えをお取りください。ホスト・ユーザー名・設定は入力し直せますが、 NetBase にしか無いパスワードや秘密鍵は後から取り出せません。移行は意図的に行いません。 従来の保存方式はサーバー自身が読み戻せる形だったため、そのまま持ち越すと同じ弱さを 持ち込むことになるからです。)

  • Why the move. A password in RegiBase is sealed in the browser with a key derived from a master key that is stored nowhere — not in the database, not in the configuration, not on disk. NetBase could not offer that on its own: its own store was encrypted with the instance secret, which sits on the same server as the data it protects. A stolen database is now a database of ciphertext. (移行の理由。RegiBase のパスワードはブラウザ側で封印され、その鍵はどこにも保存され ないマスターキーから導かれます。データベースにも設定にもディスクにも残りません。NetBase 単独ではこれを提供できませんでした。従来はインスタンス秘密鍵で暗号化しており、それは 守るべきデータと同じサーバー上にあるからです。データベースを盗まれても、そこにあるのは 暗号文だけになります。)
  • RegiBase is now required in order to save a connection. Without it, a server can still be reached by typing its details each time; nothing is stored, and nothing needs to be. (接続先の保存には RegiBase が必要になりました。 無い場合でも、毎回入力すれば接続は できます。その場合は何も保存されません。)
  • The collection is yours, and so is its shape. NetBase does not demand a collection built to its own design: you say which field is the host, which is the password, and so on, and it adapts. A ready-made collection can be created for you if you would rather not build one. A password can only be matched to a field RegiBase itself treats as secret, so it can never be written in the clear. A public key is deliberately not treated as secret. (コレクションの構成は自由です。 NetBase 専用の形を強いません。どの項目がホストで、 どれがパスワードかを指定すれば、それに合わせます。用意されたコレクションを自動で作る こともできます。パスワードは RegiBase 側で秘匿とされた項目にしか割り当てられないため、 平文で書かれることはありません。公開鍵は意図的に秘匿として扱いません。)
  • The master key is asked for once per browser session and is forgotten when that session ends. It is never written down on the server. (マスターキーはブラウザのセッションごとに一度だけ尋ね、セッションが切れると失われます。 サーバー側に書き残すことはありません。)

  • The old store for saved connections has been dropped. 0.6.0 moved connections into RegiBase and said that what was kept in NetBase itself would not come with them; the table is now gone, and so are the passwords it still held. That is the point of it: they were sealed with a secret kept on the same server as the data. (接続先の旧保存領域を削除しました。 0.6.0 で接続先は RegiBase へ移り、NetBase 側に 残っていたものは引き継がないとお伝えしていました。その表を削除し、そこに残っていた パスワードも消えました。これが目的です。旧方式はデータと同じサーバーにある鍵で 暗号化されており、守りとして弱いものでした。)

  • Errors now speak the language you read. Everything a tool refuses to do — a bad host, a file that is not there, a server that would send your password in the clear — was written in English wherever it was raised. It is now turned into your own language at the one place every error passes through, and the messages that carry a value (a path, a host, a byte count) were rewritten so the value has a place to go. All twenty languages. (エラーの文言を、お使いの言語で表示するようにしました。 不正なホスト名、存在しない ファイル、パスワードが平文で送られる状況など、これまで英語のまま出ていた文言を、 すべてのエラーが通る一箇所で翻訳するようにしました。パス・ホスト名・バイト数などの値を 含む文言は、値を差し込める形に書き直しています。20言語すべてに対応。)
  • The free-domain search now says what it found, not how it asked. Hovering a result used to show "HTTP 404", which is the registry's answer, not yours. It now says what that means — free, taken, or why it could not be decided — and which registry or name server answered, with the technical reason kept on a second line. (空きドメイン検索の説明を、意味のある文に変えました。 結果にカーソルを合わせると 「HTTP 404」と出ていましたが、これはレジストリ側の答えであって、お客様への答えでは ありません。空きか、登録済みか、なぜ判定できなかったかを述べ、どのレジストリ/ ネームサーバーが答えたかも示します。技術的な理由は2行目に残しています。)

  • The internet speed test now measures against M-Lab — the measurement behind Google's own speed test — instead of pulling from one fixed endpoint. It asks where the nearest measurement server is and uses that, which is the difference between measuring your line and measuring the distance to somebody else's CDN. Nothing has to be installed: the protocol is a WebSocket, and NetBase speaks it directly. Where M-Lab cannot be reached at all — an instance with no way out, or a blocked connection — the previous HTTP test still stands behind it, so the tool never simply stops working. (回線速度の測定を M-Lab に切り替えました。 Google 自身の速度テストの実体であり、 固定の配信元から引くのではなく、最寄りの測定サーバーを尋ねてそこで測ります。これは 「自分の回線を測る」ことと「他社CDNまでの距離を測る」ことの違いです。追加の導入物は 不要で、通信方式(WebSocket)を NetBase が自前で話します。M-Lab に到達できない環境 (外部へ出られない・接続が塞がれている)では、従来のHTTP測定に自動で切り替わるため、 機能が止まることはありません。)

  • The reading is presented as a guide, because that is what it is. The figure moves with the server that happened to be nearest and with the time of day, so the panel now names the server it measured against and says so plainly. (測定値は「目安」として示すようにしました。 そのときの最寄りサーバーや時間帯に よって値は動きます。どのサーバーで測ったかを画面に表示し、目安である旨も明記します。)
  • The size setting is now a ceiling on the traffic a run may use. A measurement that runs for ten seconds on a fast line moves a great deal of data; on a metered connection that matters, so the chosen size stops it early. (サイズ指定は「1回の測定で使う通信量の上限」になりました。 高速回線で10秒測ると 相応の通信量を使います。従量制の回線では無視できないため、指定したサイズで打ち切ります。)

  • The RegiBase master key is asked for when a connection is used, not in the settings. It never belonged on a settings screen: a settings screen is where things are kept, and this is the one thing that must not be. It is now asked for at the moment a saved connection is needed, held for that browser session alone, and forgotten when the session ends. It is written nowhere — not in the settings, not in the database, not on disk. (RegiBase のマスターキーは、設定画面ではなく接続を使う時点で尋ねるようにしました。 設定画面は「保存する場所」であり、マスターキーは保存してはならない唯一のものです。 保存済み接続先が必要になった時点で入力していただき、そのブラウザのセッションの間だけ 保持し、セッションが切れれば失われます。設定にもデータベースにもディスクにも書きません。)

  • The terminal log is a switch now, and it keeps 5,000 steps by default. It was a number that started at zero, which read like a setting somebody had forgotten to fill in. Recording is still off until it is switched on. (端末の記録はチェック式にし、既定で5,000行を保持するようにしました。 従来は0から 始まる数値欄で、設定し忘れのようにも見えました。記録が既定で無効である点は変わりません。)

Added

  • A terminal can now keep a record of what was done in it. A shell on this server and an SSH window are the two places in NetBase where something is done rather than merely looked at, and until now nothing was left afterwards to say what that was. One step is a line you typed together with the answer that came back — the answer arrives after the Return that asked for it, so the two are paired the way you would read them, not the way they arrive. The colours and cursor moves a terminal threads through its output are taken out, so what is kept reads as words. Two limits hold it down: a number of steps per window, oldest dropped first, and a number of days counted from a window's most recent step — so a window still in use is never cut short, and one finished with goes as a whole. What is kept belongs to the account that did the work: nobody else can read it, and it can be thrown away one session at a time or all at once. Nothing is recorded until you ask for it: the number of steps starts at zero, and zero means keep none. (【端末の記録】シェルとSSHの画面で行った操作を残せるようにしました。1ステップは、入力した 1行と、それに返ってきた答えです。答えはEnterの後に届くため、読むときの並びで対応付けます。 出力に混ざる色や画面制御の符号は取り除き、文字として読める形で保存します。上限は2つで、 画面ごとの「残すステップ数」(古いものから削除)と、「残す日数」(その画面の最後の記録から 数えます)。使用中の画面が途中で切られることはなく、日数を過ぎたものはセッションごと消えます。 記録はその操作を行ったアカウントだけのもので、他の方は読めません。セッション単位でも一括でも 削除できます。初期値は「保存しない」です(ステップ数0=何も記録しません)。)

Fixed

  • The "Run command" button beside a saved SSH connection did nothing. It was bound to a method that did not exist — and Vue does nothing at all for a click bound to a method it has not got, so the button looked dead while the console beside it worked perfectly. The same was true of the "Run" button for the ready-made questions. Both now run the line and show the output, the exit status and how long it took. (保存済み SSH 接続先の「コマンド実行」ボタンが無反応でした。 存在しない メソッドに結び付けられており、Vue は未定義のメソッドへの @click では何もしません。 そのため、隣の対話コンソールは正常に動くのにボタンだけが死んでいました。よくある質問を 選ぶ「実行」ボタンも同じ状態でした。どちらも実行し、出力・終了状態・所要時間を表示します。)

  • After an upload, the file list did not refresh. The file arrived — it was the listing that stayed behind. Upload read the folder back from the path box rather than from the listing itself, and the box is bound to whatever the reader may have typed into it, so it drifts from what is on screen. Every other action on that panel already read it back from the listing. (アップロードの後、ファイル一覧が更新されませんでした。 ファイル自体は届いており、 一覧だけが古いままでした。アップロード処理が、一覧そのものではなくパス入力欄を基準に 読み直していたためです。入力欄は利用者が打ち込んだ値と結ばれているため、表示中の位置から ずれます。同じ画面の他の操作は、いずれも一覧を基準に読み直していました。)

  • whois told you nothing about a .jp domain. Every .jp is answered by JPRS, which does not write Label: value the way most registries do. It writes [Label] and then spaces — no colon — and for an organisational domain it puts an index letter in front: a. [ドメイン名]. The Japanese labels had been in the patterns from the start, but every one of them demanded a colon that JPRS never sends, so they could not match: .com returned six or seven details and .jp returned none. Both of JPRS's shapes are now read, an organisational domain's expiry is taken from inside its status line (there is no separate one), and a label JPRS sends with nothing after it no longer becomes an empty field. The ordinary shape is untouched, and a test holds both to the registries' own wording.

One line of that fix was wrong in a way worth naming. A whois server answers over a socket and ends its lines with CRLF; the pattern for name servers was anchored as if they ended with LF, so it matched nothing and a .jp domain came back with its dates but no name servers. The test did not catch it because sample text typed into a test file ends with LF alone — it passed while the real thing failed. The samples are sent through the same line endings a socket would use now, and the test fails without the fix. (whois が .jp ドメインの情報を何も返していませんでした。 .jp はすべて JPRS が 応答しますが、JPRS は多くのレジストリのような ラベル: 値 ではなく、[ラベル] の 後にコロンを置かず空白だけで値を書きます。組織用ドメインでは a. [ドメイン名] の ように索引文字が前に付きます。日本語ラベルは当初から規則に書かれていたものの、 JPRS が送らないコロンを要求していたため一致しようがなく、.com では6〜7項目 取れるのに .jp では0項目でした。JPRS の2つの書式を読めるようにし、組織用ドメインに 固有の有効期限行が無い点は状態欄から取り、値の無いラベルを空項目にしないようにしました。 従来の書式には手を触れていません。レジストリの実際の応答を固定データとした検査を添えて います。

なお、その修正のうち1行が誤っており、書き残す価値があります。whois サーバーはソケットで 応答し、行末は CRLF です。ところがネームサーバの規則は行末を LF だけと見なしていたため、 実物では1件も一致しませんでした。日付は取れるのにネームサーバだけが空、という形です。 検査ファイルに書いた文字列の行末は LF のみなので、検査は合格したまま実物が失敗して いました。固定データをソケットと同じ行末に通すよう改め、修正前の規則では 0 件・修正後は 2 件になることを確かめたうえで残しています。)

  • Choosing Telnet left the port at 22. Two methods in the same object had the same name. That is not an error in JavaScript — the second simply replaces the first — so picking Telnet ran the file-transfer panel's version, which set a port on a different form, and the port beside the Telnet choice never moved off 22. (Telnet を選んでもポートが22のままでした。 同じオブジェクトの中に同名の メソッドが2つあり、JavaScript では後の定義が前を置き換えます。そのため Telnet を 選ぶとファイル転送側の処理が走り、別の入力欄のポートを書き換えていました。)

  • Entering the master key did nothing. Saving where connections are kept needs the key, so it was asked for — and then the save was never retried. The key was accepted, the dialog closed, and the setting was unchanged, which from the outside is indistinguishable from the key being refused. What was being attempted is now remembered and carried out once the key is given. The settings dialog also has a box to type the key into: it had the code for one but no field, so the only way to be asked was to press Save and fail. (マスターキーを入れても設定が保存されませんでした。 保存には鍵が必要なので 尋ねてはいたものの、解錠後に保存をやり直していませんでした。鍵は通り、画面は 閉じ、設定は変わらない——外から見れば鍵を拒否されたのと区別がつきません。何をしよう としていたかを覚えておき、鍵が入った時点で実行するようにしました。あわせて設定画面 に鍵の入力欄を置きました(処理は書かれていたのに入力欄が無く、保存して失敗する以外に 尋ねられる道がありませんでした)。)

  • The master key prompt appeared behind the dialog that asked for it. Both were on the same stacking layer, and where two things share a layer the one written later in the page wins. (マスターキーの入力画面が、それを求めた画面の後ろに隠れていました。 同じ 重なりの層に置かれており、層が同じときは後に書かれた方が上になるためです。)

  • Japanese: the settings dialog said something the English never did. Its subtitle had been translated as "switches NetBase's appearance only", but the dialog holds the shell log, the connection list, the SSH key folder and the tool order, and the English says nothing about appearance. Checked across all twenty languages; Japanese was the only one that had drifted. Also corrected in Japanese: "follow the server" read as an order rather than a choice, the tool list called the tools "features" in its body and "tools" in its heading, and folder, browser and sign-in were each spelled two ways. (日本語:設定画面に、英語原文にないことが書かれていました。 副題が「NetBase の見た目だけを切り替えます」と訳されていましたが、この画面にはシェルのログ記録・ 接続先リスト・SSH鍵の置き場所・ツールの並びまで含まれ、英語原文は見た目とは 言っていません。20言語すべてを確認し、ずれていたのは日本語だけでした。あわせて、 「サーバーに従う」という硬い言い回し、見出しは「ツール」なのに本文は「機能」と なっていた不統一、フォルダ/フォルダー・ブラウザ/ブラウザーなどの表記ゆれも 直しました。)

  • SCP: a file's permissions were read too small, and a name with a space in it lost its first word. SCP has no directory listing of its own, so one is read by running ls -la over the shell. Two mistakes were in taking that reply apart: the letters r, w and x already carry their own weight and were being shifted by their position as well, so 0640 came back as 0600; and the timestamp was matched by a greedy pattern that swallowed the beginning of a name like "report 2026.txt". Both are now covered by a test that needs no server. (SCP で、ファイルの権限が実際より小さく読まれ、空白を含む名前が先頭の語を 失っていました。 SCP には一覧の機能が無いため ls -la の出力を解いていますが、 その解き方に2つの誤りがありました。r・w・x は既に桁の重みを持っているのに位置で さらに桁をずらしていたため 0640 が 0600 になり、また時刻の照合が貪欲だったため 「report 2026.txt」のような名前の先頭が飲み込まれていました。どちらもサーバー 不要の検査で押さえました。)

  • Number boxes were as wide as the panel for a value of one to four digits, and the list that matches a collection's fields ran down the dialog one row at a time. Both are now the size of what goes in them. (数値の入力欄が、1〜4桁の値に対して画面幅いっぱいになっていた点と、コレクションの 項目の割り当てが1行ずつ縦に延びていた点を整えました。)

Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
Signatureu4YuDe0Ctfsa9IWS9vdkfHadhPKEjLMSP8qR9lKmCpVuFasm4a1RRfov3XKLVQVw4HhZd6N1PhBE7kZHCx4U8iNDdplTdgmLtggoeTDOlKXQ9KxcASYWOUO7AvH82+g+eQ88P0NqDzA4vQe2jshvIoh+rwHQgrwzWCCaw3uzcNJAXO9UyZ7AK5VS6MfIhugS/Ili2ceTbOs/VcdE2uKuvWLTiKm46qPdcHVK0CT5BuELmVnAmYTpXWO19MRvGm++/Dc8tsOyHEpJlOJJKz7P+friJBJ9bfZvq2rxSJ6K/nLmKJKQnWtrjcPSo/w3sgmb36CpjBLelv2xZEu5quhXs7lUGCd32nsiVOFy1Ppz7PtBeiqBZXQ2aS+JSwZYQ3R3iF84mvf6wLw1UOZxGZRR5I4kvAZZixkvFVAfnYSIIsEjHpnnMKNByNn9pZk+fwDjbaMFWiacoM0BFG1esfQS8U10jAy0xrM/jizBQrOMZunrJr/PugGw51eJ4vK5iVf4USd5YWniwxHnsgwfPKcuJhgtn2BokeC1iFC/gcXLjbSgQjCfJ0q5E3FCYOE/a/h1H3SJZZ50Grx3eybHus1IiC/21eQU6H8e2eAXupDwaVyCpyKxjNOX+y2nOyNSxIQUbDxRL5wzq0tX0B5d6N+O/hhh/FZqyqvvSjkGNUxkhWA=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.5.0
Release Details
UpdatedSept. 10, 2026, 2:33 p.m.
Changelog

Added

  • Clear the ARP table (optional, opt-in). A "Clear the ARP table" button in the device list forgets every remembered address so a refresh shows only what answers now. NetBase runs unprivileged and cannot flush the kernel table itself, so the button stays off until an administrator installs a tiny root helper and a one-line sudoers rule — a "?" beside the button shows the exact script and steps (for bare metal/VM and for Docker/Podman with NET_ADMIN), and NetBase probes the helper with a harmless "--check" and switches the button on by itself once it works. It is clearly marked optional, with a note not to install it if the security trade-off (granting the web user one root command) is unwelcome. (【任意・オプトイン】ARPテーブルのクリア機能を追加。機器一覧の「ARPテーブルをクリア」で 記憶したアドレスを忘れ、更新時に今応答する機器だけを表示します。NetBaseは無権限のため自身では 消せず、管理者が小さなrootヘルパーとsudoers設定を入れるまでボタンは無効。横の「?」から スクリプトと手順(物理/仮想・Docker/Podman=NET_ADMIN)を表示し、NetBaseは無害な「--check」で 検出して自動的にボタンを有効化します。任意である旨と、セキュリティ上のトレードオフに納得 できない場合は設置しない注意も明記。)
  • Every tool now shows when it is working. A slim bar slides across the top of the panel while any request is in flight, and the button you pressed shows a spinner — so an operation with no progress count of its own (Whois, TLS, DNS, mail, SSH, NTP…) no longer looks like nothing is happening. (各機能の「実行中」表示を追加。リクエスト中はパネル上部に細いバーが流れ、押したボタンに スピナーが出ます。進捗の数値を持たない操作(Whois・TLS・DNS・メール・SSH・NTPなど)でも 実行中だと分かります。)

  • You can now give a device your own name. Type a name in a device's properties and it is shown everywhere in place of the discovered one; if a name was picked up from the network, that reported name stays visible in the properties as well. The name you give is kept against the device, so it holds even when the device offers no name of its own. (自分で機器名前をつけることが出来るようにしました。プロパティであなたが記入した名称を 優先的に表示し、もしアナウンス名が取得できている場合は、プロパティで確認できます。)

  • The properties now say how a name was obtained — NetBIOS, mDNS or reverse DNS — so a reported name is never mistaken for a NetBIOS name when it came from somewhere else. (プロパティに、その名前をどの方式で取得したか(NetBIOS/mDNS/逆引きDNS)を表示する ようにしました。取得元が分かるので、mDNSや逆引きの名前をNetBIOS名と取り違えません。)
  • In Docker or Nextcloud-AIO, the Requirements screen now shows a ready-to-use setup recipe. An app cannot bundle PHP extensions, but the official Nextcloud image runs any script placed in /docker-entrypoint-hooks.d/before-starting/ on every start. When NetBase detects it is in a container, it lists exactly what the base image is missing (verified on the official image: the sockets extension, and chromium/iperf3/iproute2) as a one-off script that survives image updates without a rebuild. (Docker・Nextcloud-AIO で動作している場合、「必要要件」画面にそのまま使える導入手順を 表示するようにしました。アプリはPHP拡張を同梱できませんが、公式Nextcloudイメージは /docker-entrypoint-hooks.d/before-starting/ に置いたスクリプトを起動のたびに実行します。 コンテナ内と判定すると、ベースイメージに不足している要素(公式イメージで確認:sockets拡張と chromium/iperf3/iproute2)を、再ビルド不要で更新後も維持される一度きりのスクリプトとして 提示します。)

  • A device that has been switched off is no longer shown as online. Its entry lingers in the kernel neighbour table as STALE, keeping its old MAC, and /proc/net/arp cannot tell that apart from a device that is here now — so a powered-off machine kept a green dot. NetBase now reads the neighbour state (via ip neigh) and, without walking the whole range, confirms the addresses on file with a quick TCP touch: a host that is here answers a connection (open or refused), one that is gone stays silent and is marked offline. On a re-scan the online/offline column is current. (Announce-only devices — an Amazon Echo, say — are still kept online by what they broadcast over mDNS/SSDP in a normal scan.) (電源を切った機器がオンライン表示のままになる不具合を修正。カーネルの近隣テーブルに STALE として古いMACのまま残り、/proc/net/arp では在席中の機器と区別できないため、緑点が 残っていた。近隣の状態を ip neigh で読み、全アドレス走査はせずに、記録済みアドレスを 短いTCP接触で確認するようにした(在席なら接続に応答=開放でも拒否でも、不在なら無応答で オフライン判定)。再スキャンでオンライン/オフラインが最新になる。※mDNS/SSDPで自ら告知する 機器(Amazon Echo等)は、通常スキャンでは告知により在席のまま維持される。)

Removed

  • Device tags have been removed. They could not be seen in the list and served little purpose; identify a device with the name you give it (above) instead. Notes are kept. (機器のタグを廃止しました。一覧に表示されず用途が薄かったためで、機器の識別は上記の 「自分でつけた名前」で行ってください。メモは残しています。)

Changed

  • The free-domain search can hide the taken and the could-not-check results. Two slide switches (the same control the device list uses) sit over the results: one for taken (×) names, one for the ones that could not be checked (?). Undetermined names are hidden by default, so the list leads with what is free or clearly taken. A taken name is shown greyed out; an unchecked one is greyed and struck through once, with the reason in its hover tooltip — no English text on the row. (空きドメイン検索で、使用済みと調査不能のドメインを隠せるようにしました。結果の上に スライドスイッチを2つ(接続機器調査と同じ部品)置き、使用済み(×)用と調査不能(?)用を 用意。調査不能は初期状態で非表示にし、空きと使用済みが先に見えるようにしています。使用済みは グレー表示、調査不能はグレー+一重打ち消し線で示し、理由はマウスオーバーで表示します(行に 英語は出しません)。)
  • The free-domain search shows its results in columns on a wide screen. The list flows into as many columns as the width allows (roughly one per 300px), so a wide window shows two or three side by side and a narrow one stays a single list. Each ending's name always shows in full; the diagnostic note beside it is what gives way when space is tight. (空きドメイン検索の結果を、画面幅に余裕があるとき複数列で表示するようにしました。幅に応じて 自動で2〜3列になり、狭いときは1列に戻ります。語尾(ドメイン名)は常に全部表示し、横の理由 表示のほうを省略します。)
  • Every column in a device's address lines is now aligned. A device with several addresses lays them out in fixed columns so the eye can read down them: the network badge leads in a fixed-width slot (sized for 副ネットワーク9 / another network), then the IP and MAC at their known maxima (18 and 17 characters), then the full vendor name in a column half the width of the OUI database's longest name (54 characters, wrapping if longer, never truncated), then the open ports — which, because everything before them is fixed-width, begin at the same column on every row. Several addresses on one device are separated by a thin dotted rule. (機器のアドレス行の各列を整列させました。複数アドレスを持つ機器では、ネットワークバッジ (副ネットワーク9/別ネットワークに合わせた固定幅)→IP・MAC(最大幅18・17文字)→ベンダー名 (OUI辞書の最長の約半分=54文字の固定幅・超過は折返し・省略なし)→開放ポート、の順に固定幅で 並べ、ポートの先頭が全行で同じ位置から始まるようにしました。複数アドレスは細い点線で区切ります。)
  • The device scan is now two buttons: "Refresh devices" and "Port scan". "Refresh devices" re-checks which devices are online without scanning ports, so it is fast; "Port scan" is the fuller sweep that also reads each device's open ports. The per-device "Scan every port" search stays in a device's own properties, now labelled as being for that one device. (機器スキャンを「機器一覧を更新」と「ポートスキャン」の2つのボタンに分けました。 「機器一覧を更新」はポートを調べずオンライン/オフラインを再判定する高速版、「ポートスキャン」は 各機器の開放ポートも調べる本格版です。機器ごとの全ポート調査はプロパティ内に残し、「この機器の」と 明示しました。)
  • "Online only" is now an on/off switch instead of a button that swapped its own label. (「オンラインのみ」を、ラベルが入れ替わるボタンから、オン/オフのスライドスイッチにしました。)
  • The scan progress is clearer. Each step is named as it runs (reading the ARP table, searching for devices, asking for names, multicast discovery, checking ports, reverse DNS), the multicast step shows a "listening" state while it waits instead of appearing frozen, and the bar no longer reads as going backwards between steps. (スキャンの進捗表示を分かりやすくしました。実行中の工程名(ARPテーブル読み込み/機器を探索/ 名前を問い合わせ/マルチキャスト探索/ポート確認/逆引きDNS)を表示し、マルチキャストの受信待ちを 「探索中」と示して固まって見えないようにし、工程が変わるたびにバーが戻って見えないようにしました。)
  • "What to scan" lists "The ARP table only" first, before "The whole network". (「スキャン対象」の並びを、「ARPテーブルのみ」を先頭にしました。)
  • A device's note is now shown in the list and is searchable. It used to be visible only in the properties; now it appears under the device (one line, full text on hover) and the filter box matches it too, so a note like "2F printer" is actually useful for finding and telling devices apart. (機器のメモを一覧にも表示し、検索対象にしました。これまではプロパティでしか見えません でしたが、機器の下に1行(全文はホバー)で表示し、絞り込み欄でも一致するようにしたので、 「2Fの複合機」のようなメモが機器の識別・検索に役立ちます。)

Fixed

  • Mail: STARTTLS mode never sends the password in the clear. If a server does not offer STARTTLS (or a network strips it), the sign-in, mailbox and send-test now stop with a clear message instead of falling through to plaintext AUTH. (メール:STARTTLSモードで平文送信しないよう修正。サーバーがSTARTTLSを提供しない(または 経路で除去された)場合、平文認証に進まず明確なメッセージで停止します。)
  • Mail: the SPF DNS-lookup count no longer double-counts includes. A top-level include: was counted twice, so a healthy record with a few includes could be reported as over the 10-lookup limit; it now counts each lookup once. (メール:SPFのDNSルックアップ数がincludeを二重計上する不具合を修正。正常な記録が上限超過と 誤表示されることがありました。)
  • HTTP check: an unreachable host is reported as unreachable. A host that refuses the connection or times out was shown as a reachable server missing every security header; it now says it could not connect. A redirect's target host is validated too, so a page cannot bounce the fetch onto an internal address. (HTTP確認:到達不能なホストを「稼働中でヘッダ欠落」と誤表示せず「接続できませんでした」と 表示。リダイレクト先ホストも検証し、内部アドレスへ飛ばされないようにしました。)
  • A registered .jp/.co.jp domain is no longer reported as free. JPRS answers with a "Domain Information" block whose fields are letter-prefixed ("a. [Domain Name]", "p. [Name Server]"), which the registered-check did not recognise, so a plainly taken name (google.co.jp) — and a suspended/pending- delete one (granz.co.jp) — came back undecided and was then labelled likely-free. A [Domain Name] / [State] block now means taken; a bare "No match!!" still means free. (登録済みの .jp/.co.jp が「空き」と表示される不具合を修正。JPRSは項目名が 「a. [Domain Name]」のように接頭辞付きで返るため登録判定に一致せず、明らかに使用中の名前 (google.co.jp)や停止中の名前(granz.co.jp)が「空きの可能性」になっていた。[Domain Name]/ [State] があれば使用中、「No match!!」なら空き、と正しく判定するようにした。)
  • A domain the registry throttled or refused is no longer shown as "likely free". In a gTLD sweep the shared RDAP servers — Identity Digital most of all, which serves 100+ endings from one host and rate-limits this server outright — answer HTTP 429/403; those were marked △ "likely free (registry unreachable)", which is misleadingly optimistic. They are now honestly "?" ("could not check"), and a group that answers 429/403 is dropped at once so the rest of its endings are marked quickly instead of each waiting out a doomed retry. (レジストリに制限・拒否された結果を「空きの可能性」と表示しない。gTLD一括照会では 共有RDAP(特に Identity Digital。1台で100以上の語尾を担当し当サーバーを丸ごと制限)が HTTP 429/403 を返すが、これを△「空きの可能性」と楽観的に表示していた。正直に「?(判定不能/ 確認できず)」とし、429/403 を返したグループは即座に打ち切って残りを素早く判定するようにした。)
  • Port scan no longer fails on a /16 (or larger) network. The host-count limit that guards the address-by-address sweep was also applied in ARP-table mode, where there is no sweep — only the neighbour table (at most ~1024 entries) is touched — so "Port scan" on a common /16 LAN (65 536 addresses) was rejected with "Scan target exceeds the configured limit". The limit is now enforced only when a sweep will actually run. (/16 以上のネットワークでポートスキャンが失敗する不具合を修正。総当たり探索を守る ホスト数上限を、探索を行わないARPテーブルのみモード(近傍テーブル≒最大1024件しか触らない) にも適用していたため、よくある /16 のLAN(65,536アドレス)で「上限超過」で弾かれていた。 実際に総当たりを行うときだけ上限を判定するようにした。)
  • A port-scan step no longer logs "Undefined variable $wait". In ScanService::stepPorts() the port budget was computed from $wait before the variable was assigned, which logged a PHP warning on every step and, reading null as 0.1, over-computed the budget nine-fold. $wait is now set before use. (ポートスキャンの各ステップで Undefined variable $wait を記録する不具合を修正。 stepPorts() で $wait を代入前に予算計算に使っていたため毎回PHP警告が出て、nullを0.1と 読み予算が9倍に膨らんでいた。使用前に定義するよう是正。)
  • A free domain in the availability search no longer shows a raw "HTTP 404". The diagnostic reason (e.g. RDAP's 404 that means "not registered") was printed next to the ○ mark; it is now kept only as the mark's tooltip, and the visible reason is shown only for the uncertain cases (△ / ?). (空きドメイン検索で、空き(○)の行に内部的な「HTTP 404」が出る不具合を修正。判定理由 (例:未登録を意味するRDAPの404)は○の吹き出しにのみ残し、本文の理由表示は不確定 (△/?)の場合だけに限定した。)
  • A slow or unreachable device no longer floods the admin log with errors. The device-view proxy logged every connection timeout, TLS failure or refused connection at error level; these are ordinary outcomes for a network tool and are now logged at info (the browser is still shown a problem page). (応答の遅い・届かない機器で管理ログがエラーで溢れる問題を解消。機器ビューのプロキシが 接続タイムアウト・TLS失敗・接続拒否をすべてエラー級で記録していたが、ネットワークツールに とっては通常の結果のため info 級に格下げした(ブラウザには従来どおり問題ページを表示)。)
  • The DNS tool no longer fails a whole lookup when CAA is included. CAA was passed to dns_get_record() as the wire type number 257, which PHP 8 rejects with a ValueError that the @ operator does not suppress, so a query with CAA ticked errored out entirely. CAA now uses the DNS_CAA constant. (DNS調査でCAAを含めると照会全体がエラーになる不具合を修正。CAAを dns_get_record() に 型番号257で渡していたため、PHP8が ValueError を投げ(@でも抑制されない)、CAA選択時に 照会全体が落ちていた。CAAを DNS_CAA 定数に修正した。)
  • A notice no longer lingers on another tab or over a new scan. The message bar was shared across the whole app and never cleared, so "scan finished" sat on the Whois and DNS tabs and over the next scan's progress, making a running scan look finished. A notice is now cleared when you switch tabs and when a new scan starts, and an informational notice fades on its own; the progress bar shows only while a scan is running. (通知が別タブや次のスキャンに残る不具合を修正。メッセージ帯が全画面共有で消えないため、 「調査完了」がWhoisやDNSタブ、次のスキャンの進捗の上に残り、実行中なのに完了に見えていた。 タブ切替時とスキャン開始時に通知を消し、情報通知は自動で消えるようにした。進捗バーはスキャン中のみ 表示する。)
  • The same address no longer appears on more than one row. A device whose MAC changes (a privacy address that rotates, or a lease handed to another machine) left a second row for the same IP. Duplicate rows are now folded into one, both as they are found and once at the start of every scan. (同じIPアドレスが一覧に複数行出る不具合を修正。MACが変わる機器(ランダム化MACの変更や、 リースが別機に渡った場合)で同一IPの行が二重にできていた。重複行は、検出時とスキャン開始時の 両方で1行に統合するようにした。)
  • A name no longer follows an address to a different device. When an address was handed to another machine (an old PC's lease going to an Alexa), the old device's name could show on the new one. A name, type and ports are now kept only for the same device, never carried to a different MAC that later holds the same address. (アドレスが別の機器に再割り当てされたとき、旧機器の名前が新機器に残る不具合を修正。 旧PCのリースがAlexaに渡った等の場合に旧名が表示されていた。名前・種別・ポートは同一機器に対して のみ保持し、同じアドレスを後から持つ別MACには引き継がないようにした。)
  • "This server" is shown on every one of the server's own addresses. When one network card holds several addresses (here 10.0.0.1 and 192.168.1.250 on the same card), keying them by the shared MAC let only the last one keep the badge. Each of the server's addresses is now its own row and each is marked. (サーバー自身の各アドレスすべてに「このサーバー」を表示するようにした。1枚のNICが複数の アドレスを持つ場合(同一NICの10.0.0.1と192.168.1.250)、共有MACをキーにしていたため最後の 1つしかバッジが付かなかった。各アドレスを独立した行にし、それぞれに印を付けるようにした。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturelPTEAnhj7+HoibIAnwDsMclSagD0MDrqgF9vdsmoXXV5e0aqJmUD5JigIZhWldG0XpWMehslTEs0X6fEecgZ8ZvMq8hDwPGqTzmYnrtSv0k8BjnsBFn6CMcIfFO53fnhMpLkMEmaDOpf34Z6iUONdxZQ2pMVlv95tXOPfB0utEMXS2VmKsk8w73JRgbtCc07L/QT+3b1xbZkr9p0mCo6nXjpONKOpF3GzbxHC5cxhnqRpZ7wprKgTSS1cZFJdSAWEM78LEhZT47gast39F28c1Er5DdHZrvfQjOlKTVqUTH93iUearoZDygnr+tBaN6UKjiSpWsXEVIU9VkuL6ndZG2FB9BBZshoEkFsBWAaVHF7GPxYkMNxGuH0CZ7C11ykpl4cAo3d2rwqyjEu7skeBeCwikHIJ1b7upC8QyBKmPPdwVViT1AJd0SO7FvxSH8dofcxEaT+qb9spOZU3cNwFxsABNpgiUthEVCk8jf7ddeQCPncRXZhaHdxEU+QnfdxOl+5Vbipb2p//1F0hHh+S3zDipWrfYDMvATLIgk85DMs2vg2nfZgH5fJGJX37O2hqop4yL6YTRP0nNvSXMh8Ewa12yv/acvRsHgsCe0doffORCUCZomIrJ2pEYbfJbWPRqHqoeiucg3am0yy0GThx/6QJAORtNUjIug4VIu7hUk=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.3
Release Details
UpdatedSept. 9, 2026, 2:33 a.m.
Changelog

Fixed

  • A device page whose text is written by its own script no longer loses that text in a device window. Some router and printer pages (an ASUS router's WAN page among them) build their labels in JavaScript, from strings that contain a small piece of HTML with target="_top" inside. The rewrite that keeps such links inside the window was reaching into those strings and breaking the script, so the page came up with its text missing. That rewrite is now applied only to real HTML attributes and never inside a <script>, so the page's own script runs untouched and all of its text appears. (機器ページが自身のスクリプトで文言を書き込む場合に、機器ウィンドウで文言が消えていた不具合を 修正。ASUS ルーターの WAN ページ等は JavaScript の文字列内に target="_top" を含む HTML 断片を 持ち、フレーム内に留めるための書き換えがその文字列を壊してスクリプトが止まっていた。書き換えを 「本物の HTML 属性」だけに限定し <script> 内には一切触れないようにしたため、ページのスクリプトが そのまま動き、全ての文言が表示される。)
  • The device-window "Screenshot" now shows its result inside the window. A device window is drawn above the app's own message bar, so a "Saved as…" note — or the reason a picture could not be taken — was hidden behind the very window it was about, and looked like nothing had happened. The message now appears in the window itself. (機器ウィンドウの「Screenshot」の結果を、ウィンドウ内に表示するようにした。機器ウィンドウは アプリのメッセージ帯より前面に出るため、「保存しました」や失敗理由が対象ウィンドウの裏に隠れ、 何も起きていないように見えていた。メッセージをウィンドウ内に出すようにした。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureCGlNtuFVUIdzr/sX2lsWkCHmSdABdw3JCqtB7iYca1e/+lv8y5d5NaUI9WeKpS3L9eIJCcdt3cY23p7xp5cwhMPOapNu4+Qbvj5mWpf81mX3nrRPQstI4wH3HBU5b6J1ZeDaT/ZZaNTPNvIPv06ZwsDvNc0tI+UxZIcg/aAYkRBqcQMlAGp4TkfL0qbX9y3TQaXi9SccEpHa/JybfYAHf0ulBy2Yhwo/5HyX50yK+MyqHByC+5RJW17ozqZNH3/4zsYTZ0mZGF1Rd/gcloVMHlDA8hKD6LQ/fvkzftC12vbYy0CzDXI2+QwbU2kyEiVg5WH1hzUrL9KL/At2cpHZThNHQUHTOusfZgNpVw8+jq3Sr3sXr9qYZkTwjzuz8v5WEal6tEs0NrJF6OLviMflHuWCTf2qKd15AvAaugrl7PWWVoxwhMDfbQjICYEhrPpRUA+sMwVFrUvCSZre1Lx9Y3hlEbSNsy93urbKNhZjHrm6IWmIJALeegMK/cA/VN7XF8gXDgeWqlg0P64xRwnc4JqhFpMfyyrJi2xHvrXkZgCv2xAQoaH6lF9CrQH1hF9c6drQAMFJS/JXbcn1qWZqFi1Qh3zRfTYUc4Tfwf8MPGuFBg1hLykWnGFegEQu2x8XIdxtL3unPvBDaN6EzH0NjqhExcf1fIXrwzpe6j8km7A=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.2
Release Details
UpdatedSept. 8, 2026, 1:35 p.m.
Changelog

Fixed

  • The internet speed test now works at the 100 MB setting. speed.cloudflare.com rejects a download request for 100,000,000 bytes or more with HTTP 403, so "100 MB" (100 × 1,000,000) fetched nothing and no number appeared. The download for that endpoint is now capped just below the limit (99,999,999 bytes), and a refused download is reported as an error instead of a silent zero. The 5/25/50 MB settings were unaffected. (インターネット速度テストの「100 MB」で数字が出なかった不具合を修正した。 speed.cloudflare.com は 100,000,000 バイト以上のダウンロード要求を HTTP 403 で拒否する ため、100 MB ちょうど(100×1,000,000)が失敗していた。当該エンドポイントのダウンロード量を 上限直下(99,999,999 バイト)に丸め、拒否された場合は 0 ではなくエラー表示にした。 5/25/50 MB は影響なし。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturekEXnJTS5yF9JFTbS5dkAR9aY74MLA244QyEN/MOVQm1phUJ66HKiFUErT8Nw8T/T78ILbJ9T7ZXjGZssJIl+Vp8SR6RimT2jwj6Hq3goj/kKeucT0I31CQB1Zwbp/esXp6FIMp5yNvremlHo5ro1IXV7+/HdJP4eBBhSSqUnp8UOwg+cjs7UHyQQxcLx1pFzyEAHhKgQ45qDxkt1UrctLI2AyY0rRcE+927Gvy5GphRat3RcDIxl6yKabk1wgDU3HM6T9IO5XSjJF2TlT0fihZokAfVosrRQT5JoeCDaqxT3+3kS3w14D+opKWlUdOY+ttGNSb4g5b/RMg4Leeb+Wtrln73bcMHVqN+6VWoY3iQr535E5ZYJEeIpjfsK6iiuRLpmJ+TPKBc99gOEF10HKJwr/j1KMqPoW0NpbgQ747lNedg1I24P8zvKs/DaUzy0pOMpwfGTpwomc2rkSCyGPP1Bnl1RrLkO47xRq8IV4//nFNSqe2gV3lY1UQskYx3qlzMvMEl0717wAoAW8ppYD/M0nLRa9zg9yW6E74WLwjp596pktS3Z/QoGOrkENqNpDNEbw/+cwrmM2OWCGqG6X3N/Z3eIqkIKc8Mv1vloZ+ZardB/WtqG5Mnzbh/0PP2Lx/jzWKzd6+nUDiz4Miw5YCfs6st8eWGIJF5rlI6I4Mo=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.1
Release Details
UpdatedSept. 8, 2026, 12:49 p.m.
Changelog

Fixed

  • Fixed a bug where clicking outside a dialog while entering data made the dialog disappear and discarded what you had typed. It affected the data-entry dialogs — the SSH sign-in dialog, the connection editor (new/edit a saved SSH/SFTP/FTP/SMTP connection, including its password and private key), and the Settings dialog: clicking the surrounding area no longer closes them, so nothing you were entering is lost; close them with the ✕, Cancel or Save controls. View-only and picker dialogs (system information, the file picker, the page/text preview and the device panel) keep closing on an outside click, since they hold nothing you can lose. (データ入力中にダイアログの外側をクリックすると、ダイアログが消えて入力が失われてしまうバグを 修正した。対象=SSHサインイン・接続の新規/編集(SSH/SFTP/FTP/SMTP。パスワードや秘密鍵を含む)・ 設定の各ダイアログ。外側クリックでは閉じなくなり、✕・キャンセル・保存で閉じる。閲覧/選択系 (システム情報・ファイル選択・プレビュー・機器パネル)は失う入力がないため従来どおり。)
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureQ0qPD64JJXCwInnuCvlIN5GZbTdRW/s+Xntj90lJXH/gicwlTuYMeowlFBMvj2uVe7Fd8dErh2sGZJv/6ds7PPdzCFJY7GIeofIuHZHw0laPn26Yy/jgiCB+FPJYbyGNHsMdFyz5pbZ4JtxjMkiFPz7sGsOzbNZH28QnCjLaO7z7RFvU5L95YCREIMEQzhL4aVRgI5oBTWnSb7X5bVoXB0ky5/0YwFBxa4nY3JGy4cn86oTttRhBc/tCJ7mSsPDy1Peas5St7E0bpNiJa0iI/Fap6pgNgm3Gp7YibSyFviW5ygeLOIOqMZWoevakZC/UP+xDEF0sWubaGtz8kz4pATsflz0TfALApYEqvLVNG/cEyZHw3ZiOXwazXWBv1Y1Z21ZMl2pAE4t6LQs2zG6BYO/a465rI6wONcCRV2ODHyZdl3f+qBVdKbtCDZ+0Rzqyj6soDqjWxfMtQG4OYhhFtBrWAZ3GL50Jf6C9zPajzql2hf5SNbvYI93TL/QjLZrmrJFdky0a4EKqRnaL/PQ+DgKX/7ji6zrX3zHaWia/9YJc7tQI3/DEEYMr50YhGClzkBQVkgjtGisHMBYsWs0/SxO/RIHoUi0t7N4Tt3Woh4a9UKJSmm2wOj2pY/u8wyr/3OIr57ogYkYQNz5o+a7O7re7VQeAWt9yCqZgI2DiwwU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.4.0
Release Details
UpdatedSept. 6, 2026, 4:30 p.m.
Changelog

Everything since 0.3.11, which is what the customer sites have been running, gathered into one release.

Added

  • A terminal, not a line at a time. SSH had a box you typed one command into and a box the answer came back in, which is enough for uptime and no use for anything that draws a screen. There is now a real terminal: top, vi and less run in it, colours and cursor movement work, and it is resized by dragging the window. PHP cannot hold a connection open between requests, so the server keeps the session and streams it — what is typed goes up one batch at a time, and what comes back arrives as it is written.
  • A sign-in dialog for SSH. Host, port, account, and either a password or a private key chosen from your own Nextcloud files. A default folder for keys can be set in Settings, so the picker opens where the keys are kept instead of at the top of the file tree.
  • A device on another network, sharing the same wire, is found and stays found. A camera left on its factory 192.168.1.120, plugged into a 10.0.0.0/16 network, was invisible: it is off the server's subnet, so nothing routes to it, and it cannot answer a question either — its reply goes to a gateway it does not have. What it does do is announce itself to the multicast group, which is carried at the level of the wire and arrives whatever the addresses say. NetBase now listens to that group continuously, in the background, so such a device appears without a scan and is not marked offline for failing to answer something it was never able to answer. Its details carry the one command that would put this server on its network, ready to copy, and a button that opens a terminal on this server to run it.
  • A device can be asked about itself, from its details: every one of its 65,535 ports, and which of the open ones actually serve a web page. The port scan opens 64 connections at a time rather than the sweep's 512, because older hardware drops the flood and is missed at 512; the web search asks each port for its front page rather than guessing from the number, and a port that answers becomes a link in the list from then on.
  • A right-click on a device offers the ways into it — HTTP, HTTPS, FTP, SSH and Telnet — built from the ports it actually has open, with Properties at the bottom for the panel a left-click opens. Nothing speculative is listed: a port that is not open is not offered, and a web page only for a port NetBase knows serves one or has been shown to.
  • SSH and Telnet open in a window, the same movable, resizable frame a device's web page uses, so several can stand open beside the device list at once. Port 22 and port 23 in the device details open one instead of changing tab — which used to close the device and leave nowhere to go back to.
  • Telnet can now be used, not merely diagnosed. It had a probe that read the banner and warned about the plain text, and nothing that would let anyone type at a switch. The window signs in, sends a line, reads the answer and hangs up — a connection per line, because PHP cannot hold one open between requests, which is also why nothing is left open on the device in between. Option negotiation is refused throughout, so the device keeps talking without our pretending to be a terminal.
  • Zoom, fit and a screenshot in every device window, and a row of buttons where a sentence explaining the window used to be: the device's own address, the page's text, and the clipboard into whichever field the cursor is in.
  • Copy buttons throughout the device details — the whole record, or any one row of it.
  • Five depths for the port check (15, 106, 1,024, the high ports 1025 to 65535, and all 65,535) and five scan speeds, with the wait for a port to answer now a setting of its own, since that is the number which decides how long a scan takes. The high ports are where a maker hides an interface it would rather not advertise, such as the 22401 on a router here.

Changed

  • The device list is two lines to a column — name over address, MAC over vendor, type over open ports — so a row holds what used to need sideways scrolling. A device that has told nobody its name is written - no name - rather than left blank.
  • What to scan is chosen first and by name — the whole network, or the ARP table only — and the options beneath are arranged as the steps they are.
  • The SSH page says which boxes belong together. It does two jobs — looking at a server, which needs nothing, and working on one, which needs an account — and ran them together in five cards with three separate host fields. Each job now has a heading, Telnet sits with the work rather than the looking, and the host typed at the top can be carried down to the sign-in with a click, so the two are visibly the same machine.
  • The wait for a port to answer says what it buys. The seconds alone meant nothing without having thought about what a silent port costs, and the "up to N per device" beside them was arithmetic nobody asked for. Now: quick and misses slow devices, the usual, or finds the slowest and takes longest.
  • Plainer words throughout: the ARP table is called the ARP table, the scan speed is a rate rather than an adjective, and links are made only for ports NetBase can vouch for.

Fixed

Ten of these came out of two cameras — five from one at a customer site, five from one here — and every one of the ten was found the same way: by signing in and then actually using the pages behind the sign-in, rather than checking that the front page appeared and calling the window done. None of them is particular to a camera; they would meet any device whose own web interface is built the same way, and the second camera was still finding them after the first five were fixed.

  • Device pages that would not open. A device's redirect was arriving as a 200 with a Location nobody acted on, which left Brother, Canon, Kyocera and Buffalo hardware showing nothing; four ASUS routers stepped outside their window through history.pushState; and a Buffalo LinkStation reloaded itself once a second for ever. Found by opening every device with port 80 or 443 across the nine sites — 73 of them — of which 32 displayed at the start.
  • A relative address that climbs with .. no longer eats the ticket. On the device the climb stops at the root; under the proxy the root is several segments deeper, so ../script/inputrestriction.js from /login.html arrived with the ticket gone and came back 403. The camera's login page then ran without a file it needed and threw input_edit_restriction is not defined. Climbs are now resolved against the page and clamped where the device would clamp them — in the markup, in scripts, and in what document.write writes.
  • A POST with no content type is no longer thrown away. Device firmware routinely omits it, and PHP will not parse a body it has not been told the shape of; taking it as a form left the device receiving an empty request. The camera's sign-in went 403. If nothing was parsed and something was sent, what was sent is what goes on.
  • Nothing but a page gets the shim. A device also answers with things read by script rather than shown — the camera's sign-in returns an empty body with a 200 — and putting our script into that made the answer unrecognisable to the page that asked for it.
  • The cookies a device's own page sets now reach the device. They live on this server's name alongside Nextcloud's, so Nextcloud's are left out by name; the session above all never leaves this origin.
  • The request says which of the device's own pages it came from. Nextcloud sends no-referrer on everything, which is right for Nextcloud and wrong here: this camera turns away every page after the sign-in without it. The window now says same-origin — the referer never leaves this server — and the proxy rewrites it into the device's own address before sending it on.
  • A device window no longer sends its cookies twice. Two sets have to go to the device — the session it grants at the sign-in, which the server holds and the browser never sees, and whatever its own page set in the browser — and they were being sent as two separate Cookie: lines. A browser never does that, and a small device web server reads only one of the two. This camera read the second, which has no session in it, decided the sign-in it had granted a moment earlier belonged to nobody, and answered every page after it with a redirect back to the login screen. Both sets now go through the same cookie engine and leave as the one line HTTP asks for.
  • A request with an empty body no longer arrives with one. The parameters Nextcloud hands over are the query string and the body merged together, and taking that as the body meant the address's own question came back a second time as form data — POST /action/get?subject=datetime left here carrying subject=datetime in a body 25 bytes long. That is how this camera's pages ask it for their current settings, and it answered 400 to every one of them: the sign-in screen never offered the dialog it owes a device still on its factory password, and the pages behind it came up on their defaults. Only what was actually sent as a body is sent on as one.
  • A request with nothing to send now says how much that is. With no body, curl leaves out Content-Length altogether; a browser always writes Content-Length: 0. Given the first, this camera's web server waits for a body that is never coming and eventually closes the connection with nothing said. Every settings page asks for its current values with exactly that kind of empty POST, so every page came up with its fields blank or on the first option in each list — the time zone reading GMT-14 when the camera was set to GMT+08. Measured against the device directly: no Content-Length, no reply at all; Content-Length: 0, the settings come back. All 27 fields on the Date & Time page now match what the device itself shows.
  • A file whose name has a space in it is fetched. The browser escapes the space, the router unescapes it, and what reaches the proxy is a real space — which cannot go back into a request. Three of this camera's menu icons are kept under names like Video Analytics.png, and all three were broken pictures while the other eleven on the page were fine. What a path may not carry is escaped again on the way out, and what is already fit to send, the percent sign included, is left alone so that a path which was never unescaped is not escaped twice.
  • A port a device announced is added to what is known, not put in place of it. A port scan speaks for every port it tried and may rightly take one away; an announcement speaks for one port only — the one the device's own page is on. Written down as though it were the whole truth, it erased the rest. This camera announces port 49152 every forty-five seconds, so a scan that had just found eight open ports was down to that one inside a minute, and the web-page search that followed had nothing left to try: it never saw port 80, no matter how many times the scan was run.
  • A device that answers and then stops no longer holds the window empty for thirty seconds. An NTT phone system at one site sends its 403 in under a second and then keeps the connection open without ever finishing the body. A connection carrying nothing at all for ten seconds is now treated as finished, and the window says the device answered and then stopped rather than showing nothing. A stream that is genuinely working — a camera, a download — is carrying bytes and is never caught by this.
  • The server NetBase runs on now appears in its own device list. A machine never asks the network for its own MAC address, so it is never in its own ARP table — and NetBase, which discovers by reading that table, could see every device on the network except the one it was running on. Its own interfaces are now written down at the start of a scan, marked "this server" in the list.
  • A device out of reach is no longer marked offline for failing to answer. A scan marks everything offline and then marks back what replies, which is right for a device that could have replied and wrong for one that never could. A device that has only ever been heard announcing itself — never seen in the ARP table — keeps its state if it has been heard from recently.
  • A radio button is drawn as a radio button. It had no style of its own, so it fell through to the rule for a text box and was rendered as one: a rounded rectangle with twelve pixels of padding around the dot.
  • A multicast step no longer stops without a word. IP_ADD_MEMBERSHIP is not defined in every PHP build, and naming a constant that does not exist is a fatal error rather than a failed call, so the step ended silently and the devices that only announce themselves were never heard.
  • The standing listener actually runs. A background job registered as time-insensitive is held for the maintenance window, which on an instance with one configured means it runs between 01:00 and 05:00 and at no other time — so the listener that is supposed to be hearing announcements all day heard none. TIME_INSENSITIVE is 0 and TIME_SENSITIVE is 1, the reverse of what the names suggest at a glance, and the value is written once when the job is first registered and never revised, so the registration has to be removed and remade rather than merely corrected.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignaturelsvI6lQNV2r6VjQYc3jblzctyi3y4fyH3qh3ltaysElg7994DYPy+eCQLpeMECTNLgSNVFAlNSXD8I636ZM8AGBKMKokeywElPLtTytOW8IptKAOfErJtFXg2i8E0HRlIO6aNWAwcMlCBDwSACquiEs2j3ftsmY8D9abu/UrJPKYlLZ++iXRqbQ1adRd2klYsAHKES5fi85eujypN3yyQgYOy5J9+ib5alSGS3BFc4MXHDNI/yL0sKnV2XfRTY2oSgV5xSP7GPwDxviFe9ZH9jnzbS9DbUJaan9tuyJkhU68rzr4YVRCzT+UVKMUmXwWLYPPcTnqhVVaTBnRpOAWLqtat4F9tMTi8UEAKhCwqEe6qTELzFqdttuHgMAuRlwGMTHNksFJoyI5Tjq+uDHcpxlBkiL9G4hafAyVqbNmX3L7uW26vBZzW0OY7YqVtbzzNiahNq7dhBxr+tAO7NBJA3LA1sLMcHXU/vkAeesusacJUoJ9G/ZFUcLWCPh1U11tCk4E2Zp4W8T5qD1OdXUxmK9NJWgvyGYB4NQwa7RSGtS9kcwT19p/d+h+2WZAYtKn0drBbaf/yBLYNydu5iYBnoER9cGLzP8f0+CXZLiQrYv5PAdvkaXZr48L0SrIAa/bopO8R8PgUX0j+L06bS1teTspLOJvsighiPBbcEnHlzQ=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32
NetBase 0.3.3
Release Details
UpdatedSept. 5, 2026, 3:53 a.m.
Changelog

Removed

  • Ping, traceroute, the port check, TCP ping and path MTU discovery, and the nmap front end with them. The Nextcloud app store review takes the view that an app which sends probes of that kind should not be installable from the store, and NetBase follows it: the tools, their tabs, their routes and the code behind them are gone from this release.

Changed

  • Everything else works as before: device discovery and the device windows, the LAN sweep and inventory, DNS, whois, TLS and HTTP, subnet and MAC, mail, FTP and SFTP, SSH and Telnet, the clock check, the benchmarks and the server view.
  • The requirements page and the administration settings no longer mention ping, traceroute, mtr or nmap, and no longer ask for them to be installed.
Licenses AGPLv3+
Certificate-----BEGIN CERTIFICATE-----
MIIEAjCCAuoCAhQGMA0GCSqGSIb3DQEBCwUAMHsxCzAJBgNVBAYTAkRFMRswGQYD
VQQIDBJCYWRlbi1XdWVydHRlbWJlcmcxFzAVBgNVBAoMDk5leHRjbG91ZCBHbWJI
MTYwNAYDVQQDDC1OZXh0Y2xvdWQgQ29kZSBTaWduaW5nIEludGVybWVkaWF0ZSBB
dXRob3JpdHkwHhcNMjYwOTA0MTcxMTI4WhcNMzYxMjEwMTcxMTI4WjASMRAwDgYD
VQQDDAduZXRiYXNlMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAxJYl
CkqzFAiO4MRvrPqDTY5Ld8AZt7eMiR9G9E5yLdKOy+49HJZeYyQff0jjyJz9wnPi
FaefWc6/NASleMExcqRnSsxT9s/cMZmNwf/f8rzSSdlTWEwVdLAhkIHtU1o4TYgE
cqGdu0gy2WbjFQbs8Auj6kV6NN2HhVkR0cXbpBoKvIHhYql+FVdl4DcgMGLXVUC4
ZwfsqUAqO1H4+9dV1KpINmw/nebFrTVqsZTLyI50+7eXD0SBccHPzsYzFwcBI82U
ZHqXH7QassTVVCDKh03qQhjfWdSBn09OCNVKtHq2irPJgv7xffV5HluL4vDpnHaQ
s9lvBQxXfR9Gr58dAZZjoyGj/uUgU89DZpvF0NFiVWWx5C7K4GB42slT0vM6pfj6
OM/LuYabweqwSaJB6fCZizMp90ekNS/IvQKJquVtUwCzVXdCaEi5tQ4lIuMCWTM1
9FTLKbYTkmTQklsvT5YtNXjNwjLajFAvM7dV/o5SrlU/sRnKmF2BaCMVH/5c7E4M
+odmf6IQgSSBR+P9Z+Ibv0pjd9q5eBiej/Nolk87A/9QrWaHm9ggFEoriGM9+a2h
ZM1ubTbgjcj2BZrzYH3mY0oRzxPI3+tbNbRl/hhLic05hv+Ni+9hhJ75nCJffrGG
AVxvJ782J4b91nx2J/lEvkGDRfdNozxG3sGmwnsCAwEAATANBgkqhkiG9w0BAQsF
AAOCAQEAmeZn8CaDKmY2so3qmQh96qSUalr+knwEjX5skr7LnJCaxNK96DKCu/4d
bRZMRkbTypcvhDV8p4vr13EWErL43MF/edxNRmZPfGM1MgunUkp5zdu97nba8YmJ
4EYB8s/v0Iql6HrMyBTCMXgPVwVzKCdmfrax8LER+XMDgoj4YZWJ+dMA0tSww7CA
8FTLXt1XICT3yrg4Xy8dqDvyX4gNXjtM8zMrP2vPI8DOXTyZdcR+aflMCc7o4e9p
PxUz/PqzLbHWhuwWzrl0TIr03HHEqXuVWj8VxAh+fdRURhxbmscyj/nsgr6/EYqM
USwDscLXvONFUqUZyWnlW9O2HTlQ1g==
-----END CERTIFICATE-----
SignatureJ0kMXHFSMxxwbvTbXhBrHulZmHnQd+P84sVi4JS3RZSEwAauHtV+f2r1tlOrAyi9ZFq3cQJ2OlrVt84rnil/C8nCnJx7Aqw8vyTYVJ2+ToF8aj6PNl0wtNs4ocd4N9GjuktyQdsNaC0feBA3I/ZkCEZivbXZZ88XAhQ1WaLBROFbRoGmeD7Z+C/MsjZyhbRL41YfL3ADcfyUjkjTFU1O19ObgyfX5E76IFz7KtfZXtUfvIZatn8RR6rs9kX8ospThDOmABmuqsoaneAm9/LEnGbCHdnt9oJtYOvteVIpkCUuz9YwW8xne/ny5QgKn2rfS5BfKQRx0d6EpRG3Oro8+Ho5I48RIYva/32IRxNZSblICaZ7H+X0qL+Fs2zXhB/uYT6wq4HKdXYS0UmHZIlwpBB55s/S0Mcgutc1GpeLQKPLj7pdzDNNJLTxXLq4u2sExN/20G6oATgdbhXErr8U5f8pIw2VWrrl4o0C11zVGT+h5K/tOGSvKcYQxi6R+rnVpiCQLv3+izdbW1zc3RAUmCU4emLxVROuDT3Hh06ig+qV/hf7QLF97RfYfF06IZOAuxfpE8Zx9Ctvl8WYJ4obGBuhA6XwY2WTZxPvJIRIlQQxEe7rTM2VNCosOa8axM7resC5EAzTG/BYKVbyOLBNbwX1r992ATQ4MufWXNNYHzU=
Signature digestsha512
Dependencies
Required Nextcloud versions >=30.0.0,<35.0.0
Minimum Integer bits32