Skip to content

Releases: onelegdave/omachat

OmaChat v0.6.2

Choose a tag to compare

@onelegdave onelegdave released this 26 Oct 17:43

OmaChat v0.6.2

This patch release bounds incoming Messenger WebSocket messages. It includes
the HTTP response limits from v0.6.1 and all v0.6.0 features.

Fixed

Messenger's DGW WebSocket receiver previously disabled its message-size
limit. A compromised Meta DGW service could exhaust helper memory with an
oversized or fragmented message before protocol parsing. The receiver now
accepts at most 32 MiB per decoded message, including continuation
frames and decompressed bytes if compression is negotiated. Oversized
messages are discarded before parsing, the connection closes safely with
status 1009, and the existing reconnect backoff remains in effect.

This is a per-message limit, not a total helper memory budget. Legitimate
messages over the ceiling will be refused. See
implementation, tests, and limits.

Update

omarchy plugin update onelegdave.omachat

Then choose Build helper in OmaChat and follow any shell-restart prompt.
Rebuilding is required for the correction to take effect. Go 1.27.2 or newer,
Python 3, and a C compiler remain required. Dependencies are vendored, and no
helper executable is shipped. This patch introduces no account migration or
re-pairing step.

Credits

Thank you to HANCORE-linux for the
WebSocket finding.
Codex implemented the correction and regression checks under OneLegDave's
direction. Upstream authorship and license notices are preserved.

Verification and limits

Verified October 26, 2026 on Linux with installed Go 1.27.3:

  • Full Go suite, vendored libgm and Messenger suites, and go vet ./....
  • All 18 new socket cases under the race detector. The uncompressed
    complete and fragmented overflow regressions fail with the old unlimited reader.
  • 77 Node tests, 63 Python tests, and all 25 native QML fixture pass markers.
  • Offline helper build reporting 0.6.2 and omarchy plugin validate ..

These use local servers and isolated synthetic data; no live Messenger
account, real Signal client, invitation, or personal-profile upgrade is used.
Live compatibility at the ceiling and complete Marketplace review remain
outstanding. Marketplace distribution requires fresh checks and approval for the final
commit in the existing Marketplace update request #10861.

OmaChat v0.6.1

Choose a tag to compare

@onelegdave onelegdave released this 23 Oct 01:03

OmaChat v0.6.1

Release commit: ba115ba4140dd7cccd38281320edb7c5ec462612.

This patch release bounds Messenger HTTP response reads, including compressed
responses. It includes all features and corrections from
v0.6.0.

Fixed

Messenger inbox loading previously buffered an entire server response before
the preview and panel limits applied. A compromised Meta/Messenger service
could exhaust helper memory with a large or highly compressed response; the
request timeout did not bound decoded bytes.

The helper now accepts at most 32 MiB per decoded HTTP response, without
trusting Content-Length. This covers inbox HTML, fetched JavaScript,
GraphQL and upload replies, and the separate encrypted-device registration
and lookup path. Oversized responses are discarded, their bodies are closed,
and they are not retried even when the server returns 429 or 500. Partial
registration responses are not parsed or included in response-body trace logs.

See implementation, tests, and limits.
This is a per-response limit, not a total helper memory budget. A legitimate
response larger than the ceiling will be refused; live-account compatibility
at the new ceiling has not been established by the offline fixtures.

Update

omarchy plugin update onelegdave.omachat

Then choose Build helper in OmaChat. Rebuilding is required: the old
executable keeps its previous behavior until it is replaced and restarted.
Follow the panel's shell-restart prompt after the build if shown.
Go 1.27.2 or newer, Python 3, and a C compiler are still required; dependencies
are vendored and no helper binary is shipped.

This patch introduces no session migration or re-pairing step. Keep your
existing settings and sessions; no account reset is required by the change.

Credits

Thank you to HANCORE-linux for the
Messenger response finding.
Codex implemented the correction and regression tests under OneLegDave's
direction. Claude independently reviewed the response paths and tests and
found no blocking issues; the suggested test and documentation improvements
were incorporated. Upstream mautrix-meta authorship and license notices remain
intact.

Marketplace status

The existing update-verification request #10861
records the exact-commit checks and Marketplace maintainer decision. Publishing
this GitHub release does not itself promote the catalog snapshot or complete
the maintainer's source review.

Verification and limits

