Skip to content

Releases: RoyaLemonade/ompweb-android

android-v1.0.29

Choose a tag to compare

@github-actions github-actions released this 31 Oct 17:10

ompweb for Android 1.0.29

The native Android client for ompweb: sessions, the live chat, the composer,
files, Git and worktrees, notifications with inline replies, and the settings
screens, backed by your own ompweb server.

What changed

  • Search finds every match again. 1.0.28 stopped a filter from holding
    every project open, but it also applied that rule to the search field: a
    query no longer opened a collapsed project, so matches inside it stayed
    invisible, and a project with more than five matching sessions hid the rest
    behind Show more. A search term now opens every project with a match and
    lists all of its matches; the field is a result set, not a filter.
  • Your collapse choices survive the search. The app does not rewrite the
    stored expand/collapse state while you search. Clear the field and each
    project is folded exactly as you left it.
  • Chips keep their 1.0.28 behaviour. Running, Unread and the age
    presets still only narrow the rows: the chevron stays in charge and the
    five-row Show more limit still applies, so a chip does not force a
    collapsed project open.
  • Version 1.0.29 (versionCode 10029).

Updating

Open Settings → System & Updates → Android app update, keep or set the
source, and tap Check for updates; the app downloads the file, verifies its
SHA-256, package name, versionCode and signing certificate, and hands it to
Android's installer. The app data stays. Android still asks once for the
install unknown apps permission if it was never granted.

Requirements

  • ompweb with GET /api/app-info ("api": 1) — the server the app was built
    against.
  • omp installed on the server for agent features.
  • Android 8.0 (API 26) or newer.

Release artifact

  • ompweb-1.0.29.apk
  • ompweb-1.0.29.apk.sha256 accompanies the file; the release also publishes
    the APK's size and signing certificate.

Install

  1. Download ompweb-1.0.29.apk and the companion ompweb-1.0.29.apk.sha256
    from the release.
  2. Allow your file manager or browser to install unknown apps.
  3. Install the APK. Signed updates install over an older version and keep the
    app data.

Full instructions: docs/android/README.md.


Verify this download: ompweb-1.0.29.apk, 5850189 bytes, SHA-256 27d9bd091aca8dd35c260f9af7fad81bcf417a933a02df8d7b1891b1b281670e, signing certificate SHA-256 d73354b52dc7c3f0c74623c439ddb7b52e252811c6e6b5f851c9d04b7015fc87.

android-v1.0.28

Choose a tag to compare

@github-actions github-actions released this 31 Oct 16:36

ompweb for Android 1.0.28

The native Android client for ompweb: sessions, the live chat, the composer,
files, Git and worktrees, notifications with inline replies, and the settings
screens, backed by your own ompweb server.

What changed

  • A filter no longer keeps every project open. With Age: Today (or any
    other chip, or an active search) the project headers now collapse and expand
    again when you tap the chevron: a collapsed project shows its header with the
    activity count and keeps its chats hidden. Before, the filter forced every
    project expanded, so the toggle appeared to do nothing.
  • The five-row limit stays. A project with more matching sessions still
    shows five rows and a Show more (n) action; the filter no longer lifts
    that cap or hides the action.
  • Version 1.0.28 (versionCode 10028).

Updating

Open Settings → System & Updates → Android app update, keep or set the
source, and tap Check for updates; the app downloads the file, verifies its
SHA-256, package name, versionCode and signing certificate, and hands it to
Android's installer. The app data stays. Android still asks once for the
install unknown apps permission if it was never granted.

Requirements

  • ompweb with GET /api/app-info ("api": 1) — the server the app was built
    against.
  • omp installed on the server for agent features.
  • Android 8.0 (API 26) or newer.

Release artifact

  • ompweb-1.0.28.apk
  • ompweb-1.0.28.apk.sha256 accompanies the file; the release also publishes
    the APK's size and signing certificate.

Install

  1. Download ompweb-1.0.28.apk and the companion ompweb-1.0.28.apk.sha256
    from the release.
  2. Allow your file manager or browser to install unknown apps.
  3. Install the APK. Signed updates install over an older version and keep the
    app data.

