Skip to content

Update properties parsing for app manifest and device manifest files#544

Merged
KenVanHoeylandt merged 4 commits into
mainfrom
develop
Jul 2, 2026
Merged

Update properties parsing for app manifest and device manifest files#544
KenVanHoeylandt merged 4 commits into
mainfrom
develop

Conversation

@KenVanHoeylandt

@KenVanHoeylandt KenVanHoeylandt commented Jul 2, 2026

Copy link
Copy Markdown
Contributor

We used to parse the properties files as if they were ini files. That's corrected now.
Device properties are all updated.
App manifest supports old and new format for now.

Summary by CodeRabbit

  • New Features

    • Device and app configuration files now support a flat key=value format with dotted namespaces.
    • App manifests can be read in both the older sectioned format and the newer flattened format (manifest version updated accordingly).
  • Bug Fixes

    • Improved property parsing to consistently ignore blank lines and comments.
    • Updated Bluetooth detection and LVGL UI density reading to use the new property keys.
  • Tests

    • Added tests covering both manifest formats and validation failures, plus updated integration tooling.

@coderabbitai

coderabbitai Bot commented Jul 2, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: f937b890-1e69-4de9-8794-5f52555d9dc6

📥 Commits

Reviewing files that changed from the base of the PR and between 9d58b96 and 9ea1a2e.

📒 Files selected for processing (1)
  • Tests/SdkIntegration/manifest.properties
✅ Files skipped from review due to trivial changes (1)
  • Tests/SdkIntegration/manifest.properties

📝 Walkthrough

Walkthrough

This PR switches device and manifest property handling from INI-style sections to flat dotted key=value entries. Build scripts, CMake logic, and Python tooling are updated to read the new format, and all device.properties files are rewritten accordingly. The app manifest parser now accepts a file path, auto-detects V1 or V2 manifest format, and delegates to dedicated parsing implementations. Callers and tests were updated to use the new manifest flow.

Sequence Diagram(s)

Included above in the manifest parsing layer.

Suggested labels: build, refactor, device-properties, manifest-parsing

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly matches the main change: updating properties parsing for app manifest and device manifest files.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
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.
✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch develop

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

Comment @coderabbitai help to get the list of available commands.

@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: 3

🧹 Nitpick comments (2)
Tactility/Source/app/AppManifestParsing.cpp (1)

59-81: 🚀 Performance & Scalability | 🔵 Trivial | 💤 Low value

Avoid the extra manifest pass detectIsV1Format() reads to EOF just to capture the first line, then parseManifest() opens the same file again. Fold the format check into the properties parse so the manifest is only read once.

device.py (1)

42-53: 🗄️ Data Integrity & Integration | 🔵 Trivial | ⚡ Quick win

Python parser doesn't strip surrounding quotes like the CMake parser does.

READ_PROPERTIES_TO_MAP in Buildscripts/properties.cmake strips a leading/trailing quote pair from values, but this read_properties_file (and its duplicate in Buildscripts/CDN/generate-firmware-files.py) does not. If a device.properties value is ever quoted, CMake-based and Python-based consumers would silently disagree on the resulting value.


ℹ️ Review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 04d08dbd-b27c-4eda-a4f1-75c3391dd8a5

📥 Commits

Reviewing files that changed from the base of the PR and between 35fd7dd and 9d58b96.

📒 Files selected for processing (64)
  • Buildscripts/CDN/generate-firmware-files.py
  • Buildscripts/properties.cmake
  • Devices/btt-panda-touch/device.properties
  • Devices/cyd-2432s024c/device.properties
  • Devices/cyd-2432s024r/device.properties
  • Devices/cyd-2432s028r/device.properties
  • Devices/cyd-2432s028rv3/device.properties
  • Devices/cyd-2432s032c/device.properties
  • Devices/cyd-3248s035c/device.properties
  • Devices/cyd-4848s040c/device.properties
  • Devices/cyd-8048s043c/device.properties
  • Devices/cyd-e32r28t/device.properties
  • Devices/cyd-e32r32p/device.properties
  • Devices/elecrow-crowpanel-advance-28/device.properties
  • Devices/elecrow-crowpanel-advance-35/device.properties
  • Devices/elecrow-crowpanel-advance-50/device.properties
  • Devices/elecrow-crowpanel-basic-28/device.properties
  • Devices/elecrow-crowpanel-basic-35/device.properties
  • Devices/elecrow-crowpanel-basic-50/device.properties
  • Devices/generic-esp32/device.properties
  • Devices/generic-esp32c6/device.properties
  • Devices/generic-esp32p4/device.properties
  • Devices/generic-esp32s3/device.properties
  • Devices/guition-jc1060p470ciwy/device.properties
  • Devices/guition-jc2432w328c/device.properties
  • Devices/guition-jc3248w535c/device.properties
  • Devices/guition-jc8048w550c/device.properties
  • Devices/heltec-wifi-lora-32-v3/device.properties
  • Devices/lilygo-tdeck/device.properties
  • Devices/lilygo-tdisplay-s3/device.properties
  • Devices/lilygo-tdisplay/device.properties
  • Devices/lilygo-tdongle-s3/device.properties
  • Devices/lilygo-thmi/device.properties
  • Devices/lilygo-tlora-pager/device.properties
  • Devices/m5stack-cardputer-adv/device.properties
  • Devices/m5stack-cardputer/device.properties
  • Devices/m5stack-core2/device.properties
  • Devices/m5stack-cores3/device.properties
  • Devices/m5stack-papers3/device.properties
  • Devices/m5stack-stackchan/device.properties
  • Devices/m5stack-stickc-plus/device.properties
  • Devices/m5stack-stickc-plus2/device.properties
  • Devices/m5stack-sticks3/device.properties
  • Devices/m5stack-tab5/device.properties
  • Devices/simulator/device.properties
  • Devices/unphone/device.properties
  • Devices/waveshare-esp32-s3-geek/device.properties
  • Devices/waveshare-s3-lcd-13/device.properties
  • Devices/waveshare-s3-touch-lcd-128/device.properties
  • Devices/waveshare-s3-touch-lcd-147/device.properties
  • Devices/waveshare-s3-touch-lcd-43/device.properties
  • Devices/wireless-tag-wt32-sc01-plus/device.properties
  • Firmware/CMakeLists.txt
  • Modules/lvgl-module/CMakeLists.txt
  • Tactility/Private/Tactility/app/AppManifestParsing.h
  • Tactility/Private/Tactility/app/AppManifestParsingInternal.h
  • Tactility/Source/Tactility.cpp
  • Tactility/Source/app/AppInstall.cpp
  • Tactility/Source/app/AppManifestParsing.cpp
  • Tactility/Source/app/AppManifestParsingV1.cpp
  • Tactility/Source/app/AppManifestParsingV2.cpp
  • Tests/SdkIntegration/tactility.py
  • Tests/Tactility/Source/AppManifestParsingTest.cpp
  • device.py

Comment thread device.py
Comment thread Devices/elecrow-crowpanel-basic-50/device.properties
Comment thread Tactility/Source/app/AppManifestParsingV1.cpp
@KenVanHoeylandt KenVanHoeylandt merged commit 90afba6 into main Jul 2, 2026
58 checks passed
@KenVanHoeylandt KenVanHoeylandt deleted the develop branch July 2, 2026 22:29
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