Fennek · Releases
from GitHub · updated 2026-06-2119 releases
v2.4.8 # 14 hours 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 uploadoder OTA via
fennek.local→ Firmware-Update.- OTA: Semver-Vergleich für Update-Erkennung (
v2.3.1 # 2 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_uninstallmehr (endMic/MicResumemacht uninstall+install in einem Schritt).
Karten / GPS
- No-Fix-Fallback zentriert jetzt auf Düsseldorf (51.2277/6.7735);
DEFAULT_ZOOM15 → 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).
v2.0.4 # 4 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 reallauncher.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
- Regenerated README/website screenshots. The home-screen mirror in the host renderer (
v1.9.4 # 4 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
- Web-Dateimanager: Löschen ohne Rückfrage. Nur Ordner mit Unterordnern fragen kurz nach und werden dann rekursiv gelöscht (
v1.9.2 # 6 days ago · 2026-06-15 15:51 UTC
Added
BATTLOG— opt-in battery & activity logger (services/battlog). When theBATTLOGbuild 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 (allBATTLOG_*calls compile to nothing).
🌐 Project page & screenshots: https://fennek.dumke.me
Full changelog:
CHANGELOG.mdv1.9.1 # 6 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 vianoteTrackEnded()rather than landing in the PSRAM ring that deep sleep would otherwise discard.
Full changelog:
CHANGELOG.mdv1.9.0 # 6 days ago · 2026-06-15 15:51 UTC
Added
- Mesh:
contacts resetconsole 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- Mesh:
v1.8.1 # 6 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/Qstill works). Keyboard conventions (Q= Home,Backspace= one level back) unchanged.
Full changelog:
CHANGELOG.md- 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
v1.8.0 # 8 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 insidedraw()), 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 commandnotesruns an SD round-trip / scan self-check (in the style ofbooks).
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
v1.7.1 # 8 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 underspiLock. Per-book bookmarks/reading positions are excluded (CRC32-hashed keys). New console command +main/powerwiring.
📝 Docs
- Added
CHANGELOG.mdand 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
- Settings backup as INI (
v1.7.0 # 8 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 tochannels.txton 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. Newservices/timesynccoordinator: 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_clockConfidentbootstrap for the first advert after boot, POSIX time zone (defaultEurope/Berlinincl. DST), settings rows "Time zone"/"Time", and consoletime/time set/time sync/tz.
📋 Full history: CHANGELOG.md
- "+ 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
v1.6.3 # 8 days ago · 2026-06-13 04:03 UTC
📡 Mesh SD persistence & clock hardening
- Contact mirror (
/meshcore/contacts.bin, SD takes load priority over SPIFFS, deferred write fromloop()) and joined hashtag channels (/meshcore/channels.txt, re-joined on boot). - RTC sync guard against future-clock outliers (bootstrap + forward jumps < 1 h, backward only on a 3× advert consensus).
- Contact overflow fix: overwrite the oldest non-favorite when the table (64) is full instead of dropping new adverts.
- Console hashtag commands
join/chan, plus a newi2cscancommand. Verified on device: the T-Deck Pro V1.1 has no hardware RTC (0x51 empty).
- Contact mirror (
v1.6.2 # 8 days ago · 2026-06-13 04:03 UTC
📄 Licensing
- SPDX
GPL-3.0-or-later/ © Dr. Daniel Dumke headers added to all Fennek-ownedsrcfiles (the vendored Hynitron touch driver insrc/core/hyn/is left untouched). - Options screen now shows an author/copyright footer.
- SPDX
v1.6.1 # 8 days ago · 2026-06-13 04:03 UTC
📡 Mesh app overhaul (MVP)
- Contacts split from the chat list (chats show only channels + contacts with history; a new contacts screen lists all adverts).
- HH:MM timestamps + touch scrollback in conversations.
- Status line (noise floor / RX / TX / contacts / clock), contact detail view (hops + last seen).
- Touch scroll strip for lists, error-retry button, DM resend on timeout, and multi-ACK tracking for parallel DMs.
v1.6.0 # 8 days ago · 2026-06-13 04:03 UTC
✨ Added
- Unlimited music library: on-demand growing PSRAM blocks (instead of
MAX_TRACKS=512), track cache/.fennek/tracks.bin(boot in seconds), background scan inreaddirchunks. Scans pause during playback (anti-stutter). Track paths up to 256 chars (Calibre). - Web file manager (Files app +
webfm): Wi-Fi station with an embedded HTML page + JSON API to browse/upload/download/delete SD files overhttp://fennek.local. - Console:
sleepcommand + boot/reset diagnostics instatus.
- Unlimited music library: on-demand growing PSRAM blocks (instead of
v1.5.0 # 8 days ago · 2026-06-13 04:03 UTC
🌍 Localization
- Extended with English and Spanish (
FENNEK_STRSnow 5 columns, EN/ES appended — NVS-compatible). - Documented the CP437 limitation for missing uppercase accented characters.
- Reader rescan rework, chess brace fixes, MeshSeeLog entry.
- Extended with English and Spanish (
v1.4.0 # 8 days ago · 2026-06-13 04:03 UTC
🌍 Internationalization framework
- New
core/i18n: central string table, language selectable in settings, applied across all apps (launcher, music, book, reader, mesh, games, settings). - README screenshots + host-side renderer (
tools/screenshot.cpp) for generating UI screenshots without the device.
- New
v1.3.1 # 8 days ago · 2026-06-13 04:03 UTC
🎨 Standby & project
- Standby screen: AI-generated sleeping fennec as a 1-bit bitmap (Floyd–Steinberg, 240×320) with a bottom banner.
- GPL-3.0+ license, README reworked as an alternative firmware.
- Repo slimmed down and detached from the Meck fork; build env renamed
mp3player→fennek.
v1.3.0 # 8 days ago · 2026-06-13 04:03 UTC
🎮 Games app
- New Games app: 2048, Minesweeper, Chess (Negamax AI), Tic-Tac-Toe. Game logic lives in Arduino-free, host-tested cores.