• v0.1.0-beta.28 5dcfb9bc1f

    Ghost released this 2026-06-10 07:41:19 +02:00 | 0 commits to main since this release

    Fixed

    • Emojis zeigen Platzhalterboxen (Issue #11): Unbekannte Emoji-Codepoints (U+1F000–U+1FFFF und U+2600–U+27FF) außerhalb der 15-Einträge-Tabelle erzeugten durch LV_USE_FONT_PLACEHOLDER hässliche Rechteckkästen. Behoben durch transparentes 1×1-Pixel-Bild in der imgfont-Callback-Funktion für nicht unterstützte Codepoints.
    • Umlaute zeigen Platzhalterboxen (Issue #11): LVGLs eingebaute Montserrat-Fonts decken nur Basic Latin (U+0020–007E) ab — Umlaute (ä ö ü Ä Ö Ü ß, U+00C0–00FF) haben keine Glyphen. Behoben durch benutzerdefinierte Montserrat-C-Dateien mit Latin-1-Supplement, generiert via scripts/gen_latin_fonts.sh (lokal) bzw. automatisch im CI vor dem Firmwarebau.

    Added

    • src/ui/OpsFont.h: Makros OPS_FONT_12/14/16 — zeigen auf Custom-Fonts wenn OPS_CUSTOM_FONTS gesetzt ist (Umlaute), sonst Fallback auf eingebaute LVGL-Fonts.
    • scripts/gen_latin_fonts.sh: Fontgenerierung jetzt für alle drei Größen (12, 14, 16 px) + Unicode-Range 0x20-0x7E,0x00C0-0x00FF.
    • CI-Fontgenerierung: release.yml und build-firmware.yml führen gen_latin_fonts.sh automatisch aus wenn Font-Dateien fehlen; generierte .c-Dateien werden beim ersten Lauf commitet.
    • pre_build.py: Erkennt src/ui/fonts/ops_montserrat_14.c und setzt -DOPS_CUSTOM_FONTS=1.
    • scripts/gen_emoji.py (neu): Lädt Twemoji-PNGs (72 px), skaliert auf 16×16, konvertiert in LVGL TRUE_COLOR_ALPHA und generiert C-Dateien sowie emoji_data.h. 40 Emoji vordefiniert: positive und negative Gesichter, Gesten, Symbole ( 🏆 🚀 🎁 💡 🔔 u. v. m.).
    • CI-Emoji-Generierung: release.yml und build-firmware.yml führen gen_emoji.py automatisch aus; neue C-Dateien + aktualisiertes emoji_data.h werden beim ersten Lauf commitet.
    Downloads
  • v0.1.0-beta.27 16ba764242

    Ghost released this 2026-06-05 11:07:37 +02:00 | 7 commits to main since this release


    Downloads
  • v0.1.0-beta.26 5f72c14e18

    Ghost released this 2026-06-05 10:47:03 +02:00 | 9 commits to main since this release

    Fixed

    • Batterieanzeige: falsche Kalibriergrenzen: Die theoretisch berechneten mV-Schwellwerte (1750/2100 mV) wichen von den tatsächlichen Messwerten auf dem T-Deck-Plus-Hardware ab. Auf dem Gerät gemessen: 4.2 V voll → 2228 mV, 3.5 V leer → 1740 mV. map()-Grenzen auf die realen Werte korrigiert.
    Downloads
  • v0.1.0-beta.25 8089e57525

    Ghost released this 2026-06-05 10:37:15 +02:00 | 11 commits to main since this release


    Downloads
  • v0.1.0-beta.24 0e968df594

    Ghost released this 2026-06-05 10:03:39 +02:00 | 14 commits to main since this release


    Downloads
  • v0.1.0-beta.23 9b5ec15ec0

    Ghost released this 2026-06-05 09:17:30 +02:00 | 16 commits to main since this release

    Fixed

    • BLE SET_ADVERT_NAME nicht persistent: updateCallsign() aktualisierte _callsign im RAM und die LittleFS-Identitätsdatei, schrieb aber cfg.callsign nicht zurück. Nach einem Reboot gewann die NVS-Config und der alte Gerätename kehrte zurück. Fix: ops::config::setCallsign() wird jetzt nach updateCallsign() aufgerufen und persistiert den neuen Namen in NVS + SD.
    • BLE SET_CHANNEL nicht persistent: Kanal-Name und PSK wurden nur in BaseChatMesh's RAM-Tabelle aktualisiert, nie in ops::config::channels[] geschrieben. Nach einem Reboot waren alle via App vorgenommenen Kanaländerungen verloren. Fix: nach erfolgreichem setChannel() wird der Raw-PSK (16 Byte) base64-kodiert und via ops::config::setChannel() in NVS + SD gespeichert.
    Downloads
  • v0.1.0-beta.22 533758194a

    Ghost released this 2026-06-05 06:56:38 +02:00 | 18 commits to main since this release


    Downloads
  • v0.1.0-beta.20 e0964f488b

    Ghost released this 2026-06-04 14:03:35 +02:00 | 23 commits to main since this release


    Downloads
  • v0.1.0-beta.19 92b0e172e8

    Ghost released this 2026-06-04 13:23:21 +02:00 | 26 commits to main since this release


    Downloads
  • v0.1.0-beta.18 fbf37d6ce9

    Ghost released this 2026-06-04 12:53:45 +02:00 | 28 commits to main since this release

    Fixed

    • BLE nicht im Scan sichtbar (Issue #4 — Wurzelursache): BLEDevice::init() braucht zusammenhängenden internen SRAM. BLE wurde nach ops::ui::init() gestartet — LVGL-Framebuffer und Objektbäume fragmentierten den Heap vorher, Stack-Init schlug still fehl. Fix: BLE-Stack-Init jetzt vor dem Display (Schritt 4 in setup()), Mesh-Verdrahtung nach LoRa-Init. Entspricht dem Original-Saitama-Ablauf.
    Downloads