Skip to content

SVG app icons, display improvements, flash rom size optimization - #751

Merged
KenVanHoeylandt merged 13 commits into
mainfrom
app-icons
Nov 14, 2026
Merged

KenVanHoeylandt merged 13 commits into
mainfrom
app-icons

Conversation

@KenVanHoeylandt

@KenVanHoeylandt KenVanHoeylandt commented Nov 13, 2026 •

Copy link
Copy Markdown
Contributor

Summary by CodeRabbit

  • New Features
    • App launcher, settings, and file tiles now display SVG icons, with colour or monochrome variants matching the current theme and fallback icons when images are unavailable.
    • Launcher icons refresh automatically when packages change.
    • Touch calibration accounts for display rotation and can run before the launcher starts an app or setup.
    • Added configurable display draw-buffer sizing and IPS panel support.
  • Bug Fixes
    • Large display updates are sent in buffer-sized strips.
    • The software keyboard now better keeps active text fields visible and hides cleanly when a field is removed.
    • Toolbar close buttons have a larger touch area.

@coderabbitai

coderabbitai Bot commented Nov 13, 2026 •

Copy link
Copy Markdown

Explain Change →

Note

Reviews paused

It looks like this branch is under active development. To avoid overwhelming you with review comments due to an influx of new commits, CodeRabbit has automatically paused this review. You can configure this behavior by changing the reviews.auto_review.auto_pause_after_reviewed_commits setting.

Use the following commands to manage reviews:

  • @coderabbitai resume to resume automatic reviews.
  • @coderabbitai review to trigger a single review.

Use the checkboxes below for quick actions:

  • Resume reviews
  • Trigger review
Walkthrough

The changes add NanoSVG parsing and rasterization, LVGL APIs for rasterizing SVG data and files, and SVG icons in file browser and launcher tiles. The launcher loads and refreshes package and settings icons. The app manager notifies listeners after successful package registration or removal. The app paths API exposes an app’s installation directory. Other changes update touch calibration, device configuration, display transfers, memory allocation, and application behavior.

Merge Risk: Moderate · previous review 28240

The new SVG icon pipeline still has memory-pressure crash paths and an unbounded dash-pattern loop when parsing or rasterizing untrusted icons. A few device and UI behaviors may also misbehave: the Advance 3.5 touch mirror, stale package icons, and the calibration result screen. Fix or explicitly accept these before merging.

Pre-merge checks: Passed 4

Check name Status Explanation
Description Check Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check Passed The title names three themes: SVG app icons, display improvements, and flash ROM size optimization. The changeset does add SVG icon rasterization for launcher and settings tiles, plus the nanosvg libr…
Linked Issues check Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check Passed Check skipped because no linked issues were found for this pull request.
Full details: Title check

Explanation

The title names three themes: SVG app icons, display improvements, and flash ROM size optimization. The changeset does add SVG icon rasterization for launcher and settings tiles, plus the nanosvg library and an LVGL SVG API. It also adds display changes (ILI9488 IPS and strip-based drawing, draw-buffer line config, rotation handling) and flash size changes (the ESP32-P4 flash size goes from 8MB to 16MB, and 4MB builds get size-optimization settings). The title is related to the main change, but it lists the three themes as a flat list and does not convey the scale of the changes, such as the touch calibration rework, the package listener API, or audio module gating. This makes it partially related and broad rather than a full summary, so it passes.

Finishing Touches

Generate unit tests (beta)

  • Commit to this branch
  • Create a new PR
  • Autofix · Keep fixing CodeRabbit findings and required CI, and resolving merge conflicts

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

Share

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 12

Caution

Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

⚠️ Outside diff range comments (1)

Major · Export the SVG API through lvgl_module_symbols. · symbols.c:39

Modules/lvgl-module/source/symbols.c:39
Major · Data Integrity & Integration · Quick win

Export the SVG API through lvgl_module_symbols.

lvgl_module_symbols is the list of symbols the LVGL module exports. This change includes <lvgl/svg.h> in symbols.c but adds no entries for the lvgl_svg_rasterize_* functions, and no entry exists for lv_draw_buf_destroy either. An app that imports these functions through the export table cannot resolve them.

