Bump firmware version after BT recv stack/log fixes and pitch/chord bounds so Phoenix Atelier map/LED traffic no longer stack-smashes the MCU.
Co-authored-by: Cursor <cursoragent@cursor.com>
Update pack/publish to enforce 41KB song limit, verify 1/2/3.bin at fixed addresses, and emit .res aliases for the tone and ALL extflash images.
Co-authored-by: Cursor <cursoragent@cursor.com>
Variable 2.bin length previously moved 3.bin; firmware still read 0xA71AC and saw zeros. Pack now pads to the fixed slot and publish verifies DAB headers before shipping ALL.res.
Co-authored-by: Cursor <cursoragent@cursor.com>
Log Flash magic on load failure, expose RTT flash bin3, and document the 0903 pack offset for the universal bank.
Co-authored-by: Cursor <cursoragent@cursor.com>
Point system-settings rows at the correct Flash icons, keep Main/UI alive across soft-off, and expose git build id for 01 0C with matching BLE tests.
Co-authored-by: Cursor <cursoragent@cursor.com>
Default --unpair on Windows, probe/reconnect on first timeout, resync FrameParser on duplicate F0, and retry query once.
Co-authored-by: Cursor <cursoragent@cursor.com>
Encode 01 07 UID as hex ASCII and use 01 0F (keep 01 FF alias) so high-bit bytes are not dropped as timestamps.
Co-authored-by: Cursor <cursoragent@cursor.com>
TaskBTRecvThread previously started only after mode select, so GATT SysEx never reached the parser until then; verified BLE-MIDI 01 01 now replies with GATT notify.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace settings-hub mixer/gear bitmaps, and show Boot IAP screen from UI0902_FLASH_MODE in external Flash.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use correct BT/restore glyphs and triangle steppers, put version periods on the baseline, and center auto-off minutes between the triangles.
Co-authored-by: Cursor <cursoragent@cursor.com>
Sync faders on shutdown and re-apply LoadConfig after DSP boot so
saved mixer levels and master pot stay consistent after power-off.
Co-authored-by: Cursor <cursoragent@cursor.com>
Keep L/R walls when generating the outline asset, tighten fill to the cavity, and nudge the icon up so the bottom edge is not clipped.
Co-authored-by: Cursor <cursoragent@cursor.com>
Regenerate ascii_1608 from LiberationSans and lower binarization threshold so E/A/B strokes stay complete when switching keys.
Co-authored-by: Cursor <cursoragent@cursor.com>
Charge page draws UI0902_CHARGE_SCREEN instead of legacy 160x190 Charg.bin; pack/gen/publish paths keep the asset in sync.
Co-authored-by: Cursor <cursoragent@cursor.com>
UI shows LocalSongNames instead of bare indices; pack regenerates the header; WQY font gains the four display characters.
Co-authored-by: Cursor <cursoragent@cursor.com>
Pick fires on downstroke; #IV drops an octave; local songs use 2.bin; transpose updates notes without restart; intro starts on key I; boot string volume/PC corrected.
Co-authored-by: Cursor <cursoragent@cursor.com>
Settings hub/mixer/system/restore match 0904 layouts; regenerate Chinese bitmaps without shrinking native 16px cells so strokes stay continuous.
Co-authored-by: Cursor <cursoragent@cursor.com>
Replace the mistaken fill bitmap that embedded "80%" text with a solid level bar, right-align size-9 "N%" with reserved 100% width, and refresh Free/Expert battery updates.
Co-authored-by: Cursor <cursoragent@cursor.com>
Move KEY/BPM values and chevrons toward mode.png rhythm, drop musical-flat b and digit dilation so Db and body digits stay complete without looking bold.
Co-authored-by: Cursor <cursoragent@cursor.com>
Liberation C is 10px wide; packing into 8px crushed hero values. Keep ascii_1608 symbol with 32-byte glyphs.
Co-authored-by: Cursor <cursoragent@cursor.com>
Regenerate size 13/16 WQY/Liberation cells with edge margin and a fuller flat for Cb, and bump ASCII advance so chord numbers match mode.png spacing.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use Liberation Sans for KEY/BPM/Db with wider ASCII cells, redraw KEY/BPM after value refresh, and reuse the centered timbre layout on refresh so a second line no longer appears.
Co-authored-by: Cursor <cursoragent@cursor.com>
Save current UI textbox layout and font regen so we can restore with
git reset --hard checkpoint/misans-before-wqy if MicroHei trial fails.
Co-authored-by: Cursor <cursoragent@cursor.com>
Apply label/body/hero hierarchy (11/13/16), enlarge section digits to 13, and switch the bottom bar to 万能|普通|专业|设置 while keeping touch/key logic.
Co-authored-by: Cursor <cursoragent@cursor.com>
Use size-12 tabs with full 节/类/型/地/目 coverage, denser MiSans bitmaps, dark row chrome, and safer section-label draw order; skip ASCII regen by default.
Co-authored-by: Cursor <cursoragent@cursor.com>
Widen TAB text margins at 11px, regenerate section/timbre labels, and regenerate MiSans bitmaps with padding so strokes are not cut.
Co-authored-by: Cursor <cursoragent@cursor.com>
Fill three mode rows to the screen bottom without a nav bar, and fix the status bar to one volume meter, centered Bluetooth, and battery percentage.
Co-authored-by: Cursor <cursoragent@cursor.com>
- Mode select page draws 222x84 row bitmaps from external flash
- Mixer page uses flash track/knob images with picture labels
- Settings and restore pages re-laid out with 0902 row style
- New status bar icons and battery outline+clip fill rendering
- Add LCD_WR_PIC_ClipX and LCD_WR_PIC_FROM_FLASH_Trans draw APIs
- Replace 4-tab bar with GUI_NAV_BAR 3-icon bottom navigation
- Swap 0831 assets for UI0902 in the IAR project file
Co-authored-by: Cursor <cursoragent@cursor.com>
Harden reset/recover when RTT is missing, and stream touch/UI events only on press for field debugging.
Co-authored-by: Cursor <cursoragent@cursor.com>