• build-20-6625370 6625370e6b

    build-20-6625370
    All checks were successful
    Build and Release / build (push) Successful in 19m5s
    Stable

    taxmalalas0001 released this 2026-10-22 11:28:46 +00:00 | 0 commits to master since this release

    Commit: 6625370e6b

    Build: release

    Message:

    Prepare for F-Droid: metadata, attribution, no dependency block, 0.7.1

    • fastlane/metadata/android/en-US: title, short and full description,
      changelog for versionCode 12, and a 512px icon rendered from
      branding/generate.py's icon. F-Droid reads these straight from the
      repo. Screenshots still to add (images/phoneScreenshots/).
    • dependenciesInfo off: AGP otherwise puts a dependency block encrypted
      with a Google key into the APK signature, which F-Droid flags.
    • Attribution: OpenBible.info's cross references are CC BY 4.0, which
      requires credit - now in licenses/third-party, the README and
      Settings > About, alongside the public-domain texts and the model.
    • README: the exact hosts the app connects to and when, what data stays
      on the phone, and where voice input goes.
    • Version 0.7.1 (12).
    Downloads
  • build-19-5c9f5db 5c9f5db31c

    build-19-5c9f5db
    All checks were successful
    Build and Release / build (push) Successful in 13m36s
    Stable

    taxmalalas0001 released this 2026-10-18 16:03:30 +00:00 | 7 commits to master since this release

    Commit: 5c9f5db31c

    Build: release

    Message:

    0.7.0: Explain opens with an explanation, chat history, no more flicker

    • Tapping Explain now explains straight away instead of waiting for a
      starter question. Answers render as full-width reading cards under the
      question, with follow-up suggestions above the input.
    • Chat history: list of past chats (from the chat header or Settings),
      reopen one to keep asking. The saved turns are fed back to the model as
      initialMessages, trimmed to recent turns to fit the 4096-token window.
      Chats can be deleted.
    • Fix text flashing while a reply streams: the markdown renderer re-parsed
      on every recomposition (its default flavour/parser/link-handler args are
      new objects each time and key the parse) and showed an empty Loading
      frame for each parse. Keep those remembered and show the last parsed
      result until the next is ready.
    • Fix the reply blinking out when it finishes: the streamed text was
      cleared before the saved message arrived from the database. It now hands
      over in the same state update.
    • Fix scrolling while a reply streams: it auto-scrolled to the reply's top
      on every chunk, yanking the reader back up. It now follows only when
      already at the bottom, and to the end of the reply.
    • Version 0.7.0 (versionCode 11).
    Downloads
  • build-18-44948c7 44948c70c4

    build-18-44948c7
    All checks were successful
    Build and Release / build (push) Successful in 13m40s
    Stable

    taxmalalas0001 released this 2026-10-18 15:20:42 +00:00 | 8 commits to master since this release

    Commit: 44948c70c4

    Build: release

    Message:

    Fix crash when asking the Explain chat a question

    • Guard the first GPU replies with the crash marker, not just init: a GPU
      that initialises but faults in prefill/decode crashed on every question
      and never fell back to CPU. A GPU generation error also disables GPU.
    • Declare libvndksupport.so next to libOpenCL.so (per LiteRT-LM docs), so
      Adreno OpenCL actually loads instead of LiteRT falling back to WebGPU.
    • Cap maxNumTokens at 4096 so the KV cache isn't sized for the full
      context window on the first prefill.
    • Stream via the callback API: cancelling now calls cancelProcess(), the
      native conversation is only freed after generation has ended (closing
      mid-reply was a use-after-free), and the chunk buffer is unlimited so
      tokens are no longer dropped under a busy main thread.
    Downloads
  • build-17-7493dc1 7493dc1678

    build-17-7493dc1
    All checks were successful
    Build and Release / build (push) Successful in 18m5s
    Stable

    taxmalalas0001 released this 2026-10-18 09:43:32 +00:00 | 9 commits to master since this release

    Commit: 7493dc1678

    Build: release

    Message:

    New app icon and brand art, drawn in code

    An open Bible with an amber cross rising from it, on warm charcoal (the
    app's amber palette), replacing the placeholder brown book. Adds a
    themed-icon (monochrome) layer for Android 13+.

    branding/generate.py draws the launcher layers, icon.svg/icon-512.png,
    a 4:3 project card and a banner from one set of shapes, the same way
    Inkwell's generator does.

    Downloads
  • build-16-32df21e 32df21ecbe

    build-16-32df21e
    All checks were successful
    Build and Release / build (push) Successful in 16m21s
    Stable

    taxmalalas0001 released this 2026-10-18 08:34:49 +00:00 | 10 commits to master since this release

    Commit: 32df21ecbe

    Build: release

    Message:

    Fix FontLibrary build: no return inside expression-bodied functions

    Downloads
  • build-14-0ab4efe 0ab4efe82e

    build-14-0ab4efe
    All checks were successful
    Build and Release / build (push) Successful in 13m45s
    Stable

    taxmalalas0001 released this 2026-10-18 06:30:14 +00:00 | 12 commits to master since this release

    Commit: 0ab4efe82e

    Build: release

    Message:

    Fix Verse of the Day card stuck loading, animate every chapter chip

    • Home: a CancellationException that wasn't a real cancellation (a library
      timeout) silently ended the VOTD loader and left the skeleton up forever.
      Retry up to 3 times, then show a Retry card instead of a skeleton.
    • Book list: chapter chips past 30 skipped the entrance animation and popped
      in while 19-30 were still fading. Every chip now animates, with the wave
      squeezed into ~360ms regardless of chapter count.
    Downloads
  • build-13-8b9d79e 8b9d79e1c6

    build-13-8b9d79e
    All checks were successful
    Build and Release / build (push) Successful in 15m42s
    Stable

    taxmalalas0001 released this 2026-10-17 20:54:34 +00:00 | 13 commits to master since this release

    Commit: 8b9d79e1c6

    Build: release

    Message:

    Fix stuck reader after Verse of the Day, flaky widget settings, stale data

    Reader: bar visibility and "actually reading" now come from user scrolls
    only (nested scroll sees drags and flings, not animateScrollToItem). The
    automatic jump to a linked verse used to count as scrolling down, hiding
    the top bar and chapter controls on arrival - the screen looked stuck until
    you scrolled up or went back. The same jump recorded reading progress and
    bumped the streak for a mere Verse of the Day visit, overwriting "continue
    reading". Bars also stay up while a linked verse is being shown.

    Tabs: open at their own root instead of saving/restoring per-tab stacks. A
    reader opened from Home or the Journal was saved into that tab and came
    straight back when the tab (or Read) was tapped.

    Widget: settings are collected inside the Glance composition. update()
    during a live session only recomposes and doesn't re-run provideGlance,
    so values read up front (opacity, widget theme, accent) were drawn stale
    whenever a session was still alive - changes applied only sometimes. The
    verse also reloads on a translation or day change.

    Stale data: Home's Verse of the Day, greeting and date follow the clock
    (an app left open overnight showed yesterday's verse); a streak with a
    missed day now shows 0 instead of the last stored count (ReadingStreak.
    activeOn, used by Home and the reader).

    Downloads
  • build-12-ec9b297 ec9b297f4f

    build-12-ec9b297
    All checks were successful
    Build and Release / build (push) Successful in 13m35s
    Stable

    taxmalalas0001 released this 2026-10-17 20:16:56 +00:00 | 14 commits to master since this release

    Commit: ec9b297f4f

    Build: release

    Message:

    Customizable theme (mode, accent, Material You) and a redesigned widget

    Appearance (Settings -> Appearance, stored in DataStore):

    • Theme: System / Light / Dark. System bar icons follow the chosen mode.
    • Accent: Amber (default), Ember, Gold, Sage, Teal, Ocean, Rose, Plum.
      Whole light/dark schemes are generated from the accent's hue; Amber dark
      matches the desktop Quickshell palette (#1c1916 charcoal, cream text,
      #fca23c), Amber light is warm cream with a deep orange primary.
    • Match wallpaper (Material You), Android 12+.
    • Theme changes cross-fade instead of snapping.
    • Fixes the selected-tab indicator, chips and segmented buttons showing
      Material's default lavender: secondary/tertiary roles were never set.

    Widget:

    • Redesign: rounded card in the app's accent palette, accent dot and date
      header, serif verse, accent reference; responsive from 2x1 (reference +
      one line) up to tall (whole verse, larger type).
    • Background opacity setting (0-100%) with a live preview in Settings over
      a stand-in wallpaper; only the background is translucent, text stays
      solid. Redrawn when accent or opacity changes.

    Also: MainActivity remembers the flows it collects (a fresh flow per
    recomposition restarted collection and could re-flash the splash), and
    the launch window background matches the new default palette.

    Downloads
  • build-11-0630a52 0630a52354

    build-11-0630a52
    All checks were successful
    Build and Release / build (push) Successful in 13m32s
    Stable

    taxmalalas0001 released this 2026-10-17 19:51:20 +00:00 | 17 commits to master since this release

    Commit: 0630a52354

    Build: release

    Message:

    Run the on-device model on the GPU, falling back to CPU

    LlmInferenceEngine tries Backend.GPU() first and falls back to the CPU
    when GPU init fails. A GPU driver can also kill the process natively,
    which no catch sees, so an in-progress flag is written before the attempt
    and cleared after; if a launch finds it still set, that device is pinned
    to CPU from then on. Declare the vendor OpenCL libraries with
    uses-native-library (required=false) so Android 12+ lets LiteRT load them.

    Downloads
  • build-10-f9e5ea8 f9e5ea85e0

    build-10-f9e5ea8
    All checks were successful
    Build and Release / build (push) Successful in 13m54s
    Stable

    taxmalalas0001 released this 2026-10-17 19:37:32 +00:00 | 18 commits to master since this release

    Commit: f9e5ea85e0

    Build: release

    Message:

    Fix chat compile error: AnimatedVisibility scope inside Box

    The starter-questions AnimatedVisibility sat in a Box nested in a Column,
    so it resolved to the ColumnScope overload, which the Box's scope makes
    illegal to call implicitly. Move it into a top-level StarterQuestions
    composable with no enclosing layout scope.

    Downloads