Register each public lvgl_svg_rasterize_* function with DEFINE_MODULE_SYMBOL in the same table, following the existing entries. If callers of the new API must also call lv_draw_buf_destroy, register that function too.

Review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7defafa0-9923-4597-b46d-c1cbadf73c75
Commits

Reviewing files that changed from the base of the PR and between 74dee43 and e530408.

Files ignored due to path filters: 76

  • Data/system/app_icon/default.svg is excluded by !**/*.svg
  • Data/system/app_icon/default_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.appearance.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.appearance_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.apphub.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.apphub_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.audiosettings.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.audiosettings_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.btmanage.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.btmanage_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.camera.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.camera_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.chat.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.chat_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.development.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.development_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.display.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.display_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.files.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.files_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.grovesettings.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.grovesettings_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.i2cscanner.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.i2cscanner_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.keyboardsettings.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.keyboardsettings_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.ledstripsettings.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.ledstripsettings_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.locationsettings.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.locationsettings_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.maps.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.maps_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.meshchannels.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.meshchannels_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.meshcontacts.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.meshcontacts_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.meshsettings.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.meshsettings_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.notes.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.notes_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.power.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.power_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.systeminfo.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.systeminfo_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.terminal.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.terminal_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.timedatesettings.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.timedatesettings_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.touchcalibration.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.touchcalibration_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.trackballsettings.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.trackballsettings_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.usbsettings.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.usbsettings_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.vibrationsettings.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.vibrationsettings_mono.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.wifimanage.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.wifimanage_mono.svg is excluded by !**/*.svg
  • Data/system/file_icon/app.svg is excluded by !**/*.svg
  • Data/system/file_icon/app_mono.svg is excluded by !**/*.svg
  • Data/system/file_icon/executable.svg is excluded by !**/*.svg
  • Data/system/file_icon/executable_mono.svg is excluded by !**/*.svg
  • Data/system/file_icon/file.svg is excluded by !**/*.svg
  • Data/system/file_icon/file_mono.svg is excluded by !**/*.svg
  • Data/system/file_icon/folder.svg is excluded by !**/*.svg
  • Data/system/file_icon/folder_mono.svg is excluded by !**/*.svg
  • Data/system/file_icon/image.svg is excluded by !**/*.svg
  • Data/system/file_icon/image_mono.svg is excluded by !**/*.svg
  • Data/system/file_icon/link.svg is excluded by !**/*.svg
  • Data/system/file_icon/link_mono.svg is excluded by !**/*.svg
  • Data/system/file_icon/sd_card.svg is excluded by !**/*.svg
  • Data/system/file_icon/sd_card_mono.svg is excluded by !**/*.svg
  • Data/system/file_icon/text.svg is excluded by !**/*.svg
  • Data/system/file_icon/text_mono.svg is excluded by !**/*.svg
  • Data/system/file_icon/usb.svg is excluded by !**/*.svg
  • Data/system/file_icon/usb_mono.svg is excluded by !**/*.svg
Files selected for processing: 27

  • Buildscripts/TactilitySDK/Tools/app.py
  • Buildscripts/generate-assets.py
  • CMakeLists.txt
  • Libraries/nanosvg/CMakeLists.txt
  • Libraries/nanosvg/LICENSE.txt
  • Libraries/nanosvg/src/nanosvg.h
  • Libraries/nanosvg/src/nanosvgrast.h
  • Modules/app-module/include/app/manager.h
  • Modules/app-module/private/app/private/ledger.h
  • Modules/app-module/source/manager.cpp
  • Modules/app-module/source/module.cpp
  • Modules/app-module/tests/source/manager_test.cpp
  • Modules/lvgl-module/CMakeLists.txt
  • Modules/lvgl-module/include/lvgl/svg.h
  • Modules/lvgl-module/source/svg.c
  • Modules/lvgl-module/source/symbols.c
  • Modules/lvgl-module/tests/CMakeLists.txt
  • Modules/lvgl-module/tests/source/svg_test.cpp
  • Tactility/Private/Tactility/app/TileGrid.h
  • Tactility/Private/Tactility/app/files/View.h
  • Tactility/Private/Tactility/app/launcher/LauncherMode.h
  • Tactility/Source/app/TileGrid.cpp
  • Tactility/Source/app/files/FilesApp.cpp
  • Tactility/Source/app/files/View.cpp
  • Tactility/Source/app/launcher/AppsMode.cpp
  • Tactility/Source/app/launcher/Launcher.cpp
  • Tactility/Source/app/launcher/SettingsMode.cpp

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 2 remain after this review.