Full instructions: docs/android/README.md.


Verify this download: ompweb-1.0.28.apk, 5850189 bytes, SHA-256 7cf3fd2ae2cba73253a4b428031e8a1e288f18ab7e30516f589ff9fb2a0eca07, signing certificate SHA-256 d73354b52dc7c3f0c74623c439ddb7b52e252811c6e6b5f851c9d04b7015fc87.

android-v1.0.27

Choose a tag to compare

@github-actions github-actions released this 31 Oct 12:46

ompweb for Android 1.0.27

The native Android client for ompweb: sessions, the live chat, the composer,
files, Git and worktrees, notifications with inline replies, and the settings
screens, backed by your own ompweb server.

What changed

  • A filter bar for the session list. Three chips above the list narrow a
    long workspace: Running, Unread and Age (All, Today,
    2 days, 7 days, based on the session's last activity). The chips combine,
    so Running + Unread + 2 days shows exactly the chats that need attention
    now.
  • Unread means "wants attention": the sidebar's unread dot, an unread entry
    in the notification list, or a blocking input dialog that waits for an
    answer. The same rule drives the row badges and the project counters, so the
    filter and the dot agree.
  • Pins ignore the filters. Pinned sessions keep their shortcut at the top
    and pinned projects keep their row; a project whose sessions all fail a chip
    collapses instead. A small row at the bottom says how many sessions are
    hidden and offers Clear filters; the empty state does the same when
    everything is filtered out.
  • The choice is remembered per server (Running, Unread and the age preset)
    and forgotten on sign-out or a server switch, like the pins.
  • Version 1.0.27 (versionCode 10027).

Updating

Open Settings → System & Updates → Android app update, keep or set the
source, and tap Check for updates; the app downloads the file, verifies its
SHA-256, package name, versionCode and signing certificate, and hands it to
Android's installer. The app data stays. Android still asks once for the
install unknown apps permission if it was never granted.

Requirements

  • ompweb with GET /api/app-info ("api": 1) — the server the app was built
    against.
  • omp installed on the server for agent features.
  • Android 8.0 (API 26) or newer.

Release artifact

  • ompweb-1.0.27.apk
  • ompweb-1.0.27.apk.sha256 accompanies the file; the release also publishes
    the APK's size and signing certificate.

Install

  1. Download ompweb-1.0.27.apk and the companion ompweb-1.0.27.apk.sha256
    from the release.
  2. Allow your file manager or browser to install unknown apps.
  3. Install the APK. Signed updates install over an older version and keep the
    app data.

Full instructions: docs/android/README.md.


Verify this download: ompweb-1.0.27.apk, 5850189 bytes, SHA-256 3787cb23b4bdde5680101370493e1fe04e25049c8c02fa4ff16dea83b01ca258, signing certificate SHA-256 d73354b52dc7c3f0c74623c439ddb7b52e252811c6e6b5f851c9d04b7015fc87.

android-v1.0.26

Choose a tag to compare

@github-actions github-actions released this 31 Oct 11:46

ompweb for Android 1.0.26

The native Android client for ompweb: sessions, the live chat, the composer,
files, Git and worktrees, notifications with inline replies, and the settings
screens, backed by your own ompweb server.

What changed

  • Hide now hides. Hiding a project from its row menu in the sessions list
    left the row on screen: the server correctly marked the project as hidden and
    dropped it from GET /api/projects, but the app rebuilt a project row from
    the sessions of that project — and hiding deliberately keeps those sessions
    on disk. The list now follows the server's project list; a hidden project and
    its sessions leave the sidebar until the project is added again.
  • Live rows keep their workspace. A session started from the app is
    listed a moment before its first message is written to disk. That
    placeholder still gets its own project row while the server's project list
    cannot know the directory yet — only file-backed sessions no longer create
    rows of their own.
  • Version 1.0.26 (versionCode 10026).

Updating

Open Settings → System & Updates → Android app update, keep or set the
source, and tap Check for updates; the app downloads the file, verifies its
SHA-256, package name, versionCode and signing certificate, and hands it to
Android's installer. The app data stays. Android still asks once for the
install unknown apps permission if it was never granted.

Requirements

  • ompweb with GET /api/app-info ("api": 1) — the server the app was built
    against. Hiding a project needs the server's registry (ompweb 0.6.0 or newer).
  • omp installed on the server for agent features.
  • Android 8.0 (API 26) or newer.

Release artifact

  • ompweb-1.0.26.apk
  • ompweb-1.0.26.apk.sha256 accompanies the file; the release also publishes
    the APK's size and signing certificate.

Install

  1. Download ompweb-1.0.26.apk and the companion ompweb-1.0.26.apk.sha256
    from the release.
  2. Allow your file manager or browser to install unknown apps.
  3. Install the APK. Signed updates install over an older version and keep the
    app data.

Full instructions: docs/android/README.md.


Verify this download: ompweb-1.0.26.apk, 5846833 bytes, SHA-256 e397fd5a772b3fe97e0acb6a96a6689297009705696fb67b8cd8bec3cc261984, signing certificate SHA-256 d73354b52dc7c3f0c74623c439ddb7b52e252811c6e6b5f851c9d04b7015fc87.

android-v1.0.25

Choose a tag to compare

@github-actions github-actions released this 31 Oct 10:08

ompweb for Android 1.0.25

The native Android client for ompweb: sessions, the live chat, the composer,
files, Git and worktrees, notifications with inline replies, and the settings
screens, backed by your own ompweb server.

What changed

  • /goal now starts omp's real goal mode — the command is sent as omp's
    goal RPC (op: "create") instead of a plain prompt with a client-side
    banner. The goal objective carries a fixed plan template: the agent must
    first write Key points, No-gos and Stop conditions (each one
    objectively verifiable with evidence), keep them as todos, and work until
    every stop condition is proven before it completes the goal. Optional lines
    after the aim — No-gos: and Stop conditions: — are passed into the same
    plan.
  • The goal banner is omp's state, not the app's — objective, active or
    paused status, elapsed time and token budget come from get_state.goal and
    live goal_updated events. Pause, Resume and Drop call the
    matching RPC ops. Stopping a run pauses the goal in omp, and the banner then
    offers Resume. The old per-session goal storage is removed.
  • Older servers keep working — a server or omp that answers “Unknown/
    Unsupported command: goal” gets the same plan template as a normal prompt
    and a notice explains the fallback, so the aim is never lost.
  • New sessions use the same path: /goal in the new-session composer
    starts goal mode on the freshly created session.
  • Version 1.0.25 (versionCode 10025).

Updating

Open Settings → System & Updates → Android app update, keep or set the
source, and tap Check for updates; the app downloads the file, verifies its
SHA-256, package name, versionCode and signing certificate, and hands it to
Android's installer. The app data stays. Android still asks once for the
install unknown apps permission if it was never granted.

Requirements

  • ompweb with GET /api/app-info ("api": 1) — the server the app was built
    against.
  • Goal mode needs an ompweb server that forwards the goal RPC command and an
    omp build with goal support (18.x). Without it the app falls back to a
    normal prompt with the same plan instructions.
  • omp installed on the server for agent features.
  • Android 8.0 (API 26) or newer.

Release artifact

  • ompweb-1.0.25.apk
  • ompweb-1.0.25.apk.sha256 accompanies the file; the release also publishes
    the APK's size and signing certificate.

Install

  1. Download ompweb-1.0.25.apk and the companion ompweb-1.0.25.apk.sha256
    from the release.
  2. Allow your file manager or browser to install unknown apps.
  3. Install the APK. Signed updates install over an older version and keep the
    app data.

Full instructions: docs/android/README.md.


Verify this download: ompweb-1.0.25.apk, 5830449 bytes, SHA-256 d6863aede511731fbbe3f88e3e70abaef26e5f6d4a18fd7207bfa9b9c5342077, signing certificate SHA-256 d73354b52dc7c3f0c74623c439ddb7b52e252811c6e6b5f851c9d04b7015fc87.

android-v1.0.24

Choose a tag to compare

@github-actions github-actions released this 30 Oct 20:51

ompweb for Android 1.0.24

The native Android client for ompweb: sessions, the live chat, the composer,
files, Git and worktrees, notifications with inline replies, and the settings
screens, backed by your own ompweb server.

What changed

  • No notification for the chat you are reading — three gaps in the
    on-screen rule are closed. The presence report (visible + session id) is now
    sent even while the notification service is still activating, its visibility
    and its sequence number are taken under one lock (a report can no longer
    carry an older view with a newer sequence and win on the server), and the
    app's own guard compares the same ids as the server: a session omp moved to a
    new file still counts as the chat on screen under its former id. Opening or
    re-reporting that chat also clears a notification that slipped in between,
    even when the selected id did not change.
  • A finished chat is one notification, not two — every completion used to
    add a project summary next to its own notification, so a single finished
    chat already showed two entries. The summary now appears only when it really
    summarizes two or more chats of the project ("3 chats finished") and carries
    their names; a single chat is its own notification.
  • Finished chats are quiet by default — the completed notification no
    longer plays a sound or vibrates. New setting Settings → Notifications →
    Sound/vibration for finished chats
    (off by default; searchable as
    "Sound/vibration for finished chats"). Questions and errors keep their loud
    alert and their vibration patterns, the Vibrate setting still decides
    whether an alert pulses (a finished chat then plays its sound without one),
    and the existing per-type switches still apply.
  • A burst alerts once — a project's first completion alerts (when the new
    setting is on), every further completion in the next 20 seconds is posted
    silently and folded into the summary line for that project. Answering a
    finished chat's notification ("Sent" / "Failed") also stays silent.
  • Version 1.0.24 (versionCode 10024).