Checked October 22, 2026 (PDT) on Arch Linux with Go 1.27.2, Qt 6.12.0,
Quickshell 0.3.2, and Omarchy 4.0.5. The full Go tests and race suite,
explicit vendored Messenger and Google Messages tests, go vet, native
manifest validation, and the stamped offline helper build pass. The helper
reports 0.6.1 and the current source fingerprint. The 63 Python tests,
77 Node tests, and all 25 native Wayland fixtures pass, including upgrade,
failed-build preservation, rebuild, and delayed helper startup.

The new response regressions fail against the original v0.6.0 readers and
pass with the correction. They cover exact-limit and oversized streams,
missing or misleading length metadata, gzip through HTTP/1.1 and HTTP/2,
non-retryable overflow, read failures, cancellation, body closure, and
registration response-log suppression.

These checks use isolated settings, synthetic data, local fixture servers,
and a separate D-Bus session. No live provider account, real Signal client,
real invitation, or installed personal profile was used. WebSocket handling
is outside this HTTP-response correction. The new ceiling and a complete
Marketplace source review still need provider/maintainer acceptance.

OmaChat v0.6.0

Choose a tag to compare

@onelegdave onelegdave released this 18 Oct 22:33

OmaChat v0.6.0

This release adds an optional Signal service and starting new direct and
group chats. It also keeps remote content away from the shell's image
decoders and rich-text loader and bounds what the panel holds. That work was
prepared as v0.5.6, which was never published; it is part of this release.
It includes everything in v0.5.5.

Remote content and the shell describes the
content safety design and its limits.

New

  • Signal (experimental, off by default). Link OmaChat as a Signal device
    through the separately installed
    signal-cli. It supports direct and
    group text, attachments with captions, voice notes, reactions, remote
    deletion, and disappearing messages, with a local inbox of up to 500 messages
    per chat. If signal-cli is missing, OmaChat asks before opening a terminal
    that runs the fixed yay -S --needed signal-cli command, and yay asks again.
    The terminal then asks whether to restart the shell. See
    Signal setup and scope.
  • Start a conversation. The + beside conversation search lists the
    connected service's contacts. Pick one to open a direct chat, or choose
    Group, pick at least two contacts, and name it. Each service uses its
    own protocol's real group creation; OmaChat never fakes one. New encrypted
    Messenger chats still start in Messenger.

Fixed

  • Images are re-encoded before the panel shows them. Previously the panel
    decoded downloaded originals itself. An incoming PNG with compressed text
    chunks below the download cap could exhaust the shell's memory when its
    conversation was viewed. The helper now decodes PNG, JPEG, GIF, and still
    WebP images in its own process, within size and frame limits checked before
    decoding, and writes a new preview with no metadata. This covers attachments
    on every service, profile photos, and notification icons. Clicking a preview
    opens the original in your image viewer. Images the helper cannot preview,
    such as animated WebP stickers, show Open image instead.
  • Names and previews are plain text. A contact name or message preview
    holding markup could make the shell fetch an image from the network. Every
    label now shows text exactly as sent; the HTML-escaped message body keeps its
    links.
  • GIF-style clips are converted outside the shell. Messenger and WhatsApp
    send GIFs as short videos, which the panel used to decode inside the shell.
    The helper now turns them into an animated preview with optional ffmpeg,
    in its own process and within time, size, and memory limits; clicking one
    opens the original video. Without ffmpeg they show Open video. Other
    video already opened in your video player.
  • Copied text no longer appears in process arguments. Copying a message or
    code sends it to wl-copy on standard input.
  • Bounded panel state. A thread keeps its newest 1,000 messages, each
    service its newest 1,000 conversations, and a message shows at most four copy
    chips. The helper limits message text, names, reactions, identifiers, list
    sizes, the new-conversation contact list, and the size of each reply or event.
  • Messenger disappearing messages are not kept. Disappearing and view-once
    messages show a placeholder, and their text and media are not stored, as on
    WhatsApp.
  • Messenger file names cannot choose how a file opens. Cached media gets a
    file extension from a fixed list of image, audio, and video types.
  • WhatsApp status updates are no longer chats. Status and story broadcasts
    were read as an ordinary conversation from live messages and phone history.
    Both routes now skip them, and a status conversation saved by an earlier
    release is removed with its messages and media on upgrade.
  • Reading older messages stays put. Jumping up in a thread right after the
    panel reopened could snap the view back to the newest message, and later
    refreshes kept forcing it there.
  • The in-panel helper build is safe on any plugin filesystem. The build
    already staged outside the watched plugin folder
    (#1). It now syncs the
    helper to disk before the final rename, stages on the filesystem of the
    helper's own folder (which may differ from the plugin's), and removes partial
    helpers that releases before 0.5.0 left in bin. If neither the hidden
    folder beside the plugin nor the cache folder shares that filesystem, the
    build stops with an explanation before writing anything in the plugin,
    instead of copying the helper in where a shell reload could interrupt it. A
    cache folder inside the plugin, including through a symlink, is never used
    or created.
  • Typing after a restored draft lands at its end. When the panel filled in
    a draft, a returned attachment caption, or an emoji search, the cursor
    stayed at the start, so the next keystroke went before the text. Assigned
    text now leaves the cursor at the end, as it did before 0.5.2.
  • Opening the panel without a chat selected starts at the conversation
    list,
    as documented, and moves to search only when the list is empty.
  • The panel waits for an up-to-date helper before showing content. After
    an update, the previous release's helper keeps running until it is rebuilt,
    and it sends original profile photos and uses them as notification icons.
    The panel now shows conversations, messages, media, and alerts only from a
    helper that confirms it sends its own previews, and asks for a rebuild
    otherwise. Status and settings keep working.
  • Theme colors work on Qt 6.12. Qt 6.12 added its own Color type, which
    took the place of the Omarchy theme's Color in OmaChat's files, so the
    panel's theme colors were missing. OmaChat now names the theme's Color
    explicitly, as Omarchy's own shell code does.

