MeshCore Ninja Alpha
Fennek

Fennek · Releases

from GitHub · updated 2026-06-23

20 releases

  1. v2.6.0 # 1 day ago · 2026-06-22 16:46 UTC

    Änderungen

    • Tic-Tac-Toe: Fennek macht mit 20 % Wahrscheinlichkeit einen zufälligen Zug statt Minimax — der Spieler hat jetzt eine echte Chance zu gewinnen
    • Adaptives Polling: Eingabe-Polling drosselt sich nach 3 s Leerlauf von ~100 Hz auf ~30 Hz (spart Core-1-Wachzeit ohne spürbare Latenz)
    • Tap-Log-Drossel: Gehaltener Finger flutete Serial-Konsole mit Dauer-Taps — jetzt max. 1 Log-Zeile alle 400 ms
    • power::idleMs(): Neue Funktion gibt Millisekunden seit letzter Aktivität zurück
  2. v2.5.9 # 2 days ago · 2026-06-21 19:36 UTC

    Podcast-App deaktiviert (WLAN-Sync zu langsam).

    • Auto-WLAN-Sync vor Standby (podcast::flushBeforeStandby) auskommentiert — brachte bei jedem Standby das WLAN über den 4-MHz-SD-Bus hoch
    • Launcher-Kachel + appmgr-Registrierung + podcast::begin() aus → App vom Gerät verschwunden, Slot 13 (Seite 2) bleibt leer
    • Code/Konsolen-Befehle/NVS-Toggle/i18n bewusst behalten (reaktivierbar)
  3. v2.5.7 # 2 days ago · 2026-06-21 19:05 UTC

    Sudoku als fünftes Spiel

    Neues Spiel Sudoku in der Spiele-App (neben 2048, Minensucher, Schach, Tic-Tac-Toe).

    • Arduino-freier Generator + Solver (sudoku_core.h, host-getestet): randomisiertes Backtracking für die Vollösung, dann eindeutigkeitsprüfendes Ausgraben — erzeugt nur Rätsel mit genau einer Lösung. Rekursionsfrei (iterativer Level-Stack).
    • 9×9-Gitter à 26 px, Touch-Tap/WASD-Cursor, Zifferntasten 1–9 setzen, 0/Backspace/Mikrofon leeren, Konfliktzellen invertiert, „Gelöst"-Overlay mit Zeit.
    • Schwierigkeit Leicht/Mittel/Schwer (40/32/26 Vorgaben).
    • Beststände im NVS (gelöste Rätsel + Bestzeit), inkl. INI-Export/-Import.

    OTA: firmware.bin angehängt.

  4. v2.5.6 # 2 days ago · 2026-06-21 15:32 UTC

    fix(power): Dateien-Modus am Kabel nicht einschlafen lassen

    • battery::external() (DSG-Bit aus BatteryStatus 0x0A) erkennt Netzteil zuverlässig, auch bei vollem Akku (charging() fiel bei Strom ~0 auf false)
    • power::poll() nutzt external() statt charging() für die Dateien-Standby-Bremse
  5. v2.5.5 # 2 days ago · 2026-06-21 15:07 UTC

    feat(wecker): Einmalig-Option für Wecker

    • Neues Alarm-Feld once (NVS byte0 Bit4, abwärtskompatibel)
    • Einmalige Wecker feuern am nächsten hh:mm tageunabhängig und schalten sich danach selbst aus
    • Editor-Preset "Einmalig" im Feld Tage; Liste/Editor zeigen es an
    • Konsole: alarm <i> <hh:mm> einmal (once/1x)

    OTA: firmware.bin angehängt.

  6. v2.5.4 # 2 days ago · 2026-06-21 15:00 UTC

    OTA-Update-Fix + Ollama-Timeout.

    • OTA -104 behoben: GitHub liefert für Release-Assets eine signierte Redirect-URL (release-assets.githubusercontent.com, ~900 Zeichen). Diese sprengte den 300-Byte-Puffer in apply() → abgeschnittene URL → httpUpdate-Fehler -104 (wrong http code). Puffer auf 1400 Byte vergrößert.
    • notes_ai (Ollama) Timeout: HTTPClient::setTimeout() nimmt uint16_t (max 65535 ms); der Wert 120000 lief still auf 54464 ms über. Konstante auf 65000 ms korrigiert.

    Erstes Release, mit dem OTA von einer früheren Version aus zuverlässig durchläuft.

  7. v2.5.3 # 2 days ago · 2026-06-21 14:48 UTC

    perf(dateien): Request-Zähler-Refresh 10x seltener gegen E-Ink-Flackern

    • Drosselung des Request-Zähler-Voll-Redraws im RUNNING-Zustand von 5 s auf 50 s
    • Zähler ist reine Info; seltenere Voll-Redraws sparen sichtbares E-Ink-Flackern
  8. v2.5.2 # 2 days ago · 2026-06-21 14:29 UTC

    Highlights

    • On-Device-OTA-Knopf (Settings → Update → „Aktualisieren"): prüft GitHub-Releases und flasht direkt am Gerät mit Vollbild-Fortschritt (Phase + Balken + %). Kein Browser/Konsole mehr nötig.
    • Notizen: Audionotiz-Player (Play/Pause, ±10 s, Region-Fortschritt) + hoch-scrollbarer Editor.
    • Karteikarten: Übersicht mit Leitner-Fächer-Verteilung (fällig/bearbeitet).
    • Kopfrechnen: adaptive Schwierigkeit, je-Modus persistierte Stufe.
    • notes_ai: behutsamerer Korrektur-Prompt (nur Rechtschreibung/Umlaute, kein Umdichten).
    • Tools: maps_tiles.py mit wählbaren Kachelquellen (--preset standard|cyclosm|topo).

    OTA-Update

    Geräte ab v2.5.1 können direkt am Gerät auf diese Version aktualisieren (Settings → Update → „Aktualisieren") oder via Web-UI (fennek.local) / Konsole (ota update).

    Flashen (USB): firmware.bin in den inaktiven OTA-Slot bzw. via pio run -e fennek -t upload.

  9. v2.5.0 # 2 days ago · 2026-06-21 10:11 UTC
  10. v2.4.8 # 3 days ago · 2026-06-20 19:59 UTC

    Änderungen

    • OTA: Semver-Vergleich für Update-Erkennung (tag_name != FENNEK_VERSION → korrekte Versionslogik)
    • Akku: Batterieanzeige-Fix in der Statuszeile

    Flashen

    pio run -e fennek -t upload
    

    oder OTA via fennek.local → Firmware-Update.

  11. v2.3.1 # 4 days ago · 2026-06-19 14:27 UTC

    Notizen / Audio

    • Sprachnotiz-Liste zeigt jetzt Datum + HH:MM (statt HH:MM:SS bzw. generisch „Sprachnotiz").
    • Aufnahme-Gain ×6 mit Sättigung: das PDM-Mikro war ~−20 dBFS leise → Wiedergabe kaum hörbar. Neue Aufnahmen sitzen bei ~−7 dBFS (kein Clipping).
    • Sauberer I2S0-Handover nach der Aufnahme: kein doppeltes i2s_driver_uninstall mehr (endMic/MicResume macht uninstall+install in einem Schritt).

    Karten / GPS

    • No-Fix-Fallback zentriert jetzt auf Düsseldorf (51.2277/6.7735); DEFAULT_ZOOM 15 → 13 (NRW-weit bekachelt).
    • GPS-Zeit-Diagnose: Einmal-Log [MAPS] GPS-Zeit empfangen … pro Karten-Session.

    Enthält außerdem v2.3.0 (GPS-/WAV-Diagnose-Logs, Karten-Fallback, Notizen-Zeitlabel).

  12. v2.0.4 # 6 days ago · 2026-06-17 17:30 UTC

    Changes

    • Regenerated README/website screenshots. The home-screen mirror in the host renderer (tools/screenshot.cpp) was stuck on an old layout (6 tiles, 2×3); it now matches the real launcher.cpp — a 2×5 grid with all 10 slots (Music/Listen/Read/Mesh/Settings/Games/Files/Notes/Alarm). The Settings screenshot now shows the current version.
    • Images updated in docs/screenshots/{de,en,sv}/ and on fennek.dumke.me.

    🤖 Generated with Claude Code

  13. v1.9.4 # 7 days ago · 2026-06-17 06:53 UTC

    Änderungen

    • Web-Dateimanager: Löschen ohne Rückfrage. Nur Ordner mit Unterordnern fragen kurz nach und werden dann rekursiv gelöscht (rmRecursive); Dateien und flache Ordner verschwinden sofort.
    • Notizen-App + Konsole: weitere Verbesserungen.

    🤖 Generated with Claude Code

  14. v1.9.2 # 8 days ago · 2026-06-15 15:51 UTC

    Added

    • BATTLOG — opt-in battery & activity logger (services/battlog). When the BATTLOG build flag is set, the firmware writes one record per event (app switch, audio track, mesh radio on, Wi-Fi on/off, standby/wake) and a battery probe every 60 s to /.fennek/battery.log (timestamp + %/mV/charging? + Wi-Fi/mesh status). It's a throttled PSRAM ring flushed to SD before standby, and downloadable via the Web file manager — useful for diagnosing real-world battery drain. Deliberately zero-cost when the flag is off (all BATTLOG_* calls compile to nothing).

    🌐 Project page & screenshots: https://fennek.dumke.me

    Full changelog: CHANGELOG.md

  15. v1.9.1 # 8 days ago · 2026-06-15 15:51 UTC

    Fixed

    • Notes never silently lost on a failed SD write. The save path now clears its dirty flag only on a complete success; if an SD write or remove fails, the note stays dirty and is retried on the next autosave instead of being overwritten on the next editor open.
    • Just-played track now reaches the scrobble queue before standby. power::poll() stops audio (and lets the audio task drain the stop command) before the pre-standby Navidrome flush, so the current track is enqueued via noteTrackEnded() rather than landing in the PSRAM ring that deep sleep would otherwise discard.

    Full changelog: CHANGELOG.md

  16. v1.9.0 # 8 days ago · 2026-06-15 15:51 UTC

    Added

    • Mesh: contacts reset console command + mesh_client::resetContacts(). Clears all contacts and their persistent mirrors (SPIFFS /contacts, SD /meshcore/contacts.bin); the contact table then rebuilds itself from incoming adverts. Handy when the 64-slot table fills up with stale nodes or you want a clean slate.

    Full changelog: CHANGELOG.md

  17. v1.8.1 # 8 days ago · 2026-06-15 15:51 UTC

    Changed

    • Unified back/home navigation across all apps. Home is now a visible affordance: the status bar shows a house glyph (⌂) outside the launcher and the whole bar taps to Home. Lower corner buttons are consistently labelled "Back" (exactly one level) — audiobook/reader/notes lists and Settings now say "Back" instead of "Home", and the Settings back button steps edit → category → root → launcher. Mesh sub-screens dropped their redundant second "Home" button, the Files app gained a visible "Back" button, and the reader footer tap-zone is labelled "◄ List". Games keep no on-screen back button (exit via the ⌂ glyph; keyboard Backspace/Q still works). Keyboard conventions (Q = Home, Backspace = one level back) unchanged.

    Full changelog: CHANGELOG.md

  18. v1.8.0 # 10 days ago · 2026-06-13 19:18 UTC

    Added

    • Notes app (launcher tile 7): a daily-notes model — exactly one note per day, named after the local date (/notes/YYYY-MM-DD.md). "+ Today" opens or appends to today's note; the list shows every day newest-first with a first-line preview, and notes can be deleted with a confirmation. The editor is append-style (type / Backspace / Enter) with its own word wrap and a compact header.

      Persistence is chunked under spiLock (never inside draw()), with a 30 s autosave and a save on leave; empty notes are removed. Without an SD card it shows "No SD card" + "Search again" like the other apps. The date comes from the local system clock (timesync). New console command notes runs an SD round-trip / scan self-check (in the style of books).

    Localized in DE/IT/SV/EN/ES. Verified on device (clean boot, SD round-trip with UTF-8 preserved, scan/sort).

    Full changelog: CHANGELOG.md

  19. v1.7.1 # 11 days ago · 2026-06-13 04:08 UTC

    ✨ Added

    • Settings backup as INI (services/settingsfile): export/import all NVS settings to/from an SD file. SPI-free serialization on a RAM buffer, SD I/O isolated under spiLock. Per-book bookmarks/reading positions are excluded (CRC32-hashed keys). New console command + main/power wiring.

    📝 Docs

    • Added CHANGELOG.md and GitHub releases for v1.3.0–v1.7.0.
    • README now ships in English (default), German (README.de.md) and Swedish (README.sv.md) with a language switcher and release/changelog badges.

    📋 Full history: CHANGELOG.md

  20. v1.7.0 # 11 days ago · 2026-06-13 04:03 UTC

    ✨ Added

    • "+ New Channel" UI for joining hashtag channels — a "► New Channel" row at the top of the chat list opens a join screen (keyboard types the #name, PSK derived from it, persisted to channels.txt on SD; jumps straight into the new channel after joining).

    🔄 Changed

    • Robust time synchronization without a hardware RTC. Canonical clock is now ESP32 system time (SystemRTCClock), which survives deep sleep. New services/timesync coordinator: opportunistic NTP (when Wi-Fi is up) + a top-up before auto-standby, with Mesh adverts as a passive source. Quality model (estErr = learned drift × time since sync) with exponential back-off, s_clockConfident bootstrap for the first advert after boot, POSIX time zone (default Europe/Berlin incl. DST), settings rows "Time zone"/"Time", and console time / time set / time sync / tz.

    📋 Full history: CHANGELOG.md