Updating

Open Settings → System & Updates → Android app update, keep or set the
source, and tap Check for updates; the app downloads the file, verifies its
SHA-256, package name, versionCode and signing certificate, and hands it to
Android's installer. The app data stays. Android still asks once for the
install unknown apps permission if it was never granted.

Requirements

  • ompweb with GET /api/app-info ("api": 1) — the server the app was built
    against.
  • omp installed on the server for agent features.
  • Android 8.0 (API 26) or newer.

Release artifact

  • ompweb-1.0.24.apk
  • ompweb-1.0.24.apk.sha256 accompanies the file; the release also publishes
    the APK's size and signing certificate.

Install

  1. Download ompweb-1.0.24.apk and the companion ompweb-1.0.24.apk.sha256
    from the release.
  2. Allow your file manager or browser to install unknown apps.
  3. Install the APK. Signed updates install over an older version and keep the
    app data.

Full instructions: docs/android/README.md.


Verify this download: ompweb-1.0.24.apk, 5826925 bytes, SHA-256 c537548367ccbc24c38aa8c6ac7e4a519dab0ad7aa523f6cc1a324b09b3f61e6, signing certificate SHA-256 d73354b52dc7c3f0c74623c439ddb7b52e252811c6e6b5f851c9d04b7015fc87.