Changed behavior

  • Building the helper requires Go 1.27.2 or newer. Go 1.27.2 fixes
    GO-2026-6611, excessive CPU use when
    a malicious HTTP/2 server sends many small flow-control changes; the helper
    talks HTTP/2 to Google, WhatsApp, and Meta servers. The panel's
    Build helper action and the Makefile set GOTOOLCHAIN=local, so there an
    older Go stops with an error instead of downloading a newer toolchain. A
    direct go command without that setting may fetch one under Go's defaults.
    Arch Linux ships Go 1.27.2; run your normal Omarchy update before rebuilding
    if your Go is older.

  • Inline previews are at most 1280 pixels on the long side. Animated GIFs keep
    moving up to 500 frames and 1024 pixels on a side; larger ones show their
    first frame.

  • GIF-style clips preview up to 8 seconds at 480 pixels, looping.

  • Loading older messages stops after 1,000 messages in a thread; older history
    remains in the service's own apps.

  • Signal attachments over 32 MiB are not downloaded into OmaChat, and Signal
    stories are not fetched. When a Signal message is deleted, expires, is
    view-once, or leaves the 500-message store, OmaChat also deletes the helper's
    previews and signal-cli's saved copy of its media.

  • Google Messages group creation first asks the phone for the recipients'
    conversation and creates a named RCS group only when the phone requires one.

  • golang.org/x/image v0.45.0 is vendored for WebP decoding and scaling. It
    needs exactly the golang.org/x/sys and golang.org/x/text versions already
    vendored, so no other dependency changes.

Credits

Thank you to Andrew Birklid for Signal support and conversation creation, to
Matthias MB for the WhatsApp status filter and formatting fixes, to
HANCORE-linux for identifying the PNG text-chunk exhaustion, and to
@ozz1ee-dev for the build-loop report. Their commits keep their original
authorship. Claude implemented the integration, its fixes, and its tests, and
Codex audited the routes from remote content into the shell and reviewed the
work. Alex Vlissidis, Marc Ford, and upstream contributors retain their
existing attribution. See full credits.

Verification and limits

Checked October 18, 2026 on Arch Linux with Go 1.27.2, Quickshell 0.3.2,
Qt 6.12.0, and the Omarchy 4.0.5 package, from an isolated copy of the release
with its own go.mod and invented data. No real account, message, pairing, or
package installation was used. Before the machine's Go was updated, Go 1.27.0
stopped with "go.mod requires go >= 1.27.2" in the in-panel build, make, and
a direct build, and wrote no helper. With Go 1.27.2, a test copy requiring an
unreleased 1.27.3 stops the same way in make helper and make test.

  • gofmt, go vet, make lint, make helper (the stamped in-panel build),
    and an offline -mod=vendor build are clean.
  • The full Go suite passes (549 top-level tests, 625 including subtests), as do
    the Google Messages client fixtures, and the whole suite passes again under
    -race. Two Signal tests skip by design: one needs an installed
    signal-cli, and one only runs as a child process of another test.
  • 63 Python tests pass on the release's own tree, including a real
    two-filesystem helper build watched with inotify. The 77 Node model tests
    pass on Windows with Node 24.22; one of them calls the Python checksum
    generator, which needed a temporary python3 alias there.
  • The headless QML subset passes: 18 isolated fixtures plus an isolated ...