Comment thread Libraries/nanosvg/src/nanosvg.h Resolved
Comment thread Libraries/nanosvg/src/nanosvg.h Resolved
Comment thread Libraries/nanosvg/src/nanosvgrast.h Resolved
Comment thread Libraries/nanosvg/src/nanosvgrast.h Resolved
Comment thread Libraries/nanosvg/src/nanosvgrast.h Resolved

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Nitpick comments: 1

Modules/app-module/tests/source/manager_test.cpp: 1

626-626: Trivial · Functional Correctness · Quick win

Exercise actual listener self-removal.

This callback removes a different function/context pair. The test therefore passes even if removing the active listener does nothing. Keep this unmatched-removal case, but add a callback that removes its own registered pair. Trigger another package notification and check that the callback does not run again.

Review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: cd12c987-1ed6-4919-9f67-68a061e2dcf3
Commits

Reviewing files that changed from the base of the PR and between e530408 and 631d67f.

Files selected for processing: 18

  • Devices/generic-esp32p4/device.properties
  • Modules/app-module/include/app/manager.h
  • Modules/app-module/include/app/paths.h
  • Modules/app-module/private/app/private/ledger.h
  • Modules/app-module/source/manager.cpp
  • Modules/app-module/source/module.cpp
  • Modules/app-module/source/paths.cpp
  • Modules/app-module/tests/source/manager_test.cpp
  • Modules/lvgl-module/include/lvgl/svg.h
  • Modules/lvgl-module/source/svg.c
  • Modules/lvgl-module/source/symbols.c
  • Modules/lvgl-module/tests/source/svg_test.cpp
  • Tactility/Private/Tactility/app/TileGrid.h
  • Tactility/Private/Tactility/app/launcher/LauncherMode.h
  • Tactility/Source/app/TileGrid.cpp
  • Tactility/Source/app/launcher/AppsMode.cpp
  • Tactility/Source/app/launcher/Launcher.cpp
  • Tactility/Source/app/launcher/SettingsMode.cpp

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 2 remain after this review.

Comment thread Modules/app-module/source/manager.cpp Resolved

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 4

Caution

Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

⚠️ Outside diff range comments (1)

Minor · Move calibration persistence out of the LVGL callback. · TouchCalibration.cpp:131

Tactility/Source/app/touchcalibration/TouchCalibration.cpp:131
Minor · Stability & Availability · Quick win

Move calibration persistence out of the LVGL callback.

On the fourth press, onPress calls finishCalibration, which saves settings before the callback returns. save creates the settings directory and writes a properties file. Slow storage therefore stalls the UI during calibration completion. Signal the app task to save the fitted ranges, then update the widgets under the LVGL lock. (raw.githubusercontent.com)

As per coding guidelines, “Code that runs on the LVGL thread must not do file operations (including reading or writing settings).”

Source: Coding guidelines

Review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 030a0bca-46b5-41df-9213-a0ad594d1991
Commits

Reviewing files that changed from the base of the PR and between 631d67f and 2d81b72.