android-v1.0.23

Choose a tag to compare

@github-actions github-actions released this 30 Oct 12:54

ompweb for Android 1.0.23

The native Android client for ompweb: sessions, the live chat, the composer,
files, Git and worktrees, notifications with inline replies, and the settings
screens, backed by your own ompweb server.

What changed

  • A queued message is delivered when the chat is opened — the offline
    outbox held messages back whenever a state read for the same session was
    already on the wire, which is exactly what opening a chat and reconnecting
    do. The queue then showed "Waiting for connection" over a healthy connection
    until the chat was opened a second time. Delivery now waits for that read's
    answer (bounded) instead of giving up on it, and a poll that finally learns
    the session's state starts the queue again.
  • A refused message no longer blocks the queue — a 4xx/5xx answer to a
    queued message was treated like a transport problem: the record went back to
    the queue and was re-posted on every reconnect, repeating the refusal
    forever and keeping every later message of that chat behind it. An answer is
    now final: the message leaves the queue, its text and images go back into
    the input field, and the server's reason is shown. The next queued message
    goes out immediately.
  • A failed steer/follow-up no longer stops the run it never started — a
    queued message delivered into a running session rolled back the server's
    turn when the steer was refused: the streaming answer vanished, the footer
    showed idle and the stop button disappeared until the next frame. That path
    now only reports the error; only a message that became this app's own prompt
    is rolled back on failure.
  • The queue file survives a crash — the record file is written with fsync
    and moved over the old one in a single rename, instead of deleting
    queue.json first: a process death in that window used to lose the whole
    queue. Unreadable records (empty session, no text and no image) are dropped
    together with their images instead of living on unseen, and a message the
    app could not deliver for a month is dropped with its images, so a lost
    connection cannot fill app storage forever.
  • A queue that cannot be written says so — a failed "this message may be on
    its way" write stopped being read as "the message is gone" (which re-read the
    same record forever); it stops the loop with a notice and keeps the message
    queued. A failed removal keeps the message's images, because the record is
    still there. Signing out cancels the chat surface and its delivery loop
    before the queue directory is wiped.
  • A snippet inserted in typed text gets its own line — inserting at the
    caret no longer glues the snippet's last word to the text behind it.
  • Version 1.0.23 (versionCode 10023).

