Skip to content

Release: promote ke-gui-fixes to main - #1

Merged
coreflake1 merged 19 commits into
mainfrom
ke-gui-fixes
May 27, 2026
Merged

Release: promote ke-gui-fixes to main#1
coreflake1 merged 19 commits into
mainfrom
ke-gui-fixes

Conversation

@coreflake1

Copy link
Copy Markdown
Owner

Promote release-ready branch to main for v0.1.1-ke-gui-fixes.

prestonbrown and others added 19 commits May 24, 2026 21:12
- Implemented perspective 3D rendering with rotation and zoom
- Added mouse/touch drag to rotate mesh view
- Mouse wheel zoom (simulator) and pinch zoom (multitouch hardware)
- Enhanced color gradients with smooth interpolation
- Added color gradient legend band
- Toggle between 3D view and table view
- FOV and Z-axis zoom controls
- Extended ButtonContainer with set_text() and get_label() methods

(cherry picked from commit bced7f755931b1bb2e06834ae9aa6bc71fb00530)
- installer-deb.sh: point ASSET_URL to coreflake1/guppyscreen releases
- installer-deb.sh: add uninstall mode (pass 'uninstall' as argument)
- release.sh: make kd_graphic_mode optional (KE-only builds don't produce it)
…1 fork

- Section 3b cross-compile: replace wrong arm-linux-gnueabihf- prefix with
  the correct Docker + aarch64-none-linux-gnu- build process, including
  one-time libwpa_client.a rebuild step and release packaging command
- Install/Uninstall: replace all probielodan/guppyscreen URLs with
  coreflake1/guppyscreen ke-advanced-3d-bedmesh branch URLs
- Uninstall: replace K1/MIPS reinstall-creality.sh with KE systemd approach
installer-deb.sh:
- Pin ASSET_URL to explicit v0.1.0-ke-bedmesh tag (not 'latest')
- Add BACKUP_DIR, PINNED_RELEASE, WPA_SVC constants
- Add backup_existing(): backs up printer.cfg, wpa_supplicant.service,
  existing service files, GuppyScreen config dir before any changes
- Call backup_existing after get_klipper_paths, before install_services
- Fix uninstall: remove [include GuppyScreen] from printer.cfg,
  remove GuppyScreen config dir, restore wpa_supplicant.service from backup,
  re-enable AND start KlipperScreen, daemon-reload after service removal

README:
- Warn printer install is untested on hardware
- Add installer change/rollback table
- Document backup location
- Document partial rollback (Klipper extras not removed)
- Remove 'nightly' install example (nightly not published)
…on setup

- PINNED_RELEASE='v0.1.0-ke-bedmesh', downloads from coreflake1
- Remove nightly fallback (not published)
- Add guppyconfig.json path substitution and thumbnails dir creation after extract

Add scripts/build-mips.sh: cross-compile for MIPS Ingenic X2000 (K1/KE)
- Uses mipsel-linux- toolchain from ballaswag/guppydev container
- Builds libhv, spdlog, libwpa_client for MIPS then builds binary
- Preserves aarch64 libs via backup/restore trap
…ix silent include, guard KE-missing files

- Add uninstall_guppy() function callable as 'installer.sh uninstall'
  Restores: S12boot_display, S99start_app, printer.cfg include removal,
  GuppyScreen config dir, Klipper symlinks; optionally removes /usr/data/guppyscreen
- backup printer.cfg to /usr/data/guppyify-backup/printer.cfg.bak BEFORE
  printer.cfg is modified (previously the backup ran after)
- Fix backup guard: check for S50dropbear file (not directory) so the block
  still runs even after mkdir -p creates the dir for the printer.cfg backup
- Fix printer.cfg [include GuppyScreen] insertion: add elif fallback that
  prepends the line if [include gcode_macro.cfg] is absent (KE may differ)
- Guard S99start_app backup/removal: may not exist on all KE firmwares
- Guard Monitor/display-server mv: may not exist on KE
- Backup calibrate_shaper_config.py before unconditional overwrite
- README: correct installer command (installer.sh not installer-deb.sh),
  update system-changes table for K1/MIPS reality, clarify what is/isn't
  rolled back, note installer-deb.sh exits on MIPS, fix cross-compile section
  (MIPS not aarch64, reference build-mips.sh)
- S50dropbear: stock KE has start case commented out (SSH doesn't
  auto-start on clean boot); guppy version fixes this
- Confirmed present: S99start_app, Monitor, display-server, [include gcode_macro.cfg]
- Confirmed: matplotlib 2.2.3 installed, ft2font.so will be replaced
- Confirmed: gcode_shell_command.py already in Klipper extras (installer skips)
- Confirmed: calibrate_shaper_config.py already present (will be backed up)
- Noted: helper-script installed, ft2font.so already replaced once (Apr 2025)
- README: update system-changes table with confirmed facts, add S50dropbear footnote
- dev-notes: replace 'may not exist' warnings with confirmed state, add
  on-device state section with hostname, printer.cfg structure, init scripts,
  binaries, Klipper extras, matplotlib, helper-script
KE screen is mounted 180° inverted; kernel compensates with 180° rotation.
LVGL must pre-rotate 180° so the two rotations cancel out.
Confirmed working via framebuffer capture: content is correctly proportioned,
framebuffer is upside-down (as expected for pre-rotation), physical screen
shows correct orientation.
LV_FONT_DEFAULT was unconditionally montserrat_16, causing all labels,
buttons, and table cells to render at 16px on the 480x272 KE screen.
Text wrapped, buttons truncated, and table cells were unreadable.

The lv_theme_default_init() font parameter only affects checkbox marker
styles in LVGL v8's default theme -- it does NOT set a global text font.
LV_FONT_DEFAULT is the real driver for all widget text.

Fix: wrap LV_FONT_DEFAULT in an #ifdef GUPPY_SMALL_SCREEN guard to use
montserrat_12 (25% reduction) on the small screen build.

Also updates docs/dev-notes.md with:
- Corrected screen dimensions (480x272 physical, 480x544 virtual)
- Display rotation fix explanation
- LVGL font architecture lesson
- Remaining layout issues backlog
After FB_BLANK_POWERDOWN the kernel clears the framebuffer to white.
On wake, LVGL only redraws dirty regions -- since nothing changed while
sleeping, it redraws nothing, leaving a white screen.

Fix: call lv_obj_invalidate(lv_scr_act()) after fbdev_unblank() to mark
the entire active screen dirty and force a full redraw.
FB_BLANK_POWERDOWN on the KE's kernel 4.4.94 Ingenic X2000 DSI driver
puts the display panel into a power-down state that FB_BLANK_UNBLANK
cannot fully restore (backlight returns but no video = white screen).

Fix: remove the fbdev_blank() call from the sleep path. The LVGL
screen_saver object (explicit black background) provides the visual
sleep effect without touching panel power state. fbdev_unblank() on
wake is kept as a harmless no-op.

Root cause confirmed by framebuffer capture showing valid dark content
while physical display showed solid white (panel in power-down, not
reading framebuffer).
Home panel:
- Two-column grid (sensors+chart left, buttons wrapped right)
- Sensor row alignment fixed (actual/divider/target boxes no longer overlap)
- Sensor label width-capped + LV_LABEL_LONG_DOT
- Smaller, screen-aware row height/font
- Chart row 2/3 of remaining height, 50° y-ticks, 25px label reserve
- Per-sensor target_series (faint line at set temp for extruder/bed)
- Pre-populates 200 historical points in SIMULATOR; throttle bypassed
- Mock sensor data injection (#ifdef SIMULATOR) so home panel renders
  with values without a Moonraker connection

Homing panel:
- Row weights rebalanced (FR(3)/FR(3)/FR(2)/FR(2)) so selector titles
  fit alongside the button matrix
- Selector widget made screen-aware (smaller pill height + fonts)

Extruder panel:
- Grid cols FR(2)/FR(8)/FR(2): wider middle for touch-friendly pills
- Side button containers: pad_all=0, lv_pct(100) inner buttons
- Buttons stretch to fill their flex column

Print panel + file labels:
- Explicit m10 font on Reload/Modified/A-Z labels and fname/detail
  (theme cascade alone wasn't reaching plain lv_label children of lv_btn)

Numpad:
- foreground_reset(int initial=-1) — pre-fills with current target temp
  when tapping a set-temp box

Globally:
- LV_FONT_DEFAULT lowered to montserrat_10 on GUPPY_SMALL_SCREEN
- Theme initialized with m10 on <=480px screens
- style_container (applied to every lv_obj) sets text_font=m10 so it
  inherits down to every label widget
- ButtonContainer label font m10 explicitly for safety

Sim/build:
- No-op SIMULATOR mode skips Moonraker websocket connect
- Cast type fix in lv_touch_calibration/lv_tc_screen.c so the file
  recompiles cleanly under the current toolchain

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Add KUtils::is_printing()/notify_locked()/confirm_if_printing() and wire
them through the UI so a stray touch mid-print can't disrupt the job:

- Block entry with a toast on motion/calibration panels (Homing, Extrude,
  Bed Mesh, Input Shaper, Belts/Shake, TMC Autotune).
- Confirm-with-override on Console commands, Macros, Limits, and Power.

Move Fine Tune to the home screen (used during prints) and LED to the
Tune tab; PrinterTunePanel now takes LedPanel& where FineTunePanel& was.
Table view is now the default on entry. The 3D view becomes an opt-in
fullscreen mode: pressing "3D View" hides the profile list and other
controls, the canvas fills the left, and a narrow right-side strip holds
the zoom +/- and Back buttons. Back from 3D returns to the table; Back
from the table exits. resize_canvas()'s minimum dimension is lowered for
<800px screens, where the old 300px floor overflowed the 272px height.
- finetune: trim Z/PA precision {:.5}->{:.3f} and reduce readout icon zoom
  150->100 so long values no longer collide with the icon.
- belts: move excite-frequency readout to the control's top-right; at
  35px below the slider it was clipped by the cramped grid cell.
- sysinfo: move Factory Reset to the top-right corner (away from Back and
  the settings rows) and width-constrain the network/version text so it
  can't slide under the button.
- mini print status: align TOP_RIGHT instead of TOP_LEFT, where it
  overlapped the temperatures.
- config: ship temperature_sensor mcu_temp / "MCU Temp" as the default
  sensor instead of chamber_temp (KE has no chamber sensor).
Document the print-state safety locks, bed mesh redesign, and the
small-screen layout/default tweaks in dev-notes, and mark the old
"bed mesh table unreadable" item resolved.
@coreflake1
coreflake1 merged commit 75cb487 into main May 27, 2026
4 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