You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: configurable header/footer branding + move RFID reader settings to RFID tab
- Branding (General -> Branding): custom navbar header title and footer brand text,
stored in NVS (uiHeader/uiFooter), applied live in fillSettings via applyBranding().
Empty keeps the 'Leo Industries' default, so the fork is easy to re-brand.
- Moved the RFID reader settings (reader type, MFRC522 gain, PN5180 LPCD, SLIX2
password) out of the General tab into the RFID settings sub-tab, next to the
card-learning UI. Pure DOM relocation (saved/filled by element id as before);
the auto-save delegated handler now also covers #settings-rfid (the learn-action
dropdown is excluded via data-no-autosave). i18n de/en/fr.
Verified on the test device via Playwright: reader fields now live in the RFID tab
and are gone from General; branding fields present; main file tab reads Files/Dateien
and the settings sub-tab reads RFID; applyBranding updates navbar + footer live;
branding persists via settings round-trip (reset afterwards); no console errors.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: README.md
+1Lines changed: 1 addition & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -141,6 +141,7 @@ neon logo that doubles as the SVG favicon ([`7be5254`](../../commit/7be5254)):
141
141
|**RFID settings sub-tab + learned-cards list**: the old inline RFID-assignment form (id field + play-mode + submit) is gone — music cards are learned from the file-browser context menu (scan popup). A new **RFID** settings sub-tab learns **modification cards** (pick a modification action → **Learn card** → scan popup) and lists **all learned cards** (music = path + play mode, modification = action) with a delete button each. i18n de/en/fr |[`rfid-settings-tab`](../../releases/tag/rfid-settings-tab)|
142
142
|**Listening-time statistics**: tracks how long was actually listened per local calendar day in a 365-day ring buffer (persisted in NVS, ~1.5 KB). The info dialog (ℹ️) shows **today / yesterday / last 7 days / last 30 days** next to the existing total playtime. Seconds are accumulated by the audio loop while playing (clock from NTP/RTC; ignored until the clock is valid), flushed to NVS at most once a minute and on shutdown. New `/info` audio fields `playToday`/`playYesterday`/`play7d`/`play30d` (seconds). i18n de/en/fr |[`listening-stats`](../../releases/tag/listening-stats)|
143
143
| **RFID-tag syncing (server + peer-to-peer)**: keeps RFID-tag assignments in sync across a central PHP server *and* other ESPuinos at the same time. On **learn** a freshly assigned card is pushed to the server and to every configured peer; a **full sync** (button in the Sync settings tab, bindable command **187**, or MQTT `rfid_sync`) pulls the server list, merges newest-wins per tag id (by timestamp) and pushes every local tag back to server + peers. A **catch-up** sync runs automatically once after the device comes online, so a player used **offline/outdoors** (no WiFi, no server) keeps working — cards learned offline are stored locally and pushed up on reconnect (assignments made while the clock was never set are healed to "now" on first sync so they win). Conflict resolution is **newest-wins** by timestamp. Server endpoint is the dynamic [`server/manifest.php`](server/manifest.php) (same script that serves the file-sync manifest; `?type=rfid` returns just the tag list); peers are a comma-separated list of other ESPuino hosts in the Sync settings tab. i18n de/en/fr | [`rfid-sync`](../../releases/tag/rfid-sync) |
144
+
|**Configurable branding + RFID settings tidy-up**: the navbar **header** title and the **footer** brand are now configurable (General → Branding) — empty keeps the "Leo Industries" default, so the fork is easy to re-brand. The RFID **reader** settings (reader type, MFRC522 gain, PN5180 LPCD, SLIX2 password) moved out of the General tab into the **RFID** settings sub-tab where they belong, next to the card-learning UI. Both are covered by the General/RFID-tab auto-save. i18n de/en/fr |[`ui-branding`](../../releases/tag/ui-branding)|
144
145
|**OpenAPI/Swagger spec updated**: the bundled `REST_API.yaml` (served at `/swagger.html`) now documents all fork-added endpoints (`/sync`, `/syncstop`, `/playlist`, `/githubupdate`, `/version`, `/login`, `/logout`, `/security`, `/eqrule(s)`, `/activeequalizer`, `/bluetooth*`, `/sdclean`) and declares the security schemes (`X-API-Key` header / `apikey` query param, or the `ESPUINO_SESSION` login cookie) so the Swagger "Authorize" button works. The web-interface footer links to the Swagger UI (`/swagger.html`) |[`f8298d9`](../../commit/f8298d9)|
0 commit comments