Updating

Open Settings → System & Updates → Android app update, keep or set the
source, and tap Check for updates; the app downloads the file, verifies its
SHA-256, package name, versionCode and signing certificate, and hands it to
Android's installer. The app data stays. Android still asks once for the
install unknown apps permission if it was never granted.

Requirements

  • ompweb with GET /api/app-info ("api": 1) — the server the app was built
    against.
  • omp installed on the server for agent features.
  • Android 8.0 (API 26) or newer.

Release artifact

  • ompweb-1.0.23.apk
  • ompweb-1.0.23.apk.sha256 accompanies the file; the release also publishes
    the APK's size and signing certificate.

Install

  1. Download ompweb-1.0.23.apk and the companion ompweb-1.0.23.apk.sha256
    from the release.
  2. Allow your file manager or browser to install unknown apps.
  3. Install the APK. Signed updates install over an older version and keep the
    app data.

Full instructions: docs/android/README.md.


Verify this download: ompweb-1.0.23.apk, 5825337 bytes, SHA-256 a37690b27d00c0a608dd316d926f61ed0fb86d8c5c96762171ced1bfc1ef9a7f, signing certificate SHA-256 d73354b52dc7c3f0c74623c439ddb7b52e252811c6e6b5f851c9d04b7015fc87.

android-v1.0.22

Choose a tag to compare

@github-actions github-actions released this 30 Oct 01:37

ompweb for Android 1.0.22

The native Android client for ompweb: sessions, the live chat, the composer,
files, Git and worktrees, notifications with inline replies, and the settings
screens, backed by your own ompweb server.

What changed

  • A phrase you say twice is no longer swallowed — on-device dictation
    dropped any utterance that began with the words it had already committed:
    after "ok", saying "ok weiter" left only "weiter", and a repeated "ja" in
    "ja … ja genau" disappeared. The buffer stripped everything up to the length
    of the committed text, because it assumed the recognizer was re-sending the
    session so far. It is not: a hypothesis and a finalized utterance belong to
    the utterance the recognizer is in right now, so they are now taken as they
    arrive. Nothing is compared against the committed text any more — the words
    the user said are the words that stay.
  • The one real re-send is still counted once — a service that reports the
    same finalized utterance on both of its paths (onSegmentResults on
    Android 13+ and the final_result partial for services without a segmented
    session) delivers it twice; the buffer recognizes that by the callback that
    delivered it, not by matching words, so the take still holds the utterance
    exactly once. The session's final transcript keeps replacing the take when
    it repeats the utterances, and a blank final keeps all of them.
  • Tests that wait no longer fail on a loaded machine — every test class
    that polled with its own deadline (eight to ten seconds) now uses one shared
    helper with a 60-second safety net that names the awaited condition and the
    observed state when it fails, plus a flow-based variant for state a test can
    observe directly. No test was weakened and none retries: a passing run still
    returns the moment the condition holds.
  • Version 1.0.22 (versionCode 10022).

