Repository navigation
Releases: onelegdave/omachat
Release list
OmaChat v0.6.2
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.omachatThen 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.2andomarchy 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
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.omachatThen 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
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. Ifsignal-cliis missing, OmaChat asks before opening a terminal
that runs the fixedyay -S --needed signal-clicommand, 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 optionalffmpeg,
in its own process and within time, size, and memory limits; clicking one
opens the original video. Withoutffmpegthey 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 towl-copyon 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 inbin. 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
Colortype, which
took the place of the Omarchy theme'sColorin OmaChat's files, so the
panel's theme colors were missing. OmaChat now names the theme'sColor
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 setGOTOOLCHAIN=local, so there an
older Go stops with an error instead of downloading a newer toolchain. A
directgocommand 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/imagev0.45.0 is vendored for WebP decoding and scaling. It
needs exactly thegolang.org/x/sysandgolang.org/x/textversions 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=vendorbuild 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 temporarypython3alias there. - The headless QML subset passes: 18 isolated fixtures plus an isolated ...
OmaChat v0.5.5
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.omachatThis 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
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
qrencodeon 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. qrencodereceiving 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.omachatThis 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
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.omachatThis 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
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.omachatRebuild 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
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-pastewith 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-pasteas well aswl-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.omachatRebuild 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
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.omachatRebuild 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
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, andsetGiphyKeyhelper methods. - Delete a
giphyApiKeyleft inconfig.jsonby 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.omachatOpen 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.