From 5b0654e957c28a72957c88921bb6a785b09b08e9 Mon Sep 17 00:00:00 2001 From: Paul Buetow Date: Tue, 14 Apr 2026 22:39:48 +0300 Subject: fix: show elapsed in seconds when <60s in edit-running window MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit When a fast was just started, DOWN appeared to do nothing because format_duration_hours_minutes rounds to minutes — both 8s and 0s display as "0h 00m". Now the edit window shows the exact seconds (e.g. "Elapsed 8s") for sub-minute elapsed times, giving clear feedback when UP/DOWN adjustments change the value. Also adds 'just reset-flash' recipe to recover from SPI flash corruption that causes the emulator to hang on the boot screen. Co-Authored-By: Claude Sonnet 4.6 --- Justfile | 12 ++++++++++++ src/c/fastforge.c | 8 +++++++- 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/Justfile b/Justfile index 9c5ee3b..d24e97c 100644 --- a/Justfile +++ b/Justfile @@ -52,6 +52,18 @@ screenshot: kill: pebble kill +# ───────────────────────────────────────────── +# Emulator recovery +# ───────────────────────────────────────────── + +# Reset the basalt SPI flash to factory state. +# Use this when 'just dev' hangs on the Pebble boot screen — it means the +# flash was corrupted (e.g. by killing multiple concurrent qemu processes). +reset-flash: + -pebble kill + bunzip2 -k -c ~/.pebble-sdk/SDKs/4.9.148/sdk-core/pebble/basalt/qemu/qemu_spi_flash.bin.bz2 > ~/.pebble-sdk/4.9.148/basalt/qemu_spi_flash.bin + @echo "Flash reset to factory state. Run 'just dev' to reinstall." + # ───────────────────────────────────────────── # Maintenance commands # ───────────────────────────────────────────── diff --git a/src/c/fastforge.c b/src/c/fastforge.c index f128592..dd2a976 100644 --- a/src/c/fastforge.c +++ b/src/c/fastforge.c @@ -1037,7 +1037,13 @@ static void refresh_running_edit_window_content(void) { elapsed = 0; } char elapsed_text[20]; - format_duration_hours_minutes(elapsed, elapsed_text, sizeof(elapsed_text)); + if (elapsed < 60) { + /* Show seconds when elapsed is sub-minute so the user can see DOWN/UP + * adjustments that would otherwise be invisible at "0h 00m" resolution. */ + snprintf(elapsed_text, sizeof(elapsed_text), "%ds", (int)elapsed); + } else { + format_duration_hours_minutes(elapsed, elapsed_text, sizeof(elapsed_text)); + } snprintf(s_running_edit_start_text, sizeof(s_running_edit_start_text), "Start %s", start_text); snprintf(s_running_edit_elapsed_text, sizeof(s_running_edit_elapsed_text), "Elapsed %s", elapsed_text); -- cgit v1.2.3