| Age | Commit message (Collapse) | Author | |
|---|---|---|---|
| 2026-04-14 | fix: use GOTHIC_28_BOLD for timer and green for goal-reached state | Paul Buetow | |
| Two display bugs fixed: 1. Timer font: BITHAM_34_MEDIUM_NUMBERS overflows the 144-px display when all digits are wide zeros (e.g. "00:00:00"). Switch the timer layer to GOTHIC_28_BOLD once at creation — it fits both the 8-char "HH:MM:SS" countdown and the 9-char "-HH:MM:SS" overtime without truncation, so the per-refresh font swap is no longer needed. 2. Goal colour: theme_goal_background_color returned GColorOxfordBlue (dark navy) making the GOAL HIT overlay and GOAL REACHED timer state hard to distinguish from a plain dark screen. Changed to GColorIslamicGreen so both the overlay window and the post-goal timer background are vivid green, clearly signalling goal completion. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-04-14 | fix: move history-edit delete from long-BACK to long-DOWN | Paul Buetow | |
| Pebble OS intercepts BACK at the firmware level before long-click handlers can fire, making window_long_click_subscribe(BUTTON_ID_BACK) unreliable. Move the 700 ms delete gesture to DOWN, which has no OS-level conflict. Update hint text accordingly. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-04-13 | u3: show timer window immediately on launch when fast is running | Paul Buetow | |
| Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-04-13 | t2: add Resume Last Fast to main menu | Paul Buetow | |
| Adds a new "Resume Last Fast" item at index 1 in the main menu that restores the most-recently completed history entry as the running fast (undo accidental stop). Subtitle shows the last fast duration, or "No previous fast" when unavailable or a fast is already running. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-04-13 | s3: goal auto-continue, 10s test preset, fix overtime font and streak crash | Paul Buetow | |
| - Goal window auto-continues the fast; BACK/DOWN dismisses, SELECT stops - 10s dev preset added as last menu item (fires alarm after 10 s) - Switch to GOTHIC_28_BOLD for negative overtime to prevent truncation - Rewrite streak computation with UTC day integers to fix stack overflow Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-04-13 | fix: detail_window_load must not call set_placeholder_content with self | Paul Buetow | |
| Calling snprintf(buf, n, "%s", buf) is undefined behaviour; Pebble's ARM libc zeroes the buffer, making every placeholder window render blank. Replace the set_placeholder_content call in detail_window_load with direct text_layer_set_text calls since the static buffers are already populated by show_placeholder_window before the window is pushed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-04-13 | v2: add delete fast from history via long-press BACK in edit window | Paul Buetow | |
| Adds history_delete_entry() in fastforge_core.c which removes an entry at a given index by shifting the tail with memmove, zeroing the vacated slot, recomputing streaks, and persisting. Wires a long-press BACK (700ms) handler in the history edit window that calls it. Updates the hint text to inform the user. Fixed hint text buffer from [40] to [48] to fit the full string. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-04-13 | u2: add cancel fast option that discards the fast without saving to history | Paul Buetow | |
| Adds fast_cancel() in fastforge_core.c which clears the running fast and saves state without appending to history. Wires a new "Cancel Current Fast" main menu item (index 3) that calls it, showing a confirmation placeholder. Updates sync_main_menu_state() to reflect cancel availability dynamically. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-04-13 | r2: add About menu item with author credit and source URL | Paul Buetow | |
| Adds an About entry at the bottom of the main menu. Selecting it shows a detail window with the author (Paul Buetow) and source code location (codeberg.org/snonux/fastforge). Reuses the existing detail window infrastructure via show_placeholder_window — no new window needed. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-04-13 | l2: remove the fasting science screen from the app | Paul Buetow | |
| Deleted all science-related code: window, text layers, buffers, callbacks, click handlers, window load/unload/appear functions, menu item, and enum entry. Renumbered main menu enum (8 items → 7). Updated AGENTS.md and PLAN.md to reflect the removal. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> | |||
| 2026-04-13 | s2: keep timer running negative after goal with reached theme | Paul Buetow | |
| 2026-04-13 | p2: use stdint.h for SIZE_MAX guard | Paul Buetow | |
| 2026-04-13 | p2: guard streak allocation size overflow | Paul Buetow | |
| 2026-04-13 | p2: remove silent streak recompute truncation | Paul Buetow | |
| 2026-04-13 | p2: extract pure streak recompute API | Paul Buetow | |
| 2026-04-13 | refactor(o2): extract history csv helpers into fastforge_csv | Paul Buetow | |
| 2026-04-13 | n2: finalize fastforge_logic time handling seam | Paul Buetow | |
| 2026-04-13 | n2: remove stray pebble.h include from fastforge logic | Paul Buetow | |
| 2026-04-13 | n2: remove dead time include-guard hack in fastforge_logic | Paul Buetow | |
| 2026-04-13 | n2: finalize local_day_start in Pebble-free logic module | Paul Buetow | |
| 2026-04-13 | n2: remove ABI-sensitive local_day_start tm fallback | Paul Buetow | |
| 2026-04-13 | n2: restore local_day_start to pebble-free logic module | Paul Buetow | |
| 2026-04-13 | n2: remove pebble.h dependency from fastforge_logic | Paul Buetow | |
| 2026-04-13 | n2: extract Pebble-free fasting logic module | Paul Buetow | |
| 2026-04-13 | m2: split Pebble-free types into separate header | Paul Buetow | |
| 2026-04-12 | 22: fix basalt history screen rendering | Paul Buetow | |
| 2026-04-12 | j2: add color theme for Pebble color watches | Paul Buetow | |
| 2026-04-12 | i2: split FastForge core and history modules | Paul Buetow | |
| 2026-04-12 | Refactor FastForge C best practices for task 42 | Paul Buetow | |
| 2026-04-12 | 22: fix basalt debug settings footer clipping | Paul Buetow | |
| 2026-04-12 | 22: polish basalt UI hints and debug layout | Paul Buetow | |
| 2026-04-12 | Task 72: isolate companion export sessions | Paul Buetow | |
| 2026-04-12 | Task 72: remove companion auto export request | Paul Buetow | |
| 2026-04-12 | Task 72: snapshot CSV backup handshake | Paul Buetow | |
| 2026-04-12 | Task 72: add CSV AppMessage backup | Paul Buetow | |
| 2026-04-12 | Implement task 92 quick-start presets | Paul Buetow | |
| 2026-04-12 | 62: add fast notes, tags, and milestone badges | Paul Buetow | |
| 2026-04-12 | 52: implement debug menu and fake time controls | Paul Buetow | |
| 2026-04-12 | b2: implement settings screen and persisted dev mode | Paul Buetow | |
| 2026-04-12 | a2: implement fasting science screen | Paul Buetow | |
| 2026-04-12 | y1: refresh timer after history edits | Paul Buetow | |
| 2026-04-12 | y1: refresh streak on local day rollover while app is open | Paul Buetow | |
| 2026-04-12 | y1: age current streak against today to drop after missed day | Paul Buetow | |
| 2026-04-12 | y1: reduce static RAM usage to restore aplite build | Paul Buetow | |
| 2026-04-12 | y1: implement real consecutive-day streak tracking across app screens | Paul Buetow | |
| 2026-04-12 | Fix stale goal-hit window after running fast edits (d2) | Paul Buetow | |
| 2026-04-12 | Implement running fast start-time editor for task d2 | Paul Buetow | |
| 2026-04-12 | fix(c2): keep history chronological after edit saves | Paul Buetow | |
| 2026-04-12 | feat(c2): implement history list and edit-past-fasts flow | Paul Buetow | |
| 2026-04-12 | Implement statistics dashboard for task 12 | Paul Buetow | |