Read more

OmaChat v0.5.5

Choose a tag to compare

@onelegdave onelegdave released this 12 Oct 20:11

This release keeps desktop notifications working while you update to the
notification privacy change from v0.5.4. It includes
everything in v0.5.4.

Fixed

OmaChat's background service in the shell stays loaded across plugin updates
and keeps running the previous release's code until the shell restarts. That
code ignores a helper configuration without the old notification preview
setting. On v0.5.4, rebuilding the helper after updating, without restarting
the shell, therefore stopped all notifications until the next restart. The
helper now always reports previews as off, so the old code keeps working until
the shell restarts.

The documentation now says when previews stop after updating: when you rebuild
the helper, which the panel asks you to do, or when the shell next restarts. The
README
also adds a shell restart to the steps for switching to or from the
notification-previews branch.

Notification previews (removed in v0.5.4)

Alerts read only "OmaChat · service" and "New message". The optional sender
and message preview setting was removed because Omarchy's notification history
passes alert text on a bash command line that other local accounts can read
through /proc. The README explains what was removed, why, and how to use the
unlisted notification-previews branch if you accept that risk.

Clipboard protections from v0.5.1 and v0.5.2, attachment limits from v0.5.3,
contributor features from v0.5.0, vendored dependencies, account storage, and
dependency-installation choices are unchanged.

Credits

Thank you to HANCORE-linux for identifying the notification exposure. Andrew
Birklid, Alex Vlissidis, Matthias MB, ozz1ee-dev, Marc Ford, and upstream
contributors retain their existing attribution and original authorship. Claude
provided the correction and verification. See full credits.

Verification and limits

The full Go tests, Google Messages client fixtures, race checks, vet, and native
plugin validation pass. The UI gate passes 73 Node tests, 46 Python tests, and
18 isolated headless QML fixtures, and the native notification fixture passes.
A new Go test checks that the helper's configuration keeps the fields earlier
panel services require. The v0.5.3 panel code was also run against the
helper's configuration: it rejects the v0.5.4 configuration and accepts v0.5.5.

Live desktop alerts from real conversations were not part of this verification.
UI checks use installed Qt 6.11.2.

Update and Marketplace

omarchy plugin update onelegdave.omachat

This release changes the Go helper. Rebuild it with the panel's Build helper
action when prompted. Existing paired accounts and settings are retained; no
re-pairing or automatic dependency installation is needed. No executable is
shipped in Git.

The open Marketplace update request now targets this release commit, replacing
v0.5.4. Fresh exact-commit checks and a complete maintainer review are required;
the existing verified snapshot remains in place until the Marketplace publishes
the update.

OmaChat v0.5.4

Choose a tag to compare

@onelegdave onelegdave released this 12 Oct 20:01

This release keeps conversation names and message text out of desktop
notifications, following
Marketplace review by HANCORE-linux.

Removed: notification previews

What was removed. The optional Show sender and message previews setting
is gone. It was off by default; when it was on, alerts showed the conversation
name and the start of the message. Alerts now always read "OmaChat · service"
and "New message". Contact photos still appear as the alert icon, and clicking
an alert still opens its conversation.

Why. Omarchy's notification service saves each alert to its history by
starting a bash command with the whole notification, text included, as a
command-line argument. Any account on the same computer, including system
service accounts, can normally read other processes' command lines through
/proc, so previews could be read by someone other than you. OmaChat cannot
control what a notification service does with alert text, so it no longer sends
names or message text at all.

If you still want previews. The
notification-previews
branch is this release with the setting restored, still off by default. It is
not part of the Marketplace listing or its review. Use it only if you accept
that other accounts on your computer may be able to read your message previews.
The README
explains how to switch to it, update it, and switch back.

Changes

  • Alerts send only the service name and "New message" to the notification
    service. The panel no longer sends conversation names to the helper for
    alerts.
  • If you had previews on, they stop when you rebuild the helper or the shell
    next restarts. After a shell restart, the panel tells a helper that has not
    been rebuilt to turn them off before it sends any alert. The rebuilt helper
    deletes the saved setting.

