From 09a87b79d26ec135ca8fa58f1adeb847fe48b6b2 Mon Sep 17 00:00:00 2001 From: pi Date: Thu, 26 Mar 2026 00:40:40 +1300 Subject: [PATCH] docs(ui): update help assets and regenerate help pdf --- .gitignore | 1 + README.md | 1 + db/tab.json | 2 +- docs/help.md | 112 ++++++++++++++++++++++++++ docs/help.pdf | Bin 0 -> 161566 bytes docs/images/help/colour-palette.svg | 14 ++++ docs/images/help/header-toolbar.svg | 24 ++++++ docs/images/help/mobile-menu.svg | 26 ++++++ docs/images/help/preset-editor.svg | 31 +++++++ docs/images/help/tab-preset-strip.svg | 35 ++++++++ scripts/build_help_pdf.sh | 19 +++++ scripts/help-pdf.css | 96 ++++++++++++++++++++++ src/static/help.js | 24 +++++- src/static/presets.js | 71 +++++----------- src/static/style.css | 16 ++-- src/static/tabs.js | 71 ---------------- src/templates/index.html | 10 ++- src/templates/settings.html | 58 ++++++++++++- 18 files changed, 478 insertions(+), 133 deletions(-) create mode 100644 docs/help.md create mode 100644 docs/help.pdf create mode 100644 docs/images/help/colour-palette.svg create mode 100644 docs/images/help/header-toolbar.svg create mode 100644 docs/images/help/mobile-menu.svg create mode 100644 docs/images/help/preset-editor.svg create mode 100644 docs/images/help/tab-preset-strip.svg create mode 100755 scripts/build_help_pdf.sh create mode 100644 scripts/help-pdf.css diff --git a/.gitignore b/.gitignore index 9040ecc..a4f92ab 100644 --- a/.gitignore +++ b/.gitignore @@ -23,6 +23,7 @@ ENV/ Thumbs.db # Project specific +docs/.help-print.html settings.json *.log *.db diff --git a/README.md b/README.md index 80f934d..31804cf 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,7 @@ LED controller web app for managing profiles, tabs, presets, and colour palettes - One-time setup for port 80 without root: `sudo scripts/setup-port80.sh` - Start app: `pipenv run run` - Dev watcher (auto-restart on `src/` changes): `pipenv run dev` +- Regenerate **`docs/help.pdf`** from **`docs/help.md`**: `pipenv run help-pdf` (requires **pandoc** and **chromium** on the host) ## UI modes diff --git a/db/tab.json b/db/tab.json index c7cea31..636c57b 100644 --- a/db/tab.json +++ b/db/tab.json @@ -1 +1 @@ -{"1": {"name": "default", "names": ["1", "2", "3", "4", "5", "6", "7", "8", "0", "a"], "presets": [["4", "2", "7"], ["15", "3", "14"], ["5", "8", "10"], ["11", "9", "12"], ["1", "13", "37"]], "presets_flat": ["4", "2", "7", "15", "3", "14", "5", "8", "10", "11", "9", "12", "1", "13", "37"], "default_preset": "4"}, "2": {"name": "default", "names": ["1", "2", "3", "4", "5", "6", "7", "8", "0", "a"], "presets": [["16", "17", "18"], ["19", "20", "21"], ["22", "23", "24"], ["25", "26", "27"], ["28", "29", "30"]], "presets_flat": ["16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30"]}, "3": {"name": "default", "names": ["1"], "presets": [], "default_preset": null}, "4": {"name": "default", "names": ["1"], "presets": [], "default_preset": null}, "5": {"name": "dj", "names": ["dj"], "presets": [["31", "32", "33"]], "default_preset": "31", "presets_flat": ["31", "32", "33"]}, "6": {"name": "default", "names": ["1"], "presets": [], "default_preset": null}, "7": {"name": "dj", "names": ["dj"], "presets": [["34", "35", "36"]], "default_preset": "34", "presets_flat": ["34", "35", "36"]}, "8": {"name": "test", "names": ["11"], "presets": [["1", "2", "3"], ["4", "5"]], "default_preset": "1", "presets_flat": ["1", "2", "3", "4", "5"]}} \ No newline at end of file +{"1": {"name": "default", "names": ["1", "2", "3", "4", "5", "6", "7", "8", "0", "a"], "presets": [["4", "2", "7"], ["15", "3", "14"], ["5", "8", "10"], ["11", "9", "12"], ["1", "13", "37"]], "presets_flat": ["4", "2", "7", "15", "3", "14", "5", "8", "10", "11", "9", "12", "1", "13", "37"], "default_preset": "15"}, "2": {"name": "default", "names": ["1", "2", "3", "4", "5", "6", "7", "8", "0", "a"], "presets": [["16", "17", "18"], ["19", "20", "21"], ["22", "23", "24"], ["25", "26", "27"], ["28", "29", "30"]], "presets_flat": ["16", "17", "18", "19", "20", "21", "22", "23", "24", "25", "26", "27", "28", "29", "30"]}, "3": {"name": "default", "names": ["1"], "presets": [], "default_preset": null}, "4": {"name": "default", "names": ["1"], "presets": [], "default_preset": null}, "5": {"name": "dj", "names": ["dj"], "presets": [["31", "32", "33"]], "default_preset": "31", "presets_flat": ["31", "32", "33"]}, "6": {"name": "default", "names": ["1"], "presets": [], "default_preset": null}, "7": {"name": "dj", "names": ["dj"], "presets": [["34", "35", "36"]], "default_preset": "34", "presets_flat": ["34", "35", "36"]}, "8": {"name": "test", "names": ["11"], "presets": [["1", "2", "3"], ["4", "5"]], "default_preset": "1", "presets_flat": ["1", "2", "3", "4", "5"]}} \ No newline at end of file diff --git a/docs/help.md b/docs/help.md new file mode 100644 index 0000000..fdf26ff --- /dev/null +++ b/docs/help.md @@ -0,0 +1,112 @@ +# LED controller — user guide + +This page describes the **main web UI** served from the Raspberry Pi app: profiles, tabs, presets, colour palettes, and sending commands to LED devices over the serial → ESP-NOW bridge. + +For HTTP routes and the wire format the driver expects, see **[API.md](API.md)**. For running the app locally, see the project **README**. + +Figures below are **schematic** (layout and ideas), not pixel-perfect screenshots. + +--- + +## Run mode and Edit mode + +The header has a mode toggle (desktop and mobile menu). The **label on the button is the mode you switch to** when you press it. + +![Schematic: tab buttons on the left; Profiles, Tabs, Presets, Patterns, and the mode toggle on the right (example shows Edit mode with “Run mode” on the button).](images/help/header-toolbar.svg) + +*The active tab is highlighted. Extra management buttons appear only in Edit mode.* + +| Mode | Purpose | +|------|--------| +| **Run mode** | Day-to-day control: choose a tab, tap presets, apply profiles. Management buttons are hidden. | +| **Edit mode** | Full setup: tabs, presets, patterns, colour palette, **Send Presets**, profile create/clone/delete, preset reordering, and per-tile **Edit** on the strip. | + +**Profiles** is available in both modes: in Run mode you can only **apply** a profile; in Edit mode you can also **create**, **clone**, and **delete** profiles. + +--- + +## Tabs + +- **Select a tab**: click its button in the top bar. The main area shows that tab’s preset strip and controls. +- **Edit mode — open tab settings**: **right-click** a tab button to change its name, **device IDs** (comma-separated), and which presets appear on the tab. Device identifiers are matched to each device’s **name** when the app builds `select` messages for the driver. +- **Tabs modal** (Edit mode): create new tabs from the header **Tabs** button. New tabs need a name and device ID list (defaults to `1` if you leave a simple placeholder). +- **Brightness slider** (per tab): adjusts **global** brightness sent to devices (`b` in the driver message), with a short debounce so small drags do not flood the link. + +--- + +## Presets on the tab strip + +- **Run and Edit mode**: click the **main part** of a preset tile to **select** that preset on all devices assigned to the current tab (same logical action as a `select` in the driver API). +- **Edit mode only**: + - **Edit** beside a tile opens the preset editor for that preset, scoped to the current tab (so you can **Remove from tab** without deleting the preset from the profile). + - **Drag and drop** tiles to reorder them; order is saved for that tab. + +![Schematic: tab title, brightness slider, and a row of preset tiles; Edit mode adds an Edit control and drag handles for reordering.](images/help/tab-preset-strip.svg) + +*The slider controls global brightness for the tab’s devices. Click the coloured area of a tile to select that preset.* + +The **Presets** header button (Edit mode) opens a **profile-wide** list: **Add** new presets, **Edit**, **Send** (push definition over the transport), and **Delete** (removes the preset from the profile entirely). + +--- + +## Preset editor + +- **Pattern**: chosen from the dropdown; optional **n1–n8** fields depend on the pattern (see **Pattern-specific parameters** in [API.md](API.md)). +- **Colours**: choosing a value in the colour picker **adds** a swatch when the picker closes. Swatches can be **reordered** by dragging. Changing a swatch with the picker **clears** palette linkage for that slot. +- **From Palette**: inserts a colour **linked** to the current profile’s palette. Linked slots show a **P** badge; if you change that palette entry later, presets using it update. +- **Brightness (0–255)** and **Delay (ms)**: stored on the preset and sent with the compact preset payload. +- **Try**: sends the current form values to devices on the **current tab**, then selects that preset — **without** `save` on the device (good for auditioning). +- **Default**: updates the tab’s **default preset** and sends a **default** hint for those devices; it does not force the same live selection behaviour as clicking a tile. +- **Save & Send**: writes the preset to the server, then pushes definitions with **save** so devices may persist them. It does **not** auto-select the preset on devices (use the strip or **Try** if you want that). +- **Remove from tab** (when you opened the editor from a tab): removes the preset from **this tab’s list only**; the preset remains in the profile for other tabs. + +![Schematic: preset editor with name, pattern, colour swatches (one with a P badge for palette-linked), and action buttons.](images/help/preset-editor.svg) + +*Try previews without persisting on the device; **Save & Send** stores the preset and pushes definitions with save.* + +--- + +## Profiles + +- **Apply**: sets the **current profile** in your session. Tabs and presets you see are scoped to that profile. +- **Edit mode — Create**: new profiles always get a populated **default** tab. Optionally tick **DJ tab** to also create a `dj` tab (device name `dj`) with starter DJ-oriented presets. +- **Clone** / **Delete**: available in Edit mode from the profile list. + +--- + +## Send Presets (Edit mode) + +**Send Presets** walks **every tab** in the **current profile**, collects each tab’s preset IDs, and calls **`POST /presets/send`** per tab (including each tab’s **default** preset when set). Use this to bulk-push definitions to hardware after editing, without clicking **Send** on every preset individually. + +--- + +## Patterns + +The **Patterns** dialog (Edit mode) is a **read-only reference**: pattern names and typical **delay** ranges from the pattern definitions. It does not change device behaviour by itself; patterns are chosen inside the preset editor. + +--- + +## Colour palette + +**Colour Palette** (Edit mode) edits the **current profile’s** palette swatches. Those colours are reused by **From Palette** in the preset editor and stay in sync while the **P** link remains. + +![Schematic: palette modal with a row of swatches for the current profile.](images/help/colour-palette.svg) + +*Add or change swatches here; linked preset colours update automatically.* + +--- + +## Mobile layout + +On narrow screens, use **Menu** to reach the same actions as the desktop header (Profiles, Tabs, Presets, Help, mode toggle, etc.). + +![Schematic: narrow layout with Menu and the same header actions in a dropdown.](images/help/mobile-menu.svg) + +*Preset tiles behave the same once a tab is selected.* + +--- + +## Further reading + +- **[API.md](API.md)** — REST routes, session scoping, WebSocket `/ws`, and LED driver JSON (`presets`, `select`, `save`, `default`, pattern keys). +- **README** — `pipenv run run`, port 80 setup, and high-level behaviour. diff --git a/docs/help.pdf b/docs/help.pdf new file mode 100644 index 0000000000000000000000000000000000000000..84e979c3818a46d99e1b24a74cbecbc259bf8363 GIT binary patch literal 161566 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
    5LK|_A5RE|J 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℘4xT#)Z*lKFjQ;o2=12qv2~u6) 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 H%TfOy*WTog literal 0 HcmV?d00001 diff --git a/docs/images/help/colour-palette.svg b/docs/images/help/colour-palette.svg new file mode 100644 index 0000000..6f352d7 --- /dev/null +++ b/docs/images/help/colour-palette.svg @@ -0,0 +1,14 @@ + + Colour Palette modal (concept) + + Colour Palette + Profile: current profile name + + + + + + + + + Swatches belong to the profile; preset editor uses them via From Palette. + diff --git a/docs/images/help/header-toolbar.svg b/docs/images/help/header-toolbar.svg new file mode 100644 index 0000000..c727a74 --- /dev/null +++ b/docs/images/help/header-toolbar.svg @@ -0,0 +1,24 @@ + + Header: tab buttons and action bar + + + Tabs + + default + + lounge + + dj + Actions (Edit mode) + + Profiles + + Tabs + + Presets + + Patterns + + Run mode + Active tab highlighted. Mode button shows the mode you switch to next. + diff --git a/docs/images/help/mobile-menu.svg b/docs/images/help/mobile-menu.svg new file mode 100644 index 0000000..6f63cfa --- /dev/null +++ b/docs/images/help/mobile-menu.svg @@ -0,0 +1,26 @@ + + Narrow screen: Menu aggregates header actions + + + + Menu � + + tab + + tab + + Dropdown (same actions as desktop header) + + Run mode + Profiles + Tabs + Presets + Help + + + Content area  presets as on desktop + + preset + + preset + diff --git a/docs/images/help/preset-editor.svg b/docs/images/help/preset-editor.svg new file mode 100644 index 0000000..9c84583 --- /dev/null +++ b/docs/images/help/preset-editor.svg @@ -0,0 +1,31 @@ + + Preset editor modal (simplified) + + + Preset + Name + + evening glow + Pattern + + pulse + Colours + + + P + + P = palette-linked + Brightness, delay, n1-n8 + + 0-255 + Actions + + Try + + Default + + Save+Send + + Close + Try: preview without device save. Save+Send: store and push with save. + diff --git a/docs/images/help/tab-preset-strip.svg b/docs/images/help/tab-preset-strip.svg new file mode 100644 index 0000000..ebdce32 --- /dev/null +++ b/docs/images/help/tab-preset-strip.svg @@ -0,0 +1,35 @@ + + Main area: brightness and preset tiles + + + + + + + + + + + + + + lounge + Brightness (global) + + + + drag to adjust + Click tile body to select on tab devices + + + warm white + + + rainbow + + + chase + + Edit + Edit mode: drag tiles to reorder + diff --git a/scripts/build_help_pdf.sh b/scripts/build_help_pdf.sh new file mode 100755 index 0000000..30a75ea --- /dev/null +++ b/scripts/build_help_pdf.sh @@ -0,0 +1,19 @@ +#!/usr/bin/env sh +# Build docs/help.pdf from docs/help.md. +# Requires: pandoc, chromium (headless print-to-PDF). +set -eu +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +# HTML next to docs/help.md so relative image paths (e.g. images/help/*.svg) resolve. +HTML="$ROOT/docs/.help-print.html" +trap 'rm -f "$HTML"' EXIT + +pandoc "$ROOT/docs/help.md" -s \ + --css="$ROOT/scripts/help-pdf.css" \ + --metadata title="LED controller — user guide" \ + -o "$HTML" + +chromium --headless --no-sandbox --disable-gpu \ + --print-to-pdf="$ROOT/docs/help.pdf" \ + "file://${HTML}" + +echo "Wrote $ROOT/docs/help.pdf ($(wc -c < "$ROOT/docs/help.pdf") bytes)" diff --git a/scripts/help-pdf.css b/scripts/help-pdf.css new file mode 100644 index 0000000..88632ea --- /dev/null +++ b/scripts/help-pdf.css @@ -0,0 +1,96 @@ +/* Print stylesheet for docs/help.md → PDF (Chromium headless) */ +@page { + margin: 18mm; + size: A4; +} +html { + font-size: 11pt; + line-height: 1.4; +} +body { + font-family: "DejaVu Sans", "Liberation Sans", Helvetica, Arial, sans-serif; + color: #222; + max-width: 100%; +} +h1 { + font-size: 1.45rem; + border-bottom: 2px solid #333; + padding-bottom: 0.25em; + margin-top: 0; +} +h2 { + font-size: 1.15rem; + margin-top: 1.25em; + page-break-after: avoid; +} +h3 { + font-size: 1.05rem; + margin-top: 1em; + page-break-after: avoid; +} +code { + font-family: "DejaVu Sans Mono", "Liberation Mono", Consolas, monospace; + font-size: 0.92em; + background: #f3f3f3; + padding: 0.1em 0.35em; + border-radius: 3px; +} +pre { + font-family: "DejaVu Sans Mono", "Liberation Mono", Consolas, monospace; + font-size: 0.88em; + background: #f5f5f5; + border: 1px solid #ddd; + padding: 0.65em 0.85em; + overflow-x: auto; + page-break-inside: avoid; +} +pre code { + background: none; + padding: 0; +} +table { + border-collapse: collapse; + width: 100%; + margin: 0.75em 0; + font-size: 0.95em; + page-break-inside: avoid; +} +th, td { + border: 1px solid #bbb; + padding: 6px 8px; + text-align: left; + vertical-align: top; +} +th { + background: #eee; +} +a { + color: #1a5276; + text-decoration: none; +} +hr { + border: none; + border-top: 1px solid #ccc; + margin: 1.25em 0; +} +ul, ol { + padding-left: 1.35em; +} +li { + margin: 0.2em 0; +} + +/* Images in docs/help.md */ +img { + max-width: 100%; + height: auto; + page-break-inside: avoid; + border: 1px solid #ccc; + border-radius: 4px; +} +p.help-figure-caption { + font-size: 0.9em; + color: #555; + margin: 0.35em 0 1em 0; + line-height: 1.35; +} diff --git a/src/static/help.js b/src/static/help.js index ff65644..18cf36b 100644 --- a/src/static/help.js +++ b/src/static/help.js @@ -60,6 +60,12 @@ document.addEventListener('DOMContentLoaded', () => { if (nameInput && data && typeof data === 'object') { nameInput.value = data.device_name || 'led-controller'; } + const chInput = document.getElementById('wifi-channel-input'); + if (chInput && data && typeof data === 'object') { + const ch = data.wifi_channel; + chInput.value = + ch !== undefined && ch !== null && ch !== '' ? String(ch) : '6'; + } } catch (error) { console.error('Error loading device settings:', error); } @@ -116,15 +122,29 @@ document.addEventListener('DOMContentLoaded', () => { showSettingsMessage('Device name is required', 'error'); return; } + const chRaw = document.getElementById('wifi-channel-input') + ? document.getElementById('wifi-channel-input').value + : '6'; + const wifiChannel = parseInt(chRaw, 10); + if (Number.isNaN(wifiChannel) || wifiChannel < 1 || wifiChannel > 11) { + showSettingsMessage('WiFi channel must be between 1 and 11', 'error'); + return; + } try { const response = await fetch('/settings/settings', { method: 'PUT', headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify({ device_name: deviceName }), + body: JSON.stringify({ + device_name: deviceName, + wifi_channel: wifiChannel, + }), }); const result = await response.json(); if (response.ok) { - showSettingsMessage('Device name saved. It will be used on next restart.', 'success'); + showSettingsMessage( + 'Device settings saved. They will apply on next restart where relevant.', + 'success', + ); } else { showSettingsMessage(`Error: ${result.error || 'Failed to save device name'}`, 'error'); } diff --git a/src/static/presets.js b/src/static/presets.js index 2de75bb..768886f 100644 --- a/src/static/presets.js +++ b/src/static/presets.js @@ -174,6 +174,7 @@ document.addEventListener('DOMContentLoaded', () => { const presetBrightnessInput = document.getElementById('preset-brightness-input'); const presetDelayInput = document.getElementById('preset-delay-input'); const presetDefaultButton = document.getElementById('preset-default-btn'); + const presetRemoveFromTabButton = document.getElementById('preset-remove-from-tab-btn'); const presetSaveButton = document.getElementById('preset-save-btn'); const presetAddFromPaletteButton = document.getElementById('preset-add-from-palette-btn'); @@ -532,6 +533,7 @@ document.addEventListener('DOMContentLoaded', () => { } } } + updatePresetEditorTabActionsVisibility(); }; const clearForm = () => { @@ -565,6 +567,7 @@ document.addEventListener('DOMContentLoaded', () => { presetPatternInput.style.backgroundColor = ''; presetPatternInput.style.cursor = ''; } + updatePresetEditorTabActionsVisibility(); }; const getActiveTabId = () => { @@ -575,6 +578,12 @@ document.addEventListener('DOMContentLoaded', () => { return section ? section.dataset.tabId : null; }; + const updatePresetEditorTabActionsVisibility = () => { + if (!presetRemoveFromTabButton) return; + const show = Boolean(currentEditTabId && currentEditId); + presetRemoveFromTabButton.hidden = !show; + }; + const updateTabDefaultPreset = async (presetId) => { const tabId = getActiveTabId(); if (!tabId) { @@ -786,6 +795,7 @@ document.addEventListener('DOMContentLoaded', () => { editButton.textContent = 'Edit'; editButton.addEventListener('click', async () => { currentEditId = presetId; + currentEditTabId = null; const paletteColors = await getCurrentProfilePaletteColors(); const presetForEditor = { ...(preset || {}), @@ -1241,6 +1251,16 @@ document.addEventListener('DOMContentLoaded', () => { }); } + if (presetRemoveFromTabButton) { + presetRemoveFromTabButton.addEventListener('click', async () => { + if (!currentEditTabId || !currentEditId) return; + if (!window.confirm('Remove this preset from this tab?')) return; + await removePresetFromTab(currentEditTabId, currentEditId); + clearForm(); + closeEditor(); + }); + } + presetSaveButton.addEventListener('click', async () => { const payload = buildPresetPayload(); if (!payload.name) { @@ -1778,58 +1798,7 @@ const createPresetButton = (presetId, preset, tabId, isSelected = false) => { editPresetFromTab(presetId, tabId, preset); }); - const defaultBtn = document.createElement('button'); - defaultBtn.type = 'button'; - defaultBtn.className = 'btn btn-secondary btn-small'; - defaultBtn.textContent = 'Default'; - defaultBtn.title = 'Set as default preset'; - defaultBtn.addEventListener('click', async (e) => { - e.preventDefault(); - e.stopPropagation(); - if (isDraggingPreset) return; - const section = row.closest('.presets-section'); - const namesAttr = section && section.getAttribute('data-device-names'); - const deviceNames = namesAttr - ? namesAttr.split(',').map((n) => n.trim()).filter((n) => n.length > 0) - : []; - sendDefaultPreset(presetId, deviceNames); - // Persist tab-level default if we know the tab from this tile. - if (tabId) { - try { - const tabResponse = await fetch(`/tabs/${tabId}`, { - headers: { Accept: 'application/json' }, - }); - if (tabResponse.ok) { - const tabData = await tabResponse.json(); - tabData.default_preset = presetId; - await fetch(`/tabs/${tabId}`, { - method: 'PUT', - headers: { 'Content-Type': 'application/json' }, - body: JSON.stringify(tabData), - }); - } - } catch (error) { - console.warn('Failed to save tab default preset:', error); - } - } - }); - - const removeBtn = document.createElement('button'); - removeBtn.type = 'button'; - removeBtn.className = 'btn btn-danger btn-small'; - removeBtn.textContent = 'Remove'; - removeBtn.title = 'Remove from this tab'; - removeBtn.addEventListener('click', async (e) => { - e.preventDefault(); - e.stopPropagation(); - if (isDraggingPreset) return; - if (!window.confirm('Remove this preset from this tab?')) return; - await removePresetFromTab(tabId, presetId); - }); - actions.appendChild(editBtn); - actions.appendChild(defaultBtn); - actions.appendChild(removeBtn); row.appendChild(actions); } diff --git a/src/static/style.css b/src/static/style.css index c639da5..1e13a6f 100644 --- a/src/static/style.css +++ b/src/static/style.css @@ -620,15 +620,21 @@ body.preset-ui-run .edit-mode-only { height: 5rem; } +/* Edit only beside the preset tile in edit mode. */ .preset-tile-actions { - display: grid; - grid-template-columns: repeat(2, minmax(0, 1fr)); - grid-auto-rows: 1fr; + display: flex; + flex-direction: column; + justify-content: stretch; gap: 0.2rem; - align-content: stretch; flex-shrink: 0; padding: 0.15rem 0 0.15rem 0.25rem; - width: 6.5rem; + width: auto; + min-width: 0; +} + +.preset-editor-modal-actions { + flex-wrap: wrap; + gap: 0.35rem; } .preset-tile-actions .btn { diff --git a/src/static/tabs.js b/src/static/tabs.js index 9434988..9d25fe7 100644 --- a/src/static/tabs.js +++ b/src/static/tabs.js @@ -142,13 +142,6 @@ function renderTabsListModal(tabs, tabOrder, currentTabId) { openEditTabModal(tabId, tab); }); - const sendPresetsButton = document.createElement("button"); - sendPresetsButton.className = "btn btn-secondary btn-small"; - sendPresetsButton.textContent = "Send Presets"; - sendPresetsButton.addEventListener("click", async () => { - await sendTabPresets(tabId); - }); - const cloneButton = document.createElement("button"); cloneButton.className = "btn btn-secondary btn-small"; cloneButton.textContent = "Clone"; @@ -233,7 +226,6 @@ function renderTabsListModal(tabs, tabOrder, currentTabId) { row.appendChild(label); row.appendChild(applyButton); - row.appendChild(sendPresetsButton); if (editMode) { row.appendChild(editButton); row.appendChild(cloneButton); @@ -373,69 +365,6 @@ async function loadTabContent(tabId) { } } -// Send all presets used by a tab via the /presets/send HTTP endpoint. -async function sendTabPresets(tabId) { - try { - // Load tab data to determine which presets are used - const tabResponse = await fetch(`/tabs/${tabId}`, { - headers: { Accept: 'application/json' }, - }); - if (!tabResponse.ok) { - alert('Failed to load tab to send presets.'); - return; - } - const tabData = await tabResponse.json(); - - // Extract preset IDs from tab (supports grid, flat, and legacy formats) - let presetIds = []; - if (Array.isArray(tabData.presets_flat)) { - presetIds = tabData.presets_flat; - } else if (Array.isArray(tabData.presets)) { - if (tabData.presets.length && typeof tabData.presets[0] === 'string') { - // Flat array of IDs - presetIds = tabData.presets; - } else if (tabData.presets.length && Array.isArray(tabData.presets[0])) { - // 2D grid - presetIds = tabData.presets.flat(); - } - } - presetIds = (presetIds || []).filter(Boolean); - - if (!presetIds.length) { - alert('This tab has no presets to send.'); - return; - } - - // Call server-side ESPNow sender with just the IDs; it handles chunking. - const payload = { preset_ids: presetIds }; - if (tabData.default_preset) { - payload.default = tabData.default_preset; - } - const response = await fetch('/presets/send', { - method: 'POST', - headers: { - 'Content-Type': 'application/json', - 'Accept': 'application/json', - }, - body: JSON.stringify(payload), - }); - - const data = await response.json().catch(() => ({})); - if (!response.ok) { - const msg = (data && data.error) || 'Failed to send presets.'; - alert(msg); - return; - } - - const sent = typeof data.presets_sent === 'number' ? data.presets_sent : presetIds.length; - const messages = typeof data.messages_sent === 'number' ? data.messages_sent : '?'; - alert(`Sent ${sent} preset(s) in ${messages} ESPNow message(s).`); - } catch (error) { - console.error('Failed to send tab presets:', error); - alert('Failed to send tab presets.'); - } -} - // Send all presets used by all tabs in the current profile via /presets/send. async function sendProfilePresets() { try { diff --git a/src/templates/index.html b/src/templates/index.html index 907ea74..b984799 100644 --- a/src/templates/index.html +++ b/src/templates/index.html @@ -179,9 +179,10 @@ - +
    + + + STA channel (1–11) for LED drivers and the serial bridge. Use the same value everywhere. +
    - +
    diff --git a/src/templates/settings.html b/src/templates/settings.html index f9eb53e..40a5a92 100644 --- a/src/templates/settings.html +++ b/src/templates/settings.html @@ -170,11 +170,26 @@

    Device Settings

    -

    Configure WiFi Access Point settings

    +

    Configure WiFi Access Point and ESP-NOW options

    + +
    +

    ESP-NOW

    +
    +
    + + + STA channel (1–11) for LED drivers and the serial bridge. Use the same value on every device. +
    +
    + +
    +
    +
    +

    WiFi Access Point Settings

    @@ -222,6 +237,46 @@ }, 5000); } + async function loadEspnowChannel() { + try { + const response = await fetch('/settings'); + const data = await response.json(); + const chInput = document.getElementById('wifi-channel-page-input'); + if (chInput && data && typeof data === 'object') { + const ch = data.wifi_channel; + chInput.value = + ch !== undefined && ch !== null && ch !== '' ? String(ch) : '6'; + } + } catch (error) { + console.error('Error loading ESP-NOW channel:', error); + } + } + + document.getElementById('espnow-form').addEventListener('submit', async (e) => { + e.preventDefault(); + const chRaw = document.getElementById('wifi-channel-page-input').value; + const wifiChannel = parseInt(chRaw, 10); + if (Number.isNaN(wifiChannel) || wifiChannel < 1 || wifiChannel > 11) { + showMessage('WiFi channel must be between 1 and 11', 'error'); + return; + } + try { + const response = await fetch('/settings/settings', { + method: 'PUT', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ wifi_channel: wifiChannel }), + }); + const result = await response.json(); + if (response.ok) { + showMessage('ESP-NOW channel saved.', 'success'); + } else { + showMessage(`Error: ${result.error || 'Failed to save'}`, 'error'); + } + } catch (error) { + showMessage(`Error: ${error.message}`, 'error'); + } + }); + // Load AP status and config async function loadAPStatus() { try { @@ -299,6 +354,7 @@ }); // Load all data on page load + loadEspnowChannel(); loadAPStatus(); // Refresh status every 10 seconds