Skip to content

fix(morse): keep a continuation breadcrumb after a flow-tapped tap#846

Merged
HaoboGu merged 1 commit into
HaoboGu:mainfrom
jpds:fix/morse-flowtap-continuation
May 13, 2026
Merged

fix(morse): keep a continuation breadcrumb after a flow-tapped tap#846
HaoboGu merged 1 commit into
HaoboGu:mainfrom
jpds:fix/morse-flowtap-continuation

Conversation

@jpds
Copy link
Copy Markdown
Contributor

@jpds jpds commented May 12, 2026

Stacked on #845.

A tap that gets resolved by flow-tap (rather than by early-fire) drops the key out of the held buffer the moment it's released. On a tap-dance key I have configured as tap = Backspace / hold = Shift / hold_after_tap = Backspace - rapidly tapping and then holding to repeat-delete only worked sporadically.

Fix: flow-tapped entries get their own held-buffer state, FlowTapped, and on release they downgrade to EarlyFired if the key has a hold_after_tap action, the same thing early-fire already does. Plain tap-hold keys have no hold_after_tap, so nothing changes for them.

I put this in a separate state rather than reusing the ProcessedButReleaseNotReportedYet release arm, since that arm also fires for permissive-hold and unilateral-tap resolutions and I'd rather not special-case those.

@jpds jpds force-pushed the fix/morse-flowtap-continuation branch from d52d321 to b92fa8b Compare May 12, 2026 23:58
@github-actions
Copy link
Copy Markdown

github-actions Bot commented May 13, 2026

Size Report