Updating

Open Settings → System & Updates → Android app update, keep or set the
source, and tap Check for updates; the app downloads the file, verifies its
SHA-256, package name, versionCode and signing certificate, and hands it to
Android's installer. The app data stays. Android still asks once for the
install unknown apps permission if it was never granted.

Requirements

  • ompweb with GET /api/app-info ("api": 1) — the server the app was built
    against.
  • omp installed on the server for agent features.
  • Android 8.0 (API 26) or newer.

Release artifact

  • ompweb-1.0.22.apk
  • ompweb-1.0.22.apk.sha256 accompanies the file; the release also publishes
    the APK's size and signing certificate.

Install

  1. Download ompweb-1.0.22.apk and the companion ompweb-1.0.22.apk.sha256
    from the release.
  2. Allow your file manager or browser to install unknown apps.
  3. Install the APK. Signed updates install over an older version and keep the
    app data.

Full instructions: docs/android/README.md.


Verify this download: ompweb-1.0.22.apk, 5778781 bytes, SHA-256 8044ff5cbcd2824c2a7acf92af085d71f900aa32792ae1f9caa4df33869613c6, signing certificate SHA-256 d73354b52dc7c3f0c74623c439ddb7b52e252811c6e6b5f851c9d04b7015fc87.

android-v1.0.21

Choose a tag to compare

@github-actions github-actions released this 29 Oct 23:50

ompweb for Android 1.0.21

The native Android client for ompweb: sessions, the live chat, the composer,
files, Git and worktrees, notifications with inline replies, and the settings
screens, backed by your own ompweb server.

What changed

  • On-device dictation keeps what you said before a pause — talking, pausing
    and talking again deleted the first sentence and left only the second one.
    The take was built as if the recognizer's partial text always described
    everything spoken so far. On a phone it does not: the recognizer finalizes an
    utterance when the speaker stops and starts the next one from an empty
    hypothesis, so the text after the pause replaced the text before it. Each
    finalized utterance is now kept and the next one is appended to it with one
    space, and the session's final transcript replaces the take once instead of
    being appended again (no doubled words when it repeats the last partial).
  • One take lasts until you stop it — a pause no longer ends dictation. The
    recognizer is asked for a session that outlives the pauses (segmented session
    mode on Android 13+, dictation mode for older services), so a break in
    speaking does not silently finish the take and swallow what follows. The
    strip under the field keeps its Stop and Cancel; backgrounding the app
    still commits what was heard.
  • Your own edits survive — typing into the field during dictation keeps the
    visible text, including everything dictated before the pause, and the live
    text continues at the caret you left.
  • Tests — the buffer (utterance after a pause kept, repeated hypothesis and
    repeated final not duplicated, blank final keeps the utterances, a user edit
    re-anchors), the view model (the Pixel sequence speech → pause → speech,
    and the fallback when the recognizer never answers), and the intent and
    callbacks of the recognizer adapter (segmented session, finalized partials,
    end of a segmented session).
  • Version 1.0.21 (versionCode 10021).

Updating

Open Settings → System & Updates → Android app update, keep or set the
source, and tap Check for updates; the app downloads the file, verifies its
SHA-256, package name, versionCode and signing certificate, and hands it to
Android's installer. The app data stays. Android still asks once for the
install unknown apps permission if it was never granted.

Requirements

  • ompweb with GET /api/app-info ("api": 1) — the server the app was built
    against.
  • omp installed on the server for agent features.
  • Android 8.0 (API 26) or newer.

Release artifact

  • ompweb-1.0.21.apk
  • ompweb-1.0.21.apk.sha256 accompanies the file; the release also publishes
    the APK's size and signing certificate.