Files selected for processing: 49

  • Devices/cyd-2432s024c/device.properties
  • Devices/cyd-2432s024r/device.properties
  • Devices/cyd-2432s028r/device.properties
  • Devices/cyd-2432s028rv2/device.properties
  • Devices/cyd-2432s028rv3/device.properties
  • Devices/cyd-2432s032c/device.properties
  • Devices/cyd-3248s035c/device.properties
  • Devices/cyd-8048s043c/device.properties
  • Devices/cyd-e32r28t/device.properties
  • Devices/cyd-e32r32p/device.properties
  • Devices/elecrow-crowpanel-advance-35/device.properties
  • Devices/elecrow-crowpanel-advance-35/elecrow,crowpanel-advance-35.dts
  • Devices/elecrow-crowpanel-basic-28/device.properties
  • Devices/elecrow-crowpanel-basic-35/device.properties
  • Devices/elecrow-crowpanel-basic-35/elecrow,crowpanel-basic-35.dts
  • Devices/elecrow-crowpanel-basic-50/device.properties
  • Devices/guition-jc2432w328c/device.properties
  • Devices/lilygo-tdeck-max/device.properties
  • Drivers/ili9488-module/bindings/ilitek,ili9488.yaml
  • Drivers/ili9488-module/source/ili9488.cpp
  • Modules/app-module/include/app/manager.h
  • Modules/app-module/source/manager.cpp
  • Modules/app-module/tests/source/manager_test.cpp
  • Modules/binfont-module/source/generator.cpp
  • Modules/cpp-symbols-module/CMakeLists.txt
  • Modules/cpp-symbols-module/source/function_instantiations.cpp
  • Modules/lvgl-module/source/devices/devices.cpp
  • Modules/lvgl-module/source/widgets/toolbar.cpp
  • Platforms/platform-esp32/CMakeLists.txt
  • Tactility/CMakeLists.txt
  • Tactility/Include/Tactility/app/touchcalibration/CalibrationMath.h
  • Tactility/Kconfig
  • Tactility/Private/Tactility/app/TileGrid.h
  • Tactility/Private/Tactility/app/files/View.h
  • Tactility/Private/Tactility/app/launcher/LauncherMode.h
  • Tactility/Source/InitModules.cpp
  • Tactility/Source/app/TileGrid.cpp
  • Tactility/Source/app/camera/Camera.cpp
  • Tactility/Source/app/files/View.cpp
  • Tactility/Source/app/launcher/AppsMode.cpp
  • Tactility/Source/app/launcher/Launcher.cpp
  • Tactility/Source/app/setup/Setup.cpp
  • Tactility/Source/app/touchcalibration/CalibrationMath.cpp
  • Tactility/Source/app/touchcalibration/TouchCalibration.cpp
  • Tactility/Tests/CMakeLists.txt
  • Tactility/Tests/Source/TouchCalibrationMathTest.cpp
  • TactilityKernel/include/tactility/memory.h
  • TactilityKernel/source/memory.cpp
  • device.py
Files with no reviewable changes: 5

  • Devices/cyd-8048s043c/device.properties
  • Devices/lilygo-tdeck-max/device.properties
  • Tactility/Private/Tactility/app/launcher/LauncherMode.h
  • Tactility/Source/app/launcher/AppsMode.cpp
  • Tactility/Source/app/setup/Setup.cpp

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 3 remain after this review.

Comment thread Devices/cyd-2432s028r/device.properties Resolved
Comment thread Tactility/CMakeLists.txt Resolved
@KenVanHoeylandt KenVanHoeylandt changed the title App icons SVG app icons, display improvements, flash rom size optimization Nov 14, 2026

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 2

Caution

Some comments are outside the diff and can’t be posted inline due to GitHub limitations.

⚠️ Outside diff range comments (2)

Major · Propagate color-submission failures before waiting. · ili9488.cpp:240

Drivers/ili9488-module/source/ili9488.cpp:240
Major · Stability & Availability · Heavy lift

Propagate color-submission failures before waiting.

The pinned ILI9488 component discards the result of esp_lcd_panel_io_tx_color() and returns ESP_OK. If a strip cannot be queued, this error branch is skipped and the subsequent semaphore wait can block indefinitely while holding the SPI lock. Make the panel driver propagate submission failures and handle any partially queued transfer safely. (raw.githubusercontent.com)

Major · Drain the completion semaphore under the SPI bus lock. · ili9488.cpp:228

Drivers/ili9488-module/source/ili9488.cpp:228
Major · Stability & Availability · Quick win