Example main PR Diff .text .data .bss
use_config/nrf52832_ble 372.2 KiB 372.1 KiB -0.03% ⬇️ -136 0 +8
use_config/nrf52840_ble 421.9 KiB 421.7 KiB -0.03% ⬇️ -168 0 +8
use_config/nrf52840_ble_split (central) 497.2 KiB 497.1 KiB +0.00% ⬇️ -40 0 +8
use_config/nrf52840_ble_split (peripheral) 322.3 KiB 322.3 KiB +0.00% ⬆️ +4 0 0
use_config/pi_pico_w_ble 659.6 KiB 659.3 KiB -0.04% ⬇️ -316 0 +8
use_config/rp2040 147.4 KiB 147.1 KiB -0.18% ⬇️ -280 0 +8
use_config/rp2040_split (central) 160.5 KiB 160.2 KiB -0.16% ⬇️ -280 0 +8
use_config/rp2040_split (peripheral) 27.4 KiB 27.4 KiB +0.00% 0 0 0
use_config/stm32f1 62.4 KiB 62.6 KiB +0.20% ⬆️ +124 0 +8
use_config/stm32h7 99.8 KiB 99.7 KiB -0.06% ⬇️ -72 0 +8
use_rust/nrf52832_ble 359.6 KiB 359.5 KiB -0.04% ⬇️ -160 0 +8
use_rust/nrf52840_ble 418.0 KiB 417.8 KiB -0.03% ⬇️ -140 0 +8
use_rust/nrf52840_ble_split (central) 506.8 KiB 506.7 KiB -0.02% ⬇️ -152 0 +8
use_rust/nrf52840_ble_split (peripheral) 319.1 KiB 319.1 KiB +0.00% ⬆️ +4 0 0
use_rust/pi_pico_w_ble 660.0 KiB 659.8 KiB -0.02% ⬇️ -184 0 +8
use_rust/rp2040 147.1 KiB 146.9 KiB -0.13% ⬇️ -212 0 +8
use_rust/rp2040_split (central) 159.6 KiB 159.6 KiB -0.01% ⬇️ -36 0 +8
use_rust/rp2040_split (peripheral) 27.8 KiB 27.8 KiB +0.01% ⬆️ +4 0 0
use_rust/stm32f1 62.0 KiB 62.1 KiB +0.28% ⬆️ +176 0 +8
use_rust/stm32h7 121.0 KiB 121.0 KiB -0.02% ⬇️ -36 0 +8
use_config/nrf52832_ble — 372.2 KiB → 372.1 KiB (-0.03% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 341444	   5256	  34320	 381020	  5d05c	rmk-nrf52832

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 341580	   5256	  34312	 381148	  5d0dc	rmk-nrf52832

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.2% +3.34Ki  [ = ]       0    .debug_info
  +0.2% +1.22Ki  [ = ]       0    .debug_loc
  +0.3%    +792  [ = ]       0    .debug_line
  +0.2%    +312  [ = ]       0    .debug_ranges
  +0.1%    +276  [ = ]       0    .strtab
  +0.2%    +208  [ = ]       0    .symtab
  +0.1%     +48  [ = ]       0    .debug_frame
  +0.1%     +40  [ = ]       0    .debug_aranges
  [ = ]       0  +0.0%      +8    .bss
  +9.4%      +6  [ = ]       0    [Unmapped]
  -0.9%     -76  [ = ]       0    .debug_abbrev
  -0.0%     -94  [ = ]       0    .debug_str
  -0.0%    -136  -0.0%    -136    .text
  +0.1% +5.90Ki  -0.0%    -128    TOTAL
use_config/nrf52840_ble — 421.9 KiB → 421.7 KiB (-0.03% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 375468	   5264	  51120	 431852	  696ec	rmk-nrf52840

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 375636	   5264	  51112	 432012	  6978c	rmk-nrf52840

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1% +2.10Ki  [ = ]       0    .debug_info
  +0.0% +1.09Ki  [ = ]       0    .debug_str
  +0.1%    +442  [ = ]       0    .debug_line
  +0.2%    +408  [ = ]       0    .debug_ranges
  +0.1%    +325  [ = ]       0    .strtab
  +0.2%    +272  [ = ]       0    .symtab
  +0.2%     +84  [ = ]       0    .debug_frame
  +0.1%     +56  [ = ]       0    .debug_aranges
  +0.4%     +36  [ = ]       0    .debug_abbrev
  [ = ]       0  +0.0%      +8    .bss
   +15%      +7  [ = ]       0    [Unmapped]
  -0.1%    -168  -0.1%    -168    .text
  -0.1%    -541  [ = ]       0    .debug_loc
  +0.1% +4.09Ki  -0.0%    -160    TOTAL
use_config/nrf52840_ble_split (central) — 497.2 KiB → 497.1 KiB (+0.00% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 455528	   6588	  46936	 509052	  7c47c	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 455568	   6588	  46928	 509084	  7c49c	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1% +3.05Ki  [ = ]       0    .debug_info
  +0.1%    +932  [ = ]       0    .debug_loc
  +0.2%    +725  [ = ]       0    .debug_line
  +0.1%    +361  [ = ]       0    .strtab
  +0.2%    +304  [ = ]       0    .symtab
  +0.1%    +176  [ = ]       0    .debug_ranges
  +0.2%     +96  [ = ]       0    .debug_frame
  +0.1%     +64  [ = ]       0    .debug_aranges
  [ = ]       0  +0.0%      +8    .bss
 -36.8%     -25  [ = ]       0    [Unmapped]
  -0.5%     -39  [ = ]       0    .debug_abbrev
  -0.0%     -40  -0.0%     -40    .text
  -0.1% -2.11Ki  [ = ]       0    .debug_str
  +0.0% +3.44Ki  -0.0%     -32    TOTAL
use_config/nrf52840_ble_split (peripheral) — 322.3 KiB → 322.3 KiB (+0.00% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 296576	   5920	  27512	 330008	  50918	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 296572	   5920	  27512	 330004	  50914	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.0%    +136  [ = ]       0    .debug_str
  +0.0%      +9  [ = ]       0    .debug_info
  +0.0%      +8  [ = ]       0    .debug_aranges
  +0.0%      +4  +0.0%      +4    .text
  +0.0%      +2  [ = ]       0    .strtab
  -5.8%      -3  [ = ]       0    [Unmapped]
  -0.0%     -12  [ = ]       0    .debug_loc
  +0.0%    +144  +0.0%      +4    TOTAL
use_config/pi_pico_w_ble — 659.6 KiB → 659.3 KiB (-0.04% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 619604	      0	  55516	 675120	  a4d30	rmk-pi-pico-w

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 619920	      0	  55508	 675428	  a4e64	rmk-pi-pico-w

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.0%    +678  [ = ]       0    .debug_info
  +0.1%    +150  [ = ]       0    .strtab
  +0.0%    +107  [ = ]       0    .debug_str
  +0.0%     +22  [ = ]       0    .debug_loc
  [ = ]       0  +0.0%      +8    .bss
  +0.0%      +8  [ = ]       0    .debug_aranges
  -4.7%      -3  [ = ]       0    [Unmapped]
  -0.0%      -4  [ = ]       0    .debug_frame
  -0.0%      -6  [ = ]       0    .debug_line
  -0.1%     -80  [ = ]       0    .symtab
  -0.1%    -316  -0.1%    -316    .text
  -0.2%    -408  [ = ]       0    .debug_ranges
  +0.0%    +148  -0.0%    -308    TOTAL
use_config/rp2040 — 147.4 KiB → 147.1 KiB (-0.18% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 135312	      0	  15316	 150628	  24c64	rmk-rp2040

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 135592	      0	  15308	 150900	  24d74	rmk-rp2040

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.4% +1.26Ki  [ = ]       0    .debug_loc
  +0.1% +1.18Ki  [ = ]       0    .debug_info
  +0.0%    +368  [ = ]       0    .debug_str
  +0.1%    +121  [ = ]       0    .strtab
  +0.0%     +73  [ = ]       0    .debug_line
   +72%     +28  [ = ]       0    [Unmapped]
  [ = ]       0  +0.1%      +8    .bss
  +0.0%      +8  [ = ]       0    .debug_aranges
  -0.0%      -4  [ = ]       0    .debug_frame
  -0.2%    -208  [ = ]       0    .debug_ranges
  -0.7%    -240  [ = ]       0    .symtab
  -0.2%    -280  -0.2%    -280    .text
  +0.1% +2.32Ki  -0.2%    -272    TOTAL
use_config/rp2040_split (central) — 160.5 KiB → 160.2 KiB (-0.16% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 147940	      0	  16128	 164068	  280e4	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 148220	      0	  16120	 164340	  281f4	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.7% +2.30Ki  [ = ]       0    .debug_loc
  +0.1% +1.51Ki  [ = ]       0    .debug_str
  +0.1% +1.26Ki  [ = ]       0    .debug_info
  +0.2%    +361  [ = ]       0    .debug_line
  +0.1%    +154  [ = ]       0    .strtab
  [ = ]       0  +0.1%      +8    .bss
  +0.0%      +8  [ = ]       0    .debug_aranges
  -0.0%      -4  [ = ]       0    .debug_frame
 -18.5%     -10  [ = ]       0    [Unmapped]
  -0.0%     -40  [ = ]       0    .debug_ranges
  -0.2%     -80  [ = ]       0    .symtab
  -0.2%    -280  -0.2%    -280    .text
  +0.1% +5.18Ki  -0.2%    -272    TOTAL
use_config/rp2040_split (peripheral) — 27.4 KiB → 27.4 KiB (+0.00%)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  25260	     60	   2764	  28084	   6db4	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  25260	     60	   2764	  28084	   6db4	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.0%    +183  [ = ]       0    .debug_str
  +0.0%     +23  [ = ]       0    .debug_info
  +0.1%      +8  [ = ]       0    .debug_aranges
  +0.0%      +3  [ = ]       0    .strtab
  -2.4%      -1  [ = ]       0    [Unmapped]
  +0.0%    +216  [ = ]       0    TOTAL
use_config/stm32f1 — 62.4 KiB → 62.6 KiB (+0.20% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  56596	     28	   7448	  64072	   fa48	rmk-stm32f1

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  56472	     28	   7440	  63940	   f9c4	rmk-stm32f1

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.6% +3.04Ki  [ = ]       0    .debug_info
  +0.8%    +990  [ = ]       0    .debug_loc
  +0.9%    +830  [ = ]       0    .debug_line
  +0.1%    +792  [ = ]       0    .debug_str
  +2.1%    +416  [ = ]       0    .symtab
  +1.0%    +306  [ = ]       0    .strtab
  +1.4%    +184  [ = ]       0    .debug_frame
  +0.2%    +124  +0.2%    +124    .text
  +1.5%     +96  [ = ]       0    .debug_aranges
  +0.2%     +64  [ = ]       0    .debug_ranges
  [ = ]       0  +0.1%      +8    .bss
  +8.6%      +5  [ = ]       0    [Unmapped]
  +0.4% +6.76Ki  +0.2%    +132    TOTAL
use_config/stm32h7 — 99.8 KiB → 99.7 KiB (-0.06% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  92192	    268	   9680	 102140	  18efc	rmk-stm32h7

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  92264	    268	   9672	 102204	  18f3c	rmk-stm32h7

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1% +1.29Ki  [ = ]       0    .debug_info
  +0.4%    +440  [ = ]       0    .debug_line
  +0.6%    +408  [ = ]       0    .debug_ranges
  +0.2%    +361  [ = ]       0    .debug_loc
  +0.2%     +64  [ = ]       0    .symtab
  +0.0%     +15  [ = ]       0    .debug_str
   +16%      +9  [ = ]       0    [Unmapped]
  [ = ]       0  +0.1%      +8    .bss
  -0.0%      -7  [ = ]       0    .strtab
  -0.0%      -8  [ = ]       0    .debug_aranges
  -0.2%     -24  [ = ]       0    .debug_frame
  -0.1%     -72  -0.1%     -72    .text
  +0.1% +2.45Ki  -0.1%     -64    TOTAL
use_rust/nrf52832_ble — 359.6 KiB → 359.5 KiB (-0.04% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 329508	   5264	  33312	 368084	  59dd4	rmk-nrf52832

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 329668	   5264	  33304	 368236	  59e6c	rmk-nrf52832

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1% +2.51Ki  [ = ]       0    .debug_info
  +0.2% +1.28Ki  [ = ]       0    .debug_loc
  +0.1%    +447  [ = ]       0    .debug_line
  +0.1%    +264  [ = ]       0    .debug_ranges
  +0.1%     +64  [ = ]       0    .symtab
  [ = ]       0  +0.0%      +8    .bss
  +0.0%      +7  [ = ]       0    .strtab
  -6.3%      -4  [ = ]       0    [Unmapped]
  -0.0%      -8  [ = ]       0    .debug_aranges
  -0.1%     -36  [ = ]       0    .debug_frame
  -1.2%     -93  [ = ]       0    .debug_abbrev
  -0.1%    -160  -0.1%    -160    .text
  -0.0%    -952  [ = ]       0    .debug_str
  +0.1% +3.33Ki  -0.0%    -152    TOTAL
use_rust/nrf52840_ble — 418.0 KiB → 417.8 KiB (-0.03% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 376004	   5264	  46600	 427868	  6875c	rmk-nrf52840

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 376144	   5264	  46592	 428000	  687e0	rmk-nrf52840

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1% +1.73Ki  [ = ]       0    .debug_info
  +0.2%    +654  [ = ]       0    .debug_line
  +0.0%    +635  [ = ]       0    .debug_str
  +0.2%    +512  [ = ]       0    .debug_ranges
  +0.2%    +448  [ = ]       0    .strtab
  +0.3%    +400  [ = ]       0    .symtab
  +0.3%    +164  [ = ]       0    .debug_frame
  +0.2%     +96  [ = ]       0    .debug_aranges
  +0.2%     +16  [ = ]       0    .debug_abbrev
   +33%     +15  [ = ]       0    [Unmapped]
  [ = ]       0  +0.0%      +8    .bss
  -0.0%    -140  -0.0%    -140    .text
  -0.0%    -147  [ = ]       0    .debug_loc
  +0.1% +4.32Ki  -0.0%    -132    TOTAL
use_rust/nrf52840_ble_split (central) — 506.8 KiB → 506.7 KiB (-0.02% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 459584	   6588	  52672	 518844	  7eabc	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 459736	   6588	  52664	 518988	  7eb4c	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1% +1.89Ki  [ = ]       0    .debug_info
  +0.0%    +328  [ = ]       0    .debug_loc
  +0.0%     +11  [ = ]       0    .strtab
  [ = ]       0  +0.0%      +8    .bss
 -15.3%      -9  [ = ]       0    [Unmapped]
  -0.5%     -41  [ = ]       0    .debug_abbrev
  -0.1%     -48  [ = ]       0    .debug_aranges
  -0.0%     -88  [ = ]       0    .debug_ranges
  -0.2%    -124  [ = ]       0    .debug_frame
  -0.0%    -127  [ = ]       0    .debug_line
  -0.1%    -144  [ = ]       0    .symtab
  -0.0%    -152  -0.0%    -152    .text
  -0.0%    -915  [ = ]       0    .debug_str
  +0.0%    +628  -0.0%    -144    TOTAL
use_rust/nrf52840_ble_split (peripheral) — 319.1 KiB → 319.1 KiB (+0.00% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 295104	   5360	  26272	 326736	  4fc50	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 295100	   5360	  26272	 326732	  4fc4c	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.0%    +811  [ = ]       0    .debug_str
  +0.0%    +730  [ = ]       0    .debug_info
  +0.0%     +32  [ = ]       0    .debug_loc
  +0.0%      +8  [ = ]       0    .debug_aranges
  +0.0%      +4  +0.0%      +4    .text
  +0.0%      +1  [ = ]       0    .strtab
  -0.0%      -3  [ = ]       0    .debug_line
  -4.3%      -3  [ = ]       0    [Unmapped]
  +0.0% +1.54Ki  +0.0%      +4    TOTAL
use_rust/pi_pico_w_ble — 660.0 KiB → 659.8 KiB (-0.02% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 620004	      0	  55660	 675664	  a4f50	rmk-pi-pico-w

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 620188	      0	  55652	 675840	  a5000	rmk-pi-pico-w

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.0%    +817  [ = ]       0    .debug_info
  +0.0%    +429  [ = ]       0    .debug_loc
  +0.0%    +199  [ = ]       0    .debug_line
  +0.1%    +151  [ = ]       0    .strtab
  +0.0%    +127  [ = ]       0    .debug_str
  [ = ]       0  +0.0%      +8    .bss
  +0.0%      +8  [ = ]       0    .debug_aranges
  -0.0%      -4  [ = ]       0    .debug_frame
 -21.8%     -12  [ = ]       0    [Unmapped]
  -0.4%     -43  [ = ]       0    .debug_abbrev
  -0.1%     -80  [ = ]       0    .symtab
  -0.1%    -184  -0.1%    -184    .text
  -0.1%    -216  [ = ]       0    .debug_ranges
  +0.0% +1.16Ki  -0.0%    -176    TOTAL
use_rust/rp2040 — 147.1 KiB → 146.9 KiB (-0.13% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 135204	      0	  15196	 150400	  24b80	rmk-rp2040

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 135416	      0	  15188	 150604	  24c4c	rmk-rp2040

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.4% +1.24Ki  [ = ]       0    .debug_loc
  +0.1%    +931  [ = ]       0    .debug_info
  +0.0%    +276  [ = ]       0    .debug_str
  +0.1%    +145  [ = ]       0    .strtab
  +0.0%     +79  [ = ]       0    .debug_line
  [ = ]       0  +0.1%      +8    .bss
  +0.0%      +8  [ = ]       0    .debug_aranges
  +1.9%      +8  [ = ]       0    .defmt
  -0.0%      -4  [ = ]       0    .debug_frame
 -21.4%     -12  [ = ]       0    [Unmapped]
  -0.3%    -112  [ = ]       0    .symtab
  -0.2%    -212  -0.2%    -212    .text
  -0.3%    -240  [ = ]       0    .debug_ranges
  +0.1% +2.08Ki  -0.1%    -204    TOTAL
use_rust/rp2040_split (central) — 159.6 KiB → 159.6 KiB (-0.01% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 147520	      0	  15908	 163428	  27e64	central

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 147556	      0	  15900	 163456	  27e80	central

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.6% +2.05Ki  [ = ]       0    .debug_loc
  +0.1% +1.89Ki  [ = ]       0    .debug_str
  +0.1% +1.21Ki  [ = ]       0    .debug_info
  +0.2%    +335  [ = ]       0    .debug_line
  +0.2%    +173  [ = ]       0    .strtab
  +0.0%     +16  [ = ]       0    .symtab
  [ = ]       0  +0.1%      +8    .bss
  +0.0%      +8  [ = ]       0    .debug_aranges
   +16%      +7  [ = ]       0    [Unmapped]
  -0.0%      -4  [ = ]       0    .debug_frame
  -0.0%     -36  -0.0%     -36    .text
  -0.1%    -128  [ = ]       0    .debug_ranges
  +0.2% +5.52Ki  -0.0%     -28    TOTAL
use_rust/rp2040_split (peripheral) — 27.8 KiB → 27.8 KiB (+0.01% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  25376	     60	   3028	  28464	   6f30	peripheral

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  25372	     60	   3028	  28460	   6f2c	peripheral

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.0%    +186  [ = ]       0    .debug_str
  +0.0%     +23  [ = ]       0    .debug_info
  +0.1%      +8  [ = ]       0    .debug_aranges
  +0.1%      +4  +0.1%      +4    .rodata
  +0.0%      +3  [ = ]       0    .strtab
  -7.3%      -4  [ = ]       0    [Unmapped]
  +0.0%    +220  +0.0%      +4    TOTAL
use_rust/stm32f1 — 62.0 KiB → 62.1 KiB (+0.28% ⬆️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
  56188	     28	   7424	  63640	   f898	rmk-stm32f1

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
  56012	     28	   7416	  63456	   f7e0	rmk-stm32f1

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.4% +2.02Ki  [ = ]       0    .debug_info
  +1.1% +1.26Ki  [ = ]       0    .debug_loc
  +1.0%    +893  [ = ]       0    .debug_line
  +0.1%    +448  [ = ]       0    .debug_str
  +2.3%    +448  [ = ]       0    .symtab
  +0.9%    +293  [ = ]       0    .strtab
  +0.5%    +216  [ = ]       0    .debug_ranges
  +0.3%    +176  +0.3%    +176    .text
  +1.3%    +168  [ = ]       0    .debug_frame
  +1.9%     +88  [ = ]       0    .debug_aranges
   +37%     +15  [ = ]       0    [Unmapped]
  [ = ]       0  +0.1%      +8    .bss
  +0.4% +5.96Ki  +0.3%    +184    TOTAL
use_rust/stm32h7 — 121.0 KiB → 121.0 KiB (-0.02% ⬇️)

cargo size (PR):

   text	   data	    bss	    dec	    hex	filename
 108088	    324	  15468	 123880	  1e3e8	rmk-stm32h7

cargo size (main):

   text	   data	    bss	    dec	    hex	filename
 108124	    324	  15460	 123908	  1e404	rmk-stm32h7

Bloaty diff (PR vs main):

    FILE SIZE        VM SIZE    
 --------------  -------------- 
  +0.1% +1.48Ki  [ = ]       0    .debug_info
  +0.6%    +868  [ = ]       0    .debug_line
  +0.2%    +385  [ = ]       0    .debug_loc
  +1.0%    +352  [ = ]       0    .symtab
  +0.0%    +300  [ = ]       0    .debug_str
  +0.3%    +270  [ = ]       0    .strtab
  +0.7%    +144  [ = ]       0    .debug_frame
  +0.2%     +80  [ = ]       0    .debug_aranges
  [ = ]       0  +0.1%      +8    .bss
  +6.0%      +3  [ = ]       0    [Unmapped]
  -0.0%     -36  -0.0%     -36    .text
  -0.1%    -120  [ = ]       0    .debug_ranges
  +0.1% +3.67Ki  -0.0%     -28    TOTAL

@jpds jpds force-pushed the fix/morse-flowtap-continuation branch from b92fa8b to 989356e Compare May 13, 2026 08:02
A morse/tap-hold key resolved as a tap by flow-tap fired its tap action
and then, on release, removed itself from the held buffer, leaving no
trace. A subsequent press-and-hold of the same key was therefore a
brand-new press and resolved to the plain hold action instead of the
hold-after-tap continuation, so e.g. a "tap, then press-and-hold to
repeat the tap action" gesture only worked when the first tap had been
resolved by the early-fire path (which does leave an EarlyFired
breadcrumb), not by flow-tap. Whether flow-tap kicked in depends on how
recently other keys were pressed, so the behaviour was inconsistent.

Give flow-tapped entries their own held-buffer state (FlowTapped) and,
on release, downgrade them to EarlyFired when the key has a
hold-after-tap action, exactly like the early-fire path. Plain tap-hold
keys gain nothing from a breadcrumb so they are just removed as before.

Adds a regression test.
@jpds jpds force-pushed the fix/morse-flowtap-continuation branch from 989356e to bf50cb5 Compare May 13, 2026 09:15
@jpds
Copy link
Copy Markdown
Contributor Author

jpds commented May 13, 2026

@HaoboGu Good to go in spite the CI failing on a external URL (and I already tried pushing again to unclog it).

@HaoboGu
Copy link
Copy Markdown
Owner

HaoboGu commented May 13, 2026

thanks!

@HaoboGu HaoboGu merged commit 41c8bd0 into HaoboGu:main May 13, 2026
133 of 135 checks passed
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.

2 participants