Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
44 changes: 34 additions & 10 deletions .claude/commands/format-app-doc.md
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ Keep `sidebar_position` and `keywords` unchanged. The `description` field must s
One concise paragraph describing what the feature does. Start with `The **Feature Name** ...` or `With **Feature Name** ...`. Fix grammar, passive voice, or vague phrasing, but do not add or remove facts.

### 3. Supporting content (optional)
Tables, bullet lists, or paragraphs that belong to the intro (e.g. supported input formats, example inputs). Keep these before any admonitions. Fix typos and prose quality within this content.
Tables, bullet lists, or paragraphs that belong to the intro (e.g. supported input formats). Keep these before any admonitions. Fix typos and prose quality within this content.

### 4. `:::info` block
**If present:** Improve readability if the prose is dense or run-on, but do not change facts or remove content. This block must contain only background information about the underlying technology (e.g. what ARP is, what the hosts file is) — never application-specific behavior.
Expand All @@ -33,11 +33,40 @@ Use this exact admonition title. One or two sentences: state that the view is re
### 7. Screenshot
Keep the existing `![Feature Name](../img/...)` line unchanged.

### 8. `:::note` for non-obvious app behavior (optional)
### 8. `### Example inputs` (optional)
If the feature accepts notable user inputs (hostnames, IP addresses, ranges, etc.), add a `### Example inputs` subsection directly after the screenshot — formatted like an action subsection. Use one or more tables with columns that describe what each example input does. Omit this subsection if there are no meaningful examples to show.

Any `:::note` blocks that describe input format or input combination rules (e.g. "Multiple inputs can be combined with a semicolon") belong inside this subsection, placed after the table(s).

**Example:**

```
### Example inputs

| Host | Type | Description |
|------|------|-------------|
| `server-01.example.net` | `A` | Returns the IPv4 address of the hostname. |

:::note

Multiple inputs can be combined with a semicolon (`;`).

Example: `server-01.example.net; 10.0.0.1`

:::
```

### 9. `:::note` for non-obvious app behavior (optional)
Only for standalone application behavior facts that don't fit elsewhere (e.g. automatic backup behavior, Windows API limitations). One note max. Do not use for actions or admin rights.

### 9. `## Actions`
Replace all scattered `:::note` blocks that describe UI interactions with a single `## Actions` section. Include only the subsections that apply to this page. Omit subsections with no content.
### 10. Actions

Place action subsections directly after the screenshot — never inside a wrapping `## Actions` section. This applies to both single-view pages and multi-tab pages:

- **Single-view pages:** `### Toolbar`, `### Context menu`, and `### Keyboard shortcuts` appear directly after the screenshot (and the optional `:::note` from step 9, if present).
- **Multi-tab pages** (page organized as `## Tab Name` sections, each with its own screenshot): place the same subsections inline within each tab section, directly after its screenshot. Simple single-action notes (e.g. "Right-click on the result to copy the information.") can remain as `:::note` blocks after the screenshot instead of a full subsection.

Include only the subsections that apply. Omit subsections with no content.

**Important:** Context menus or keyboard shortcuts that appear **inside a `## Settings` or `## Profile` field** (e.g. right-clicking a settings list entry) must stay where they are — they are field-level constraints, not top-level actions. Do not move them here.

Expand All @@ -62,11 +91,6 @@ Use when right-clicking on a **row or result** in the main view opens a context
|--------|-------------|
| **Action label** | What it does |

If the feature has **multiple tabs** with different context menus or toolbars per tab, use named subsections instead:

##### `#### Tab: WiFi` / `#### Tab: Channels`
One subsection per tab, each containing its own Toolbar / Context menu / Keyboard shortcuts tables as needed.

If a column or tab header has its own separate context menu distinct from the row context menu, add a second table with a short lead-in sentence.

#### `### Keyboard shortcuts`
Expand All @@ -77,7 +101,7 @@ If a column or tab header has its own separate context menu distinct from the ro
| `F2` | Edit selected entry |
| `Del` | Delete selected entry |

### 10. Remaining sections
### 11. Remaining sections
Keep all `## Connect`, `## Add entry`, `## Profile`, `## Group`, `## Settings`, and similar sections. Preserve their structure, field definitions, and any `:::note` / `:::warning` blocks that describe field-level constraints or conditions (e.g. "Only available if ..."). Lightly improve field description prose for clarity.

