Let the page buttons make way: a Page buttons setting that gives their room to the tiles, chevrons and dots instead of words, and a warning in the editor for pages nothing leads to (0.2.82)
GitHub issue #9 asked to drop the Previous/Next bar when Go to page tiles do the navigation and to give the tiles the whole screen. Page buttons is a setting the screen owns (on by default): a row in the Screen group of the settings page, switch.<screen>_page_buttons in Home Assistant, and a row in the editor's Screen settings. Without the bar, and on a screen with one page, place_page moves and sizes the three rows so they reach the bottom margin (Guition 108 -> 122 px, CYD 52 -> 61 px); a card keeps its circle, name and state in its middle and the single analog clock keeps its dial. With page buttons and swiping both off, the editor says where the Go to page tiles lead and which pages that leaves out of reach. The bar itself: each half of the band under the tiles is one key with an MDI chevron and lights up under a finger, and a dot per page sits between them; the screen's settings page uses the same pager. App 0.2.82, firmware 0.2.69. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
+7
-1
@@ -175,7 +175,12 @@ middle of the screen does nothing, so tapping and dragging tiles never
|
||||
accidentally changes pages. On the CYD, it stays a quick swipe across the screen. Sliders
|
||||
only control their value; detail menus and standby don't change pages.
|
||||
|
||||
Six tiles sit on a page. With six or fewer, Previous/Next disappear.
|
||||
Six tiles sit on a page. Under the tiles, the page buttons: a chevron in each half of the
|
||||
bar and a dot per page between them; tap anywhere in the left or right half. With six or
|
||||
fewer tiles they disappear and the tiles grow into their room (firmware 0.2.69+). **Page
|
||||
buttons** in the **Screen settings** tab takes them away on a screen with more pages too:
|
||||
then only swiping and *Go to page* tiles change the page, and the editor says which pages
|
||||
that leaves out of reach.
|
||||
The default standby time is ten minutes. For offline devices, the screen blocks
|
||||
actions. If the connection to Home Assistant drops, the screen immediately shows
|
||||
"HA not connected"; if the app sends nothing for two rounds (about five minutes),
|
||||
@@ -283,6 +288,7 @@ After this, changes to these settings don't need a new firmware flash.
|
||||
| Time format | 24 or 12 hour, without AM/PM | 24 hour |
|
||||
| Return to page 1 | Also closes detail menus on standby | Off |
|
||||
| Swipe between pages | Native horizontal swipe, firmware 0.2.7+ | Off |
|
||||
| Page buttons | Off: no buttons under the tiles, the tiles take their room, firmware 0.2.69+ | On |
|
||||
| Guition rotation | 0°, 90°, 180°, 270°, firmware 0.2.9+ | 0° |
|
||||
|
||||
Home Assistant shows the same settings on each screen's ESPHome device: the switch
|
||||
|
||||
@@ -215,6 +215,29 @@ icons sit off-center in the browser); run `generate_packages.py` afterward.
|
||||
The `MDI_GLYPH_*` substitutions are retired: `TILEn_ICON` in manual
|
||||
profiles must come from the set. No changed preferences or keys.
|
||||
|
||||
### Compatibility 0.2.82 / firmware 0.2.69
|
||||
|
||||
Page buttons (GitHub issue #9): a setting the screen owns, `page_buttons`, on by default. It has a preference record
|
||||
of its own (`0x50474231`), the switch "Page buttons" in both profiles, and `SETTING_RULES`, `SETTING_ENTITIES` and
|
||||
`SETTINGS_BESIDE_BLOCK` entries in the app. Like Dark mode it never travels in the layout message, and a screen
|
||||
without the entity shows no row for it.
|
||||
|
||||
- Firmware: `place_page` places the three rows itself (`runtime_tiles::rows`). With the bar on screen (more than one
|
||||
page and `page_buttons` on) they keep the profile's places (`Widgets::base_y`, `base_height`). Without it they share
|
||||
the room down to the bottom edge, keeping the side margin: Guition 108 → 122 px, CYD 52 → 61 px. `tile_scroll`
|
||||
grows with them. A large card keeps its profile places for the circle, name and state, lowered by half the growth;
|
||||
the single analog clock keeps the profile's dial. `page_buttons_changed()` (called from `apply_screen_settings`)
|
||||
places the page again when the bar comes or goes. `check_tile_geometry` checks that every card lies inside the tile
|
||||
area, clear of the bar and within the bottom margin.
|
||||
- Page bar: `page_prev` and `page_next` are the two halves of the band under the tiles, running from
|
||||
`SCROLL_Y + SCROLL_H` to the bottom (Guition 240×60, CYD 160×36). Each holds a chevron in `materialdesign_icons_mini`
|
||||
(F0141/F0142). `page_number` is a non-clickable `obj` that holds the dots (`settings_screen::page_dots`), so LVGL's
|
||||
hit test gives every point of the band to one of the halves. The settings page's pager uses the same chevrons and
|
||||
dots, with a dimmed chevron where it leads nowhere.
|
||||
- Editor: `strandedPages()` (`model/layout.ts`) and `pageReachWarning()` (`store.ts`) warn when page buttons and
|
||||
swiping are both off and the Go to page tiles leave a page out of reach, or give it no way back to page 1. The
|
||||
warning shows above the pages and under the Screen card.
|
||||
|
||||
### Compatibility 0.2.78 / firmware 0.2.65
|
||||
|
||||
Repeated navigation tiles: the same `screen.page_<n>` may sit on several pages of one screen. Firmware 0.2.65 accepts
|
||||
|
||||
+5
-3
@@ -27,6 +27,7 @@ changes them with the entity's own action, and leaves them out of the layout mes
|
||||
| Back to page 1, After | `switch.<screen>_back_to_page_1`, `number.<screen>_back_to_page_1_after` | `auto_home`, `auto_home_seconds` |
|
||||
| Also on standby | `switch.<screen>_back_to_page_1_on_standby` | `home_on_standby` |
|
||||
| Swipe between pages | `switch.<screen>_swipe_between_pages` | `swipe_pages` |
|
||||
| Page buttons (0.2.69+) | `switch.<screen>_page_buttons` | `page_buttons` |
|
||||
| Rotation (Guition) | `select.<screen>_rotation` | `rotation` |
|
||||
|
||||
The first four entities and Auto standby existed before 0.2.49; ESP Screens recognizes a screen that owns
|
||||
@@ -52,7 +53,7 @@ The page is a menu of groups, each of which opens a page of its own:
|
||||
|---|---|
|
||||
| Brightness | Brightness, Dark mode, Auto standby, Standby after, Standby brightness |
|
||||
| Night | Night mode, Starts, Ends, Night brightness |
|
||||
| Screen | Clock, Back to page 1, After, Also on standby, Swipe between pages, Rotation (boards that turn) |
|
||||
| Screen | Clock, Back to page 1, After, Also on standby, Swipe between pages, Page buttons, Rotation (boards that turn) |
|
||||
| This screen | Screen, Address, Firmware, Home Assistant, Restart |
|
||||
|
||||
Every change is stored on the screen, applied at once and published on its entity, so Home Assistant and
|
||||
@@ -64,8 +65,9 @@ unknown and takes no changes until it is back.
|
||||
## The rules the page follows
|
||||
|
||||
- **Two levels, never three.** A group page is the deepest place a setting can live.
|
||||
- **No free scrolling.** A group that does not fit gets the same `< Previous / Next >` pager as the tile
|
||||
pages. A 320x240 board shows five rows, a 480x480 board six.
|
||||
- **No free scrolling.** A group that does not fit gets the same pager as the tile pages: a chevron in each
|
||||
half of the bar and a dot per page between them (firmware 0.2.69+). A 320x240 board shows five rows, a
|
||||
480x480 board six; with the pager four and five.
|
||||
- **A row is a control, not a form.** Toggles flip on tap, numbers and times have `-` and `+`, a choice
|
||||
cycles through its options in a chip on the right.
|
||||
- **A row that depends on a switch above it is greyed out, not hidden**, so the page never jumps around.
|
||||
|
||||
@@ -0,0 +1,50 @@
|
||||
# Test results app 0.2.82 / firmware 0.2.69 (2026-09-18)
|
||||
|
||||
GitHub issue #9 (lokitol): "when using the next page tiles, is it possible to remove the bottom of the page
|
||||
next/previous buttons and extend the size of the tiles to utilise all the screen?" Max chose a screen setting with a
|
||||
warning in the editor for pages that can't be reached. During the round he also asked for new page buttons: only MDI
|
||||
icons in the corners, no words. He picked proposal B from two renders: bare chevrons and page dots. He kept the whole
|
||||
half of the bar as the key, lit up under the finger, with no round shadow, and asked for the same buttons on the
|
||||
screen's settings page. He approved the final renders before release ("ik ben blij, wat mij betreft releasen").
|
||||
|
||||
## What changed
|
||||
|
||||
- Setting `page_buttons` (default on): preference record `0x50474231`, `settings_screen::set()`, the row "Page
|
||||
buttons" in the Screen group, switch "Page buttons" in both profiles, `SETTING_RULES`/`SETTING_ENTITIES`/
|
||||
`SETTINGS_BESIDE_BLOCK` in the app, a row in the editor and in the Claude skill's entity table.
|
||||
- `runtime_tiles::place_page` places the rows (`rows()`): the profile's rows with the bar, the whole room down to the
|
||||
bottom margin without it (Guition 108 → 122 px, CYD 52 → 61 px). Large cards lower their YAML places by half the
|
||||
growth; the single analog clock keeps the profile's dial.
|
||||
- Page keys: each half of the band under the tiles (Guition 240×60, CYD 160×36) with a chevron; `page_number` holds
|
||||
the dots (`settings_screen::page_dots`); the settings page's pager draws the same.
|
||||
- Editor: `strandedPages()` + `pageReachWarning()`, shown above the pages and under the Screen card.
|
||||
|
||||
## Automated
|
||||
|
||||
- `tools/check.sh`: Python 455 tests, C++ 18/18 (`test_settings_screen.cpp` covers the row and `set("page_buttons")`),
|
||||
packages, icons, Vitest 81/81 (`strandedPages`, the warning's words and when it stays quiet), vue-tsc, build.
|
||||
- `tools/check.sh --firmware` (ESPHome 2026.6.2): CYD 1,655,136 B = 90.2 % of the 1,835,008 B slot, +1,632 B against
|
||||
0.2.81 (tight band: the delta is stated), Guition 2,029,088 B = 25.0 % of its 8,126,464 B slot.
|
||||
|
||||
## On the host (the real firmware for the Mac, SDL, own API ports 6191/6192)
|
||||
|
||||
- Renders of every card kind, the README showcase layout, the eight full-page cards and a one-page layout, each with the
|
||||
page buttons on and off, on both boards; the settings page's Screen group (two pages now) and dark mode (switched
|
||||
while a page is shown, and after a page change). Max checked them all before release.
|
||||
- `ui_self_test` with the bar on and off, on both boards, with two layouts: every `page_check` PASS (10/10 per run) and
|
||||
no `Tile geometry`, `Card place`, `Panel bounds` or `Part bounds` failure. `check_tile_geometry` now also checks that
|
||||
every card lies inside the tile area, clear of the bar, and that without the bar the area reaches the bottom margin.
|
||||
- LVGL's own hit test (`lv_indev_search_obj`) across the band: every point of the left half is Previous, every point
|
||||
of the right half Next (the dots take no touches); just above the band a finger gets the card; without the bar the
|
||||
band belongs to the cards.
|
||||
- The small slider of 0.2.81 on a taller card, with a virtual finger (a second LVGL pointer): the strip claims the top
|
||||
and middle of its card, a drag that starts above the strip sets the light (`light.turn_on`), the page stays, and a
|
||||
still press beside the strip is the tile's tap. 16/16 on both boards with the bar on and off.
|
||||
- Editor in a browser against a demo add-on whose screen owns its settings: the warning names the pages ("You have 1
|
||||
Go to page tile, to page 1, but none to pages 2, 3 and 4") and follows a new Go to page tile at once; the Page
|
||||
buttons switch sends `PUT .../settings` (200) and the warning goes when it is on.
|
||||
|
||||
## Not tested
|
||||
|
||||
- On real hardware: the new keys under a finger (GT911 and XPT2046), the taller cards, and switching the setting from
|
||||
the screen's settings page and from Home Assistant. The bench boards were not flashed in this round.
|
||||
Reference in New Issue
Block a user