Correction: these notes first said previews stop before the helper is
rebuilt. OmaChat's panel service stays loaded across plugin updates, so the
new panel code only runs after a shell restart. Rebuilding the helper on
v0.5.4 without restarting the shell also stopped all notifications until the
next restart. v0.5.5 fixes that; use v0.5.5 instead.

  • The pairing QR link now reaches qrencode on standard input instead of its
    command line.

Clipboard protections from v0.5.1 and v0.5.2, attachment limits from v0.5.3,
contributor features from v0.5.0, vendored dependencies, account storage, and
dependency-installation choices are unchanged.

Credits

Thank you to HANCORE-linux for identifying the notification exposure. Andrew
Birklid, Alex Vlissidis, Matthias MB, ozz1ee-dev, Marc Ford, and upstream
contributors retain their existing attribution and original authorship. Claude
provided the correction and verification. See full credits.

Verification and limits

The full Go tests, Google Messages client fixtures, race checks, vet, and native
plugin validation pass. The UI gate passes 73 Node tests, 46 Python tests, and
18 isolated headless QML fixtures, and the native notification fixture passes.
New tests cover:

  • Generic alert text for every service, even when the panel sends a name and
    message text.
  • Deletion of the saved preview setting.
  • An outdated helper with previews on: no alerts until it confirms previews
    are off.
  • qrencode receiving the exact pairing link on standard input, with nothing
    from the link in its arguments.

Live desktop alerts from real conversations were not part of this verification.
UI checks use installed Qt 6.11.2.

Update and Marketplace

omarchy plugin update onelegdave.omachat

This release changes the Go helper. Rebuild it with the panel's Build helper
action when prompted. Existing paired accounts and settings are retained; no
re-pairing or automatic dependency installation is needed. No executable is
shipped in Git.

The open Marketplace update request now targets this release commit. Fresh
exact-commit checks and a complete maintainer review are required; the existing
verified snapshot remains in place until the Marketplace publishes the update.

OmaChat v0.5.3

Choose a tag to compare

@onelegdave onelegdave released this 12 Oct 16:03

This release closes an attachment-download limit bypass found during
Marketplace review by HANCORE-linux.

Changes

  • WhatsApp and encrypted Messenger downloads enforce the 25 MiB limit while
    writing, including the optimized copy route used by the protocol library.
    Previously, an attachment with understated size metadata could write past
    the limit before hash verification and fill the disk.
  • Retry overwrites, in-place decryption, positional writes, and truncation remain
    supported within the limit. Negative and overflowing offsets are refused.
  • Messenger profile images receive the same protection at their existing 5 MiB
    limit. Oversized old attachment-cache files are refused without deletion.
  • Bounded download failures do not publish a partial file. Vendored hash,
    decryption, and cancellation behavior remains intact.

See download safety and tests.

The clipboard corrections from v0.5.1 and v0.5.2, contributor features from
v0.5.0, vendored dependencies, account storage, and dependency-installation
choices are unchanged. No QML or JavaScript changed in this release.

Credits

Thank you to HANCORE-linux for identifying the bypass. Andrew Birklid, Alex
Vlissidis, Matthias MB, ozz1ee-dev, Marc Ford, and upstream contributors retain
their existing attribution and original authorship. Codex provided the
correction; Codex and Claude provided reviews and verification. See
full credits.

Verification and limits

The full Go tests, Google Messages client fixtures, race checks, vet, and native
plugin validation pass. The UI gate passes 72 Node tests, 46 Python tests, and
17 isolated headless QML fixtures. Four isolated native Wayland fixtures also
pass: shell, review, unified inbox, and emoji inbox.

New Go tests run the actual vendored download and decryption code against an
offline fixture server. They cover exact-limit encrypted data, invalid hashes,
understated or absent size metadata, continuous streams, retry overwrites,
cancellation, file-growth methods, and backend cleanup. Restoring the old copy
bypass makes the new regressions fail.

Live WhatsApp and Messenger attachment downloads were not part of this
verification, and Google Messages live acceptance remains deferred. UI checks
use installed Qt 6.11.2, not Qt 6.12.0.

Update and Marketplace

omarchy plugin update onelegdave.omachat

