# Desktop Reference - Settings and Export Formats

## Settings

The Settings card provides these parameters:

| Parameter              | Range          | Default | Description                                   |
|------------------------|----------------|---------|-----------------------------------------------|
| Max Pages              | 1 – 1,000      | 20      | Maximum number of pages to crawl              |
| Max Depth              | 1 – 50         | 10      | Maximum crawl depth from the start URL        |
| Concurrency            | 1 – 20         | 5       | Number of concurrent HTTP requests            |
| Delay (ms)            | 0 – 5,000      | 50      | Delay between requests in milliseconds        |
| Extract Content        | on / off       | on      | Enable content extraction to Markdown         |
| Check Outgoing Links   | on / off       | on      | Check external links and images for broken URLs|

The desktop app also includes a **Dark Mode** toggle in the Settings card, persisted across sessions.

## Page Data Model

Each crawled page contains the following fields, serialized to JSON in the output formats.

| Field                   | Type      | Description                                            |
|-------------------------|-----------|--------------------------------------------------------|
| `url`                   | `String`  | Full URL of the page                                   |
| `status_code`          | `Number`  | HTTP status code                                       |
| `content_type`         | `String?` | Content-Type header value                              |
| `title`                | `String?` | HTML `<title>` text                                    |
| `meta_description`     | `String?` | `<meta name="description">` content                 |
| `canonical_url`        | `String?` | `<link rel="canonical">` href                        |
| `discovered_from`      | `String?` | Parent URL that linked to this page                   |
| `links_found`          | `Number`  | Number of new same-domain links discovered            |
| `depth`                | `Number`  | Crawl depth from the start URL                        |
| `response_time_ms`     | `Number`  | HTTP response time in milliseconds                    |
| `markdown`             | `String?` | Extracted content as Markdown (when enabled)         |
| `word_count`           | `Number?` | Word count of extracted content                        |
| `byline`               | `String?` | Author byline from content extraction                  |
| `excerpt`              | `String?` | Article excerpt from content extraction                |
| `meta_robots`          | `String?` | `<meta name="robots">` content                      |
| `x_robots_tag`         | `String?` | `X-Robots-Tag` HTTP header value                      |
| `rel_next`             | `String?` | `<link rel="next">` href (pagination)              |
| `rel_prev`             | `String?` | `<link rel="prev">` href (pagination)              |
| `outgoing_link_errors`  | `Array?` | Broken outgoing links and images (when checking is enabled)|

Each entry in the `outgoing_link_errors` array is an `OutgoingLinkError` object:

| Field                 | Type       | Description                                               |
|-----------------------|------------|-----------------------------------------------------------|
| `url`                 | `String`   | The broken link URL                                      |
| `status_code`        | `Number`   | HTTP status code (0 for connection failure)              |
| `error`              | `String?`  | Error message for connection failures                     |
| `link_type`          | `String`   | `
