Skip to content

feat: iambic timeline markers overlay#2

Open
iu3qez wants to merge 19 commits intomainfrom
worktree-iambic-timeline-markers
Open

feat: iambic timeline markers overlay#2
iu3qez wants to merge 19 commits intomainfrom
worktree-iambic-timeline-markers

Conversation

@iu3qez
Copy link
Copy Markdown
Owner

@iu3qez iu3qez commented Mar 3, 2026

Summary

  • Widen stream_sample_t.flags from uint8_t to uint16_t, add 4 new iambic event flag bits (FLAG_MEM_WINDOW, FLAG_SQUEEZE, FLAG_MEM_ARMED, FLAG_MODE_B_BONUS)
  • Set flags in iambic FSM (update_gpio and decide_next_element) with per-tick clearing via event_flags accumulator
  • Detect flag edges in bg_task and broadcast as iambic WebSocket events
  • Render overlay markers on Timeline OUT track (memory window dashes, squeeze diamonds, memory armed triangles, Mode B "B" labels) with FSM ON/OFF toggle and legend

Test Plan

  • 193 host tests pass (4 new iambic event flag tests)
  • ESP-IDF build clean
  • Frontend build clean
  • Flash and verify overlay renders with real keying data
  • Verify toggle persists across page reloads (localStorage)

iu3qez added 19 commits March 3, 2026 21:47
Responds to all DNS A-type queries with 192.168.4.1 so phones/laptops
auto-detect the captive portal during provisioning mode.
Adds Host header check to redirect DNS-hijacked requests to 192.168.4.1,
plus a catch-all handler for captive portal detection URLs like
/generate_204 and /hotspot-detect.html.
…tive fault count

- stream: alternate local_key to defeat silence compression in overrun test
- iambic: start at T0=1s to clear debounce blanking period (5ms)
- fault: count is cumulative — fault_clear() does not reset it
Defines approach for visualizing iambic FSM events (memory window,
squeeze, memory armed, Mode B bonus) on the timeline. Key decisions:
- Widen stream_sample_t flags to uint16_t (4 new flag bits)
- FSM sets bits in RT path (no logic duplication)
- Overlay rendering on OUT track with localStorage toggle
- Visual treatment marked as experimental, needs iteration
9 tasks with TDD approach, dependency graph, exact file paths
and code. Tasks 3-5 parallelizable after task 2.
Add FLAG_MEM_WINDOW, FLAG_SQUEEZE, FLAG_MEM_ARMED, FLAG_MODE_B_BONUS
constants. Sample grows from 6 to 7 bytes. No behavioral change yet.
iambic_processor_t gains event_flags field, cleared each tick.
FLAG_SQUEEZE set when both paddles pressed.
New 'iambic' event type with mem_window, squeeze, mem_armed,
mode_b_bonus sub-events sent on flag transitions.
Shows memory window, squeeze, memory armed, Mode B bonus as
overlay markers on OUT track. Toggle saved to localStorage.
Visual treatment is experimental and will be iterated.
Track git HEAD via a hash file so the frontend stamp is invalidated
on new commits, even when no source files changed. Works in worktrees.
assets.c was generated into src/ (source tree), so idf.py fullclean
would delete the build stamp but leave the stale assets.c behind.
Subsequent builds would use the old frontend without rebuilding.

Move ASSETS_OUTPUT to CMAKE_CURRENT_BINARY_DIR and use target_sources()
to add it as a generated source. Now fullclean reliably forces frontend
rebuild.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant