From 2c3ee4e57842e6807e0ec1eddbbb6961cb56bc5c Mon Sep 17 00:00:00 2001 From: mldangelo Date: Fri, 13 Feb 2026 21:31:43 -0800 Subject: [PATCH] fix(msg): preserve float precision in listen polling timestamp The listen loop truncated message timestamps to integers via ${new_ts%.*}, causing the relay's strict > comparison to re-return the same messages every polling cycle. This made msg_say fire repeatedly for already-seen messages. Keep the full float timestamp so messages are properly excluded after being displayed. Co-Authored-By: Claude Opus 4.6 --- src/crabcode | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/crabcode b/src/crabcode index d7af442..dcdd991 100755 --- a/src/crabcode +++ b/src/crabcode @@ -5879,11 +5879,12 @@ msg_listen() { msg_log "<" "$from" "$text" msg_say "$from" "$text" done - # Update last_ts to the latest message timestamp + # Update last_ts to the latest message timestamp (keep full float precision + # so the relay's strict > comparison excludes already-seen messages) local new_ts new_ts=$(echo "$response" | jq -r '.[-1].ts // 0' 2>/dev/null) if [ -n "$new_ts" ] && [ "$new_ts" != "0" ]; then - last_ts="${new_ts%.*}" + last_ts="$new_ts" fi fi