fix: avoid duplicate OTA update actions - #2807
Merged
Uri-Tauber merged 1 commit intoJul 30, 2026
Merged
Conversation
Contributor
📝 WalkthroughWalkthroughThe OTA update activity now renders the “Cancel” and “Update” action text only when the mapped input supports touch capability. ChangesOTA touch rendering
Estimated code review effort: 1 (Trivial) | ~5 minutes Suggested reviewers: 🚥 Pre-merge checks | ✅ 4✅ Passed checks (4 passed)
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. Comment |
Uri-Tauber
approved these changes
Jul 30, 2026
antziko
added a commit
to antziko/crosspoint-companion
that referenced
this pull request
Jul 31, 2026
Hand-ported 5 clean upstream/develop commits onto feat-touch: - crosspoint-reader#2814: ParsedText words/rubyTexts -> std::deque (chunked ~512B nodes), eliminating the large contiguous vector realloc that abort()ed on fresh-open CJK under a fragmented heap. Removed feat's now-redundant growth-wall guard (heapExhausted_/atGrowthWall/canGrowWordVectors): the deque + word-count soft-flush + new(nothrow)/signalOutOfMemory + buildTickHeapGate floors already cover it. ParsedText logic now matches upstream; feat keeps its 384/160 flush thresholds and the SdDebugLog soft-flush/LAYOUT-OOM trace. SdCardFont/GfxRenderer signatures take const std::deque<std::string>& to match. - crosspoint-reader#2806: persist text settings on discrete Confirm commits, since goHome/goToSleep use replaceActivity and bypass the pop resultHandler. - crosspoint-reader#2807: guard OTA action-button drawing behind hasTouch(). - b215ed8: OptionPopup navigates via NavPrevious/NavNext. - crosspoint-reader#2803: order language list by native language name (gen_i18n.py). Build green (default env), 313/313 host tests pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
uxjulia
pushed a commit
to uxjulia/CrossInk
that referenced
this pull request
Jul 31, 2026
(cherry picked from commit 74065f1)
donovan-yohan
pushed a commit
to donovan-yohan/crosspoint-reader
that referenced
this pull request
Aug 1, 2026
Brings 16 upstream commits under the messenger line. No textual conflicts: the messenger work is almost entirely new files plus additive edits to files upstream did not touch this cycle. Every overlap was audited on the merits rather than trusted to the auto-merge. Notable integrations: - perf: shared static bidi scratch buffer (~1.5 KB RAM) (crosspoint-reader#2554) - perf: dictionary sidecar freshness checked once per open; index files opened once per lookup (crosspoint-reader#2733) - fix: dictionary lookup OOM on .dict.dz definitions (crosspoint-reader#2791) - fix: deque instead of vector for text token storage (crosspoint-reader#2814); this changed GfxRenderer::ensureSdCardFontReady's container type -- no messenger caller uses that overload - fix: avoid duplicate OTA update actions (crosspoint-reader#2807) - feat: OptionPopup is orientation-aware, now driven by NavPrevious/NavNext instead of Up|Left / Down|Right; no messenger surface constructs an OptionPopup, so the new nav semantics are inherited cleanly - fix: orient dictionary navigation buttons (crosspoint-reader#2749) - fix: properly power down SD power rails on x3 (crosspoint-reader#2808) - fix: save text settings immediately on each change (crosspoint-reader#2806) - fix: order languages by native name instead of code (crosspoint-reader#2803) - fix: restrict CrossPoint position extension to official server (crosspoint-reader#2790) - feat: access text settings from the epub reader (crosspoint-reader#2788) - fix: clean image page after sync return (crosspoint-reader#2747) - fix: restore spaces between CJK words (crosspoint-reader#2768) - fix: derive file-transfer WebSocket port from HTTP (crosspoint-reader#2729) Sole overlapping file: src/activities/settings/SettingsActivity.cpp. Upstream dropped a redundant SETTINGS.saveToFile() from the text-settings callback (TextSettingsActivity now saves on each change); our messenger entries only added list rows above it. Both sides kept; upstream's line landed on the callback it was written for. WebSocket port contract (crosspoint-reader#2729) is browser-side JavaScript only. The firmware still binds HTTP 80 and WebSocket 81 (CrossPointWebServer.h wsPort = 81), and the UDP discovery beacon still advertises that port, so the mobile app's hardcoded ws://<ip>:81 remains correct. No app change required. Messenger surfaces verified present after merge: MessageSync, BookSync, PeerProbe, MailboxSyncActivity, SleepActivity note precedence and display-once, main.cpp sleep/wake sync hooks, CrossPointState fields (mailboxApPsk bounds, display-once note id), SettingsList messenger entries including the mailboxApPsk DynamicString and settings-API obfuscation, CrossPointWebServer upload guards, HttpDownloader Range and deadline work, i18n strings. Compile gate: pio run -e default SUCCESS (RAM 15.5%, Flash 84.7%). Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fix duplicate Cancel and Update actions on the OTA update confirmation screen for devices without touch input.
Scope Check
CrossPoint is intentionally narrow. See SCOPE.md and ROADMAP.md.
Please confirm:
(or, if one does, I explain why CrossPoint still needs it below).
freeink-sdk/,lib/hal/, the bootloader, OTA, or recovery code, I have coordinated withthe relevant maintainer.
Additional Context
This is a small UI regression fix for existing CrossPoint functionality rather than a new capability. The touch actions were added alongside the existing physical-button hints, causing both sets of labels to be rendered on non-touch devices.
On the OTA confirmation screen, the large Cancel and Update labels are intended to represent touch targets. The screen also renders mapped physical-button hints through
drawButtonHints().drawButtonHints()already suppresses physical-button hints on touch devices. This PR applies the complementary condition to the large touch labels, so each device type displays only its appropriate controls:Input handling remains unchanged for both device types.
AI Usage
While CrossPoint doesn't have restrictions on AI tools in contributing, please be transparent about their usage as it
helps set the right context for reviewers.
Did you use AI tools to help write this code? **YES **