Repository navigation
Releases: HANCORE-linux/OmaQ
Release list
v1.2.0
OmaQ 1.2.0 lets you write right after adding a contact: the message waits until the encrypted session is ready. omaq-connect, the terminal client, now lets you answer messages, shows edits and deletes, and manages your identity.
Features
- Messages wait for the secure session: a direct message written right after adding a contact, before the encrypted session exists, waits and goes out once the session is ready, in the bar and in the terminal client. If no session forms within 5 minutes, the message shows
No secure session yet; message not sent(#64). - Replies in the terminal client:
- Press
Ctrl+Ror type:reply, choose a message with↑and↓, and pressEnter. ↩ Reply:above the input line shows what you answer, andEscdrops it.- Your friend sees the quote as in the bar, and replies you receive start with
↩and the quoted text (#64).
- Press
- Edits and deletes appear right away in the terminal client, as in the bar (#64).
- Identity in the terminal client:
:identityshows whether your identity has a passphrase.:identity protectandunprotectset or remove it. A new passphrase is entered twice and shows as dots.:identity exportsaves your identity bundle, by default in~/Downloads.validatechecks a bundle, andimportmakes it your identity.- Every change asks
y/nright before it acts (#64).
Improvements
- Replacing an identity passphrase always requires the current one, in the bar and in the terminal client (#64).
- In the terminal client, an identity export replaces an existing file only after you agree (#64).
- In terminals that do not mark pasted text, the terminal client asks you to press
escafter a passphrase, so a pasted second line never reaches a chat (#64). - After an identity import or recovery,
:quitin the terminal client and the uninstaller still stop the running helper. If OmaQ cannot update its runtime file, for example on a full disk, the bar and the terminal client say so (#64). - The bar explains when Protect is unavailable because a passphrase is already set (#64).
Documentation
- The user guide covers replies,
:identity, and messages that wait for the session (#64).
Upgrading
- Update with
~/.config/omarchy/plugins/hancore.omaq/scripts/update-omaq.sh --yes. - Terminal-only setups: run
omarchy plugin enable hancore.omaqbefore updating. - Do not use
omarchy plugin update. New installations follow the README. - This release changes the helper, the bar and the terminal client. The protocol stays at 16.
Full changelog: v1.1.2...v1.2.0
v1.1.2
OmaQ 1.1.2 keeps the local paths of the files you send out of your chat messages.
Improvements
- In omaq-connect,
UpandDownrecall only your text messages. Files and images you sent are skipped, so their local path never appears in the input line (#63). - In the bar, the
Eshortcut edits only text messages, like the Edit button (#63).
Upgrading
- Update with
~/.config/omarchy/plugins/hancore.omaq/scripts/update-omaq.sh --yes. - Terminal-only setups: run
omarchy plugin enable hancore.omaqbefore updating. - Do not use
omarchy plugin update. - This release changes the terminal client and the bar's chat page. The helper and its protocol are unchanged (Protocol 16).
Verification
- The Arch headless CI passed for PR #63 and for the release commit on
main. - Locally, the release passed
make test,make helper,make arch, the no-Signal build, phase 2, the checks of phase 8,qmllint, plugin validation and shellcheck, plus the terminal client's 110 unit tests. - New tests press
Upafter sending a file and an image in the terminal client, andEon a sent file and image in the bar's real chat page, in direct and group chats. Both fail on 1.1.1 and pass on 1.1.2. - A live test between two machines confirmed that
Upoffers only text messages after a file transfer, and that no local path reached the other side.
Full changelog: v1.1.1...v1.1.2
v1.1.1
OmaQ 1.1.1 polishes file transfers in omaq-connect, the terminal client.
Improvements
:cancelfilestops a transfer in either direction: a file you send or a file you receive (#62).- The receiving line shows
:cancelfile, like the sending line (#62). - Transfer lines stay at the bottom of the chat while you scroll (#62).
- Files over 8 MiB get a clear message before sending:
Files can be at most 8 MiB(#62).
Upgrading
- Update with
~/.config/omarchy/plugins/hancore.omaq/scripts/update-omaq.sh --yes. - Terminal-only setups: run
omarchy plugin enable hancore.omaqbefore updating. - Do not use
omarchy plugin update. - This release changes only the terminal client. The helper and its protocol are unchanged (Protocol 16).
Verification
- The Arch headless CI passed for PR #62 and for the release commit on
main. - Locally, the release passed
make test,make helper,make arch, the no-Signal build, phase 2, the checks of phase 8,qmllint, plugin validation and shellcheck, plus the terminal client's 109 unit tests. - A live transfer between two machines confirmed the receiver's
:cancelfile, the transfer lines staying visible while scrolling, and the size message.
Full changelog: v1.1.0...v1.1.1
v1.1.0
OmaQ 1.1.0 refines omaq-connect, the terminal client: it follows your Omarchy theme live, picks files from a list, and shows who is online right in the chat.
Features
- Live theme: the terminal client follows Omarchy theme changes within about a second, without a restart (#61).
- File list for
:sendfile:- Press
Tabafter:sendfile ~/to open a list of folders and files above the input line. - Typing filters the list,
Tabopens a folder,←goes back, andEntertakes a file into the line. - The next
Entersends the file (#61).
- Press
- Presence in the chat: chat headers and the tab strip show each friend with the same dot as the friends bar: green when online, amber when away, gray when offline. An online friend's name stands out in the theme's foreground color (#61).
- Readable in every theme: every text color keeps at least a 4.5:1 contrast against the terminal background (WCAG AA) and keeps the theme's hue (#61).
Improvements
- In narrow panes, transfer lines wrap, so the progress bar, the file size and commands such as
:cancelfilestay complete (#61). - Files whose names contain spaces or quotes, or start with
~, are sent exactly as picked (#61). - Missing, unreadable or deleted folders, and paths that are not valid UTF-8, show a clear message (#61).
- A theme that is briefly unreadable keeps the previous colors until a readable theme appears (#61).
- Long names in narrow headers end cleanly at the pane edge (#61).
Documentation
- The user guide covers the file list and the presence dots (#61).
- The terminal-client stage documents the contrast rule (#61).
Upgrading
- Update with
~/.config/omarchy/plugins/hancore.omaq/scripts/update-omaq.sh --yes. Theomaq-connectcommand from 1.0.0 stays in place. - Terminal-only setups: run
omarchy plugin enable hancore.omaqbefore updating. - Do not use
omarchy plugin update. New installations follow the README. - This release changes only the terminal client. The helper and its protocol are unchanged (Protocol 16).
Verification
- The Arch headless CI passed for PR #61 and for the release commit on
main. - Locally, the release passed
make test,make helper,make arch, the no-Signal build, phases 2 and 8,qmllint, plugin validation and shellcheck, plus the terminal client's 106 unit tests.
Full changelog: v1.0.0...v1.1.0
v1.0.0
OmaQ 1.0.0 is the first stable release. It adds omaq-connect, a terminal client that runs beside the bar plugin or on its own, with the same identity, contacts and history.
| Bar plugin | Terminal client |
|---|---|
![]() |
![]() |
Features
- Terminal client:
omaq-connectopens OmaQ chats in any terminal, beside the bar or without it (#60). - Split panes, receipts, typing state and day dividers (#60).
- Invitations and friend requests with safety codes:
:invite,:redeem,:requests,:accept(#60). - File transfer with progress:
:sendfile,:acceptfile,:cancelfile(#60). - Emoji shortcuts and a picker (
Ctrl+K),:nickname, and:helpwith every command and key (#60). - Terminal-only use: with the bar plugin disabled, the client starts the helper itself (#60).
- Helper events for file progress, incoming transfer status and request decisions; Protocol stays 16 (#60).
install.shcreates~/.local/bin/omaq-connect, and the uninstaller removes it (#60).
Fixes
- The reaction picker pages through all 22 reactions in DirectChat and GroupChat (#57).
- Long messages stay scrollable in the composer, with the cursor in view (#57).
- Icons load from the packaged Material Symbols font, which addresses one cause of #55 (#57).
- Pasted invitation links redeem with surrounding whitespace, closing #58 (#59).
- A transfer that follows a canceled one starts cleanly (#60).
- An incoming file that cannot be saved ends with an error instead of a waiting offer (#60).
Documentation
- The README shows the bar plugin and the terminal client side by side (#60).
- The user guide covers every terminal command and key (#60).
- The repository has a preview image (#54).
Upgrading
- Update with
~/.config/omarchy/plugins/hancore.omaq/scripts/update-omaq.sh --yes. - Then create the terminal command once with
~/.config/omarchy/plugins/hancore.omaq/cli/omaq.py --link. - Terminal-only setups: run
omarchy plugin enable hancore.omaqbefore updating. - Do not use
omarchy plugin update. New installations follow the README.
Verification
- The Arch headless CI passed for PR #60 and for the release commit on
main. - Locally, the release passed
make test,make arch, the no-Signal build, phases 2 and 8,qmllintand plugin validation, plus the terminal client's unit and end-to-end tests.
Full changelog: v0.9.0-beta.2...v1.0.0
v0.9.0-beta.2
v0.9.0-beta.2
OmaQ v0.9.0-beta.2 is a reliability prerelease covering all changes since v0.9.0-beta.1. It fixes live nickname updates, group invitations, receipts, and image sending, and adds non-deleting source-update archival and pinned Arch continuous integration (CI).
Changes since beta.1
- Fixed DirectChat name updates that previously needed another message or panel refresh.
- Added native nickname updates for existing groups. Partial updates keep the saved profile and show a warning; retrying the same name sends again.
- Restored pending group invitations after a same-helper status refresh and wrapped long invitation errors instead of truncating them.
- Fixed live group receipts without downgrading Read. A
|now separates inline receipts from their timestamp. - Added a visible Send image action beside selected or dropped image previews, preserving drag-and-drop. Sending is disabled when attachment support is unavailable.
- Added non-deleting source archival: eight active trees and up to 56 archived trees, with bounded validation before archival. The preserving uninstaller offers archive removal as a separate, default-No choice.
- Added digest-pinned Arch CI, a commit-pinned checkout action, read-only permissions, and an unprivileged test account.
- Expanded helper, QML, and updater regressions for live names, partial saves/sends, invitations, receipts, image sending, and archival.
- Illustrated invite conflicts in the user guide and shortened the README without changing project policy.
Install or update
For a new installation, acquire the plugin before building and enabling its helper:
omarchy plugin add https://github.com/HANCORE-linux/OmaQ.git --yes &&
~/.config/omarchy/plugins/hancore.omaq/install.sh --yesFor an existing installation, use only the supported updater:
~/.config/omarchy/plugins/hancore.omaq/scripts/update-omaq.sh --yesThese commands follow current canonical main, not a fixed beta.2 snapshot. Do not use omarchy plugin update, including its all-plugins form. The updater performs its own shell-off transaction; do not force helper replacement when activation reports update-pending or active_groups. Keep memberships intact until you separately decide how to resolve them before retrying activation.
See the installation and update guide for lifecycle details.
Validation evidence
The required Arch headless suite passed in PR #53 CI for d0ee97f668758f0beddc5bf063c314a771219e5b and in main CI for the release commit 687308636b1fb6fa37b583ed7a2a803f6f5ec493. Independent cumulative review found no remaining actionable findings in the metadata/documentation change.
The earlier live-name implementation passed full make test, local make test-ci, phase 3, helper hardening, architecture, plugin, no-Signal, and focused QML checks. It also passed independent cumulative review. The final release-preparation PR changed only metadata and documentation, leaving that runtime code unchanged.
On 3dbbffc4a898491b57429ef9708394ea14ba9e34, the maintainer confirmed these native two-machine checks without status requests, extra messages, or reopening as name-refresh triggers:
- Immediate DirectChat name refresh in both directions without a panel or chat refresh
- Existing GroupChat sender labels in one direction, an open member list in the other, and typing after renames in both directions
- Member → Admin → Member projection, leave/reinvite, a fully readable long invite error, and no duplicate group after acceptance
Earlier accepted implementation snapshots confirmed pending-invite status replay, group read receipts, Read by 1 | timestamp, image preview, drag-and-drop, and the visible image-send action. Attachment-decline feedback also passed on an earlier snapshot, at the UI level only. Earlier checks confirmed direct/two-peer group messaging, post-acceptance Tox safety-code comparison, a byte-identical received file, real microphone/speaker operation, and separate-network use, not the complete network matrix.
Earlier automated runs failed a phase-3 post-kick cleanup assertion and an emoji-test process lookup with ProcessLookupError. Full reruns passed; the causes remain unresolved. make test-ci excludes native Quickshell/Omarchy fixtures and does not replace make test or native acceptance.
The final metadata/documentation change passed static manifest, JSON/YAML, Markdown, command-syntax, and whitespace checks. Its fresh CI runs are listed above; the full local runtime suite and native checks were not repeated for that change.
Compatibility and remaining limits
- Protocol 16 and Protocol 14/15 compatibility remain unchanged. The helper remains authoritative; accepted group-name sends are not acknowledgements from every peer.
- Signal Double Ratchet protection applies to direct text messages, not files, calls, or group traffic. Direct messages never fall back to plaintext.
- Calls remain DirectChat-only. Local call teardown cannot guarantee peer receipt after network loss.
- Native different-claimant invite conflicts, three-peer groups, and mixed-recipient attachments require an isolated third identity and remain untested. Attachment fault-injection and remaining separate-network/display checks also remain open.
- Multi-monitor acceptance remains unavailable without suitable hardware. Native search-label refresh and renames during an already-active typing indication were not separately tested.
qmllint Panel.qmlcan exit 255 without diagnostics; the supported QML lint targets and runtime fixtures passed on the implementation snapshot.- Packaging and AUR publication remain paused. Licensing and project policy are unchanged; see third-party notices.
v0.9.0-beta.1
v0.9.0-beta.1
OmaQ v0.9.0-beta.1 is a reliability and security prerelease for invite-only chat in the Omarchy bar. It introduces Protocols 15 and 16, a supported Omarchy installation lifecycle, and stricter request correlation for destructive and call-control actions.
Highlights
- Added the normal Omarchy plugin installation path with helper build, delayed enablement, IPC readiness checks, and verified available/running helper hashes.
- Added a preserving uninstaller that keeps private data by default and never removes dependency packages automatically.
- Added Protocol 15 fail-closed call teardown with request correlation, controller leases, IPC-loss handling, terminal replay, and confirmed local media and ToxAV shutdown.
- Shows the requester's Tox-identity safety code before accepting a direct request, reports another valid claimant for the same invitation, and revokes the invitation on decline. The code authenticates the Tox identity only and does not authenticate the Signal Ratchet layer.
- Made DirectChat and GroupChat Clear Chat immediate, capability-gated, request-correlated, and fail-closed across persistence, storage, and reload failures.
- Added live DirectChat and GroupChat name refresh from native Tox name events.
- Kept successful invitation redemption feedback visible until the user edits the field again.
- Added per-conversation Pop up: On/Off controls and removed the visible drag glyph without changing movement or geometry persistence.
- Added reproducible bundled-asset provenance, pinned checksums, and complete license records.
- Removed the retired notification clip and made Knock the default and fallback notification.
- Published a non-license-restricting project policy for lawful use, truthful authority responses, project independence, reseller arrangements, and a single public codebase without special builds.
- Added focused public issue forms for bugs, lifecycle problems, and feature requests, with private GitHub Security Advisories for vulnerabilities.
Security and compatibility
- Direct text messages continue to require the Signal Double Ratchet and never fall back to plaintext.
- Protocol 14 retains its legacy Clear Chat behavior; Protocol 15 negotiates correlated Clear Chat through
historyClear: 2; Protocol 16 adds key-bound direct-request fingerprints and conflict projection while retaining Protocol 15 helper compatibility. - Clear Chat and call-control actions are never queued for reconnect.
call.stoppedis the authoritative local call terminal result. Network loss can prevent a peer from receiving cancellation, so no peer-receipt guarantee is claimed.- The helper remains authoritative for transport, protocol, persistence, permissions, and domain rules.
- Identity, Ratchet state, group metadata, and local history remain local and are not part of source updates.
Install
omarchy plugin add https://github.com/HANCORE-linux/OmaQ.git --yes &&
~/.config/omarchy/plugins/hancore.omaq/install.sh --yesIf a successful install reports a current helper but OmaQ is still absent, refresh the shell:
omarchy restart shellUpdate
Run the supported OmaQ updater:
~/.config/omarchy/plugins/hancore.omaq/scripts/update-omaq.sh --yesThe updater follows the current canonical origin/main; the release source archives remain fixed to this tag. Do not use omarchy plugin update for OmaQ. After an activated or current result, refresh the shell only if the interface has not reappeared:
omarchy restart shellAfter upgrading, validate the plugin and inspect helper status:
omarchy plugin validate ~/.config/omarchy/plugins/hancore.omaq
~/.config/omarchy/plugins/hancore.omaq/scripts/update-helper.sh --statusActive private groups can leave helper activation pending. Leave every private group and rerun the updater instead of forcing helper replacement.
Validation
The release integration passes make test, the full make verify-4 aggregate, helper hardening, architecture checks, Omarchy plugin validation, ShellCheck, strict JSON and YAML checks, Python syntax compilation, and git diff --check. The underlying feature snapshots also passed phases 2, 3, 6, and 8, Ratchet restart, Protocol 14 and 15 compatibility builds, and the no-Signal build. Phase 6 uses a parent-death-bound private PipeWire/PulseAudio server, and its SIGKILL regressions verify teardown and exact legacy-orphan cleanup without exposing test devices in the normal user registry.
GitHub reported no checks for the release PR, so the local results above are not presented as CI. qmllint Panel.qml remains inconclusive with exit 255 and no diagnostics; runtime fixtures passed, and the release integration does not modify QML. The independent automated review runner was unavailable, so local review and passing tests remain the available validation.
These automated checks do not replace native Wayland, multi-monitor, real audio-device, separate-network, or complete three-peer acceptance.
Known limitations
- This is a beta prerelease; packaging and AUR publication remain paused.
- Signal Double Ratchet protection applies to direct text messages, not files, calls, or group traffic.
- Calls remain available only in DirectChat.
- Complete native multi-monitor, separate-network, and three-peer group-attachment acceptance remains ongoing.
- A historical retired sound blob remains reachable from older Git history and
v0.8.0; no history rewrite has been performed.
Licensing
- OmaQ QML and project-original assets: MIT, except where separately attributed.
- Helper source: GPL-3.0-or-later.
- Distributed helper binary linked with
libsignal-protocol-c2.3.3: GPL-3.0-only. - Bundled media retain the licenses recorded in
THIRD_PARTY.mdandsounds/ATTRIBUTION.md.
v0.8.1-beta.2
v0.8.1-beta.2
OmaQ v0.8.1-beta.2 is a security, reliability and usability prerelease for invite-only chat in the Omarchy bar. Its helper implements Protocol 14; the base UI remains compatible with Protocol 7 through 13 helpers and gates newer capabilities.
Important
The earlier v0.8.1-beta.1 tag remains immutable and predates the source updater, private-repository authentication, shell-readiness hardening, README and rail-icon polish, and semantic Omarchy theme support. This prerelease includes those follow-ups rather than moving the earlier tag.
Highlights
- Added inline Reply plus exact pointer and keyboard selection with a selection-only Copy action.
- Added per-chat search with bounded helper-authored results and helper-authoritative local timestamps.
- Extended message scaling to composer input without scaling controls, receipts or member labels.
- Added helper-managed imports for bounded PCM WAV notification sounds.
- Added GroupChat file, image, clipboard, drag-and-drop, acceptance, cancellation, history and playback parity with DirectChat.
- Extended group administration with admin invitations and moderation of offline ordinary members.
- Bound every chat delegate to one conversation for reliable saved size and placement.
- Improved Unicode emoji presentation, reaction interaction, constrained layouts and destructive confirmations.
- Fixed TCP-only relay registration after disconnect so startup and periodic recovery both restore compiled relays.
Changes since beta 1
- Added a shell-off source updater that clones and builds outside the monitored plugin tree, validates the exact commit and helper, stops the shell supervisor and Quickshell, and atomically exchanges the complete Git checkout without a copy fallback.
- Added bounded staging, exact filesystem and mount checks, retained external rollback trees, group-safe helper activation, consumer verification, and same-commit no-op handling.
- Added private GitHub access through a validated GitHub CLI and a host-scoped in-memory Git header without persisting credentials in arguments or checkout configuration.
- Hardened asynchronous shell restart readiness, session-lock rechecks, supervisor relaunch handling, and process identity binding across consumer checks and rollback.
- Added semantic Omarchy theme palette support while preserving legacy
color0throughcolor7precedence. - Polished the README header and kept Safety code and Identity rail icons outlined when selected.
Security and reliability
- Direct text messages continue to require the Signal Double Ratchet and never fall back to plaintext.
- Hardened helper input, UTF-8 handling, JSON parsing, persistence, rate limits, storage boundaries, attachment verification, and group-admin authorization.
- Enforced plain-text rendering for remote QML text except the explicitly escaped Markdown message renderer and chat header.
- Added group-safe helper backup, activation, rollback and update handling with process, peer-credential, protocol and hash binding.
- Hardened installation order, release diagnostics and uninstall cleanup, including descriptor-relative no-follow checks for runtime-rule removal.
- Replaced the retired notification clip with
sounds/uhoh.wavand clarified the source and binary license scopes.
Upgrade notes
Installations that already contain the source updater can run the following command while canonical origin/main still matches this release:
~/.config/omarchy/plugins/hancore.omaq/scripts/update-omaq.sh \
--yes --expect-commit 5a8cfaafc4f053294b6e50e7dc5f0028a59c2e50The exact commit binding makes the command fail closed rather than installing a different origin/main revision.
Installations from v0.8.1-beta.1 or older revisions that do not contain this command must use the external bootstrap procedure, adding the same --expect-commit 5a8cfaafc4f053294b6e50e7dc5f0028a59c2e50 binding to its final updater invocation. Private repository access requires an authenticated GitHub CLI session.
After upgrading, validate the plugin and inspect helper status:
omarchy plugin validate ~/.config/omarchy/plugins/hancore.omaq
~/.config/omarchy/plugins/hancore.omaq/scripts/update-helper.sh --statusHelper replacement remains pending while private groups are active when a group-safe restart cannot be proven. Do not copy identity, Ratchet, group-registry or history state between machines as part of a source update.
Known limitations
- This is a beta prerelease; packaging and AUR publication remain paused.
- Signal Double Ratchet protection applies to direct text messages, not files, calls, or group traffic.
- Calls are available only in direct chats.
- Complete native multi-monitor, separate-network and three-peer group-attachment acceptance remains ongoing.
- A historical retired sound blob remains reachable from older Git history and
v0.8.0; no history rewrite has been performed.
Licensing
- OmaQ QML and project-original assets: MIT, except where separately attributed.
- Helper source: GPL-3.0-or-later.
- Distributed helper binary linked with
libsignal-protocol-c2.3.3: GPL-3.0-only. - Bundled media retain the licenses recorded in
THIRD_PARTY.mdandsounds/ATTRIBUTION.md.
OmaQ v0.8.0
OmaQ v0.8.0 is the first public pre-release of invite-only chat for the Omarchy bar. It has no accounts, phone-number discovery, project-operated chat server, or telemetry.
Highlights
- Signal Double Ratchet protection for DirectChat, with no plaintext fallback
- Stable public-key binding for direct windows, history, unread state, files, receipts, and preferences
- Private GroupChat with roles, presence, moderation, typing, reactions, member-aware receipts, files, and images
- Direct voice calls with explicit Answer, Decline, and Hang up controls
- Explicit file acceptance, private image staging, canonical image validation, and an 8 MiB attachment limit
- Unicode emoji-only messages rendered at a fixed 56-pixel size
- Local identity protection, export validation, confirmed import, recovery guards, and fail-closed warnings
- Per-conversation Auto-open, global notification mute, themes, sounds, message scaling, and unread controls
- A 36-image illustrated user guide
Privacy model
OmaQ stores identity, contacts, Ratchet state, preferences, and history on your machine. It uses public Tox bootstrap and Transmission Control Protocol relay nodes operated by community volunteers. Relay operators cannot read message contents, but they can observe ordinary connection metadata.
OmaQ disables direct User Datagram Protocol discovery and hole punching, so contacts do not receive each other's IP addresses.
Install
Follow the source installation instructions. The repository does not include a generated helper binary. Build the Protocol-13 helper locally after installation and after every source update.
Known limitations
- Arch User Repository packaging remains paused
- Private groups survive Quickshell and Omarchy Shell reloads only while the detached helper keeps running
- A computer restart, helper crash, or helper cold start cannot reconstruct a private Tox New Group Chat from its Chat ID; another member may need to invite the identity again
- Native separate-network, three-peer fault-injection, multi-monitor, and floating-versus-tiling acceptance remain incomplete
- The historical Protocol-10 to Protocol-7 encrypted-message test remains inconclusive because its relay endpoints did not remain connected

