mirror of
https://github.com/liquidraver/ZephCore.git
synced 2026-09-02 10:33:47 +00:00
Outgoing DMs now go through a 4-slot pending-send table with per-slot one-shot k_timer. On no-ACK the message retries (up to 5 attempts, 0-indexed); attempt 4 clears recipient.out_path_len + markContactsDirty so the last try forces flood and future DMs re-discover the path. ACK dispatch: CompanionMesh::processAck tries _ack_table first (phone-initiated sends), then ui_joystick_try_match_ack() for joystick- initiated sends, then falls through to connection-keepalive ACKs. BLE-app mirror is now deferred until outcome is known. The body prefix in the offline-queue frame is "(>>✓) " on delivery or "(>>✗) " on failure, replacing the previous unconditional "(>>) ". UnreadScreen's sent-entry origin prefix is updated in place via markSentEntryStatus() to "(>>+) " / "(>>X) " (ASCII for the OLED font). queueLocalSentContactMessage gains a 'delivered' parameter to pick the prefix; markContactsDirtyPublic() exposes the lazy-write trigger so the joystick's path-clear persists.