-
Sitbit v0.7.0 Pre-release
released this
2026-11-01 16:02:07 +01:00 | 0 commits to main since this releaseLaziest of the Week is live: groups and a weekly leaderboard, with or without a stick.
Android app 0.7.0
- Groups tab
- Create a group, or join one with its code, the invite link or the invite QR code
- Per group: this week's ranking (🥇🥈🥉, you in bold, ⌚ = numbers from a stick), the category leaders and last week's winner
- Invite: QR code plus "send link"; Web link: a read-only leaderboard page for anyone; New links makes the old ones stop working; Leave
- The invite page's "Open in the Sitbit app" opens the app and asks you to join; if you haven't signed up yet, the invite waits until you have
- Use without a stick
- New button on the start screen
- The app counts what you log (stick menu, barcode scanner, anything) with the same Fat-Math™, and you take part in the kcal category
- Pairing a stick later keeps what you logged
- The upload now runs twice a day as its own job, with or without a stick (and after every sync, as before)
- The privacy note now says that a group's web link shows nicknames and weekly totals to whoever has it
Server 0.7.0 (live at https://sitbit.fidefi.de)
- Categories:
- 🛋️ Couch Legend (sitting)
- 🦥 Step Saver (step budget left unused)
- 🍕 Fat-Math Champion (kcal)
- 😴 Nap Lord (naps)
- Rank points: 1st of n gets n points, ties share. The overall score is the average over the categories someone has data for, so app-only users aren't pushed to the bottom
- Weeks: Monday to Sunday in the group's time zone; a week becomes final on Tuesday, after that it doesn't change any more
- Web pages:
/g/<code>(leaderboard) and/j/<code>(invite) - Limits: 50 members per group, 10 groups per account; wrong codes are rate-limited
Firmware 0.7.0-couch
No changes since 0.6.0, only the version number.
Install
App:
sitbit-0.7.0.apk, installs over 0.6.0, data is kept.Check downloads against
SHA256SUMS.Downloads
-
Source code (ZIP)
0 downloads
-
Source code (TAR.GZ)
0 downloads
- Groups tab
-
Sitbit v0.6.0 Pre-release
released this
2026-11-01 15:19:26 +01:00 | 4 commits to main since this releaseTwo sticks. The StickC Plus2 is end-of-life, so Sitbit now also builds for its successor, the StickS3. The StickS3 build is untested on hardware (ours are on the way), and the Plus2 should behave as before, with a few extras.
Firmware 0.6.0-couch
Both sticks
- The clock is no longer reset to the build time after a firmware update, only when it's unset or behind (the app's sync used to hide this)
- Salad now gets a sad trombone (notes on the buzzer)
- Lab: new SOUNDS page (hold A plays the next sound, the last item changes the volume)
StickS3 (untested)
- Own build:
sitbit-sticks3-firmware-0.6.0-app.bin/-full.bin - BMI270 motion sensor with FIFO, so the stick can sleep between batches; Bosch's on-chip step counter runs next to ours for comparison (Lab IMU page, serial log)
- No RTC chip listed by M5Stack: if none is found, the ESP32's own clock is used (survives restarts, not a power-off)
- Real speaker: synthesized sounds (sad trombone, chomp, fanfare)
- Couch Commander: learn up to 6 buttons of any IR remote and zap from the wrist. New achievement.
- Navigation: B = next screen, hold B = previous (M5Stack documents a single click on the S3's power button as "power on / reset")
- Comparison, per-board details and a first-boot checklist:
docs/hardware.md
Android app 0.6.0
- Firmware updates pick the build for the paired stick (Plus/Plus2 or StickS3) and refuse an image built for the other chip
Install
- Plus/Plus2: firmware via the app (Device → Firmware); app
sitbit-0.6.0.apkover 0.5.x, data is kept. - StickS3, first time:
esptool.py --chip esp32s3 write_flash 0x0 sitbit-sticks3-firmware-0.6.0-full.bin, then pair as usual.
Check downloads against
SHA256SUMS.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
Sitbit v0.5.1 Pre-release
released this
2026-11-01 14:26:55 +01:00 | 10 commits to main since this releaseFour new drinks, and Senpai has opinions about all of them.
Firmware 0.5.1-couch
- New on the stick's food list: Spezi 0.5l (210 kcal), ACE 0.5l (200), Water 0.5l (0) and Energy zero 0.5l (15)
- Senpai reacts:
- water: furious ("WATER?! 0 kcal. Senpai is disappointed.")
- anything zero / sugar-free: smug
- Spezi: party
- ACE / multivitamin: suspicious reading
- These reactions also work for scanned products and names typed in the app ("Coke Zero", "Mineralwasser", …)
- 0 kcal is now a valid meal (water)
Android app 0.5.1
- Scanned products with 0 kcal (water, zero drinks) can be logged
- With firmware older than 0.5.1, a 0-kcal entry is sent as 1 kcal, because the older firmware doesn't accept 0
Install
Firmware: update from the app (Device → Firmware). App:
sitbit-0.5.1.apk, installs over 0.5.0, data is kept.Check downloads against
SHA256SUMS.Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-
Sitbit v0.5.0 Pre-release
released this
2026-11-01 14:22:08 +01:00 | 11 commits to main since this releaseThe server is here: sitbit.fidefi.de. Step 1 of the leaderboard, accounts and daily totals.
Android app 0.5.0
- New Groups tab: join the leaderboards with a nickname. It's opt-in: nothing leaves the phone before you agree to the privacy note.
- What's sent: daily totals only (sitting minutes, steps and step budget, naps, Fat-Math™ kcal and kcal goal). No meal names, times, location, e-mail or phone ID.
- When: after every sync with the stick, after background syncs, and at least once a day.
- Account code (QR + text): moves your account to another phone or into a password manager. New code makes the old one stop working.
- Delete account deletes everything on the server right away. Unpairing the stick keeps the account.
- Groups and the weekly ranking ("Laziest of the Week") come in the next release; until then your days are collected.
Server 0.5.0
- Runs at https://sitbit.fidefi.de, with a landing page and the API. Plan and API:
docs/server.md. - Only a hash of your token is stored. Days are deleted after 90 days, and idle accounts after a year. There's no access log.
Firmware 0.5.0-couch
No changes since 0.4.0, only the version number (one version per release). Updating is optional.
Install
App:
sitbit-0.5.0.apk, open on the phone; installs over 0.4.0, data is kept.Check downloads against
SHA256SUMS.Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
2 downloads
-
Sitbit v0.4.0 Pre-release
released this
2026-11-01 11:22:49 +01:00 | 16 commits to main since this releaseScan it, eat it, log it. The barcode scanner arrives.
Android app 0.4.0
- Food → Scan a barcode: point the camera at any EAN/UPC barcode; the app looks the product up at Open Food Facts (only the barcode number is sent) and shows kcal per 100 g/ml
- Pick 1 serving, whole pack, 100 g or type any amount; the Fat-Math™ preview shows what the stick will make of it
- Scanned products are kept (last 20) and can be logged again with one tap, offline
- The product name goes to the stick, so Senpai's reactions work: Club-Mate means compiling, cake means party, a smoothie means trouble
- Unknown products: a hint to log them by hand (or add them to Open Food Facts for everyone)
Firmware 0.4.0-couch
No changes since 0.3.1, only the version number (one version per release). Updating is optional; if you do, use the app (Device → Firmware) to test the update path once more.
Install
App:
sitbit-0.4.0.apk, open on the phone; installs over 0.3.0, data is kept.Check downloads against
SHA256SUMS.Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
2 downloads
-
Sitbit v0.3.1 Pre-release
released this
2026-11-01 10:35:26 +01:00 | 19 commits to main since this releaseMore food, more opinions. Also: the first release meant to be installed over the air.
Firmware 0.3.1-couch
- 8 new foods on the stick: Apple, Protein shake, Smoothie, Cake, Coffee, Instant noodles, Popcorn, Ice cream
- Senpai reacts to what you eat, with its own face, sound and comment:
salad → rage · apple → faints · protein shake / smoothie → suspicious anger · cake / energy drink / pizza → party · Club-Mate / noodles / ramen → compiling · coffee → still tired · popcorn → one more episode · ice cream → smug - Also for meals logged in the app, by name (English or German: "Apfelkuchen" is cake, "Wurstsalat" is betrayal)
Install
Over the air (stick on 0.3.0): app → Device → Firmware → Install v0.3.1. Open Settings → Phone app on the stick first so it's listening.
Via USB:
esptool.py --chip esp32 --baud 1500000 write_flash 0x0 sitbit-firmware-0.3.1-full.binThe app is unchanged:
sitbit-0.3.1.apkis the 0.3.0 app (the release script names files after the tag). No need to reinstall.Check downloads against
SHA256SUMS.Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
2 downloads
-
Sitbit v0.3.0 Pre-release
released this
2026-11-01 10:05:56 +01:00 | 20 commits to main since this releaseFirmware updates over the air. Without getting up.
⚠ Once via USB
0.3.0 changes the stick's flash layout (two app slots, so an update never overwrites the running firmware). Flash this version once via USB; settings, history and achievements are kept. Every update after that goes through the app.
pip install esptool esptool.py --chip esp32 --baud 1500000 write_flash 0x0 sitbit-firmware-0.3.0-full.bin(or
cd firmware && pio run -t uploadfrom the repo)Firmware 0.3.0-couch
- Updates over Bluetooth from the app: written to the spare slot, checked (SHA-256, Sitbit marker, image structure), then the stick restarts. Progress screen on the stick
- Rollback: a new firmware that doesn't run for 30 s (crash, reset) is replaced by the previous one by the bootloader
- Updates are refused below 30 % battery unless charging
- New achievement: Patch Day
Android app 0.3.0
- Device → Firmware: shows the stick's version, checks the forge's releases, Install vX.Y.Z downloads, verifies against
SHA256SUMSand installs; From file… for dev builds - Needs internet permission now, only for that release check/download
- (0.2.2: Copy/Share for the Bluetooth log, sync fix for long answers)
Install
App:
sitbit-0.3.0.apk, open on the phone; installs over 0.2.x, data is kept.Firmware: see above.
sitbit-firmware-0.3.0-app.binis the over-the-air image the app uses.Check downloads against
SHA256SUMS(sha256sum -c SHA256SUMS).Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
2 downloads
-
Sitbit v0.2.2 Pre-release
released this
2026-11-01 09:35:04 +01:00 | 22 commits to main since this releaseHotfix for 0.2.1, whose sync broke at the first long answer (the predicted hotfix).
- Sync fixed: long answers from the stick (
meta, history) lost their first piece. Android drops BLE values over 512 bytes, and the stick sent 514. Both sides now send pieces of at most 500 bytes, and the stick waits for free Bluetooth buffers instead of dropping pieces silently - App: Copy and Share buttons for the Bluetooth log (with app/firmware version and phone model, as Markdown for an issue); the log is selectable; WiFi passwords are masked in it
Everything from 0.2.1 below.
First public build: the phone app arrives. Your data finally has a second place to be ignored in.
Firmware 0.2.2-couch (M5StickC Plus / Plus2)
-
Since 0.2.0: Salad is on the menu. Senpai takes it personally (8 s of rage, also for app-logged meals named salad/Salat)
-
Bluetooth sync with the app (NimBLE, JSON-lines protocol, see
docs/ble-protocol.md) -
Pairing via QR code: Settings → Phone app (hold A); hold A there again = new key, all phones forgotten
-
The radio is only on in sync windows: QR screen open, 60 s after boot, 20 s at :00 and :30
-
60 days of history and the last 100 meals are kept for the app
-
Clock and time zone (incl. daylight saving) set from the phone
-
Lab: BLE scanner moved to NimBLE (flash usage 61 % → 46 %)
-
New achievement: E.T. Phone Home
Android app 0.2.2 (Android 8+)
- Pair by scanning the stick's QR code, no Android pairing dialogs
- Today / History (charts, meal log) / Food / Device (all settings, alarms, WiFi, messages)
- Background sync: the phone's Bluetooth chip watches for the stick even with the app closed and syncs when it shows up
- Changes made in the app wait for the next sync window
Install
App: download
sitbit-0.2.2.apkon the phone, open it, allow "Install unknown apps" once.Firmware, either:
- From the repo:
cd firmware && pio run -t upload - Or with esptool, without PlatformIO (complete image incl. bootloader):
pip install esptool esptool.py --chip esp32 --baud 1500000 write_flash 0x0 sitbit-firmware-0.2.2-full.binsitbit-firmware-0.2.2-app.binis the bare app (offset0x10000), for updates over an existing install.
Check downloads against
SHA256SUMS(sha256sum -c SHA256SUMS).Downloads
-
Source code (ZIP)
2 downloads
-
Source code (TAR.GZ)
2 downloads
- Sync fixed: long answers from the stick (
-
Sitbit v0.2.1 Pre-release
released this
2026-11-01 09:12:01 +01:00 | 23 commits to main since this releaseFirst public build: the phone app arrives. Your data finally has a second place to be ignored in.
Not tested on real hardware together yet: firmware and app are built and unit-tested, the Bluetooth link between them has only met in theory. Expect a hotfix.
Firmware 0.2.1-couch (M5StickC Plus / Plus2)
-
New in 0.2.1: Salad is on the menu. Senpai takes it personally (8 s of rage, also for app-logged meals named salad/Salat)
-
Bluetooth sync with the app (NimBLE, JSON-lines protocol, see
docs/ble-protocol.md) -
Pairing via QR code: Settings → Phone app (hold A); hold A there again = new key, all phones forgotten
-
The radio is only on in sync windows: QR screen open, 60 s after boot, 20 s at :00 and :30
-
60 days of history and the last 100 meals are kept for the app
-
Clock and time zone (incl. daylight saving) set from the phone
-
Lab: BLE scanner moved to NimBLE (flash usage 61 % → 46 %)
-
New achievement: E.T. Phone Home
Android app 0.2.1 (Android 8+)
- Pair by scanning the stick's QR code, no Android pairing dialogs
- Today / History (charts, meal log) / Food / Device (all settings, alarms, WiFi, messages)
- Background sync: the phone's Bluetooth chip watches for the stick even with the app closed and syncs when it shows up
- Changes made in the app wait for the next sync window
Install
App: download
sitbit-0.2.1.apkon the phone, open it, allow "Install unknown apps" once.Firmware, either:
- From the repo:
cd firmware && pio run -t upload - Or with esptool, without PlatformIO (complete image incl. bootloader):
pip install esptool esptool.py --chip esp32 --baud 1500000 write_flash 0x0 sitbit-firmware-0.2.1-full.binsitbit-firmware-0.2.1-app.binis the bare app (offset0x10000), for updates over an existing install.
Check downloads against
SHA256SUMS(sha256sum -c SHA256SUMS).Downloads
-
Source code (ZIP)
1 download
-
Source code (TAR.GZ)
1 download
-