Install

  1. Download ompweb-1.0.21.apk and the companion ompweb-1.0.21.apk.sha256
    from the release.
  2. Allow your file manager or browser to install unknown apps.
  3. Install the APK. Signed updates install over an older version and keep the
    app data.

Full instructions: docs/android/README.md.


Verify this download: ompweb-1.0.21.apk, 5778781 bytes, SHA-256 075a42fff5d18e7525128c83f5a4a6261ef2a69e55f69ee04eaf3a4e41e7d3b3, signing certificate SHA-256 d73354b52dc7c3f0c74623c439ddb7b52e252811c6e6b5f851c9d04b7015fc87.

android-v1.0.20

Choose a tag to compare

@github-actions github-actions released this 29 Oct 22:27

ompweb for Android 1.0.20

The native Android client for ompweb: sessions, the live chat, the composer,
files, Git and worktrees, notifications with inline replies, and the settings
screens, backed by your own ompweb server.

What changed

  • Auto dictation no longer uploads to a server that cannot transcribe —
    with the engine Auto, tapping the mic recorded and uploaded the audio
    whenever a server address was configured. A server without
    OMP_WEB_STT_ENDPOINT or OMP_WEB_STT_MODEL answers that upload with
    501 STT not configured, and /api/app-info has no capability flag for
    speech-to-text, so the app was treating "a server exists" as "the server can
    transcribe". Auto now asks the server itself before it opens the
    microphone: a small POST /api/stt without audio tells it whether the
    route is configured (the server checks its STT settings before it reads the
    audio), and the answer is cached per server address, refreshed at app start
    and after a server switch. Only a positive answer sends a recording to the
    server; otherwise the phone's installed recognizer takes the take.
  • A take is never lost when the server still refuses — if an upload is
    answered with 501 in Auto mode, the server is remembered as "no STT", the
    recording stays on the phone (playable), and the deck says why with a
    one-tap Dictate on this phone instead. The recap is honest: the phone's
    recognizer cannot reuse recorded audio, so that button starts a new take.
    The next Auto attempt goes straight to the phone.
  • Explicit "Server" keeps working as chosen — an explicit server engine
    still uploads, keeps its retry and shows the server's own message, even
    after other composers learned that this server cannot transcribe.
  • Tests — the engine decision matrix (configured / unconfigured / not yet
    asked, with and without an on-device model), the per-server cache (one probe
    per address, unknown answers retried, a failed probe not cached), the
    configuration probe's HTTP mapping (501, missing_audio_file, signed out,
    5xx, no route), and the view model's 501 fallback (local copy kept, no
    re-upload, on-device take on request, next Auto take on-device) together
    with the explicit-server path.
  • Version 1.0.20 (versionCode 10020).

Updating

Open Settings → System & Updates → Android app update, keep or set the
source, and tap Check for updates; the app downloads the file, verifies its
SHA-256, package name, versionCode and signing certificate, and hands it to
Android's installer. The app data stays. Android still asks once for the
install unknown apps permission if it was never granted.

Requirements

  • ompweb with GET /api/app-info ("api": 1) — the server the app was built
    against.
  • omp installed on the server for agent features.
  • Android 8.0 (API 26) or newer.

Release artifact

  • ompweb-1.0.20.apk
  • ompweb-1.0.20.apk.sha256 accompanies the file; the release also publishes
    the APK's size and signing certificate.

Install

  1. Download ompweb-1.0.20.apk and the companion ompweb-1.0.20.apk.sha256
    from the release.
  2. Allow your file manager or browser to install unknown apps.
  3. Install the APK. Signed updates install over an older version and keep the
    app data.

Full instructions: docs/android/README.md.


Verify this download: ompweb-1.0.20.apk, 5778781 bytes, SHA-256 6c2263bb53c28ba351b3adf3e220e1dd1b81834471700d4f9612bcc404628642, signing certificate SHA-256 d73354b52dc7c3f0c74623c439ddb7b52e252811c6e6b5f851c9d04b7015fc87.