Skip to content

Releases: mattferry/billbot-android

v0.4.0 — Fix streaming, auth, theming & dialogs

Choose a tag to compare

@mattferry mattferry released this 27 Feb 06:11

Fixes

  • Chat streaming (CRITICAL): Messages now accumulate properly instead of showing only the last token
  • Assistant text color: Readable on both light and dark themes (was invisible on light)
  • Auth handling: Tailscale/local mode no longer sends hardcoded token
  • Connect params: Mode changed from ui to operator, version from BuildConfig
  • Session rename dialog: No longer targets wrong session after context menu dismissal
  • Version display: Settings shows actual build version instead of hardcoded v0.3.0
  • Error logging: WebSocket failures now include HTTP status codes
  • Build: targetSdk 34→35, versionCode 11

v0.3.1 — Notification Fix & Message Preview

Choose a tag to compare

@mattferry mattferry released this 22 Feb 11:45

Changes

  • Notifications preference enforced: Toggle in settings now actually controls whether notifications are posted
  • Message preview in notifications: Chat notifications now show the actual response text (up to 300 chars) instead of generic "New response received"
  • Notification ID fix: Fixed bug where wrong notification ID was used for notify() call

Full Changelog

v0.3.0...v0.3.1

v0.3.0-alpha — Phase 2: Full Feature Set

Choose a tag to compare

@mattferry mattferry released this 14 Feb 10:32

Phase 2 Release — 6 Major Features

Session Management (2A)

  • Side drawer with session list (swipe from left or tap hamburger menu)
  • Create, switch, delete, compact, and rename sessions
  • Sessions persisted locally via Room DB
  • Dynamic session key — no more hardcoded "android://companion"

Settings Editor (2B)

  • Dynamic config form generated from server JSON schema
  • Text, number, toggle, and select field types
  • Collapsible sections, search filtering
  • Save with optimistic concurrency, snackbar feedback

Chat Attachments (2C)

  • Camera capture and gallery photo picker
  • Image compression: resize to 1024px max edge, JPEG compress to <512KB
  • Attachment thumbnails in input bar and message bubbles
  • Base64-encoded attachments sent via gateway API

Log Viewer (2D)

  • Live log streaming from gateway (2s polling)
  • Color-coded by level: ERROR=red, WARN=yellow, DEBUG=dim
  • Filter chips (ALL/ERROR/WARN/INFO/DEBUG)
  • Auto-scroll with manual override, scroll-to-bottom FAB
  • Accessible from Settings → Diagnostics → View Logs

Push Notifications (2E)

  • Foreground service (BillBotService) with connectedDevice type
  • Three notification channels: chat (HIGH), alerts (DEFAULT), service (LOW)
  • Background chat notifications with 5s throttle
  • Health/shutdown alert notifications
  • Toggle in Settings → Notifications

Login/Auth (2F)

  • Expandable authentication section on connection screen
  • Three modes: Tailscale (default), Token, Password
  • Segmented button selector with mode-specific input fields
  • Auth params passed through WebSocket handshake
  • Scope-based feature gating from server response

Technical

  • Room DB: version 1→2 (sessions table)
  • 14 new files, 17 modified files, ~2500 lines changed
  • New dependency: lifecycle-process for ProcessLifecycleOwner
  • APK: 19MB debug build

v0.2.8 — Chat persists through phone lock

Choose a tag to compare

@mattferry mattferry released this 13 Feb 22:21

What's New

Chat messages now survive phone lock, app kills, and gateway restarts.

How it works

  • Messages are saved to a local SQLite database (Room) as you chat
  • When you unlock your phone, the app shows your cached messages immediately — before the WebSocket even reconnects
  • Once connected, it refreshes from the server and updates the cache
  • "New Chat" clears both server session and local cache

Also includes v0.2.7 fixes

  • Stop button works (was sending malformed abort)
  • New Chat button works (wrong parameter name)
  • No more stuck "thinking" on reconnect

v0.2.7 — Fix stuck thinking & broken stop/reset

Choose a tag to compare

@mattferry mattferry released this 13 Feb 22:06