This release changes the Go helper. Rebuild it with the panel's Build helper
action when prompted. Existing paired accounts and settings are retained; no
re-pairing or automatic dependency installation is needed. No executable is
shipped in Git.

The open Marketplace update request now targets this release commit. Fresh
exact-commit checks and a complete maintainer review are required; the existing
verified snapshot remains in place until the Marketplace publishes the update.

OmaChat v0.5.2

Choose a tag to compare

@onelegdave onelegdave released this 12 Oct 06:15

This release completes the clipboard fix from v0.5.1. Marketplace review found
that Qt itself still read the clipboard in the background, without any paste.
Thank you to
HANCORE-linux for the report
and for suggesting the approach.

Highlights

  • Text fields no longer read the clipboard when it changes. Through Qt 6.12.0,
    every editable Qt text field read the whole clipboard on each change to
    decide whether paste was possible
    (QTBUG-149610, fixed
    for Qt 6.12.1). OmaChat's fields now use an editor that only checks which
    formats are offered.
  • Fields look and behave as before: Return sends or confirms, Tab moves focus,
    long text scrolls, length limits apply while typing, and input methods are
    still supported.
  • The Telegram API hash field is a read-only masked field that handles typing
    itself, so it skips the background read too.
  • Every paste still goes through the bounded reader from v0.5.1: 64 KiB and
    1.5 seconds at most.

See clipboard safety for the
Qt details and test coverage.

Credits

HANCORE-linux is credited for the report and the suggested approach.
Contributor credits from v0.5.0, Marc Ford's MIT attribution, and vendored
notices are unchanged. Codex and Claude provided the fix, reviews, and
verification. See full credits.

Verification and limits

Go, race, vet, and plugin validation checks pass, along with 72 Node tests, 46
Python tests, and 17 isolated headless QML fixtures. A new fixture covers field
behavior and checks that no OmaChat field contains an editable TextInput. On a
live Hyprland desktop with Qt 6.11.2, an 8 MB clipboard change made a plain Qt
text field read 8,000,208 bytes, while OmaChat's text field read 200 and the
password field 24. That probe used a large finished transfer, not an endless
stream, and did not run on Qt 6.12.0, whose handler code is the same.

Update and marketplace

omarchy plugin update onelegdave.omachat

Rebuild the helper with the panel's Build helper action if prompted. The
helper code is unchanged, settings and paired credentials are retained, and no
re-pairing is needed. No dependency is installed automatically and no
executable is shipped in Git.

The open Marketplace update request now targets this release commit. Fresh
exact-commit checks and a complete maintainer review are required; the existing
verified snapshot remains in place until the Marketplace publishes the update.

OmaChat v0.5.1

Choose a tag to compare

@onelegdave onelegdave released this 11 Oct 06:24

This release fixes a clipboard resource-exhaustion issue found during
Marketplace review of v0.5.0. Thank you to
HANCORE-linux for the report.

Highlights

  • Every editable field now pastes through a bounded reader that runs outside
    the shell. Qt's native Wayland paste read the whole clipboard before field
    limits applied, so a hostile clipboard provider could stall the shell or
    exhaust its memory.
  • Ctrl+V, Shift+Insert, the context menu, and middle-click PRIMARY paste use
    wl-paste with a 64 KiB limit and a 1.5-second deadline. Failed, oversized,
    or stale pastes leave the field unchanged. Typing, selection, copy, and
    undo/redo work as before.
  • The composer and attachment captions keep pasted line breaks; other fields
    turn them into spaces.
  • The dependency checklist now checks wl-paste as well as wl-copy; both come
    from the existing wl-clipboard dependency.

See clipboard safety for entry points, limits, and
test coverage.

Credits

HANCORE-linux is credited for the report. Contributor credits from v0.5.0, Marc
Ford's MIT attribution, and vendored notices are unchanged. Codex and Claude
provided the fix, reviews, and verification. See full credits.

Verification and limits

Go, race, vet, and plugin validation checks pass, along with 72 Node tests, 46
Python tests, and 16 isolated headless QML fixtures. Hostile-provider fixtures
cover infinite streams, stalls, slow trickles, forked provider children, and
forced reader death. The UI fixtures use Qt's offscreen backend and a fake
wl-paste. A foreign streaming provider was not reproduced against Qt 6.12 on
a live Wayland desktop.

Update and marketplace

omarchy plugin update onelegdave.omachat

