Skip to content

Merge mesh apps, add log command, terminal and simulator fixes - #752

Merged
KenVanHoeylandt merged 12 commits into
mainfrom
develop
Nov 14, 2026
Merged

KenVanHoeylandt merged 12 commits into
mainfrom
develop

Conversation

@KenVanHoeylandt

@KenVanHoeylandt KenVanHoeylandt commented Nov 14, 2026 •

Copy link
Copy Markdown
Contributor

Mesh app

  • Merged the Mesh menu, Channels and Contacts apps into a single tactility.mesh app (MeshApp.cpp) with three view modes: menu, contacts and channels.
  • The main menu lists Channels and Contacts and has a settings button in its toolbar.
    Settings was removed from the Channels and Contacts toolbars and from the Contacts overflow menu.
  • The back button in Contacts and Channels returns to the menu. Close in the menu exits the app.
  • Removed MeshChannels.cpp and MeshContacts.cpp and their manifests.
  • Renamed the app icon files from tactility.meshchannels* to tactility.mesh*.

log shell command

  • New kernel API log_subscribe() / log_unsubscribe() (tactility/log.h).
    The log drain task calls listeners after it writes each line. Nothing is stored while there are no listeners.
  • New headless log app in coreutils-module that streams log lines to the terminal.
    It uses a 2 KB handoff buffer in external RAM, drops whole lines when the buffer is full and reports how many it dropped.
    Any key press, closed stdin, or SIGINT/SIGTERM/SIGHUP stops it.
  • Added a kernel test for subscribing, receiving a line and unsubscribing.
  • Only INFO and above is shown by default. Output from ets_printf doesn't reach the log queue.

Terminal

  • Fixed a burst of newlines after commands such as ls on the simulator.
    Drivers like the SDL keyboard keep reporting a held key as pressed on every poll, and each report was handled as a new keypress.
    KeyboardInput::pump() now only acts on a key's press edge.
  • When the terminal closes, it waits (up to 1 s) for the held key to be released before it re-enables the LVGL keyboard input.
    Before this, the Return that ran exit opened the system menu.

Simulator

  • Profiles now set UI spacing and UI size separately (uiSpacing, uiSize) from each device's device.properties, replacing the single compact flag.

Maps icons

  • Redrew the colour icon with streets and flat blocks, and a pin without an outline.
  • Redrew the mono icon with a cleaner street layout and a solid pin.

Other

  • Initialized TileGrid::Callbacks::onTilesCleared in the Files app to fix a -Wmissing-field-initializers warning.

Summary by CodeRabbit

  • New Features
    • Added a Mesh app that combines channel and contact management, including contact-adding options and access to this device’s QR code.
    • Added a log app that streams system logs to standard output.
    • Simulator profiles now apply their configured interface spacing and size.
  • Bug Fixes
    • Prevented held keys from triggering repeatedly and improved status icon refresh during startup.
  • Style
    • Tile label spacing now adapts to the current theme.
  • Documentation
    • Updated README links to the website, installer, and documentation.

@KenVanHoeylandt KenVanHoeylandt changed the title Develop Merge mesh apps, add log command, terminal and simulator fixes Nov 14, 2026
@coderabbitai

coderabbitai Bot commented Nov 14, 2026 •

Copy link
Copy Markdown

Explain Change →

Caution

Review failed

The pull request is closed.

Walkthrough

Simulator profiles now set theme spacing and size separately. The kernel log queue supports listeners, and coreutils adds a headless app that writes log output to standard output. The Mesh channels and contacts apps are consolidated into one app with channel and contact views. Other changes update terminal key handling, status bar startup refresh, tile label spacing, font type spelling, a file-view callback initializer, and README links.

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 two of the main changes: merging the mesh apps into one app and adding the headless log command. It also mentions terminal and simulator fixes, which are real parts of the changeset. T…
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 two of the main changes: merging the mesh apps into one app and adding the headless log command. It also mentions terminal and simulator fixes, which are real parts of the changeset. The title is accurate and specific, though it lists several items rather than one main change. The mesh merge is the largest change, and the title covers it.

  • 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: 7

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: 27a20492-e45f-4da1-ae1a-1103f55451ab
Commits

Reviewing files that changed from the base of the PR and between d52646d and e5f3ef7.

Files ignored due to path filters: 8

  • 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.mesh.svg is excluded by !**/*.svg
  • Data/system/app_icon/tactility.mesh_mono.svg is excluded by !**/*.svg
  • Documentation/pics/screenshot-Files.png is excluded by !**/*.png
  • Documentation/pics/screenshot-Launcher.png is excluded by !**/*.png
  • Documentation/pics/screenshot-Settings.png is excluded by !**/*.png
  • Documentation/pics/screenshot-Terminal.png is excluded by !**/*.png
Files selected for processing: 17

  • Devices/simulator/Source/SimulatorProfile.cpp
  • Devices/simulator/Source/SimulatorProfile.h
  • Devices/simulator/Source/module.cpp
  • Modules/coreutils-module/source/apps/log.cpp
  • Modules/coreutils-module/source/module.cpp
  • README.md
  • Tactility/Private/Tactility/app/terminal/KeyboardInput.h
  • Tactility/Source/InitApps.cpp
  • Tactility/Source/app/files/View.cpp
  • Tactility/Source/app/launcher/AppsMode.cpp
  • Tactility/Source/app/meshchat/MeshApp.cpp
  • Tactility/Source/app/meshchat/MeshContacts.cpp
  • Tactility/Source/app/terminal/KeyboardInput.cpp
  • Tactility/Source/service/statusbar/Statusbar.cpp
  • TactilityKernel/include/tactility/log.h
  • TactilityKernel/source/log_queue.cpp
  • TactilityKernel/tests/source/log_listener_test.cpp
Files with no reviewable changes: 1

  • Tactility/Source/app/meshchat/MeshContacts.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.

@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

Tactility/Private/Tactility/app/terminal/KeyboardInput.h: 1

46-46: Trivial · Maintainability & Code Quality · Quick win

Use the external-memory vector for session state.

devices_ retains its allocation for the terminal session. Change it to tt::std::vector<Keyboard> and include the corresponding header. This keeps the allocation under the repository's external-RAM policy.

As per coding guidelines, “Containers that live long use the tt::std replacements from TactilityKernel.”

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: 36f1018b-9c6e-4fc1-9d1a-8942bf996f1c
Commits

Reviewing files that changed from the base of the PR and between e5f3ef7 and 358afea.

Files selected for processing: 5

  • Modules/coreutils-module/source/apps/log.cpp
  • Tactility/Private/Tactility/app/terminal/KeyboardInput.h
  • Tactility/Source/app/meshchat/MeshApp.cpp
  • Tactility/Source/app/terminal/KeyboardInput.cpp
  • TactilityKernel/tests/source/log_listener_test.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 df9e66e into main Nov 14, 2026
0 of 22 checks passed
@KenVanHoeylandt
KenVanHoeylandt deleted the develop branch November 14, 2026 14:56
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