# PineAP Dashboard: Remove Mode Card, Move RF Role Card Date: 2026-08-23 ## Goal Remove the "Passive / Active / Advanced" mode card from the PineAP dashboard and move the "RF Role (radio1)" card into its position, cleaning up all supporting code that becomes dead as a result. ## Layout Current PineAP dashboard rows: 1. `[Passive/Active/Advanced, Quick Settings]` 2. `[RF Role (radio1)]` 3. `[Karma, Open Network, Evil WPA]` New layout: 1. `[RF Role (radio1), Quick Settings]` 2. `[Karma, Open Network, Evil WPA]` ## Changes ### `payload/user/remote_access/pager-webui/www/js/views.js` (`views.pineap`) - Remove mode-card UI: `mode` badge, `segBtns`/`modeBar`, `modeInfo`, `saveModeBtn`, `modeCard`. - Append `rfCard` to `modeRow` (first position, before Quick Settings); delete `rfRow`. - Remove functions `selectMode()`, `saveMode()`, `renderModeInfo()`. - Remove state `selectedMode`, `modeDirty`, `modePending`. - Remove `PINEAP_SESSION.mode` and the `'advanced'` write in `rememberAdvanced()` (Quick Settings toggles keep working). - In `load()`: drop the `GET /api/pineap/mode` call, `PINEAP_SESSION.mode` tracking, and the badge-class update on the removed `mode` element. ### `payload/user/remote_access/pager-webui/www/css/app.css` - Remove mode-card-only rules: `.seg`, `.seg-btn`, `.seg-btn + .seg-btn`, `.seg-btn.active`, `.seg-btn:disabled`, `.pineap-card-button-group .seg`, `.pineap-card-button-group .seg-btn`, `.pineap-mode-save`, `.pineap-mode-features`. - Keep `.pineap-card-title-flex` (used by other views). ## Untouched - Backend `/api/pineap/mode` endpoint (still exercised by `tests/test_pineap_modes.py`). - RF role logic, all other views, `build/` (regenerated by `scripts/deploy.sh`). ## Verification - `node --check` on `views.js`. - Manual browser check of the PineAP dashboard layout.