Skip to content

v1.3.0

Latest

Choose a tag to compare

@github-actions github-actions released this 07 Oct 21:58
· 2 commits to main since this release
7a50a65

Added

  • Gotcha in eight more languages (#120). Gotcha's own screens, menus,
    dialogs and notifications are now available in Hindi, Spanish, French,
    German, Italian, Portuguese (Brazil), Japanese and Simplified Chinese, as
    well as English. On Android 13 and later you can pick a language for Gotcha
    alone, under Settings → Language or in Android's app language settings; on
    Android 11 and 12, Gotcha follows the phone's language. Names, codes and the
    legal agreements stay in English, and anything not yet translated shows in
    English. The language Gotcha replies in is a separate setting and works as
    before.
  • Several attachments in one message (#94). The composer's + button now
    adds images and files to a message instead of replacing the last one, up to
    10 per message, each shown in a strip above the composer where it can be
    removed before sending. The sent message shows every image and document.
    Files past the tenth, or documents too long to send together, are left out
    with a message saying why, and the rest are still sent. When the model
    turns the images down, Gotcha says to send fewer or smaller ones instead of
    showing only the server's error.
  • Dictate without the reply being read aloud (#118). A new Speech setting,
    "Read aloud replies to voice messages", decides whether the reply to a message
    you sent with the microphone is spoken. It is on by default, so nothing
    changes until you turn it off; then voice messages behave like typed ones and
    are only read aloud when "Auto-read replies aloud" is on. The speaker icon
    still reads any reply on demand.
  • Tasks keep running when you leave Gotcha (#105). While Gotcha works on a
    task, a quiet "Gotcha is working on …" notification now keeps it running, so
    Android no longer closes it to free memory when you switch to another app mid
    task — which could stop the task halfway and lose its task-finished
    notification. Tapping it opens the chat; its Stop button stops the task. It
    goes away as soon as the task ends, replaced by the task-finished notification
    if you are elsewhere. It follows the same naming settings as the others, and has
    its own channel, "Task in progress". It names the chat by its title as soon as
    Gotcha has made one. And if Android closes Gotcha mid-task anyway, the next
    time you open it the chat ends with a note that the task was interrupted, and
    the notification list has an "Interrupted" entry that opens it; send a message
    there to pick up where it left off.
  • A notification when Gotcha is waiting on you (#108). When Gotcha pauses a
    task to ask you something, or to ask "Allow these actions?", and you are not in
    Gotcha to see it (you went to Termux to do what it asked, say, or the screen
    went off), a notification now says so: "Gotcha has a question", with the chat
    and the start of the question, following the same preview and naming settings
    as the task-finished notification. Tapping it opens the chat with the question
    waiting; answering, skipping, stopping the task or coming back to Gotcha clears
    it. It has its own channel, "Waiting for your answer", so it can be silenced
    apart from the others. A question now also waits ten minutes for an answer
    instead of two, so there is time to go and do what it asked first.
  • Commands in a box you can copy (#109). A code block in a reply, or in a
    question Gotcha asks, now sits in its own box: monospace, set apart from the
    text around it, labelled with its language, and with a Copy button that copies
    exactly the code and nothing else. A long command scrolls sideways instead of
    breaking in the middle of a word, so a step like adding
    allow-external-apps=true to Termux's settings can be copied and pasted
    rather than retyped on a phone keyboard.
  • Gotcha asks before it takes control of another app (#98). The first time
    a request needs to open an app, open a settings screen, read the screen or
    tap, type and swipe in another app, Gotcha asks once: which app, why (your
    request, quoted), what it may do there, and what saying no means. "Allow for
    this request" covers every later step of that request, so a long task is not
    interrupted again; "Deny" keeps Gotcha out of your apps until the request ends,
    and it answers without them. The next message asks again. Tools that work in
    the background never ask. While Gotcha is in control a small card at the top of
    the screen says so, and when it lets go it says "Gotcha is done. You can use
    your app again." — in the chat when you are in Gotcha, on that card when you
    are not. The existing confirmations for uninstalling, deleting, sending email
    and changing settings still ask every time.
  • Import chats, and back them up (#83). "Import chats" in the navigation
    drawer reads back a chat exported as Markdown ("Export chat" in a chat's ⋮
    menu), so a shared or saved conversation can be opened and continued. The
    Markdown export holds text only, so an imported one has no images or
    attachments and shows tool calls as the export did. For a complete copy, "Back
    up chat" in the ⋮ menu and "Back up all chats" in the drawer save a
    .gotcha.json file that imports back complete, for moving to a new phone or
    restoring. Before saving, Gotcha says what a backup holds and offers to leave
    images out. Before importing, it says what the file holds; when a chat is
    already here in another version, you choose to keep both, replace yours or
    skip it, and an unchanged copy is skipped. A damaged chat in a backup is
    reported by name and the rest still import; a file from a newer Gotcha, one
    that isn't a Gotcha chat, or one over 64 MB is refused with the reason. System
    messages, in a Markdown file or a backup, come in as labelled notes, never as
    system instructions, so a shared file can't use one to steer the assistant. The
    Markdown export now also carries the chat's title.
  • Gotcha's own notifications, and a list of them (#100). Gotcha now works
    out from your chats, on the phone, when a notification would actually help,
    and nothing about how you use it is uploaded to decide. It reminds you about a
    chat left unfinished (a task that failed or was stopped, or a question you
    didn't answer, a few hours on); suggests a request you make regularly once
    it's due again, opening a new chat with it ready to send; and nudges you after
    a quiet spell (four days by default), offering your last chat back. A new
    "Gotcha notifications" section in Settings → Notifications turns each of these
    and the daily tip on or off, sets the quiet spell, quiet hours (22:00–08:00 by
    default), and how many a day (two by default), and whether notifications may
    name chats. The same occasion is never notified twice, one of a kind a day at
    most, and the lock screen never shows the chat. A bell on the chat screen opens
    the last 30 days of notifications — reminders, tips, finished tasks and
    messages from Samosa AI — each opening where its notification did, and the
    history can be cleared. A chat's new ⋮ menu (which also holds Export and the
    share card) keeps it out of notifications altogether; Doctor chats start that
    way. Task-finished notifications for such chats, or with naming off, say only
    that a task finished.
  • Daily tips (#101). Once a day, at 10:00 by default, Gotcha sends a
    notification suggesting one thing to try: reading your screen, catching up
    on notifications, texting someone, planning the day. Tapping it opens a new
    chat with the prompt already in the composer, to edit or send as it is. Tips
    for tools you have never used come first, none repeats until ten others have
    been shown, and no tip is sent on a day you have already used Gotcha. Tips for
    device actions start the chat in Operator. On by default; Settings →
    Notifications turns tips off or changes the time, and they have their own
    "Daily tips" channel in Android's settings.
  • The assistant can change Gotcha's settings, with your approval every time
    (#99). Ask it to turn off the reply chime, switch the skin, stop
    scanning the clipboard or turn a connector off, and it proposes the change
    through a new update_gotcha_settings tool. Nothing is written until you
    approve a prompt that lists each setting with its current and new value and
    says whether it touches privacy, notifications, permissions or device
    control, and an approval never carries over to the next change. Only an
    allowlist can be changed — notifications, reply and speech language, read
    aloud, skin, proactive assistance, wake-word listening mode and sensitivity,
    connectors and skills. API keys, sign-in, the model and run limits are out of
    reach, and an unknown key or bad value is refused before you are asked
    anything. Approved changes take effect at once (the skin repaints without a
    restart), and both approvals and refusals go into the action log. Operator
    mode only.
  • Chat personas. The starter chips said what to ask; nothing said who to ask.
    A persona row now sits under the agent selector on an empty chat — Doctor,
    Chef, Fitness Coach, Tutor, Travel Planner, Handyman
    — and picking one starts
    the chat in that role, with the role's own instructions carried in the system
    prompt for every turn of it. The role is chosen before the first message and
    fixed from there: it is saved with the chat, so reopening one weeks later is
    still answered in role (the top bar names it), and a new chat never inherits
    the last one's. Each persona starts read-only in Monitor and the selector stays
    live, so taking one into Operator is still your call, and a role never loosens
    what the agent is allowed to do — the mode restrictions remain the last word.
    Where a role shadows a regulated profession its prompt says so: the Doctor
    never presents itself as your doctor, and routes emergencies to real care.
    Picking a persona also swaps the "Try" chips under it for the role's own
    (#117) — the Doctor offers "Check a symptom" and "Is this urgent?", the Chef
    "Cook from my fridge" — in place of the device-control ones, which come back
    when the persona is cleared. Every role's starters are things to ask it, so
    they all work in Monitor.
  • Search the settings. Fifteen settings pages hold well over a hundred
    controls between them, and finding one meant scrolling the list and guessing
    which page owned it — "wake word" is under Assistive Ball, "API key" under AI
    › AI Configuration. A search field now sits pinned above the settings list:
    type what the control is called and the list narrows to the pages that hold
    it, matching titles, summaries and the everyday words for the fields inside
    ("read aloud", "dark mode", "otp", "accessibility"). Pages that live inside a
    hub — Speech, AI Configuration, Legal — show up too, named with the hub they
    sit in and opened in one tap, which the list itself can't do. Clearing the
    field brings the whole list back. When the words name one control — "max
    tool rounds", "otp", "wake word" — the result says so ("AI › AI
    Configuration › Max tool rounds") and the page opens scrolled to it, briefly
    highlighted, with a folded "Advanced settings" section opened if that is where
    it sits (#92). Searching a page by its own name opens it at the top as before.
  • Voice and language pickers name the language. The Speech page listed raw
    codes — hi, en-us, af_heart — with nothing saying which language each
    one is. Transcription language entries now read like hi — Hindi, the field
    shows the name of the code you typed, and TTS voices read like
    af_heart — English (United States), female (the language and gender are
    taken from the server, or read off Kokoro-style voice ids when it sends
    none). The Samosa AI TTS and STT sections also link to the Samosa AI docs on
    choosing a voice and language.
  • Two sample chats on a fresh install. The chat list opened on nothing at
    all, so the one thing a first-time user couldn't find out was what Gotcha is
    for. A new install now starts with two short transcripts that show it: a
    device action with a follow-up in Operator (turn Wi-Fi on, then the
    Bluetooth screen the agent opens because Android won't let it flip that switch
    itself) and a question about the screen in Monitor. They are ordinary
    chats — open them, carry them on, or delete them — and both the drawer row and
    a line above the transcript say they're samples, so a demonstration is never
    mistaken for something you said. Seeding happens once per install and only
    into an empty list: upgrading keeps the chats you have, and deleting the
    samples is final.
  • The assistant can now answer questions about Gotcha itself. There was a
    tool for the company behind the app (about_samosa_ai) but none for the app,
    so "what can you do?" and "which setting do I change to read replies aloud?"
    were answered from the model's memory or by driving the Settings screens to
    rediscover a path — both of which produce confident directions to places that
    don't exist. A new about_gotcha tool reads a bundled handbook covering the
    capability areas, Monitor vs Operator, the exact path to every settings page,
    which permission each group of tools waits on and where it's granted, and the
    safety model. It's read-only, so Monitor has it too. The handbook is
    checked against the SettingsPage and Capability enums by a test, so
    renaming a settings page fails the build rather than quietly leaving the agent
    with a stale path.
  • Starter prompts on the home screen. A new chat used to be a greeting and an
    empty composer, which says nothing about what Gotcha can be asked for. Three
    suggestion chips now sit under the agent selector — drawn per session from a
    set covering the things people least expect: driving the device, reading the
    screen, going through the filesystem (Find the largest files in my Downloads folder and tell me what's safe to delete, Read the most recent PDF in my Downloads and summarise it) and handling messages. Tapping one fills the
    composer and stops there
    : nothing is sent until you've read it, edited the
    parts left blank, and pressed send yourself. Nor does a chip change the agent
    mode on your behalf — the two device actions need Operator, the rest answer in
    Monitor, and which mode you're in stays the selector's business.

Changed

  • Every language setting on one page (#74, #113, #114). "Preferred
    Language" in Personal Info used to set three things at once: the language
    Gotcha replies in, the voice that reads replies aloud, and the language it
    transcribes, and its place next to your name made it look like the app's
    own language. A new Settings → Language page now holds them apart: the app
    language, the voice language (the same as the reply language unless you
    choose another, so nothing changes until you do) and the reply language,
    with the Test voice button. The transcription language override has moved
    from Settings → AI → Speech to the same page, under the voice language it
    overrides; the Speech page now shows it read-only, with a link to change
    it. Both pages warn, and say what will happen, when the voice language and
    the chosen speech models disagree: a text-to-speech model with no voice in
    that language (Hindi replies read by an English voice), a hand-picked voice
    in another language, a speech-to-text model that doesn't list the language,
    or an override that forces transcription into a different one. Gotcha also
    picks a voice in the voice language more often when the voice is left on
    default: it now reads the language from Kokoro voice names like hf_alpha.
  • Gotcha tells you that you can leave while it works (#96). While a task
    runs, a line in the chat now says that Gotcha is working in the background
    and you can use another app meanwhile. It is not part of the conversation,
    so it is never sent to the model or exported. Viewed from another chat, the
    "Agent working in …" banner says the same and taps through to the running
    chat.
  • A task's notification shows how it went (#115). The status bar icon now
    tells a task's state without pulling down the shade: a running icon while it
    works, then a tick, an error mark or a stop mark for done, failed and
    stopped. When a task ends while you are elsewhere, its "Gotcha is working on
    …" notification turns into the task-finished one, instead of one
    disappearing and another arriving. The lock screen still shows only a
    generic line.
  • A calmer notifications bell (#110). The bell's badge is now in Gotcha's
    own colour instead of alarm red, the bell matches the other top-bar icons and
    fills in while something is unread, and one unread notification shows as a dot
    (a number from two up). In an open chat the bell has moved into the ⋮ menu as
    "Notifications", with a dot on ⋮ while something is unread, so the chat's title
    has room again.
  • Permissions are asked for when they're needed, not at startup. A fresh
    install used to open with thirteen system permission dialogs in a row —
    contacts, SMS, call log, camera, microphone, location — before you had asked
    Gotcha for anything, which reads less like setup than like a shakedown.
    Nothing is requested at launch now. The first time a tool actually reaches for
    one, Gotcha says in a sentence what it is about to do with it — Gotcha needs
    your contacts to turn a name into a number, so asking it to call Priya reaches
    the right Priya
    — and only then does Android's own dialog appear; grant it and the
    action you asked for carries straight on, rather than failing and having to be
    repeated. "Not now" is a real answer, and the next request starts fresh. First
    run works with nothing granted at all: every capability is still listed under
    Settings › Permissions, each row now saying whether it is granted, ready to
    switch on ahead of time. Turning one back off is no longer a toast naming a
    four-level path you can't follow before it vanishes — the switch opens the
    system screen that owns the permission. And on Android 13+, notification
    permission is asked for when you switch server messages on, which is the only
    moment it means anything.
  • Settings → AI. The model and the voice used to sit as two unrelated rows on
    the settings list, as if choosing what Gotcha thinks with had nothing to do with
    choosing what it speaks with. Both now live under a single AI row:
    AI Configuration for the provider and models, Speech (TTS / STT) for voices
    and transcription. The pages themselves are unchanged, and so is everything
    already saved on them.
  • Advanced settings are collapsed by default. The knobs almost nobody needs —
    sub-agent and navigator model overrides, the agent-loop limits, the API timeout,
    the cache-clearing buttons, the podcast host voices — are now behind an
    Advanced settings disclosure on the page they belong to, instead of standing
    between a new install and the Save button. Nothing moved pages, and expanding
    the section is never required to save.
  • Settings → About. The hub that collects the company page, the legal
    agreements and the app updater is now titled About rather than About Us:
    it holds more than company information, so the old title undersold it.
    About Samosa AI and Legal still sit underneath it, unchanged.
  • Settings → Assistive Ball and Wake Word. The Hey Gotcha wake word has
    always lived on the assistive-ball page — its listener runs inside the ball's
    service and cannot outlive it — but the row said only Assistive Ball, so
    there was nothing to tell you where the wake word was or why it switched
    itself off. The row now names both, and the page states the dependency whether
    the ball is on or off instead of only once it is already too late.

Fixed

  • A clear message when Accessibility is off (#76). A request that needed
    to read the screen or tap in another app, with Gotcha's accessibility
    service off, used to fail with an unrelated error. Gotcha now says the
    service is needed and opens Settings → Accessibility. When the service is
    switched on but Android has stopped it, which can happen after an update,
    it says to switch Gotcha off and on again there, rather than telling you to
    turn on something that is already on.
  • Opening a chat marks its notifications read (#116). Notifications in the
    bell's list used to stay unread until you tapped them or opened the list.
    Opening the chat they belong to, or coming back to it, now marks them read
    and updates the bell's count; they stay in the list.
  • "Open Android language settings" opens the language list (#112). On some
    phones the button flashed a blank screen and came back to Gotcha. It now
    opens Android's language settings.
  • Fixes from testing this release on a phone and an emulator. The mic
    button now asks for the microphone the first time you tap it, and starts
    listening once you allow it; it used to say the permission was missing and
    never ask (#79). A task that hit an error along the way, such as a web page
    that refused to load, and then finished anyway is reported as Done instead of
    Failed (#97). A new chat that Android closes before the first reply now keeps
    your message and gets the "interrupted" note, instead of disappearing (#105).
    Importing a backup whose screen and conversation don't match (a file edited
    by hand) now shows the chat rebuilt from the conversation, so nothing the
    assistant reads is hidden from you; the import preview says when this happens
    (#83). And a setting opened from search stays on screen when the page above
    it finishes loading, such as the Samosa account card on AI Configuration (#92).
    A chat started with an image and no text is called "Image chat" instead of
    having a blank name, and gets a proper title from the first message you write
    in it (#95).
  • Gotcha can change the screen timeout itself. Asked to keep the screen on
    longer, it used to try a shell command, then open a settings page and describe
    it as if it could see it — on some phones, the wrong page. It now sets the timeout
    directly (15 seconds to 30 minutes) with the same "Modify system settings"
    access it uses for brightness, asks for that access the first time, and says
    what the timeout was before. When it opens a settings page, it now names the
    screen your phone actually opened and says what to look for, instead of
    claiming a control is in front of you.
  • A task keeps running when you swipe Gotcha away (#111). Swiping Gotcha out
    of your recent apps while it worked on a task, or pressing Back on its home
    screen mid-task on Android 11, used to stop the task as if you had pressed
    Stop. The task now goes on for as long as Android keeps Gotcha running, with
    its "Gotcha is working on …" notification and its Stop button, and ends with
    the usual task-finished notification. Opening Gotcha again mid-task, from its
    icon or a notification, shows the running chat. A question or an "Allow these
    actions?" it asks meanwhile still gets its "Gotcha has a question"
    notification, and tapping it brings the question back; a request for an
    Android permission, which needs Gotcha on screen, is answered "not allowed"
    so the task can go on without it.
  • A model that never answers no longer leaves the chat on "Thinking…" (#104).
    The API timeout used to default to 0, which meant never give up, so a model
    server that accepted a request and then sent nothing kept the chat on
    "Thinking…" until you pressed Stop. It now defaults to 3 minutes of silence:
    after that the task ends with "The model didn't respond in time" and the
    task-finished notification reports it as failed. A long reply that is still
    arriving is never cut off. If you were on the old default of 0, the update
    moves you to 3 minutes once; a timeout you set yourself is kept, and you can
    still set 0 in Settings → AI → AI Configuration for no timeout.
  • Gotcha remembers what you asked about an earlier photo (#102). To save
    space, Gotcha drops older images from what it sends the model. It used to
    drop the whole message with them, so a question you sent with a photo, or the
    text of a file you attached next to it, disappeared too. Now only the images
    go, replaced by a short note, and your words and the file's text stay. Your
    own images also no longer compete with the screenshots Gotcha takes while it
    works: your 4 most recent image messages keep their images however many
    screenshots come after them.
  • Readable release notes in the update check (#70). When Settings → About
    found a new version, its notes were shown as raw Markdown, with ###, **
    and backticks spelled out and lines broken mid-sentence. They are now
    formatted like a chat reply, the Download button sits above them, and long
    notes open as a list of their headlines with "Show all release notes" for
    the rest.
  • The context meter keeps up with the chat (#71). The row of bars under a
    chat's title, showing how much of the model's context the chat has used, only
    moved when you left the chat and came back; during a reply it stayed where it
    was. It now moves after every step of a reply, and after the chat is
    compacted. The bar being filled now fills gradually rather than in whole
    twelfths, so a short exchange still shows up.
  • Termux commands work when Termux is closed. Running a command in Termux
    failed with "app is in background" whenever Termux wasn't already running
    (after swiping it away, say), even with Gotcha open on screen, and the
    assistant then wrongly told you Gotcha was in the background. Gotcha now
    starts Termux's command service in a way Android allows while Gotcha is open,
    so the command runs and Termux starts on its own.
  • Questions from Gotcha fit the screen (#107). When Gotcha stopped to ask
    something, the whole question was used as the dialog's title: a question with
    a few steps filled the dialog in headline-sized type, couldn't be scrolled,
    and pushed its answer button over the answer field. The dialog is now titled
    "Gotcha has a question", and the question sits below as formatted text, with
    lists, bold and commands in copyable boxes, scrolling when it is long. The
    answer buttons and field are spaced out beneath it, and Skip is always there.
  • Screenshots without the Night Light tint (#78). On some phones a
    screenshot taken from the Assistive Ball, or a Screen Lens capture, kept the
    yellow Night Light tint, so the saved image and what the assistant saw both
    had the wrong colours. A new switch on Settings › Assistive Ball and Wake
    Word, "Night Light off for screenshots", turns Night Light off for a moment,
    waits a few seconds for the colours to settle, captures, and turns it back on.
    The screen shows its normal colours meanwhile, so the switch starts off. It
    needs a one-time grant from a computer, adb shell pm grant com.gotcha android.permission.WRITE_SECURE_SETTINGS (the page copies the command), or
    root; without either, screenshots work as before. If Gotcha is closed in the
    middle of a capture, Night Light comes back on the next time it starts.
    Captures Gotcha takes on its own, such as scanning the screen for QR codes,
    never touch Night Light.

Thanks