Drain the completion semaphore under the SPI bus lock.

The drain at line 228 runs before spi_controller_lock(). A concurrent draw can consume the completion signal of a strip that is still in flight. The first draw then blocks at xSemaphoreTake(..., portMAX_DELAY) while it holds the SPI bus lock. No later transfer signals the semaphore again, so the wait does not end, and the shared SPI bus can stay locked until reset.

The driver does not serialize draws before line 228, and display_draw_bitmap() forwards calls without a lock. The LVGL flush, the terminal renderer, and the boot screen can all reach this path. Move the drain under the bus lock so that a draw clears only signals that no other draw owns.

Suggested fix

 static error_t ili9488_draw_bitmap(Device* device, int32_t x_start, int32_t y_start, int32_t x_end, int32_t y_end, const void* color_data) {
     auto* internal = static_cast<Ili9488Internal*>(device_get_driver_data(device));
 
-    // Drain any stale signal left over from a prior non-draw transaction (bring-up commands like
-    // reset/gap also complete through on_color_trans_done), so the take() below can only be
-    // satisfied by this draw's own transfer completing.
-    xSemaphoreTake(internal->draw_done_semaphore, 0);
-
     // The panel driver converts a whole area through its conversion buffer and doesn't check bounds,
     // so a larger area is sent in strips of rows that fit in that buffer. The conversion buffer is
     // reused by the next strip, which is why each strip is waited for.
     const int32_t width = x_end - x_start;
     const int32_t strip_rows = std::max<int32_t>(1, static_cast<int32_t>(GET_CONFIG(device)->color_conversion_buffer_size) / width);
     const auto* pixels = static_cast<const uint16_t*>(color_data);
 
     spi_controller_lock(internal->spi_controller);
+    // Drain under the bus lock so that no other draw can consume this draw's completion signal.
+    // This also clears stale signals from prior non-draw transactions (bring-up commands like
+    // reset/gap also complete through on_color_trans_done), so the take() below can only be
+    // satisfied by this draw's own transfer completing.
+    xSemaphoreTake(internal->draw_done_semaphore, 0);
     for (int32_t y = y_start; y < y_end; y += strip_rows) {
Review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 784cd6f6-2f32-44cf-80b6-f8ce4f0c0e28
Commits

Reviewing files that changed from the base of the PR and between 2d81b72 and bf3b07f.

Files selected for processing: 8

  • Devices/elecrow-crowpanel-advance-35/elecrow,crowpanel-advance-35.dts
  • Drivers/ili9488-module/bindings/ilitek,ili9488.yaml
  • Drivers/ili9488-module/include/drivers/ili9488.h
  • Drivers/ili9488-module/source/ili9488.cpp
  • Modules/lvgl-module/source/devices/display.cpp
  • Tactility/CMakeLists.txt
  • Tactility/Source/app/touchcalibration/TouchCalibration.cpp
  • TactilityKernel/source/symbols.c

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 2 remain after this review.

@coderabbitai coderabbitai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

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

Actionable comments posted: 1

Review info

Run configuration

  • Source mode: Auto
  • Repository: Unavailable
  • Branch: Unavailable
  • File: No configuration file from this repository applied
  • Commit: Unavailable
  • Layers: Organization UI
  • Review profile: CHILL
  • Plan: Advanced
  • Run ID: 7f7c3375-b29c-4c52-a112-ae3e7085e601
Commits

Reviewing files that changed from the base of the PR and between bf3b07f and 28240e8.

Files selected for processing: 3

  • Drivers/ili9488-module/source/ili9488.cpp
  • Modules/lvgl-module/source/devices/keyboard.cpp
  • Modules/lvgl-module/source/widgets/toolbar.cpp

Included review availability: This review used your included allowance. Your plan provides up to 4 included reviews per hour; 2 remain after this review.

@KenVanHoeylandt
KenVanHoeylandt merged commit d52646d into main Nov 14, 2026
0 of 21 checks passed
@KenVanHoeylandt
KenVanHoeylandt deleted the app-icons branch November 14, 2026 13:48
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.

1 participant