Skip to content

refactor(pager): unify dashboard, node and channel rows - #406

Open
ericlewis wants to merge 211 commits into
meshtastic:pagerfrom
ericlewis:codex/pager-home-list
Open

ericlewis wants to merge 211 commits into
meshtastic:pagerfrom
ericlewis:codex/pager-home-list

Conversation

@ericlewis

@ericlewis ericlewis commented Sep 17, 2026

Copy link
Copy Markdown

Summary

  • Give Home, Nodes, Groups and active chats consistent full-width rounded rows with visible inset focus outlines and scrollbars at the right edge.
  • Place node long names below their short names and give every channel a fallback icon and label.
  • Keep dynamically added node rows selectable and hide or restore channel rows when their enabled state changes.

Implementation

Depends on #405. Merge/review order: #405#406#409#407#408. These are cumulative stages on the upstream pager branch at f31965d. Dependent PRs include earlier stages until those changes reach pager; use the focused comparison below to review this contribution.

Focused diff: #405 → #406. Reuse the shared ListRowStyle in the native DashboardPlugin, NodesPlugin, GroupsPlugin and ScrollMenuPlugin, plus the 480 × 222 chat-row factory. No generated screen assets are edited.

Dashboard labels become row content while existing runtime icon/state updates remain authoritative. Node creation and refresh share one row binding/layout path, preserving the image/short-name/long-name child order used by conversation headings. Channel refresh updates visibility and naming without recreating the screen. Menu actions use short clicks so long presses do not also trigger navigation.

Testing

  • Combined native tlora-pager-tft firmware build passed: pio run -e tlora-pager-tft -t mtjson, using firmware 6013049 and the public UI archive e9c8eee. All 648 tracked archive files match that UI snapshot; all four manifest artifact sizes and checksums matched.
  • This validates the complete combined implementation, not independent builds of each intermediate PR stage.
  • Automated tests: Not run. The native plugin firmware has not been flashed; hardware validation is pending.

Risks

Reparented dashboard labels and runtime-created node/channel rows need on-device focus, scrolling and long-name checks. The shared styling changes plugin layouts beyond the Pager where those plugins are reused; other display sizes have not been validated.

mverch67 and others added 30 commits August 21, 2025 18:26
* Create: da.yml - full Danish translation

* Add: Danish translation + sort list of translations
* added Danish language support

* trunk fmt
Co-authored-by: mverch67 <71137295+mverch67@users.noreply.github.com>
Co-authored-by: mverch67 <71137295+mverch67@users.noreply.github.com>
Co-authored-by: mverch67 <71137295+mverch67@users.noreply.github.com>
* handle custom lora preset/frequency

* trunk fmt
Co-authored-by: mverch67 <71137295+mverch67@users.noreply.github.com>
* Explain the file system to format to

* Remove MBR section

I believe MBR is not relevant at all

* Add back MBR (also known as msdos)
* Map compatibility information

* Add compatibility information for CrowPanel Advance HMI

---------

Co-authored-by: Manuel <71137295+mverch67@users.noreply.github.com>
Co-authored-by: mverch67 <71137295+mverch67@users.noreply.github.com>
feat: Support 4.3" TFT display JC4827W543C
Co-authored-by: mverch67 <71137295+mverch67@users.noreply.github.com>
* add time zone offset

* reverse order new chats
@CLAassistant

CLAassistant commented Sep 17, 2026

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you all sign our Contributor License Agreement before we can accept your contribution.
7 out of 9 committers have signed the CLA.

✅ thebentern
✅ p0ns
✅ mverch67
✅ ericlewis
✅ zmiguel
✅ t-miura
✅ caveman99
❌ pisti87
❌ github-actions[bot]
You have signed the CLA already but the status is still pending? Let us recheck it.

@ericlewis ericlewis changed the title feat(pager): share list rows and focus styling across Home and Nodes feat(pager): share list rows across Home, Nodes and Groups Sep 17, 2026
@ericlewis
ericlewis marked this pull request as ready for review September 18, 2026 02:07
Copilot AI lite review requested due to automatic review settings September 18, 2026 02:07
@ericlewis
ericlewis marked this pull request as draft September 18, 2026 02:20

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Warning

Copilot couldn't run its full agentic review because it didn't start before the timeout. Make sure your repository has a runner available, or add a copilot-code-review.yml file specifying one with the runs-on attribute. See the docs for more details.

Pull request overview

Adds Pager-specific shared row styling and layout for Home, Nodes, and Groups, including full-width rows, shared focus outlines, node name arrangement, and placeholder icons for unused channels.

Changes:

  • Introduces reusable Pager row focus and styling helpers.
  • Restructures Home and Group controls for full-width row layouts and adjusted scrollbar placement.
  • Updates Node labels, channel icons, distance formatting, and theme behavior for T_LORA_PAGER.

Reviewed changes

Copilot reviewed 4 out of 4 changed files in this pull request and generated 3 comments.

File Description
source/graphics/TFT/Themes.cpp Preserves Pager row text styling for enabled controls.
source/graphics/TFT/TFTView_320x240.cpp Applies Pager layouts and updates Node, channel, distance, and icon behavior.
include/graphics/view/TFT/PagerListRow.h Adds shared row styling and focus forwarding.
include/graphics/view/TFT/PagerHomeList.h Defines Home, Group, and Node Pager-specific layouts.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

lv_obj_set_flex_flow(row.button, LV_FLEX_FLOW_ROW);
lv_obj_set_flex_align(row.button, LV_FLEX_ALIGN_START, LV_FLEX_ALIGN_CENTER, LV_FLEX_ALIGN_CENTER);

lv_obj_t *icon = lv_obj_create(row.button);
Comment on lines +101 to +104
lv_obj_set_parent(row.label, row.button);
lv_obj_set_pos(row.label, 0, 0);
lv_obj_set_size(row.label, 0, LV_SIZE_CONTENT);
lv_obj_set_flex_grow(row.label, 1);
}

// Signal quality was positioned inside the old label using a fixed offset.
lv_obj_set_parent(objects.home_signal_pct_label, objects.home_signal_button);
Reconcile the published contribution with the native Pager plugin branch.
Preserve the existing PR history and the cumulative dependency stage.
Reconcile the published contribution with the native Pager plugin branch.
Preserve the existing PR history and the cumulative dependency stage.
@ericlewis
ericlewis changed the base branch from master to pager September 18, 2026 02:58
Retain the published PR head and the preceding cumulative PR as parents.
Keep the intended feature-stage tree unchanged.
@ericlewis ericlewis changed the title feat(pager): share list rows across Home, Nodes and Groups refactor(pager): unify dashboard, node and channel rows Sep 18, 2026
@ericlewis
ericlewis marked this pull request as ready for review September 18, 2026 03:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.