Rebuild the helper with the panel's Build helper action if prompted. The
helper code is unchanged, settings and paired credentials are retained, and
no re-pairing is needed. No dependency is installed automatically and no
executable is shipped in Git.

The v0.5.0 Marketplace update request now targets this release commit. Fresh
exact-commit checks and explicit maintainer approval are required; the
existing verified snapshot remains in place until the Marketplace publishes
the update.

OmaChat v0.5.0

Choose a tag to compare

@onelegdave onelegdave released this 10 Oct 05:18

OmaChat v0.5.0

Highlights

  • Optional unified inbox combines enabled services while preserving provider
    identity, message routing, and drafts. It defaults off. Its status badge
    summarizes enabled services, including a count when some are offline.
  • Configurable keyboard navigation and bundled offline emoji search, with
    optional search-text retention.
  • Bounded WhatsApp history with cached paging, older phone-page requests,
    recoverable migration, contact identity aliases, and profile photos.
    History defaults to 128 MB; photo and message availability depends on the phone.
  • Conversation restoration, sidebar controls, desktop notifications, Telegram
    photos, and optional automatic pop-out opening.
  • Empty-thread unread and Messenger read-state fixes; helper builds work without
    Git metadata and stage completed artifacts outside watched plugin source.
  • Fresh fictional screenshots and expanded in-app contributor credits.

Thank you

  • Andrew Birklid (@tumbleweedlabs): #2,
    #3,
    #5, and
    #7 for unread/read-state fixes,
    Git-independent builds, and automatic pop-out.
  • Alex Vlissidis (@alexvlis): #8
    for conversation restoration, sidebar controls, notifications, Telegram photos,
    and scrolling to the latest messages on reopen.
  • Matthias MB (@Hizoul): selected original work from
    #9 for keyboard and emoji UX,
    WhatsApp history/photos, and the optional unified inbox. Shared changes on
    that combined branch remain credited to their original authors above.
  • @ozz1ee-dev: build-loop reproduction and staging discussion.

Original contributor authorship, Marc Ford's MIT attribution, and vendored
licenses/notices are retained. OneLegDave remains the maintainer. Codex provided
integration, fixes, and verification; historical Claude assistance remains
acknowledged. See full credits.

Verification and limits

The maintainer reports successful fresh-install use with Google Messages
disabled. Google Messages was not exercised in this acceptance pass. Automated
fixtures and demonstration screenshots do not establish every live provider
or recovery scenario. The All-tab connection correction has dedicated model
and native-panel checks.

Signal (#4) and new conversation
creation (#6) remain separate reviews
and are not features of this release.

Update and marketplace

Update through the native plugin updater:

omarchy plugin update onelegdave.omachat

Rebuild the helper with the panel's Build helper action after updating, then
restart the shell if prompted. Existing settings and paired credentials are
retained; this release does not require deliberate re-pairing. WhatsApp history
migrates separately from its device credentials and is bounded to the configured
cache size. The optional unified inbox stays off unless enabled in Settings.

The helper continues to build locally from vendored source. No executable is
shipped in Git, no dependency is installed automatically, and the shell owns
the helper process. Daily release checks, unified inbox, and automatic pop-out
remain opt-in.

Fresh marketplace compatibility/security checks and explicit maintainer
approval must cover the final public commit. Previous marketplace approval
does not cover this release. The existing verified snapshot remains in place
until the Marketplace approves and publishes the update.

OmaChat v0.4.4

Choose a tag to compare

@onelegdave onelegdave released this 18 Sep 23:43

OmaChat v0.4.4

This release removes GIPHY search to meet the Omarchy marketplace security
review. Local GIF attachments are unchanged.

Highlights

  • Remove in-app GIPHY search from Google Messages, WhatsApp, and Messenger.
    GIPHY accepts its API key only as a URL query parameter, and the marketplace
    review does not accept credentials in request URLs.
  • Remove the GIPHY API key field from Settings and the gifSearch,
    gifFetch, and setGiphyKey helper methods.
  • Delete a giphyApiKey left in config.json by an earlier release when the
    helper starts, so no unused third-party credential remains on disk.
  • Keep sending GIF files from your computer on Google Messages, WhatsApp
    (ffmpeg), and Messenger, and keep inline GIF playback.

Update

omarchy plugin update onelegdave.omachat

Open OmaChat after updating and select Rebuild helper when prompted. The
helper is built locally from vendored source. No dependency is installed
automatically. This release does not require re-pairing.