## Consistency fixes to apply throughout
Expand Down
14 changes: 9 additions & 5 deletions Website/docs/application/dashboard.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,15 +6,19 @@ keywords: [NETworkManager, dashboard, network status, network connection, networ

# Dashboard

The **Dashboard** shows the status of your computer's current network connection to get a quick overview of the most important information.

As soon as the status of the local network adapter changes (e.g. Ethernet cable is plugged in, WLAN or VPN is connected, etc.), the connection to the router and Internet is checked.
The **Dashboard** shows the status of your computer's current network connection to provide a quick overview of the most important information. Whenever the local network adapter changes state (e.g. an Ethernet cable is plugged in, Wi-Fi or VPN connects), the dashboard checks connectivity to the router and the internet.

![Dashboard](../img/dashboard.png)

### Keyboard shortcuts

| Key | Action |
|-----|--------|
| `F5` | Refresh the dashboard |

:::note

With `F5` you can refresh the dashboard at any time. You may need to click into a widget first.
You may need to click into a widget first before keyboard shortcuts are recognized.
Comment thread
BornToBeRoot marked this conversation as resolved.

:::

Expand Down Expand Up @@ -86,7 +90,7 @@ The free API endpoint is limited to 45 requests per minute, supports only the `h

### Check DNS resolver

Enables or disables the resolution of the used DNS resolver via [`ip-api.com`](https://ip-api.com/).
Enables or disables the detection of the DNS resolver in use via [`ip-api.com`](https://ip-api.com/).

**Type:** `Boolean`

Expand Down
45 changes: 31 additions & 14 deletions Website/docs/application/dns-lookup.md
Original file line number Diff line number Diff line change
@@ -1,14 +1,32 @@
---
sidebar_position: 7
description: "Query DNS servers for A, AAAA, CNAME, MX, NS, PTR, and other record types. NETworkManager DNS Lookup supports custom and predefined DNS server profiles."
keywords: [NETworkManager, DNS lookup, DNS query, DNS records, name resolution, MX record, A record, DNS tool]
keywords:
[
NETworkManager,
DNS lookup,
DNS query,
DNS records,
name resolution,
MX record,
A record,
DNS tool,
]
---

# DNS Lookup

With the **DNS Lookup** you can query DNS servers for various resource records.

Example inputs:
:::info

DNS (Domain Name System) is a hierarchical naming system for computers, services, and other resources connected to the internet or a private network. It translates human-readable hostnames into IP addresses and supports various record types such as A (IPv4), AAAA (IPv6), MX (mail), CNAME (alias), NS (name server), and PTR (reverse lookup).

:::

![DNS Lookup](../img/dns-lookup.png)

### Example inputs

| Host | Type | Description |
| ---------------------------- | ------- | -------------------------------------------------------------------- |
Expand All @@ -34,15 +52,14 @@ Example: `server-01.borntoberoot.net; 10.0.0.1`

:::

The dns server can be selected from a list of configured servers or you can enter a custom dns server in the format `<hostname>|<ipadress>:<port>` (`<port>` is optional, to use a custom port with IPv6 enclose the address in square brackets: `[<ipv6adress>]:53`).
The DNS server can be selected from a list of configured servers or you can enter a custom DNS server in the format `<hostname>|<ipaddress>:<port>` (`<port>` is optional, to use a custom port with IPv6 enclose the address in square brackets: `[<ipv6address>]:53`).

![DNS Lookup](../img/dns-lookup.png)

:::note
### Context menu

Right-click on the result to copy or export the information.

:::
| Action | Description |
| ------------- | ------------------------------------------------ |
| **Copy** | Copies the selected information to the clipboard |
| **Export...** | Exports the selected or all results to a file |

## Profile

Expand Down Expand Up @@ -120,15 +137,15 @@ Add a custom DNS suffix to the hostname.

### Recursion

Use recursion for the dns query.
Use recursion for the DNS query.

**Type:** `Boolean`

**Default:** `Enabled`

### Use cache

Use the cache for the dns query.
Use the cache for the DNS query.

**Type:** `Boolean`

Expand Down Expand Up @@ -159,23 +176,23 @@ Only show the most common query types (`A`, `AAAA`, `ANY`, `CNAME`, `DNSKEY`, `M

### Use only TCP

Only use TCP for the dns query. DNS uses UDP by default.
Only use TCP for the DNS query. DNS uses UDP by default.

**Type:** `Boolean`

**Default:** `Disabled`

### Retries

Retries for the dns query after which the query is considered lost.
Number of retries for the DNS query after which the query is considered lost.

**Type:** `Integer` [Min `1`, Max `10`]

**Default:** `3`

### Timeout (s)

Timeout in seconds for the dns query after which the query is considered lost.
Timeout in seconds for the DNS query, after which the query is considered lost.

**Type:** `Integer` [Min `1`, Max `15`]

Expand Down
77 changes: 45 additions & 32 deletions Website/docs/application/ip-scanner.md
Original file line number Diff line number Diff line change
@@ -1,25 +1,36 @@
---
sidebar_position: 3
description: "Scan for active devices in your network using ICMP and TCP port checks. NETworkManager IP Scanner supports IP ranges, CIDR subnets, and hostnames."
keywords: [NETworkManager, IP scanner, network scanner, ping sweep, host discovery, ICMP scanner, subnet scan]
keywords:
[
NETworkManager,
IP scanner,
network scanner,
ping sweep,
host discovery,
ICMP scanner,
subnet scan,
]
---

# IP Scanner

With the **IP Scanner** you can scan for active devices based on the hostname or in IP ranges that are reachable via icmp or have a common tcp port open.
With the **IP Scanner** you can scan for active devices based on the hostname or in IP ranges that are reachable via ICMP or have a common TCP port open.

Example inputs:
![IP Scanner](../img/ip-scanner.png)

### Example inputs

| Host | Description |
| -------------------------------- | ----------------------------------------------------------------------------------------- |
| `10.0.0.1` | Single IP address (`10.0.0.1`) |
| `10.0.0.100 - 10.0.0.199` | All IP addresses in a given range (`10.0.0.100`, `10.0.0.101`, ..., `10.0.0.199`) |
| `10.0.0.0/23` | All IP addresses in a subnet (`10.0.0.0`, ..., `10.0.1.255`) |
| `10.0.0.0/255.255.254.0` | All IP addresses in a subnet (`10.0.0.0`, ..., `10.0.1.255`) |
| `10.0.[0-9,20].[1-2]` | Multipe IP address like (`10.0.0.1`, `10.0.0.2`, `10.0.1.1`, ...,`10.0.9.2`, `10.0.20.1`) |
| `borntoberoot.net` | Single IP address resolved from a host (`10.0.0.1`) |
| `borntoberoot.net/24` | All IP addresses in a subnet resolved from a host (`10.0.0.0`, ..., `10.0.0.255`) |
| `borntoberoot.net/255.255.255.0` | All IP addresses in a subnet resolved from a host (`10.0.0.0`, ..., `10.0.0.255`) |
| Host | Description |
| -------------------------------- | -------------------------------------------------------------------------------------------- |
| `10.0.0.1` | Single IP address (`10.0.0.1`) |
| `10.0.0.100 - 10.0.0.199` | All IP addresses in a given range (`10.0.0.100`, `10.0.0.101`, ..., `10.0.0.199`) |
| `10.0.0.0/23` | All IP addresses in a subnet (`10.0.0.0`, ..., `10.0.1.255`) |
| `10.0.0.0/255.255.254.0` | All IP addresses in a subnet (`10.0.0.0`, ..., `10.0.1.255`) |
| `10.0.[0-9,20].[1-2]` | Multiple IP addresses like (`10.0.0.1`, `10.0.0.2`, `10.0.1.1`, ...,`10.0.9.2`, `10.0.20.1`) |
| `borntoberoot.net` | Single IP address resolved from a host (`10.0.0.1`) |
| `borntoberoot.net/24` | All IP addresses in a subnet resolved from a host (`10.0.0.0`, ..., `10.0.0.255`) |
| `borntoberoot.net/255.255.255.0` | All IP addresses in a subnet resolved from a host (`10.0.0.0`, ..., `10.0.0.255`) |

:::note

Expand All @@ -29,26 +40,28 @@ Example: `10.0.0.0/24; 10.0.[10-20]1`

:::

The button to the left of the `Scan` button determines the IP address and subnet mask of the network interface
currently in use in order to scan the local subnet for active devices.
### Toolbar

| Button | Description |
| ----------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Detect local subnet** | Populates the host field with the IP address and subnet mask of the current network interface to scan the local subnet |

:::note

The local IP address (and subnet mask) is determined by trying to route to a public IP address. If this fails (e.g.
The local IP address (and subnet mask) is determined by trying to route to a public IP address. If this fails (e.g.
no network connection), NETworkManager iterates over active network adapters and selects the first valid IPv4 address,
with link-local addresses (`169.254.x.x`) given lower priority.

:::

If you right-click on a selected result, you can forward the device information to other applications (e.g. Port Scanner, Remote Desktop, etc), create a new profile with this information or execute a [custom command](#custom-commands).

![IP Scanner](../img/ip-scanner.png)

:::note
### Context menu

Right-click on the result to copy or export the information.
Right-clicking a result allows forwarding device information to another tool (e.g. [Port Scanner](./port-scanner), Remote Desktop), creating a new profile, or executing a [custom command](#custom-commands).

:::
| Action | Description |
| ------------- | ------------------------------------------------ |
| **Copy** | Copies the selected information to the clipboard |
| **Export...** | Exports the selected or all results to a file |

## Profile

Expand Down Expand Up @@ -97,23 +110,23 @@ Show the scan result for all IP addresses and ports including the ones that are

### Attempts

Attempts how often an icmp request is retried for each IP address if the request has timed out.
Number of times an ICMP request is retried for each IP address if the request has timed out.

**Type:** `Integer` [Min `1`, Max `10`]

**Default:** `2`

### Timeout (ms)

Timeout in milliseconds for each icmp request and after which the packet is considered lost.
Timeout in milliseconds for each ICMP request, after which the packet is considered lost.

**Type:** `Integer` [Min `100`, Max `15000`]

**Default:** `4000`

### Buffer

Size of the buffer for each icmp request in bytes.
Size of the buffer for each ICMP request in bytes.

**Type:** `Integer` [Min `1`, Max `65535`]

Expand All @@ -129,15 +142,15 @@ Resolve the hostname (PTR) for each IP address.

### Scan ports

Scan each IP address for open `tcp` ports.
Scan each IP address for open TCP ports.

**Type:** `Boolean`

**Default:** `Enabled`

### Ports

List of `tcp` ports to scan for each IP address.
List of TCP ports to scan for each IP address.

**Type:** `String`

Expand Down Expand Up @@ -218,7 +231,7 @@ You can also use the Hotkeys `F2` (`edit`) or `Del` (`delete`) on a selected cus

### Max. concurrent host threads

Maximal number of threads used to scan for active hosts (1 thread = 1 host/ip address).
Maximum number of threads used to scan for active hosts (1 thread = 1 host / IP address).

**Type:** `Integer` [Min `1`, Max `512`]

Expand All @@ -234,13 +247,13 @@ Too many threads can also cause performance problems on the device.

:::note

This setting only change the maximum number of concurrently executed threads per host scan. See also the [General](../settings/general#threadpool-additional-min-threads) settings to configure the application wide thread pool.
This setting only changes the maximum number of concurrently executed threads per host scan. See also the [General](../settings/general#threadpool-additional-min-threads) settings to configure the application-wide thread pool.

:::

### Max. concurrent port threads

Maximal number of threads that are used to scan for open ports for each host (IP address).
Maximum number of threads that are used to scan for open ports for each host (IP address).

**Type:** `Integer` [Min `1`, Max `10`]

Expand All @@ -256,6 +269,6 @@ Too many threads can also cause performance problems on the device.

:::note

This setting only change the maximum number of concurrently executed threads per port scan. See also the [General](../settings/general#threadpool-additional-min-threads) settings to configure the application wide thread pool.
This setting only changes the maximum number of concurrently executed threads per port scan. See also the [General](../settings/general#threadpool-additional-min-threads) settings to configure the application-wide thread pool.

:::
Loading
Loading