Fixes

  • Stop button now works: chat.abort was missing the required sessionKey parameter — server rejected every abort attempt
  • New Chat button now works: sessions.reset was sending sessionKey instead of key — server schema mismatch caused rejection
  • No more stuck "thinking" on reconnect: App now resets generating state when loading history after reconnect
  • Abort is resilient: Stop button clears UI state immediately, even if the server call fails

Root Cause

The gateway got stuck on a reasoning-only response from the model. The app couldn't recover because both abort and reset were sending malformed RPC params that the server rejected.

v0.2.6 - Radeon VII Hardware Metrics

Choose a tag to compare

@mattferry mattferry released this 13 Feb 21:43

What's New

  • Radeon VII hardware monitoring via LibreHardwareMonitor
    • GPU temp (color-coded: green <75, yellow <85, red 85+)
    • Hot spot temperature
    • GPU utilization with progress bar
    • Core / memory clocks in MHz
    • Power draw (W / 300W TDP)
    • Fan speed (RPM + %)
  • Radeon VII now appears in Temperatures, GPU Utilization, and Power Draw metric cards
  • Graceful degradation: shows "Hardware monitor offline" when LHM is down instead of "not available"
  • Removed all "llama.cpp limitation" placeholder notes

Backend (oogleyskr/billbot)

  • OpenClaw polls LibreHardwareMonitor data.json endpoint every 15s
  • LHM JSON tree parser with fallback sensor name matching
  • hwMonitorEnabled/Host/Port config fields in memoryCortex section
  • LHM failure is supplementary — does not degrade overall Memory Cortex status

v0.2.5 - Chat Persistence + New Chat Button

Choose a tag to compare

@mattferry mattferry released this 13 Feb 19:05

Changes

  • Fix chat persistence on screen lock — chat history now reloads from the gateway when the Activity recreates (e.g. after locking the phone), so messages no longer disappear
  • New Chat button — top-right icon in the chat screen with a confirmation dialog that resets the server-side session

Install

Download app-debug.apk below and sideload on your Android device.

v0.2.4 - Unified Services + Dashboard Fixes

Choose a tag to compare

@mattferry mattferry released this 13 Feb 05:26

Changes

Devices view

  • Unified Services card: Providers, SSH Tunnels, Memory Cortex, and all Multimodal services combined into one card with status dots and latency
  • DGX Spark card now includes system metrics: CPU, RAM, Network In/Out are shown inside the DGX Spark card (no more separate "DGX System" section at the bottom)

Metrics view

  • Radeon VII noted: Temperature, GPU Utilization, and Power Draw sections note that Radeon VII hardware metrics aren't available (llama.cpp only exposes VRAM and tok/s — to get temp/util/power we'd need AMD GPU monitoring on Windows)
  • Radeon VII VRAM already shows correctly in the VRAM Usage section
  • DGX labels fixed to say "DGX Spark" consistently

Install

Download app-debug.apk and install. Requires Tailscale connection.

v0.2.3 - Dashboard Metrics View + Model Names

Choose a tag to compare

@mattferry mattferry released this 13 Feb 05:19

Changes

  • Dashboard Devices/Metrics toggle: Switch between per-device cards (Devices) and grouped metric view (Metrics)
  • Metrics view: Temperatures, VRAM, GPU Utilization, Power Draw, CPU/RAM, Network, Service Health all grouped across devices
  • Model names on GPU cards: DGX Spark shows "LLM: gpt-oss-120b", RTX 3090 shows all multimodal service models
  • Removed Inference card from dashboard (now covered by Tokens page)
  • Oogley identity: BillBot now recognizes you as Oogley from the Android app (SOUL.md updated)
  • Version bump to 0.2.3

Install

Download app-debug.apk and install on your Android device. Requires Tailscale connection.

v0.2.2 - Chat Loading + RTX 3090 Dashboard

Choose a tag to compare

@mattferry mattferry released this 13 Feb 05:15

Changes

  • Chat loading indicator: Loading spinner now shows immediately when you send a message, not just when BillBot starts streaming
  • RTX 3090 on token dashboard: Now shows in the By Device view with its role (Multimodal Services: STT, Vision, TTS, ImageGen)
  • Device cards show descriptive roles for non-LLM hardware
  • Version bump to 0.2.2

Install

Download app-debug.apk and install on your Android device. Requires Tailscale connection.