Skip to content

Releases: ItsLimitlezz/firmware

v2.7.19 | LUI v0.5

31 Jan 04:52
35ef8a7

Choose a tag to compare

v2.7.19 | LUI v0.5 Pre-release
Pre-release

-Fixed nodes page issue where swiping would send you to that node to message. Now you click the icon.
-Fixed messages going to nodes when swiping on the gutter

v2.7.19 | LUI v0.4

30 Jan 04:05

Choose a tag to compare

v2.7.19 | LUI v0.4 Pre-release
Pre-release

Optimize infinite scroll performance for nodes panel

Major refactoring to eliminate performance bottlenecks during scrolling.
LVGL performance is dominated by object count and update frequency, not visibility.

Key optimizations:

  • Separate scroll event handling: continuous scroll (LV_EVENT_SCROLL) only
    hides/shows nodes, scroll-end (LV_EVENT_SCROLL_END) handles loading
  • Remove all filter/status updates from scroll events - defer until scroll completes
  • Skip updateNodesFiltered() and updateNodesStatus() during scroll
  • Reduce batch load from 20 to 10 nodes per trigger
  • Change buffer strategy from 2-node to 0-node (immediate hide)
  • Single-pass hide/show logic instead of double-loop iteration
  • Early exit at nodesScrollDisplayLimit to avoid processing unloaded nodes

Performance impact:

  • Eliminates repeated lv_obj_has_state() calls during scroll
  • Avoids expensive strcasestr() and style setters during scroll
  • Reduces LVGL object churn from 250 nodes being touched to ~5-6 visible
  • Only ~5 LVGL objects rendered during scroll (hidden nodes don't render)

Trade-off: Filters/colors stale during scroll, update only when user stops.
Acceptable: User perceives smooth scroll, updates apply immediately after.

v2.7.19 | LUI v0.3

29 Jan 01:13
25b179f

Choose a tag to compare

v2.7.19 | LUI v0.3 Pre-release
Pre-release

I’ve optimized the Node Page further and switched back to the drivers for the Lily Go T deck to ensure compatibility. Additionally, I’ve optimized the buffer between pages to avoid a harsh reload.

v2.7.18 | LUI v0.2

28 Jan 03:20
4eb4c4b

Choose a tag to compare

v2.7.18 | LUI v0.2 Pre-release
Pre-release

Optimize node list rendering with simplified paging and longer cache TTL

  • Introduce rawCount variable to track nodeDB size separately from filtered list
    size (totalEntries), eliminating naming ambiguity and potential bugs

  • Add locationScreen state tracking to infinite scroll logic, ensuring scroll
    viewport resets when switching between modes (Last Heard vs Distance/Bearings)

  • Remove complex infinite scroll infrastructure in favor of simple direct paging:

    • Replace infiniteScroll_updateViewport() with direct calculation
    • Remove infiniteScroll_topNum/bottomNum/resetState/updateRunning tracking
    • Eliminate cachedDrawList intermediate buffer
    • Render directly from cached filtered list using startIndex/endIndex math
  • Simplify render loop: calculate page slice once, iterate directly through
    allNodesList subset without additional buffering or state management

  • Increase cache TTL from 2000ms to 5000ms for better efficiency on T-Deck:

    • Reduces per-frame cache invalidation checks and allocations
    • Still catches position/status updates within reasonable window
    • Trade-off: distance/bearing updates appear within 5s instead of 2s

Benefits:

  • Fewer CPU cycles per frame (no complex viewport math)
  • Reduced memory churn (no intermediate drawList allocations)
  • Cleaner, more maintainable code with fewer state variables
  • Better performance on resource-constrained ESP32 devices