From b29436eb62ec90debf75b47115d06157873ce490 Mon Sep 17 00:00:00 2001 From: Jared Dohrman Date: Mon, 13 Apr 2026 16:24:08 +1000 Subject: [PATCH] docs: simplify board tables and clean up published markdown rendering --- docs/_stylesheets/extra.css | 6 ++ docs/boards.md | 87 +++++++++++++-------------- docs/custom-cli.md | 115 ++++++++++++------------------------ docs/releases.md | 9 +-- docs/web-panel.md | 20 ++----- 5 files changed, 95 insertions(+), 142 deletions(-) diff --git a/docs/_stylesheets/extra.css b/docs/_stylesheets/extra.css index a0d3b49c..357ed5e4 100644 --- a/docs/_stylesheets/extra.css +++ b/docs/_stylesheets/extra.css @@ -119,6 +119,12 @@ body { background: transparent; } +@media screen and (min-width: 76.25em) { + .md-grid { + max-width: 80rem; + } +} + .md-content__inner { background: linear-gradient(180deg, var(--web-surface-2), var(--web-surface-1)); border: 1px solid var(--web-border); diff --git a/docs/boards.md b/docs/boards.md index a8e74d5d..93944ed6 100644 --- a/docs/boards.md +++ b/docs/boards.md @@ -14,7 +14,6 @@ The tables below are built from the repo's PlatformIO board metadata and variant - `Target` is the short board name used in this comparison page. Release filenames and local build commands still use the full env names such as `heltec_v4_repeater_mqtt`. - `RAM` is the MCU's built-in RAM. - `PSRAM` is extra memory on some boards. More PSRAM usually means more headroom for UI, MQTT, and future features. -- `Web UI` means the local repeater web panel is enabled in that build. If a board enables PSRAM but the repo does not declare the exact size, it is shown as `Yes (size not declared)`. @@ -32,48 +31,50 @@ If a board enables PSRAM but the repo does not declare the exact size, it is sho This table includes all repeater MQTT targets currently defined in `variants/eastmesh_mqtt/platformio.ini`. -| Target | CPU | RAM | PSRAM | Flash | LoRa | Display | GPS | Web UI | Notes | -| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | -| Ebyte_EoRa-S3 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1262 | OLED (SSD1306) | No | Yes | more memory headroom | -| Generic_E22_sx1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | None | No | Yes | headless | -| Generic_E22_sx1268 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1268 | None | No | Yes | headless | -| Heltec_ct62 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | No | Yes | headless | -| Heltec_E213 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | E-paper (2.13") | No | Yes | low-power display, more memory headroom | -| Heltec_E290 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | E-paper (2.9") | No | Yes | low-power display, more memory headroom | -| Heltec_T190 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | TFT (ST7789) | No | Yes | richer UI, more memory headroom | -| heltec_tracker_v2 | ESP32S3 / 240 MHz | 512 KB | No | 8MB | SX1262 | TFT (ST7735) | Yes | Yes | richer UI, GPS | -| Heltec_v2 | ESP32 / 240 MHz | 520 KB | No | 8 MB | SX1276 | OLED (SSD1306) | No | Yes | | -| Heltec_v3 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | OLED (SSD1306) | Yes | Yes | GPS | -| heltec_v4 | ESP32S3 / 240 MHz | 512 KB | 2 MB | 16MB | SX1262 | OLED (SSD1306) | Yes | Yes | GPS, more memory headroom | -| heltec_v4_tft | ESP32S3 / 240 MHz | 512 KB | 2 MB | 16MB | SX1262 | TFT (ST7789) | Yes | Yes | richer UI, GPS, more memory headroom | -| Heltec_Wireless_Paper | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | E-paper (2.13") | No | Yes | low-power display | -| Heltec_Wireless_Tracker | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | TFT (ST7735) | Yes | Yes | richer UI, GPS | -| Heltec_WSL3 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | Yes | headless, GPS | -| LilyGo_T3S3_sx1262 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1262 | OLED (SSD1306) | No | Yes | more memory headroom | -| LilyGo_T3S3_sx1276 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1276 | OLED (SSD1306) | No | Yes | more memory headroom | -| LilyGo_TBeam_1W | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | Yes | GPS, more memory headroom | -| LilyGo_TDeck | ESP32S3 / 240 MHz | 512 KB | No | 16MB | SX1262 | TFT (ST7789) | Yes | Yes | richer UI, GPS | -| LilyGo_Tlora_C6 | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | Yes | headless | -| LilyGo_TLora_V2_1_1_6 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | Yes | Yes | GPS | -| M5Stack_Unit_C6L | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | Yes | Yes | headless, GPS | -| Meshadventurer_sx1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | OLED (SSD1306) | Yes | Yes | GPS | -| Meshadventurer_sx1268 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1268 | OLED (SSD1306) | Yes | Yes | GPS | -| Meshimi | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | Yes | headless | -| nibble_screen_connect | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | OLED (SSD1306) | No | Yes | | -| RAK_3112 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | Yes | headless, GPS | -| Station_G2 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | Yes | GPS, more memory headroom | -| Station_G2_logging | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | Yes | GPS, more memory headroom | -| T_Beam_S3_Supreme_SX1262 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 8MB | SX1262 | OLED (SH1106) | Yes | Yes | GPS, more memory headroom | -| Tbeam_SX1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | OLED (SSD1306) | Yes | Yes | GPS | -| Tbeam_SX1276 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | Yes | Yes | GPS | -| Tenstar_C3_sx1262 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | No | Yes | headless | -| Tenstar_C3_sx1268 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1268 | None | No | Yes | headless | -| ThinkNode_M2 | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | OLED (SH1106) | No | Yes | | -| ThinkNode_M5 | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | E-paper (GxEPD) | Yes | Yes | low-power display, GPS | -| WHY2025_badge | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | Yes | headless | -| Xiao_C3 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | Yes | No | headless, GPS, web panel off | -| Xiao_C6 | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | Yes | headless | -| Xiao_S3_WIO | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | Yes | headless, GPS | +| Target | CPU | RAM | PSRAM | Flash | LoRa | Display | GPS | Notes | +| --- | --- | --- | --- | --- | --- | --- | --- | --- | +| Ebyte_EoRa-S3 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1262 | OLED (SSD1306) | No | more memory headroom | +| Generic_E22_sx1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | None | No | headless | +| Generic_E22_sx1268 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1268 | None | No | headless | +| Heltec_ct62 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | No | headless | +| Heltec_E213 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | E-paper (2.13") | No | low-power display, more memory headroom | +| Heltec_E290 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | E-paper (2.9") | No | low-power display, more memory headroom | +| Heltec_T190 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 16MB | SX1262 | TFT (ST7789) | No | richer UI, more memory headroom | +| heltec_tracker_v2 | ESP32S3 / 240 MHz | 512 KB | No | 8MB | SX1262 | TFT (ST7735) | Yes | richer UI, GPS | +| Heltec_v2 | ESP32 / 240 MHz | 520 KB | No | 8 MB | SX1276 | OLED (SSD1306) | No | | +| Heltec_v3 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | OLED (SSD1306) | Yes | GPS | +| heltec_v4 | ESP32S3 / 240 MHz | 512 KB | 2 MB | 16MB | SX1262 | OLED (SSD1306) | Yes | GPS, more memory headroom | +| heltec_v4_tft | ESP32S3 / 240 MHz | 512 KB | 2 MB | 16MB | SX1262 | TFT (ST7789) | Yes | richer UI, GPS, more memory headroom | +| Heltec_Wireless_Paper | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | E-paper (2.13") | No | low-power display | +| Heltec_Wireless_Tracker | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | TFT (ST7735) | Yes | richer UI, GPS | +| Heltec_WSL3 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | headless, GPS | +| LilyGo_T3S3_sx1262 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1262 | OLED (SSD1306) | No | more memory headroom | +| LilyGo_T3S3_sx1276 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 4MB | SX1276 | OLED (SSD1306) | No | more memory headroom | +| LilyGo_TBeam_1W | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | GPS, more memory headroom | +| LilyGo_TDeck | ESP32S3 / 240 MHz | 512 KB | No | 16MB | SX1262 | TFT (ST7789) | Yes | richer UI, GPS | +| LilyGo_Tlora_C6 | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | headless | +| LilyGo_TLora_V2_1_1_6 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | Yes | GPS | +| M5Stack_Unit_C6L | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | Yes | headless, GPS | +| Meshadventurer_sx1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | OLED (SSD1306) | Yes | GPS | +| Meshadventurer_sx1268 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1268 | OLED (SSD1306) | Yes | GPS | +| Meshimi | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | headless | +| nibble_screen_connect | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | OLED (SSD1306) | No | | +| RAK_3112 | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | headless, GPS | +| Station_G2 | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | GPS, more memory headroom | +| Station_G2_logging | ESP32S3 / 240 MHz | 512 KB | Yes (size not declared) | 16MB | SX1262 | OLED (SH1106) | Yes | GPS, more memory headroom | +| T_Beam_S3_Supreme_SX1262 | ESP32S3 / 240 MHz | 512 KB | 8 MB | 8MB | SX1262 | OLED (SH1106) | Yes | GPS, more memory headroom | +| Tbeam_SX1262 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1262 | OLED (SSD1306) | Yes | GPS | +| Tbeam_SX1276 | ESP32 / 240 MHz | 520 KB | No | 4 MB | SX1276 | OLED (SSD1306) | Yes | GPS | +| Tenstar_C3_sx1262 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | No | headless | +| Tenstar_C3_sx1268 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1268 | None | No | headless | +| ThinkNode_M2 | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | OLED (SH1106) | No | | +| ThinkNode_M5 | ESP32S3 / 240 MHz | 512 KB | No | 4MB | SX1262 | E-paper (GxEPD) | Yes | low-power display, GPS | +| WHY2025_badge | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | headless | +| Xiao_C3 | ESP32C3 / 160 MHz | 400 KB | No | 4 MB | SX1262 | None | Yes | headless, GPS, web panel off | +| Xiao_C6 | ESP32C6 / 160 MHz | 512 KB | No | 4 MB | SX1262 | None | No | headless | +| Xiao_S3_WIO | ESP32S3 / 240 MHz | 512 KB | No | 8 MB | SX1262 | None | Yes | headless, GPS | + +Note: all current `repeater_mqtt` boards support the local web panel except `Xiao_C3`, where it is disabled to preserve limited board resources. ## `companion_radio_wifi` Boards With A Display diff --git a/docs/custom-cli.md b/docs/custom-cli.md index d7e14a0c..617117e2 100644 --- a/docs/custom-cli.md +++ b/docs/custom-cli.md @@ -10,47 +10,29 @@ These commands are available on `*_repeater_mqtt` firmware targets. ### MQTT Status And Routing -- `get mqtt.status` - - shows WiFi, NTP, IATA, endpoint status, status publishing state, and TX state -- `get mqtt.statuscfg` - - shows whether periodic status messages are enabled as a simple `on` or `off` value - - most users can just use `get mqtt.status` -- `get mqtt.iata` - - shows the IATA/location code used in MQTT topics -- `set mqtt.iata ` - - sets the IATA/location code, for example `MEL` +- `get mqtt.status`: shows WiFi, NTP, IATA, endpoint status, status publishing state, and TX state. +- `get mqtt.statuscfg`: shows whether periodic status messages are enabled as a simple `on` or `off` value. Most users can just use `get mqtt.status`. +- `get mqtt.iata`: shows the IATA/location code used in MQTT topics. +- `set mqtt.iata `: sets the IATA/location code, for example `MEL`. ### MQTT Identity -- `get mqtt.owner` - - shows the configured owner public key -- `set mqtt.owner <64-hex-char-public-key>` - - sets the owner public key used in JWT metadata -- `mqtt.owner <64-hex-char-public-key>` - - shorthand for setting the owner public key -- `get mqtt.email` - - shows the configured owner email -- `set mqtt.email ` - - sets the owner email used in JWT metadata -- `mqtt.email ` - - shorthand for setting the owner email +- `get mqtt.owner`: shows the configured owner public key. +- `set mqtt.owner <64-hex-char-public-key>`: sets the owner public key used in JWT metadata. +- `mqtt.owner <64-hex-char-public-key>`: shorthand for setting the owner public key. +- `get mqtt.email`: shows the configured owner email. +- `set mqtt.email `: sets the owner email used in JWT metadata. +- `mqtt.email `: shorthand for setting the owner email. ### MQTT Message Controls -- `get mqtt.packets` - - shows whether packet messages are published -- `set mqtt.packets on|off` - - enables or disables packet publishing -- `get mqtt.raw` - - shows whether raw packet payloads are published -- `set mqtt.raw on|off` - - enables or disables the separate `raw` MQTT topic -- `set mqtt.status on|off` - - enables or disables periodic MQTT status publishing -- `get mqtt.tx` - - shows whether TX packets are included -- `set mqtt.tx on|off` - - enables or disables TX packet publishing +- `get mqtt.packets`: shows whether packet messages are published. +- `set mqtt.packets on|off`: enables or disables packet publishing. +- `get mqtt.raw`: shows whether raw packet payloads are published. +- `set mqtt.raw on|off`: enables or disables the separate `raw` MQTT topic. +- `set mqtt.status on|off`: enables or disables periodic MQTT status publishing. +- `get mqtt.tx`: shows whether TX packets are included. +- `set mqtt.tx on|off`: enables or disables TX packet publishing. ### MQTT Endpoints @@ -69,48 +51,31 @@ Legacy dotted aliases are also accepted: ### WiFi Settings For MQTT Repeaters -- `get wifi.status` - - shows SSID, connection state, raw WiFi status code, and IP when connected -- `get wifi.ssid` - - shows the configured WiFi SSID -- `set wifi.ssid ` - - sets the WiFi SSID -- `set wifi.pwd ` - - sets the WiFi password -- `get wifi.powersaving` - - shows the current WiFi power save mode -- `set wifi.powersaving none|min|max` - - sets WiFi power saving mode +- `get wifi.status`: shows SSID, connection state, raw WiFi status code, and IP when connected. +- `get wifi.ssid`: shows the configured WiFi SSID. +- `set wifi.ssid `: sets the WiFi SSID. +- `set wifi.pwd `: sets the WiFi password. +- `get wifi.powersaving`: shows the current WiFi power save mode. +- `set wifi.powersaving none|min|max`: sets WiFi power saving mode. ### Web Panel Controls - `get web` -- `get web.status` - - shows whether the local HTTPS panel is available +- `get web.status`: shows whether the local HTTPS panel is available. - `set web on|off` -- `set.web on|off` - - enables or disables the local HTTPS panel +- `set.web on|off`: enables or disables the local HTTPS panel. ### Runtime Diagnostics -- `memory` - - shows current heap and PSRAM usage -- `stats-core` - - shows battery, uptime, sticky error count, and outbound queue depth -- `stats-radio` - - shows radio noise floor, last RSSI, last SNR, and TX/RX airtime -- `stats-packets` - - shows packet receive/send totals, flood/direct breakdown, and receive errors +- `memory`: shows current heap and PSRAM usage. +- `stats-core`: shows battery, uptime, sticky error count, and outbound queue depth. +- `stats-radio`: shows radio noise floor, last RSSI, last SNR, and TX/RX airtime. +- `stats-packets`: shows packet receive/send totals, flood/direct breakdown, and receive errors. ### Board Battery Reporting -- `get battery.reporting` - - shows whether board battery reporting is enabled - - support is board-dependent -- `set battery.reporting on|off` - - enables or disables battery voltage reporting on supported boards - - currently useful for Heltec V3 boards where USB-only power can produce misleading battery readings - - if your board needs this too, open an issue and support can be added board-by-board +- `get battery.reporting`: shows whether board battery reporting is enabled. Support is board-dependent. +- `set battery.reporting on|off`: enables or disables battery voltage reporting on supported boards. This is currently useful for Heltec V3 boards where USB-only power can produce misleading battery readings. If your board needs this too, open an issue and support can be added board-by-board. ## Web Panel Allowlisted Commands @@ -181,18 +146,12 @@ To enter `CLI Rescue`: - long-press the user button within the first 8 seconds after boot - wait for `========= CLI Rescue =========` -- `get wifi.status` - - shows configured SSID, connection status, raw WiFi status code, and IP when connected -- `get wifi.ssid` - - shows the configured WiFi SSID -- `get wifi.powersaving` - - shows the current WiFi power saving mode -- `set wifi.ssid ` - - saves a WiFi SSID and immediately retries connection -- `set wifi.pwd ` - - saves a WiFi password and immediately retries connection -- `set wifi.powersaving none|min|max` - - changes the WiFi power save mode +- `get wifi.status`: shows configured SSID, connection status, raw WiFi status code, and IP when connected. +- `get wifi.ssid`: shows the configured WiFi SSID. +- `get wifi.powersaving`: shows the current WiFi power saving mode. +- `set wifi.ssid `: saves a WiFi SSID and immediately retries connection. +- `set wifi.pwd `: saves a WiFi password and immediately retries connection. +- `set wifi.powersaving none|min|max`: changes the WiFi power save mode. Companion WiFi builds also still support the existing rescue commands such as: diff --git a/docs/releases.md b/docs/releases.md index c8e76446..0c5641ff 100644 --- a/docs/releases.md +++ b/docs/releases.md @@ -39,9 +39,7 @@ Practical rule: 1. Open the release page and download the file for your board. 2. Confirm the board name in the filename matches your hardware. -3. Choose one of the following: - - update existing firmware with the normal `.bin` - - erase the device first, then flash the `-merged.bin` +3. Choose one of the following: update existing firmware with the normal `.bin`, or erase the device first and flash the `-merged.bin`. 4. Reboot the device and complete any post-flash setup such as WiFi, MQTT, or radio settings. ## Recommended Flasher @@ -66,10 +64,7 @@ Recommended usage: If this is your first time flashing EastMesh firmware, the easiest path is: 1. Open . -2. Select the firmware type you want: - - `Companion WiFi` - - `Repeater MQTT` - - or `Custom` +2. Select the firmware type you want: `Companion WiFi`, `Repeater MQTT`, or `Custom`. 3. Flash the correct firmware for your board. 4. Use the built-in setup tools in the flasher site to finish first-time configuration. diff --git a/docs/web-panel.md b/docs/web-panel.md index f1896d76..7d73405f 100644 --- a/docs/web-panel.md +++ b/docs/web-panel.md @@ -50,10 +50,8 @@ Some constrained targets disable the web panel to stay within flash limits. If y Useful CLI commands: -- `get wifi.status` - - shows WiFi state and IP address when connected -- `get web.status` - - shows whether the web panel is up and which URL to use +- `get wifi.status`: shows WiFi state and IP address when connected. +- `get web.status`: shows whether the web panel is up and which URL to use. Example: @@ -137,16 +135,10 @@ Notes: This section includes: -- `mqtt.iata` - - selected from a curated east-coast/south-east list -- `mqtt.owner` - - owner public key -- `mqtt.email` - - owner contact email -- MQTT server toggles - - `eastmesh-au` - - `letsmesh-eu` - - `letsmesh-us` +- `mqtt.iata`: selected from a curated east-coast/south-east list. +- `mqtt.owner`: owner public key. +- `mqtt.email`: owner contact email. +- MQTT server toggles: `eastmesh-au`, `letsmesh-eu`, and `letsmesh-us`. `MEL` is used as the default dropdown option until the repeater's saved value is loaded.